.login-container{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-box{background:#fff;border-radius:12px;width:100%;max-width:400px;padding:40px;box-shadow:0 10px 40px #0000001a}.login-header{text-align:center;margin-bottom:30px}.login-header h1{color:#333;margin-bottom:8px;font-size:32px}.login-header p{color:#666;font-size:14px}.login-form{flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex}.form-group label{color:#333;font-size:14px;font-weight:600}.form-group input{border:2px solid #e0e0e0;border-radius:8px;padding:12px 16px;font-size:15px;transition:border-color .2s}.form-group input:focus{border-color:#667eea;outline:none}.btn-primary{color:#fff;cursor:pointer;background:#4caf50;border:none;border-radius:8px;padding:14px;font-size:16px;font-weight:600;transition:background .2s}.btn-primary:hover{background:#45a049}.btn-primary:disabled{cursor:not-allowed;background:#ccc}.error-message{color:#c62828;text-align:center;background:#ffebee;border-radius:6px;padding:12px;font-size:14px}.sidebar{background:#fff;border-right:1px solid #e5e5ea;flex-direction:column;gap:0;width:240px;min-height:100%;padding:24px 20px;display:flex}.sidebar-header{color:#1d1d1f;align-items:center;gap:8px;margin-bottom:24px;font-size:15px;font-weight:600;display:flex}.profile-section{border-bottom:1px solid #e5e5ea;margin-bottom:24px;padding-bottom:16px}.profile-card{cursor:pointer;border-radius:8px;align-items:center;gap:10px;margin-bottom:8px;padding:10px 12px;transition:background .15s;display:flex}.profile-card:hover{background:#0000000a}.profile-avatar{background:#e5e5ea;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.profile-info{flex:1;min-width:0}.profile-name{color:#1d1d1f;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;display:block;overflow:hidden}.profile-email{color:#8e8e93;white-space:nowrap;text-overflow:ellipsis;font-size:12px;display:block;overflow:hidden}.profile-chevron{color:#8e8e93;flex-shrink:0}.sidebar-section{margin-bottom:24px}.sidebar-section-label{color:#a1a1a6;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding:0 12px;font-size:11px;font-weight:600}.sidebar-nav{flex-direction:column;gap:2px;display:flex}.nav-item{color:#6e6e73;border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-size:14px;font-weight:400;text-decoration:none;transition:background .15s;display:flex}.nav-item:hover{background:#0000000a}.nav-item svg{flex-shrink:0}.sidebar-footer{border-top:1px solid #e5e5ea;margin-top:auto;padding-top:16px}.logout-button{color:#a1a1a6;cursor:pointer;background:0 0;border:none;border-radius:8px;outline:none;align-items:center;gap:8px;width:100%;margin-bottom:12px;padding:8px 12px;font-size:13px;transition:all .15s;display:flex}.logout-button:hover{color:#6e6e73;background:#0000000a}.logout-button:focus{box-shadow:none;outline:none}.darkmode-toggle{color:#6e6e73;align-items:center;gap:10px;padding:8px 12px;font-size:14px;display:flex}.darkmode-toggle svg{flex-shrink:0}.darkmode-toggle span{flex:1}.switch{width:44px;height:24px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;background-color:#e5e5ea;border-radius:24px;transition:all .3s;position:absolute;inset:0}.slider:before{content:"";background-color:#fff;border-radius:50%;width:20px;height:20px;transition:all .3s;position:absolute;bottom:2px;left:2px;box-shadow:0 1px 3px #0003}input:checked+.slider{background-color:#34c759}input:checked+.slider:before{transform:translate(20px)}.top-bar{justify-content:space-between;align-items:center;height:64px;margin-bottom:24px;display:flex}.search-input-container{width:320px;position:relative}.search-icon{color:var(--text-tertiary);pointer-events:none;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.search-input{border:1px solid var(--border-light);width:100%;height:44px;color:var(--text-primary);background:#fff;border-radius:999px;outline:none;padding:0 16px 0 44px;font-size:14px;transition:all .15s}.search-input:focus{border-color:var(--green-primary);box-shadow:0 0 0 3px #34c7591a}.search-input::placeholder{color:var(--text-tertiary)}.top-bar-actions{align-items:center;gap:12px;display:flex}.icon-button{border:1px solid var(--border-light);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;background:#fff;border-radius:50%;justify-content:center;align-items:center;transition:all .15s;display:flex}.icon-button:hover{background:#0000000a;transform:translateY(-1px)}.btn-primary{color:#fff;cursor:pointer;background:#34c759;border:none;border-radius:999px;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:all .15s;display:flex;box-shadow:0 2px 8px #34c75940}.btn-primary:hover{background:#2fb350;transform:translateY(-1px);box-shadow:0 4px 12px #34c7594d}.btn-primary:active{transform:translateY(0)}.status-bar{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;display:grid}@media (max-width:1000px){.status-bar{grid-template-columns:repeat(2,1fr)}}@media (max-width:500px){.status-bar{grid-template-columns:1fr}}.status-field{background:#fafafa;border-radius:14px;align-items:center;gap:14px;padding:20px 22px;transition:all .25s;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 2px #00000005,0 4px 8px #00000003}.status-field:hover{background:#f7f7f7;box-shadow:0 2px 4px #00000008,0 6px 12px #00000005}.status-icon{color:#00000059;background:#0000000a;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.status-data{z-index:2;flex-direction:column;gap:2px;display:flex;position:relative}.status-number{color:#1a1a1a;letter-spacing:-1.5px;font-feature-settings:"tnum" 1;font-size:32px;font-weight:600;line-height:1}.status-unit{color:#0006;margin-left:1px;font-size:18px;font-weight:500}.status-label{color:#0006;letter-spacing:.1px;font-size:12px;font-weight:500}.status-active{background:linear-gradient(135deg,#fafafa 0%,#f6faf6 100%)}.status-active .status-icon{color:#34c759;background:#34c7591a}.status-active:after{content:"";opacity:.8;background:#34c759;border-radius:3px 0 0 3px;width:3px;position:absolute;top:0;bottom:0;left:0}.status-watching{background:#fafafa}.status-watching .status-icon{color:#00000059;background:#0000000a}.status-watching .status-number{color:#0000008c}.status-critical{background:#fafafa}.status-critical .status-icon{color:#00000059;background:#0000000a}.status-critical .status-number{color:#0000008c}.status-critical.has-warning{background:linear-gradient(135deg,#fafafa 0%,#fef8f8 100%)}.status-critical.has-warning .status-icon{color:#ff3b30;background:#ff3b301a}.status-critical.has-warning .status-number{color:#e63329}.status-critical.has-warning:after{content:"";opacity:.7;background:#ff3b30;border-radius:3px 0 0 3px;width:3px;position:absolute;top:0;bottom:0;left:0}.warning-glow{pointer-events:none;z-index:1;background:radial-gradient(at 20%,#ff3b300a 0%,#0000 50%);position:absolute;inset:0}.status-moisture{background:linear-gradient(135deg,#fafafa 0%,#f6f9fc 100%)}.status-moisture .status-icon{color:#007aff;background:#007aff1a}.status-moisture .status-number{color:#1a1a1a}.status-moisture:after{content:"";opacity:.6;background:#007aff;border-radius:3px 0 0 3px;width:3px;position:absolute;top:0;bottom:0;left:0}.sensor-table-container{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 1px 2px #00000005,0 4px 8px #00000003}.table-header{border-bottom:1px solid #f0f0f0;justify-content:space-between;align-items:center;padding:12px 24px;display:flex}.table-title{color:#1d1d1f;margin:0;font-size:18px;font-weight:600}.filter-button{color:#6e6e73;cursor:pointer;background:#f5f5f7;border:none;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:500;transition:all .15s;display:flex}.filter-button:hover{color:#1d1d1f;background:#e8e8ed}.filter-button svg{color:#8e8e93}.filter-button:hover svg{color:#6e6e73}.sensor-table{border-collapse:collapse;width:100%}.sensor-table thead{background:#fafafa;border-bottom:1px solid #f0f0f0}.sensor-table th{text-align:left;color:#8e8e93;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;padding:12px 16px;font-size:11px;font-weight:600}.sort-indicator{color:#c7c7cc;vertical-align:middle;opacity:.7;margin-left:4px}.sort-indicator.active{color:#1d1d1f;opacity:1}.sensor-table tbody tr{cursor:pointer;border-bottom:1px solid #f5f5f5;transition:background .15s}.sensor-table tbody tr:hover{background:#fafafa}.sensor-table tbody tr:last-child{border-bottom:none}.sensor-row.highlighted{background:#34c7590a;border-left:3px solid #34c759}.sensor-row.highlighted:hover{background:#34c7590f}.sensor-table td{color:#1d1d1f;vertical-align:middle;padding:16px;font-size:14px}.sensor-table td strong{font-weight:600}.status-cell{align-items:center;gap:8px;display:flex}.status-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.status-text{letter-spacing:.2px;color:#1d1d1f;font-size:13px;font-weight:600}.moisture-cell{align-items:center;gap:6px;display:flex}.moisture-value{font-weight:600}.moisture-trend{font-size:16px;font-weight:600;line-height:1}.comments-cell{color:#c7c7cc}.chevron-icon{color:#c7c7cc;transition:color .15s}.sensor-table tbody tr:hover .chevron-icon{color:#8e8e93}.empty-state{text-align:center;color:#8e8e93;padding:60px 20px;font-size:14px}.chart-card{background:#fff;border-radius:16px;flex-direction:column;padding:20px 24px;display:flex;box-shadow:0 1px 2px #00000005,0 4px 8px #00000003}.chart-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.chart-header h3{color:#1d1d1f;margin:0;font-size:16px;font-weight:600;line-height:1.4}.chart-controls{align-items:center;gap:8px;display:flex}.time-dropdown{color:#6e6e73;cursor:pointer;appearance:none;background:#f5f5f7 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238e8e93' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") right 10px center no-repeat;border:none;border-radius:8px;padding:6px 28px 6px 12px;font-size:13px;font-weight:500;transition:all .15s}.time-dropdown:hover{color:#1d1d1f;background-color:#e8e8ed}.time-dropdown:focus{outline:none;box-shadow:0 0 0 2px #34c75933}.expand-button{color:#8e8e93;cursor:pointer;background:#f5f5f7;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:all .15s;display:flex}.expand-button:hover{color:#6e6e73;background:#e8e8ed}.chart-container{justify-content:center;width:100%;display:flex}.chart-container .recharts-wrapper{margin:0 auto}.chart-legend{border-top:1px solid #f0f0f0;justify-content:center;gap:24px;margin-top:16px;padding-top:16px;display:flex}.legend-item{align-items:center;gap:8px;display:flex}.legend-color{border-radius:3px;width:12px;height:12px}.legend-moisture{background:#34c759}.legend-rainfall{background:#007aff}.legend-text{color:#8e8e93;font-size:13px;font-weight:500}.map-card{background:#fff;border-radius:16px;padding:20px 24px;box-shadow:0 1px 2px #00000005,0 4px 8px #00000003}.map-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.map-header h3{color:#1d1d1f;margin:0;font-size:16px;font-weight:600}.map-header-controls{align-items:center;gap:8px;display:flex}.map-control-button{color:#8e8e93;cursor:pointer;background:#f5f5f7;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:all .15s;display:flex}.map-control-button:hover{color:#6e6e73;background:#e8e8ed}.map-placeholder{background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);border-radius:12px;justify-content:center;align-items:center;height:320px;display:flex;position:relative;overflow:hidden}.map-grid{pointer-events:none;background-image:linear-gradient(#c8c8c826 1px,#0000 1px),linear-gradient(90deg,#c8c8c826 1px,#0000 1px);background-size:20px 20px;position:absolute;inset:0}.map-marker{z-index:3;filter:drop-shadow(0 4px 8px #ff3b304d);animation:2s ease-in-out infinite bounce}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.map-info-badge{z-index:2;text-align:center;background:#fff;border-radius:8px;padding:10px 16px;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0000001a}.map-location{color:#1d1d1f;margin-bottom:2px;font-size:13px;font-weight:600}.map-coords{color:#8e8e93;font-size:11px}.map-zoom-controls{z-index:4;flex-direction:column;gap:4px;display:flex;position:absolute;bottom:16px;right:16px}.zoom-button{cursor:pointer;color:#6e6e73;background:#fff;border:none;justify-content:center;align-items:center;width:32px;height:32px;transition:all .15s;display:flex;box-shadow:0 2px 6px #0000001a}.zoom-button:first-child{border-radius:8px 8px 0 0}.zoom-button:last-child{border-top:1px solid #e5e5ea;border-radius:0 0 8px 8px}.zoom-button:hover{color:#1d1d1f;background:#f5f5f7}.zoom-button:active{background:#e8e8ed}.dashboard-wrapper{background:#0a0a0a;justify-content:center;align-items:center;width:100vw;min-height:100vh;margin:0;padding:0;display:flex}.dashboard-panel{box-shadow:none;background:#f6f7f9;border-radius:0;width:100vw;max-width:100vw;height:100vh;margin:0;display:flex;overflow:hidden}.dashboard-main{background:#f6f7f9;flex-direction:column;flex:1;gap:16px;padding:24px 32px;display:flex;overflow-y:auto}.charts-grid{grid-template-columns:1fr 1fr;gap:16px;margin-top:4px;display:grid}@media (max-width:1200px){.charts-grid{grid-template-columns:1fr}}.loading-container{color:#fff;background:#0a0a0a;flex-direction:column;justify-content:center;align-items:center;gap:20px;height:100vh;display:flex}.spinner{border:4px solid #ffffff1a;border-top-color:#34c759;border-radius:50%;width:48px;height:48px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}:root{--primary-color:#4caf50;--danger-color:#f44336;--warning-color:#ff9800;--info-color:#2196f3;--text-dark:#333;--text-light:#666;--text-muted:#999;--border-color:#e0e0e0;--bg-light:#f8f9fa}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}*{box-sizing:border-box}h1,h2,h3,h4,h5,h6,p{margin:0}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}
