:root{--bg-base: #0a0f0c;--bg-surface: #0f1611;--bg-card: #131c15;--bg-card-hover: #182219;--bg-glass: rgba(255, 255, 255, .04);--bg-glass-border: rgba(255, 255, 255, .08);--green-vivid: #22c55e;--green-soft: #4ade80;--green-dim: #166534;--green-glow: rgba(34, 197, 94, .15);--teal: #14b8a6;--amber: #f59e0b;--red-alert: #ef4444;--blue-data: #60a5fa;--text-primary: #f0fdf4;--text-secondary: #86efac;--text-muted: #4b7a5a;--text-dim: #2d4a35;--shadow-glow: 0 0 40px rgba(34, 197, 94, .08);--shadow-card: 0 4px 24px rgba(0, 0, 0, .4);--radius-card: 14px;--radius-sm: 10px;--radius-lg: 16px;--radius-xl: 20px;--section-gap: 16px;--border-subtle: rgba(255, 255, 255, .08);--border-green: rgba(34, 197, 94, .2);--bg-input: #0f1611;--bg-input-focus: #131c15;--shadow-card-hover: 0 8px 32px rgba(0, 0, 0, .5);--metric-moisture: #14b8a6;--metric-temperature: #f59e0b;--metric-humidity: #60a5fa;--metric-co2: #a78bfa;--metric-tvoc: #f472b6;--metric-pressure: #94a3b8;--metric-light: #fbbf24}:root[data-theme=light]{--bg-base: #f5f7f6;--bg-surface: #ffffff;--bg-card: #ffffff;--bg-card-hover: #f0f5f1;--bg-glass: rgba(0, 0, 0, .03);--bg-glass-border: rgba(0, 0, 0, .08);--bg-input: #f0f5f1;--bg-input-focus: #e8f0ea;--green-vivid: #16a34a;--green-soft: #22c55e;--green-dim: #86efac;--green-glow: rgba(22, 163, 74, .08);--teal: #0d9488;--amber: #d97706;--red-alert: #dc2626;--blue-data: #3b82f6;--text-primary: #1a2e1f;--text-secondary: #3d6b4a;--text-muted: #7a9b85;--text-dim: #b0c8b8;--border-subtle: rgba(0, 0, 0, .08);--border-green: rgba(22, 163, 74, .2);--shadow-glow: 0 0 40px rgba(22, 163, 74, .04);--shadow-card: 0 1px 3px rgba(0, 0, 0, .08);--shadow-card-hover: 0 4px 12px rgba(0, 0, 0, .12);--radius-card: 14px;--radius-sm: 10px;--radius-lg: 16px;--radius-xl: 20px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:DM Sans,sans-serif;background:var(--bg-base);color:var(--text-primary);min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(34,197,94,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(34,197,94,.02) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0}h1,h2,h3{font-family:"DM Serif Display",serif;letter-spacing:-.02em}.app-container{min-height:100vh;position:relative;z-index:1}.page-content{padding:64px 32px 32px;max-width:1200px;margin:0 auto;width:100%;min-height:calc(100vh - 48px)}.topnav{position:fixed;top:0;left:0;right:0;height:48px;background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;padding:0 16px;z-index:100}.topnav-left{display:flex;align-items:center;cursor:pointer}.topnav-logo-icon{width:20px;height:20px;color:var(--green-vivid)}.topnav-centre{display:flex;align-items:center;gap:4px}.topnav-right{display:flex;align-items:center;gap:8px}.topnav-icon-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:all .2s ease;position:relative}.topnav-icon-btn:hover{background:var(--bg-glass);color:var(--text-secondary)}.topnav-icon-btn.active{color:var(--text-primary)}.topnav-icon-btn.active:after{content:"";position:absolute;bottom:0;left:25%;width:50%;height:2px;background:var(--green-vivid);border-radius:2px 2px 0 0}.theme-toggle{background:var(--bg-glass);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:1.1rem;padding:4px 8px;transition:background .2s;line-height:1;display:flex;align-items:center;justify-content:center}.theme-toggle:hover{background:var(--green-glow)}.nav-icon{width:20px;height:20px}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.dashboard-header h2{font-size:1.5rem;color:var(--text-primary)}.plant-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--section-gap)}.plant-card{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);overflow:hidden;cursor:pointer;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;position:relative}.plant-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-card)}.plant-card.attention{border-color:#ef444466}.plant-card.health-green{border-left:3px solid var(--green-vivid);background:linear-gradient(135deg,rgba(34,197,94,.04),var(--bg-card) 60%)}.plant-card.health-amber{border-left:3px solid var(--amber);background:linear-gradient(135deg,rgba(245,158,11,.04),var(--bg-card) 60%)}.plant-card.health-red{border-left:3px solid var(--red-alert);background:linear-gradient(135deg,rgba(239,68,68,.05),var(--bg-card) 60%);box-shadow:0 0 12px #ef444414}.card-body{padding:20px}.card-body h3{font-family:"DM Serif Display",serif;font-size:20px;margin:0 0 4px;color:var(--text-primary)}.card-body .species{font-size:12px;color:var(--text-secondary);font-style:italic;margin:0 0 12px}.card-header-row{display:flex;justify-content:space-between;align-items:center}.attention-dot{width:8px;height:8px;border-radius:50%;background:var(--red-alert);box-shadow:0 0 8px var(--red-alert);animation:pulse 2s ease-in-out infinite;flex-shrink:0}.health-bars{display:flex;flex-direction:column;gap:8px;margin:12px 0}.health-bar{display:grid;grid-template-columns:68px 1fr 48px;align-items:start;gap:8px;padding-top:2px}.health-bar-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.health-bar-track{height:6px;border-radius:100px;position:relative;background:var(--bg-glass-border);overflow:hidden}.health-bar-fill{height:100%;border-radius:100px;transition:width .5s ease}.health-bar-value{font-size:12px;text-align:right;color:var(--text-primary);font-variant-numeric:tabular-nums}.status-pill{font-size:10px;padding:2px 8px;border-radius:100px;font-weight:600;letter-spacing:.02em;white-space:nowrap}.card-meta{font-size:11px;color:var(--text-dim)}.staleness-indicator{display:inline-flex;align-items:center;gap:6px}.staleness-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.staleness-dot.fresh{background:var(--green-vivid);box-shadow:0 0 4px var(--green-vivid)}.staleness-dot.stale{background:var(--amber);box-shadow:0 0 4px var(--amber)}.staleness-dot.dead{background:var(--red-alert);box-shadow:0 0 4px var(--red-alert)}.metric-context-label{font-size:10px;letter-spacing:.03em;margin-top:2px;display:block}.metric-context-label.optimal{color:var(--green-vivid)}.metric-context-label.acceptable{color:var(--amber)}.metric-context-label.critical{color:var(--red-alert)}.empty-state{text-align:center;padding:80px 20px;color:var(--text-muted)}.empty-state-icon{font-size:48px;margin-bottom:16px}.empty-state h3{font-size:1.3rem;color:var(--text-primary);margin-bottom:8px}.empty-state p{font-size:.95rem;margin-bottom:20px;color:var(--text-muted)}.add-plant-card{border:1px dashed var(--text-dim);border-radius:var(--radius-card);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:160px;cursor:pointer;transition:all .2s ease}.add-plant-card:hover{border-style:solid;border-color:var(--green-vivid);background:#22c55e0a}.add-plant-icon{font-size:32px;color:var(--text-dim);line-height:1;transition:color .2s}.add-plant-card:hover .add-plant-icon{color:var(--green-vivid)}.add-plant-text{font-size:13px;color:var(--text-dim);transition:color .2s}.add-plant-card:hover .add-plant-text{color:var(--text-muted)}.btn-primary{background:var(--green-vivid);color:#080c0a;border:none;padding:10px 20px;border-radius:var(--radius-sm);font-weight:600;font-size:13px;cursor:pointer;transition:all .2s ease;letter-spacing:.01em;font-family:DM Sans,sans-serif}.btn-primary:hover{background:var(--green-soft);box-shadow:0 0 12px #22c55e26}.btn-primary:disabled{opacity:.5;cursor:default;transform:none;box-shadow:none}.btn-secondary{background:var(--bg-glass);color:var(--text-primary);border:1px solid var(--bg-glass-border);padding:9px 18px;border-radius:var(--radius-sm);font-weight:500;font-size:13px;cursor:pointer;transition:all .2s ease;font-family:DM Sans,sans-serif}.btn-secondary:hover{background:var(--bg-glass-border);border-color:var(--text-dim)}.btn-outline-green{background:transparent;color:var(--green-soft);border:1px solid var(--green-soft);padding:9px 18px;border-radius:var(--radius-sm);font-weight:600;font-size:13px;cursor:pointer;transition:all .2s ease;font-family:DM Sans,sans-serif}.btn-outline-green:hover{background:var(--green-soft);color:#080c0a;box-shadow:0 0 16px #22c55e33}.btn-danger{background:transparent;color:var(--red-alert);border:1px solid rgba(239,68,68,.3);padding:9px 18px;border-radius:var(--radius-sm);font-size:13px;cursor:pointer;transition:all .2s ease;font-family:DM Sans,sans-serif}.btn-danger:hover{background:#ef44441a;border-color:var(--red-alert)}.btn-large{padding:12px 28px;font-size:1rem}.btn-back{background:none;border:none;color:var(--text-muted);font-size:14px;cursor:pointer;margin-bottom:20px;padding:0;border-radius:0;transition:color .2s ease;font-family:DM Sans,sans-serif}.btn-back:hover{color:var(--text-primary);text-decoration:underline}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:20px;padding:32px;box-shadow:0 24px 80px #0009;width:90%;max-width:480px}.modal h2{margin-bottom:20px;color:var(--text-primary);font-size:1.3rem}.confirm-dialog{background:var(--bg-card);border:1px solid rgba(239,68,68,.3);border-radius:20px;padding:32px;box-shadow:0 24px 80px #0009;width:90%;max-width:400px;text-align:center}.confirm-dialog h3{font-size:1.1rem;color:var(--text-primary);margin-bottom:8px;border:none;padding:0}.confirm-dialog p{font-size:.9rem;color:var(--text-muted);margin-bottom:20px}.confirm-dialog .form-actions{justify-content:center}.form-input,.plant-form input,.plant-form textarea,.plant-form select,.plant-edit-form input,.plant-edit-form textarea,.plant-edit-form select,.form-group input,.form-group select,.form-group textarea{background:var(--bg-surface);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);color:var(--text-primary);padding:10px 14px;font-size:14px;width:100%;transition:border-color .2s;font-family:DM Sans,sans-serif;display:block;margin-top:6px}.form-input:focus,.plant-form input:focus,.plant-form textarea:focus,.plant-form select:focus,.plant-edit-form input:focus,.plant-edit-form textarea:focus,.plant-edit-form select:focus,.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--blue-data);box-shadow:0 0 0 3px #60a5fa1a}.form-label,.plant-form label,.plant-edit-form label,.form-group label{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:6px;display:block}.plant-form label,.plant-edit-form label{margin-bottom:14px}.form-group{margin-bottom:16px}.form-actions{display:flex;gap:8px;margin-top:16px}.plant-form textarea,.plant-edit-form textarea{resize:vertical}.sensor-source-toggle{display:flex;gap:0;margin-top:4px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--bg-glass-border)}.source-btn{flex:1;padding:8px 12px;font-size:12px;background:var(--bg-surface);color:var(--text-muted);border:none;cursor:pointer;transition:background .15s,color .15s}.source-btn:not(:last-child){border-right:1px solid var(--bg-glass-border)}.source-btn.active{background:var(--bg-glass-border);color:var(--text-primary)}.source-btn:hover{background:var(--bg-glass)}.sensor-checklist{display:flex;flex-direction:column;gap:6px;padding:8px 0}.sensor-check-item{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;font-size:13px!important;text-transform:none!important;letter-spacing:normal!important;color:var(--text-primary)!important;margin-bottom:0!important;cursor:pointer}.sensor-check-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--teal);flex-shrink:0}.sensor-check-empty{font-size:12px;color:var(--text-muted);font-style:italic}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.animate-in{animation:fadeUp .4s ease forwards;opacity:0}.chart-section{margin-top:0}.metric-chart{min-height:280px}.chart-skeleton{height:280px;border-radius:var(--radius-sm);background:var(--bg-surface);animation:shimmer 1.5s ease-in-out infinite alternate}@keyframes shimmer{0%{opacity:.3}to{opacity:.6}}.metric-hero{display:flex;align-items:center;gap:8px;margin-bottom:0;margin-left:auto}.metric-value{font-family:DM Sans,sans-serif;font-size:13px;line-height:1;color:var(--text-muted)!important}.metric-unit{font-size:13px;color:var(--text-muted)}.metric-timestamp{font-size:12px;color:var(--text-dim);margin-left:8px}.metric-tabs,.time-selector{display:inline-flex;background:none;border:none;border-radius:100px;padding:4px;gap:2px;margin-bottom:20px;flex-wrap:wrap}.tab,.time-btn{padding:6px 16px;border-radius:100px;font-size:13px;font-weight:600;color:var(--text-muted);opacity:.7;transition:all .2s ease;cursor:pointer;border:none;background:none;font-family:DM Sans,sans-serif}.tab:hover,.time-btn:hover{color:var(--text-secondary);opacity:1}.tab.active,.time-btn.active{background:var(--green-vivid);color:var(--bg-base);opacity:1}.custom-dates{display:inline-flex;gap:6px;margin-left:8px;vertical-align:middle}.custom-dates input{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:5px 10px;font-size:12px;font-family:DM Sans,sans-serif}.custom-dates input:focus{outline:none;border-color:var(--blue-data)}.status{color:var(--text-muted);font-size:.9rem;padding:16px 0}.text-muted{color:var(--text-muted);font-size:.9rem}.status.error{color:var(--red-alert)}.plant-detail{display:flex;flex-direction:column;gap:var(--section-gap);padding-bottom:64px}.plant-detail-topbar{display:flex;justify-content:space-between;align-items:center}.plant-detail-header{display:flex;align-items:flex-start;gap:20px}.plant-detail-photo{width:96px;height:96px;object-fit:cover;border-radius:var(--radius-card);flex-shrink:0}.plant-detail-photo-placeholder{width:96px;height:96px;background:var(--bg-glass);border-radius:var(--radius-card);display:flex;align-items:center;justify-content:center;font-size:36px;flex-shrink:0}.plant-detail-info{min-width:0;flex:1}.plant-detail-name-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.plant-detail-staleness{font-size:11px;color:var(--text-dim);white-space:nowrap;flex-shrink:0}.section-card{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);padding:24px}.section-heading{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 16px;font-family:DM Sans,sans-serif;font-weight:600}.metric-tiles-grid{display:grid;gap:12px}.metric-tile{background:var(--bg-surface);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:16px;display:flex;flex-direction:column;gap:4px;transition:border-color .2s}.metric-tile:hover{border-color:var(--border-green)}.metric-tile-icon{margin-bottom:4px}.metric-tile-value{font-family:"DM Serif Display",serif;font-size:28px;line-height:1;color:var(--text-primary)}.metric-tile-unit{font-size:14px;font-family:DM Sans,sans-serif;opacity:.5;margin-left:2px}.metric-tile-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:6px}.metric-tile-status{font-size:11px;font-weight:500;margin-top:2px}.metric-tile-status.optimal{color:var(--green-soft)}.metric-tile-status.acceptable{color:var(--amber)}.metric-tile-status.critical{color:var(--red-alert)}.plant-detail-info h2{font-size:24px;margin:0;color:var(--text-primary)}.plant-detail-species{font-style:italic;color:var(--text-muted);margin-bottom:4px}.plant-detail-date{color:var(--text-dim);font-size:.85rem;margin-bottom:6px}.plant-detail-soil{color:var(--green-vivid);font-size:.85rem;margin-bottom:4px}.plant-detail-notes{color:var(--text-muted);font-size:13px;margin:8px 0 0;font-weight:300;font-style:italic;padding-left:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plant-detail-notes .quote-mark{color:var(--text-dim);font-size:1.2rem;font-style:normal;margin-right:2px}.plant-detail-notes.empty{opacity:.4;font-style:italic}.detail-section h4{font-size:.9rem;color:var(--text-muted);margin-bottom:8px;font-family:DM Sans,sans-serif}.sensor-chart-block{margin-bottom:24px}.sensor-list{list-style:none}.sensor-list-item{padding:12px 16px;background:var(--bg-surface);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);margin-bottom:8px}.sensor-name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--text-primary)}.sensor-location{color:var(--text-dim);font-size:.8rem}.sensor-rename{display:flex;align-items:center;gap:6px}.sensor-rename input{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:6px 10px;font-size:.85rem;width:180px;font-family:DM Sans,sans-serif}.sensor-rename input:focus{outline:none;border-color:var(--blue-data)}.sensor-status{margin-left:auto;font-size:12px;color:var(--green-vivid);display:flex;align-items:center;gap:6px}.sensor-status-dot{width:6px;height:6px;border-radius:50%;background:var(--green-vivid);box-shadow:0 0 6px var(--green-vivid)}.kebab-wrapper{position:relative;margin-left:12px}.kebab-btn{background:none;border:1px solid transparent;color:var(--text-muted);font-size:18px;cursor:pointer;padding:2px 8px;border-radius:6px;line-height:1;transition:all .2s ease;font-family:DM Sans,sans-serif}.kebab-btn:hover{background:var(--bg-glass);border-color:var(--bg-glass-border);color:var(--text-primary)}.kebab-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);box-shadow:0 8px 24px #0006;z-index:20;min-width:120px;overflow:hidden}.kebab-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--text-primary);padding:8px 14px;font-size:13px;cursor:pointer;transition:background .15s;font-family:DM Sans,sans-serif}.kebab-item:hover{background:var(--bg-glass)}.kebab-item.danger{color:var(--red-alert)}.kebab-item.danger:hover{background:#ef44441a}.add-sensor-row{display:flex;gap:8px;margin-top:12px;align-items:center}.add-sensor-row select{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:8px 12px;font-size:.85rem;flex:1;max-width:400px;font-family:DM Sans,sans-serif}.bottom-panels{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:16px}.alerts-panel,.alert-history{background:var(--bg-surface);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:20px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel-header h3,.alert-history h3{font-size:1rem;color:var(--text-primary)}.panel-header button{background:transparent;color:var(--green-soft);border:1px solid var(--border-green);border-radius:var(--radius-sm);padding:6px 14px;cursor:pointer;font-size:12px;font-weight:600;font-family:DM Sans,sans-serif;transition:all .2s ease}.panel-header button:hover{background:#4ade8014}.alert-form{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.alert-form select,.alert-form input{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:8px 12px;font-size:13px;font-family:DM Sans,sans-serif}.alert-form select:focus,.alert-form input:focus{outline:none;border-color:var(--blue-data)}.alert-form button{background:var(--green-vivid);color:#080c0a;border:none;border-radius:var(--radius-sm);padding:8px 14px;cursor:pointer;font-size:12px;font-weight:600;font-family:DM Sans,sans-serif}.alert-form button:disabled{opacity:.5}.alerts-table,.history-table{width:100%;border-collapse:collapse;font-size:13px}.alerts-table th,.history-table th{text-align:left;color:var(--text-muted);padding:8px 10px;border-bottom:1px solid var(--bg-glass-border);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:500}.alerts-table td,.history-table td{padding:8px 10px;border-bottom:1px solid var(--bg-glass);color:var(--text-secondary)}.delete-btn{background:transparent;color:var(--red-alert);border:1px solid rgba(239,68,68,.3);border-radius:6px;padding:3px 10px;cursor:pointer;font-size:12px;transition:all .2s ease;font-family:DM Sans,sans-serif}.delete-btn:hover{background:#ef44441a;border-color:var(--red-alert)}.sensor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--section-gap)}.sensor-tile{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);padding:20px;display:flex;flex-direction:column;gap:12px;position:relative;overflow:hidden;transition:border-color .2s ease}.sensor-tile:before{content:"";position:absolute;top:0;right:0;width:80px;height:80px;background:radial-gradient(circle at top right,var(--green-glow),transparent 70%)}.sensor-card-header{display:flex;align-items:center;gap:16px}.sensor-ident h3{font-size:1rem;color:var(--text-primary);font-family:"DM Serif Display",serif}.sensor-ident code{font-size:.75rem;color:var(--text-dim)}.sensor-details{font-size:.85rem;color:var(--text-secondary);opacity:.7}.sensor-details p{margin-bottom:4px}.sensor-details strong{color:var(--text-muted);font-weight:500}.sensor-date{font-size:.75rem;color:var(--text-dim);margin-top:4px}.board-type-info{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}.board-type-badge{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--green-glow);color:var(--green-vivid)}.board-mcu-badge,.board-adc-badge{font-size:.7rem;padding:2px 6px;border-radius:10px;background:var(--bg-glass);color:var(--text-dim)}.board-chips{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:6px}.chip-badge{font-size:.65rem;padding:2px 6px;border-radius:8px;background:#60a5fa1f;color:var(--blue-data);cursor:default}.sensor-actions{display:flex;gap:8px}.confirm-inline{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-muted)}.sensor-edit-form{display:flex;flex-direction:column;gap:12px}.plant-type-form-large{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);padding:24px;margin-bottom:24px}.range-inputs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin:16px 0}.metric-range-group{background:var(--bg-surface);padding:14px;border-radius:var(--radius-sm);border:1px solid var(--bg-glass-border)}.metric-range-group h4{margin-bottom:10px;color:var(--green-vivid);font-size:.85rem;font-family:DM Sans,sans-serif}.range-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.range-row label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.range-row input{display:block;width:100%;margin-top:4px;padding:6px 8px;font-size:13px;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:6px;font-family:DM Sans,sans-serif}.range-row input:focus{outline:none;border-color:var(--blue-data)}.species-card{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);padding:24px;margin-bottom:16px;transition:border-color .2s}.species-card:hover{border-color:#22c55e33}.plant-type-card{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);padding:24px;margin-bottom:16px;transition:border-color .2s}.plant-type-card:hover{border-color:var(--border-green)}.plant-type-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.plant-type-card-header h3{color:var(--text-primary)}.plant-type-card-header .actions{display:flex;gap:6px}.species-metrics{display:flex;flex-direction:column;gap:10px}.metric-row{display:grid;grid-template-columns:80px 1fr 60px;align-items:center;gap:12px}.metric-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.metric-bar-track{height:4px;background:var(--bg-surface);border-radius:100px;position:relative}.metric-bar-fill{position:absolute;height:100%;background:var(--color, var(--green-vivid));border-radius:100px;opacity:.7}.metric-range{font-size:11px;color:var(--text-dim);text-align:right;font-family:DM Sans,sans-serif}.plant-type-edit-mode{display:flex;flex-direction:column;gap:8px}.plant-type-edit-mode .name-edit{font-size:1.1rem;font-weight:700;width:100%;background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:10px 14px;font-family:DM Sans,sans-serif}.plant-type-edit-mode .name-edit:focus{outline:none;border-color:var(--blue-data)}.ranges-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.summary-item{font-size:.8rem;color:var(--text-secondary);opacity:.7}.summary-label{color:var(--text-muted);margin-right:4px;text-transform:capitalize}.summary-values{font-family:DM Sans,sans-serif;font-variant-numeric:tabular-nums}.soil-type-form{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);padding:20px;margin-bottom:24px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.soil-type-form input{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:8px 12px;font-size:14px;font-family:DM Sans,sans-serif}.soil-type-form input:focus{outline:none;border-color:var(--blue-data)}.soil-type-form label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.soil-type-form label input{display:block;width:90px;margin-top:4px}.soil-card{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card);padding:20px;margin-bottom:16px;transition:border-color .2s}.soil-card:hover{border-color:var(--border-green)}.soil-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.soil-header h3{color:var(--text-primary);font-size:1rem}.soil-actions{display:flex;gap:6px}.calibration-bar{display:flex;align-items:center;gap:12px;font-size:12px}.cal-label,.cal-bit-label{color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;min-width:38px}.cal-group-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:8px 0 4px;padding-left:2px}.cal-track{flex:1;height:6px;background:var(--bg-surface);border-radius:100px;display:flex;overflow:hidden}.cal-wet{height:100%;background:var(--teal);opacity:.6;border-radius:100px 0 0 100px}.cal-dry{height:100%;background:var(--amber);opacity:.4}.cal-values{color:var(--text-dim);font-size:11px;font-variant-numeric:tabular-nums;min-width:80px;text-align:right}.soil-types-table{width:100%;border-collapse:collapse;font-size:14px}.soil-types-table th{text-align:left;color:var(--text-muted);padding:10px 12px;border-bottom:1px solid var(--bg-glass-border);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:500}.soil-types-table td{padding:10px 12px;border-bottom:1px solid var(--bg-glass);color:var(--text-secondary)}.soil-types-table td input{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:6px;padding:6px 10px;font-size:14px;font-family:DM Sans,sans-serif}.soil-types-table td input:focus{outline:none;border-color:var(--blue-data)}.soil-types-table td .btn-sm{margin-right:4px}.sensor-selector{display:flex;align-items:center;gap:8px}.sensor-selector label{font-size:13px;color:var(--text-muted)}.sensor-selector select{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:8px 12px;font-size:13px;font-family:DM Sans,sans-serif}.room-section{margin-bottom:32px}.room-section-header{display:flex;align-items:center;gap:10px;cursor:pointer;padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid var(--bg-glass-border);-webkit-user-select:none;user-select:none}.room-section-header h3{font-family:"DM Serif Display",serif;font-size:1.15rem;color:var(--text-primary);margin:0}.room-section-header:hover h3{color:var(--green-soft)}.room-section-count{font-size:12px;color:var(--text-dim);background:var(--bg-glass);padding:2px 8px;border-radius:100px}.room-metric-chips{display:flex;gap:12px;margin-left:auto}.room-metric-chip{display:flex;align-items:center;gap:4px;font-size:.75rem;color:var(--text-muted);white-space:nowrap}.toggle-icon{color:var(--text-muted);font-size:12px;transition:transform .2s ease;display:inline-block}.toggle-icon.collapsed{transform:rotate(-90deg)}.room-plant-count{font-size:.8rem;color:var(--text-dim);display:block;margin-top:2px}.stats-subtitle{font-size:13px;color:var(--text-muted);margin-top:-16px;margin-bottom:24px;opacity:.7}.detail-tags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}.detail-tag{font-size:11px;color:var(--text-secondary);background:var(--bg-glass);border:1px solid var(--bg-glass-border);border-radius:100px;padding:3px 10px;display:inline-flex;gap:6px;align-items:center}.detail-tag-label{color:var(--text-dim);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.danger-zone{margin-top:16px;padding-top:0}.danger-divider{border:none;border-top:1px solid var(--border-subtle);margin-bottom:16px}.btn-text-danger{background:none;border:none;color:var(--red-alert);opacity:.6;font-size:13px;cursor:pointer;padding:4px 0;font-family:DM Sans,sans-serif;transition:opacity .2s}.btn-text-danger:hover{opacity:1}.readings-hero{display:flex;flex-direction:column;margin-bottom:32px;padding:24px;background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-card)}.readings-hero-metrics{display:flex;gap:0;justify-content:center}.reading-hero-card{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;min-width:90px;padding:0 20px}.reading-hero-card.with-divider{border-right:1px solid var(--border-subtle)}.reading-hero-value{font-family:"DM Serif Display",serif;font-size:48px;line-height:1}.reading-hero-unit-inline{font-size:20px;opacity:.6;font-family:DM Sans,sans-serif}.reading-hero-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin-top:6px}.readings-hero-timestamp{text-align:center;margin-top:16px;padding-top:12px;border-top:1px solid var(--bg-glass);font-size:11px;color:var(--text-dim)}.toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column-reverse;gap:8px;z-index:200;pointer-events:none}.toast{background:var(--bg-card);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:12px 16px;display:flex;align-items:center;gap:12px;min-width:260px;max-width:400px;box-shadow:0 8px 32px #00000080;pointer-events:auto;transform:translate(120%);opacity:0;transition:transform .3s ease,opacity .3s ease}.toast.toast-visible{transform:translate(0);opacity:1}.toast-success{border-left:3px solid var(--green-vivid)}.toast-error{border-left:3px solid var(--red-alert)}.toast-info{border-left:3px solid var(--blue-data)}.toast-message{flex:1;font-size:13px;color:var(--text-primary)}.toast-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:0 4px;line-height:1;transition:color .2s}.toast-close:hover{color:var(--text-primary)}.btn-edit{background:var(--bg-glass-border);border:1px solid var(--text-dim);color:var(--text-primary);padding:8px 20px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-family:DM Sans,sans-serif;transition:background .2s;margin-top:20px;display:inline-flex;align-items:center;gap:6px}.btn-edit:hover{background:var(--text-dim)}.chart-title{font-size:13px;letter-spacing:.04em;color:var(--text-dim);margin-bottom:12px;font-family:DM Sans,sans-serif;font-weight:500}.chart-controls-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:20px}.link-sensor-btn{width:100%;height:44px;border:1px dashed var(--text-dim);background:transparent;color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-family:DM Sans,sans-serif;transition:all .2s ease;margin-top:12px}.link-sensor-btn:hover{border-color:#4ade8066;color:#4ade80}.empty-state-card{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:120px;text-align:center;padding:24px}.empty-state-card .empty-icon{font-size:24px;margin-bottom:8px;opacity:.2}.empty-state-card .empty-icon.positive{color:var(--green-vivid);opacity:.3}.empty-state-card .empty-text{font-size:13px;color:var(--text-muted)}.empty-state-card .empty-subtext{font-size:12px;color:var(--text-dim);margin-top:4px}.readings-hero-unified-status{text-align:center;font-size:12px;margin-top:8px;padding-top:8px}.photo-upload img{border-radius:var(--radius-sm)!important;border:1px solid var(--bg-glass-border)}:root[data-theme=light] body:before{background-image:linear-gradient(rgba(22,163,74,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(22,163,74,.04) 1px,transparent 1px)}.watering-log{margin-top:1.5rem}.watering-log-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.watering-log-header h3{margin:0;font-size:1rem;color:var(--text-primary)}.watering-timeline{position:relative;padding-left:1.5rem;border-left:2px solid var(--border-subtle)}.watering-event{position:relative;display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 0}.watering-event+.watering-event{border-top:1px solid var(--border-subtle)}.watering-event-dot{position:absolute;left:-1.75rem;top:1rem;width:10px;height:10px;border-radius:50%;background:var(--blue-data);border:2px solid var(--bg-surface)}.watering-event-content{flex:1}.watering-event-header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.watering-event-date{font-size:.85rem;color:var(--text-secondary)}.watering-source-badge{font-size:.7rem;padding:2px 6px;border-radius:4px;font-weight:600;text-transform:uppercase}.watering-source-badge.auto{background:var(--green-glow);color:var(--green-vivid)}.watering-source-badge.manual{background:#60a5fa26;color:var(--blue-data)}.watering-moisture{font-size:.8rem;color:var(--text-muted);margin-top:.25rem}.watering-event-delete{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:1.2rem;padding:0 4px;opacity:0;transition:opacity .2s,color .2s}.watering-event:hover .watering-event-delete{opacity:1}.watering-event-delete:hover{color:var(--red-alert)}.watering-schedule-card{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.watering-schedule-info{display:flex;flex-direction:column;gap:4px}.watering-schedule-interval{font-size:1rem;font-weight:600;color:var(--text-primary)}.watering-schedule-due{font-size:.85rem;color:var(--text-secondary)}.watering-schedule-due.overdue{color:var(--red-alert);font-weight:600}.watering-schedule-last{font-size:.8rem;color:var(--text-muted)}.watering-schedule-notes{font-size:.8rem;color:var(--text-dim);font-style:italic}.watering-schedule-actions{display:flex;gap:8px;align-items:center}.watering-schedule-create{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.watering-schedule-create-label{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--text-secondary)}.watering-schedule-input{width:60px;text-align:center;background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--bg-glass-border);border-radius:var(--radius-sm);padding:6px 8px;font-size:.9rem;font-family:DM Sans,sans-serif}.watering-schedule-input:focus{outline:none;border-color:var(--blue-data)}button.btn-sm,label.btn-sm{padding:6px 14px;font-size:12px}.watering-overdue-dot{display:inline-flex;align-items:center;justify-content:center;position:relative;color:var(--blue-data);flex-shrink:0}.watering-overdue-dot:after{content:"";position:absolute;top:-1px;right:-1px;width:6px;height:6px;border-radius:50%;background:var(--red-alert);box-shadow:0 0 4px var(--red-alert)}@media (max-width: 767px){.plant-grid,.sensor-grid{grid-template-columns:1fr}.topnav-centre{gap:2px}.page-content{padding:56px 16px 16px}.bottom-panels{grid-template-columns:1fr}.metric-tiles-grid{grid-template-columns:repeat(2,1fr)!important;gap:8px}.metric-tile{padding:12px}.section-card{padding:16px}}@media (max-width: 600px){.plant-detail-photo,.plant-detail-photo-placeholder{width:72px;height:72px}.plant-detail-photo-placeholder{font-size:30px}}@media (max-width: 480px){.metric-tiles-grid{grid-template-columns:1fr!important}.plant-detail-name-row{flex-wrap:wrap}.topnav-icon-btn{width:34px;height:34px}}.metric-tile-trend{margin-top:4px;display:flex;align-items:center;gap:6px}.metric-tile-sparkline{flex:1;min-width:0}.metric-tile-change{font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0}.metric-tile-change.up{color:var(--green-vivid)}.metric-tile-change.down{color:var(--red-alert)}.metric-tile-change.stable{color:var(--text-muted)}.channel-type-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase;background:var(--green-glow);color:var(--green-vivid);margin-right:.5rem}.channel-config-preview{font-size:.85rem;color:var(--text-secondary)}.channel-actions{display:flex;align-items:center;gap:.5rem}.toggle-switch{position:relative;display:inline-block;width:36px;height:20px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--text-dim);border-radius:20px;transition:.3s}.toggle-slider:before{content:"";position:absolute;height:14px;width:14px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.3s}.toggle-switch input:checked+.toggle-slider{background:var(--green-vivid)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(16px)}.user-avatar{width:28px;height:28px;border-radius:50%;border:1px solid var(--border-subtle);cursor:pointer;transition:opacity .2s}.user-avatar:hover{opacity:.8}.remember-session-label{display:flex;align-items:center;gap:8px;font-size:.8125rem;color:var(--text-muted);cursor:pointer}.remember-session-label input[type=checkbox]{accent-color:var(--green-vivid)}.app-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--text-muted);font-size:1.1rem}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-base);padding:1rem}.login-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);padding:3rem 2.5rem;text-align:center;max-width:380px;width:100%;box-shadow:var(--shadow-card);position:relative}.login-logo{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:.5rem}.login-logo h1{font-family:"DM Serif Display",serif;font-size:24px;color:var(--green-vivid);margin:0}.login-leaf-icon{color:var(--green-vivid);width:28px;height:28px}.login-subtitle{color:var(--text-muted);font-size:.875rem;margin:0 0 2rem}.login-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:var(--red-alert);padding:.75rem 1rem;border-radius:var(--radius-sm);font-size:.8125rem;margin-bottom:1.5rem}.login-form{display:flex;flex-direction:column;gap:.75rem;width:100%}.login-input{padding:.75rem 1rem;background:var(--bg-glass);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.875rem;width:100%;box-sizing:border-box;outline:none;transition:border-color .15s}.login-input:focus{border-color:var(--accent)}.login-input::placeholder{color:var(--text-dim)}.login-theme-toggle{position:absolute;top:1rem;right:1rem}.sensor-detail{max-width:900px}.sensor-detail-header{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}.sensor-detail-meta{flex:1}.sensor-detail-meta p{margin:4px 0;font-size:.85rem;color:var(--text-secondary)}.table-wrap{overflow-x:auto}.readings-table{width:100%;border-collapse:collapse;font-size:13px}.readings-table th{text-align:left;color:var(--text-muted);padding:10px 12px;border-bottom:1px solid var(--bg-glass-border);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:500}.readings-table td{padding:8px 12px;border-bottom:1px solid var(--bg-glass);color:var(--text-secondary);font-variant-numeric:tabular-nums}.readings-table tbody tr:hover{background:var(--bg-glass)}.metric-cell{display:flex;align-items:center;gap:6px}.sensor-tile:hover{border-color:var(--border-green)}
