body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;min-height:100vh}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--background-warm) 0%,#e8f5e9 100%);padding:20px}.login-card{background:var(--background-white);border-radius:20px;padding:40px;max-width:450px;width:100%;box-shadow:0 10px 40px var(--shadow-color);animation:slideUp .4s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:30px}.logo{display:flex;justify-content:center;margin-bottom:20px;animation:rotate 3s ease-in-out infinite}@keyframes rotate{0%,to{transform:rotate(0)}50%{transform:rotate(10deg)}}.login-header h1{color:var(--primary-dark);font-size:28px;margin-bottom:10px;font-weight:700}.login-header p{color:var(--text-secondary);font-size:16px}.login-form{margin-bottom:20px}.form-group{margin-bottom:24px}.form-group label{display:block;color:var(--primary-dark);font-weight:600;margin-bottom:8px;font-size:14px;text-align:right}.form-group input{width:100%;padding:14px 16px;border:2px solid var(--border-color);border-radius:12px;font-size:16px;transition:all .3s ease;background:var(--background-warm);direction:ltr}.form-group input:focus{outline:none;border-color:var(--primary-accent);background:var(--background-white);box-shadow:0 0 0 4px #90c55b1a}.error-message{background:#fee;color:#c33;padding:12px;border-radius:8px;margin-bottom:16px;text-align:center;font-size:14px;animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.login-button{width:100%;padding:14px;background:linear-gradient(135deg,var(--primary-dark) 0%,var(--primary-light) 100%);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease}.login-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #2d50164d}.login-button:active{transform:translateY(0)}.login-footer{text-align:center;color:var(--text-secondary);font-size:14px;padding-top:20px;border-top:1px solid var(--border-color)}@media(max-width:480px){.login-card{padding:30px 20px}.login-header h1{font-size:24px}}.stats-card{background:#fff;border-radius:16px;padding:24px;box-shadow:0 4px 15px var(--shadow-color);display:flex;align-items:center;gap:20px;border-top:4px solid;transition:all .3s ease;cursor:default}.stats-card:hover{transform:translateY(-5px);box-shadow:0 8px 25px var(--shadow-color)}.stats-icon{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0}.stats-content{flex:1;text-align:right}.stats-content h3{font-size:14px;color:var(--text-secondary);margin-bottom:8px;font-weight:600}.stats-value{font-size:32px;font-weight:700;color:var(--primary-dark);margin:0;direction:ltr;text-align:right}@media(max-width:480px){.stats-card{padding:20px}.stats-icon{width:50px;height:50px;font-size:24px}.stats-value{font-size:28px}}.chart-container{width:100%}.chart-title{color:var(--primary-dark);font-size:24px;margin-bottom:30px;font-weight:700;text-align:right;display:flex;align-items:center;gap:12px}.chart-title:before{content:"📊";font-size:28px}.chart-wrapper{width:100%;direction:ltr;padding:10px}.recharts-legend-item-text{color:var(--text-primary)!important;font-weight:600!important}.recharts-tooltip-wrapper{outline:none!important}.recharts-default-tooltip{border-radius:12px!important;box-shadow:0 8px 24px #0000001f!important}@media(max-width:768px){.chart-title{font-size:20px;margin-bottom:20px}.chart-wrapper{overflow-x:auto}}.dashboard{min-height:100vh;background:var(--background-warm)}.token-warning{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:1000;animation:slideDown .3s ease-out}.warning-content{background:linear-gradient(135deg,#ff6b6b,#ee5a52);color:#fff;padding:1rem 2rem;border-radius:12px;box-shadow:0 8px 32px #ff6b6b66;display:flex;align-items:center;gap:1rem;max-width:600px}.warning-icon{font-size:1.5rem}.warning-content p{margin:0;flex:1;font-weight:500}.reconnect-button{background:#fff;color:#ff6b6b;border:none;padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer;transition:all .3s ease;white-space:nowrap}.reconnect-button:hover{transform:scale(1.05);box-shadow:0 4px 12px #0003}.close-warning{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .3s ease}.close-warning:hover{opacity:1}@keyframes slideDown{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.dashboard-loading{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:linear-gradient(135deg,var(--bg-light) 0%,#ffffff 100%)}.loading-logo-container{position:relative;display:flex;flex-direction:column;align-items:center;gap:30px}.loading-logo{animation:logoFloat 2s ease-in-out infinite,logoPulse 1.5s ease-in-out infinite;filter:drop-shadow(0 10px 30px rgba(45,159,79,.3))}.logo-house{animation:logoPartFade 2s ease-in-out infinite}.logo-letter{animation:logoPartFade 2s ease-in-out infinite .3s}.logo-detail{animation:logoPartFade 2s ease-in-out infinite .6s}@keyframes logoFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-15px)}}@keyframes logoPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@keyframes logoPartFade{0%,to{opacity:1}50%{opacity:.5}}.loading-charts{display:flex;align-items:flex-end;gap:8px;height:60px;padding:10px}.loading-bar{width:12px;background:linear-gradient(180deg,#2d9f4f,#4a7c2c);border-radius:6px;animation:barGrow 1.2s ease-in-out infinite}.bar-1{height:20px;animation-delay:0s}.bar-2{height:35px;animation-delay:.15s}.bar-3{height:50px;animation-delay:.3s}.bar-4{height:40px;animation-delay:.45s}.bar-5{height:55px;animation-delay:.6s}@keyframes barGrow{0%,to{transform:scaleY(1);opacity:.7}50%{transform:scaleY(1.5);opacity:1}}.loading-text{font-size:1.2rem;font-weight:600;color:var(--primary-dark);margin:20px 0 10px;animation:textFade 1.5s ease-in-out infinite}@keyframes textFade{0%,to{opacity:1}50%{opacity:.5}}.loading-dots{display:flex;gap:8px}.loading-dots span{width:10px;height:10px;background:var(--primary-dark);border-radius:50%;animation:dotBounce 1.4s ease-in-out infinite}.loading-dots span:nth-child(1){animation-delay:0s}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotBounce{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1.2);opacity:1}}.spinner{width:60px;height:60px;border:4px solid var(--border-color);border-top-color:var(--primary-dark);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.dashboard-header{background:linear-gradient(135deg,var(--primary-dark) 0%,var(--primary-light) 100%);color:#fff;padding:30px 40px;box-shadow:0 4px 20px var(--shadow-color)}.header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.header-title h1{font-size:32px;margin-bottom:5px;font-weight:700}.header-title p{opacity:.9;font-size:16px}.header-actions{display:flex;gap:12px}.google-button{background:#fffffff2;border:2px solid rgba(255,255,255,.3);color:var(--primary-dark);padding:10px 16px;border-radius:10px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px}.google-button:hover{background:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.refresh-button{background:#fff3;border:2px solid rgba(255,255,255,.3);color:#fff;padding:10px 12px;border-radius:10px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.refresh-button:disabled{opacity:.6;cursor:not-allowed}.refresh-button.spinning svg{animation:refreshSpin 1s linear infinite}.refresh-button:hover:not(:disabled){background:#ffffff4d;transform:rotate(180deg)}@keyframes refreshSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.logout-button{background:#fff3;border:2px solid rgba(255,255,255,.3);color:#fff;padding:10px 20px;border-radius:10px;cursor:pointer;font-weight:600;transition:all .3s ease}.logout-button:hover{background:#ffffff4d;transform:translateY(-2px)}.header-status{display:flex;justify-content:space-between;align-items:center;margin-top:15px;padding-top:15px;border-top:1px solid rgba(255,255,255,.2);flex-wrap:wrap;gap:15px}.last-updated{font-size:14px;opacity:.9;display:flex;align-items:center;gap:8px}.update-label{opacity:.8}.auto-refresh{display:flex;align-items:center;gap:8px;background:#ffffff26;padding:8px 16px;border-radius:20px;font-size:14px;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.refresh-icon{font-size:16px;animation:rotate-slow 3s linear infinite}@keyframes rotate-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.refresh-label{opacity:.9}.countdown-timer{font-weight:700;font-size:16px;background:#ffffff40;padding:4px 12px;border-radius:8px;min-width:50px;text-align:center;font-family:Courier New,monospace}.dashboard-content{padding:30px 40px;max-width:1400px;margin:0 auto}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:30px}.charts-container{background:#fff;border-radius:16px;padding:30px;box-shadow:0 4px 15px var(--shadow-color);margin-bottom:30px}.analytics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.no-data-message{display:flex;align-items:center;justify-content:center;min-height:400px;color:#666;font-size:16px;font-weight:500;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:2rem;text-align:center}.analytics-card{background:#fff;padding:24px;border-radius:16px;box-shadow:0 4px 15px var(--shadow-color)}.analytics-card h3{color:var(--primary-dark);font-size:18px;margin-bottom:20px;font-weight:700;display:flex;align-items:center;gap:8px}.list-items{display:flex;flex-direction:column;gap:12px}.list-item{display:flex;justify-content:space-between;align-items:center;padding:12px;background:var(--background-warm);border-radius:8px;transition:all .3s ease}.list-item:hover{background:var(--primary-accent);color:#fff;transform:translate(-4px)}.item-label{font-weight:500;font-size:14px;text-transform:capitalize}.item-value{font-weight:700;font-size:16px;color:var(--primary-dark)}.list-item:hover .item-value{color:#fff}.footer-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.info-card{background:#fff;padding:30px;border-radius:16px;box-shadow:0 4px 15px var(--shadow-color);text-align:center}.info-card h3{color:var(--text-secondary);font-size:16px;margin-bottom:15px;font-weight:600}.big-number{font-size:48px;font-weight:700;color:var(--primary-dark);margin:0}@media(max-width:768px){.dashboard-header{padding:20px}.header-content{flex-direction:column;align-items:flex-start;gap:20px}.header-title h1{font-size:24px}.dashboard-content{padding:20px}.stats-grid{grid-template-columns:1fr}.charts-container{padding:20px}.footer-info{grid-template-columns:1fr}.header-status{flex-direction:column;align-items:flex-start}.auto-refresh{width:100%;justify-content:center}}:root{--primary-dark: #2d5016;--primary-light: #4a7c2c;--primary-accent: #90C55B;--background-warm: #f5f1e8;--background-white: #ffffff;--text-primary: #2d5016;--text-secondary: #6b7280;--border-color: #e5e7eb;--shadow-color: rgba(45, 80, 22, .1);--green-50: #f0f9ff;--green-100: #e0f2e9;--green-200: #c2e5d3;--green-300: #90C55B;--green-400: #4a7c2c;--green-500: #2d5016}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--background-warm);color:var(--text-primary)}#root{width:100%;min-height:100vh}
