@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Inter_Fallback_f367f3;src:local("Arial");ascent-override:90.49%;descent-override:22.56%;line-gap-override:0.00%;size-adjust:107.06%}.__className_f367f3{font-family:__Inter_f367f3,__Inter_Fallback_f367f3;font-style:normal}.__variable_f367f3{--font-sans:"__Inter_f367f3","__Inter_Fallback_f367f3"}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/886030b0b59bc5a7-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/0aa834ed78bf6d07-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/67957d42bae0796d-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/f911b923c6adde36-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/939c4f875ee75fbb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/bb3ef058b751a6ad-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__JetBrains_Mono_Fallback_3c557b;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_3c557b{font-family:__JetBrains_Mono_3c557b,__JetBrains_Mono_Fallback_3c557b;font-style:normal}.__variable_3c557b{--font-mono:"__JetBrains_Mono_3c557b","__JetBrains_Mono_Fallback_3c557b"}:root{--bg:#0f172a;--surface:#1b2336;--surface-2:#252e42;--border:#2a3348;--border-strong:#3a4560;--text:#f8fafc;--text-muted:#94a3b8;--text-dim:#64748b;--accent:#22c55e;--accent-dim:rgba(34,197,94,.12);--accent-grad:linear-gradient(135deg,#34d77e,#16a34a);--accent-glow:0 6px 20px rgba(34,197,94,.35);--warning:#f59e0b;--danger:#ef4444;--c-moisture:#3b82f6;--c-temp:#f97316;--c-ec:#a855f7;--c-battery:#22c55e;--shadow-1:0 1px 2px rgba(0,0,0,.3);--shadow-2:0 4px 12px rgba(0,0,0,.25),0 1px 3px rgba(0,0,0,.4);--glass-bg:rgba(26,34,52,.55);--glass-bg-2:rgba(34,44,66,.68);--glass-bg-strong:rgba(20,27,43,.8);--glass-border:hsla(0,0%,100%,.1);--glass-highlight:hsla(0,0%,100%,.14);--glass-blur:22px;--glass-shadow:0 10px 34px rgba(0,0,0,.45);--glass-shadow-lg:0 22px 60px rgba(0,0,0,.55);--amb-1:rgba(34,197,94,.18);--amb-2:rgba(56,189,248,.16);--amb-3:rgba(168,85,247,.14);--amb-base:#0b1120;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-xl:24px;--t-fast:150ms cubic-bezier(0.4,0,0.2,1);--t-base:240ms cubic-bezier(0.22,1,0.36,1);font-feature-settings:"cv11","ss01"}:root[data-theme=light]{--bg:#f1f5f9;--surface:#fff;--surface-2:#f8fafc;--border:#e2e8f0;--border-strong:#cbd5e1;--text:#0f172a;--text-muted:#475569;--text-dim:#64748b;--accent:#16a34a;--accent-dim:rgba(22,163,74,.1);--accent-grad:linear-gradient(135deg,#22c55e,#15803d);--accent-glow:0 6px 20px rgba(22,163,74,.28);--warning:#d97706;--danger:#dc2626;--c-moisture:#2563eb;--c-temp:#ea580c;--c-ec:#9333ea;--c-battery:#16a34a;--shadow-1:0 1px 2px rgba(15,23,42,.06);--shadow-2:0 4px 12px rgba(15,23,42,.08),0 1px 3px rgba(15,23,42,.05);--glass-bg:hsla(0,0%,100%,.58);--glass-bg-2:hsla(0,0%,100%,.72);--glass-bg-strong:hsla(0,0%,100%,.85);--glass-border:hsla(0,0%,100%,.7);--glass-highlight:hsla(0,0%,100%,.95);--glass-blur:20px;--glass-shadow:0 10px 30px rgba(15,23,42,.12);--glass-shadow-lg:0 22px 55px rgba(15,23,42,.18);--amb-1:rgba(34,197,94,.22);--amb-2:rgba(56,189,248,.2);--amb-3:rgba(168,85,247,.16);--amb-base:#eaf0f7}*{box-sizing:border-box;margin:0;padding:0}button,details,input,select,summary,table,td,textarea,th{font-family:inherit;font-size:inherit;color:inherit}html{background:var(--amb-base)}body,html{font-family:var(--font-sans),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em;min-height:100vh}body{background:transparent}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(58vw 58vw at 12% -8%,var(--amb-1),transparent 60%),radial-gradient(50vw 50vw at 100% 8%,var(--amb-2),transparent 60%),radial-gradient(60vw 60vw at 80% 110%,var(--amb-3),transparent 62%),radial-gradient(45vw 45vw at -10% 100%,var(--amb-1),transparent 60%);background-color:var(--amb-base)}@supports not (((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))) or (-webkit-backdrop-filter:blur(1px))){:root{--glass-bg:#1b2336;--glass-bg-2:#252e42;--glass-bg-strong:#161e30}:root[data-theme=light]{--glass-bg:#fff;--glass-bg-2:#f8fafc;--glass-bg-strong:#fff}}@media (prefers-reduced-motion:reduce){.card:hover,.kpi-card:hover,.nav-tile:hover,.wall-summary-card:hover{transform:none}.modal-box{animation:none}}html{scroll-behavior:smooth}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text-muted) 40%,transparent);border-radius:999px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--text-muted) 60%,transparent);background-clip:content-box}::selection{background:var(--accent-dim);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}a:focus:not(:focus-visible),button:focus:not(:focus-visible){outline:none}.dev-eui,.metric-value,.mono{font-family:var(--font-mono),"SF Mono",Menlo,Monaco,"Courier New",monospace;font-feature-settings:"tnum","zero"}.brand-bar{position:-webkit-sticky;position:sticky;top:0;z-index:100;background:var(--glass-bg-strong);-webkit-backdrop-filter:saturate(180%) blur(var(--glass-blur));backdrop-filter:saturate(180%) blur(var(--glass-blur));border-bottom:1px solid var(--glass-border);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow);padding:var(--s-4) 0}.brand-bar-inner{max-width:1280px;margin:0 auto;padding:0 var(--s-6);display:flex;align-items:center;gap:var(--s-5);flex-wrap:wrap}.brand-logo{height:40px;width:auto;display:block}.brand-logo--for-light,:root[data-theme=light] .brand-logo--for-dark{display:none}:root[data-theme=light] .brand-logo--for-light{display:block}.brand-tagline{color:var(--text-muted);font-size:.8125rem;letter-spacing:.02em;padding-left:var(--s-5);border-left:1px solid var(--border-strong)}.top-nav{display:flex;gap:2px;margin-left:auto;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:999px;padding:3px}.top-nav-link{padding:6px 15px;font-size:.8125rem;font-weight:500;color:var(--text-muted);text-decoration:none;border-radius:999px;transition:all var(--t-fast)}.top-nav-link:hover{color:var(--text)}.top-nav-link.is-active{background:var(--glass-bg-2);color:var(--text);box-shadow:0 1px 0 var(--glass-highlight) inset,0 2px 8px rgba(0,0,0,.18)}.container{max-width:1280px;margin:0 auto;padding:var(--s-7) var(--s-6)}.header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--s-6);gap:var(--s-4);flex-wrap:wrap}.header h1{font-size:1.75rem;font-weight:600;color:var(--text);letter-spacing:-.02em}.header .subtitle{color:var(--text-muted);font-size:.875rem;margin-top:2px}.refresh-info{font-size:.75rem;color:var(--text-dim);display:flex;align-items:center;gap:var(--s-2)}.refresh-info:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.card{position:relative;background:var(--glass-bg);-webkit-backdrop-filter:saturate(160%) blur(var(--glass-blur));backdrop-filter:saturate(160%) blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-lg);padding:var(--s-5);margin-bottom:var(--s-5);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow);transition:transform var(--t-base),box-shadow var(--t-base),border-color var(--t-base)}.card:hover{border-color:var(--glass-highlight);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow-lg)}.sensor-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--s-5);gap:var(--s-4);flex-wrap:wrap}.sensor-card-header h2{font-size:1.125rem;font-weight:600;letter-spacing:-.01em}.dev-eui{font-size:.75rem;color:var(--text-dim);margin-top:2px}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:var(--s-3);gap:var(--s-3)}.metric{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-4);transition:transform var(--t-base),border-color var(--t-base)}.metric:hover{border-color:var(--border-strong);transform:translateY(-1px)}.metric-header{display:flex;align-items:center;gap:var(--s-2);margin-bottom:var(--s-3)}.metric-icon{width:18px;height:18px;stroke-width:2;flex-shrink:0}.metric.moisture .metric-icon{color:var(--c-moisture)}.metric.temperature .metric-icon{color:var(--c-temp)}.metric.conductivity .metric-icon{color:var(--c-ec)}.metric.battery .metric-icon{color:var(--c-battery)}.metric-label{font-size:.6875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.metric-value{font-size:1.875rem;font-weight:500;color:var(--text);line-height:1;letter-spacing:-.02em}.metric-unit{font-size:.8125rem;color:var(--text-muted);font-weight:400;margin-left:4px;font-family:var(--font-sans),sans-serif}.metric-subvalue{font-size:.75rem;color:var(--text-dim);margin-top:var(--s-1);font-family:var(--font-mono),monospace;font-feature-settings:"tnum"}.status-badge{display:inline-flex;align-items:center;gap:var(--s-2);padding:4px var(--s-3);border-radius:999px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border:1px solid transparent}.status-badge.online{background:rgba(34,197,94,.1);color:#4ade80;border-color:rgba(34,197,94,.25)}.status-badge.stale{background:rgba(245,158,11,.1);color:#fbbf24;border-color:rgba(245,158,11,.25)}.status-badge.offline{background:rgba(239,68,68,.1);color:#f87171;border-color:rgba(239,68,68,.25)}.status-dot{width:6px;height:6px;background:currentColor}.status-badge.online .status-dot{box-shadow:0 0 8px currentColor;animation:pulse 2s ease-in-out infinite}.last-seen{font-size:.75rem;color:var(--text-dim);margin-top:var(--s-4);display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;font-family:var(--font-mono),monospace;font-feature-settings:"tnum"}.last-seen .sep{color:var(--border-strong)}.tdc-control{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--border);display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-3)}.tdc-label{font-size:.6875rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.tdc-buttons{display:flex;gap:var(--s-1)}.tdc-btn{padding:6px var(--s-3);font-size:.75rem;font-weight:500;font-family:inherit;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;transition:all var(--t-fast);letter-spacing:.01em}.tdc-btn:hover:not(:disabled){background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}.tdc-btn:active:not(:disabled){transform:translateY(1px)}.tdc-btn:disabled{opacity:.4;cursor:not-allowed}.tdc-message{font-size:.75rem;padding:4px var(--s-3);border-radius:var(--r-sm);border:1px solid transparent;font-family:var(--font-mono),monospace}.tdc-message.ok{background:rgba(34,197,94,.1);color:#4ade80;border-color:rgba(34,197,94,.25)}.tdc-message.err{background:rgba(239,68,68,.1);color:#f87171;border-color:rgba(239,68,68,.25)}.chart-title{font-size:.875rem;font-weight:600;margin-bottom:var(--s-3);color:var(--text);display:flex;align-items:center;justify-content:space-between}.chart-title-meta{font-size:.75rem;color:var(--text-dim);font-weight:400}.chart-container{position:relative;height:340px}.breadcrumb{display:flex;flex-wrap:wrap;font-size:.8125rem;color:var(--text-muted);margin-bottom:var(--s-4)}.breadcrumb,.breadcrumb-item{align-items:center;gap:var(--s-2)}.breadcrumb-item{display:inline-flex}.breadcrumb a{color:var(--text-muted);text-decoration:none;transition:color var(--t-fast)}.breadcrumb a:hover{color:var(--accent)}.breadcrumb-current{color:var(--text);font-weight:500}.breadcrumb-sep{color:var(--text-dim)}.nav-tile{position:relative;display:flex;align-items:center;gap:var(--s-5);padding:var(--s-4) var(--s-5);background:var(--glass-bg);-webkit-backdrop-filter:saturate(160%) blur(var(--glass-blur));backdrop-filter:saturate(160%) blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-lg);margin-bottom:var(--s-3);text-decoration:none;color:inherit;cursor:pointer;box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow);transition:border-color var(--t-base),transform var(--t-base),box-shadow var(--t-base)}.nav-tile:hover{border-color:var(--glass-highlight);transform:translateY(-2px);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow-lg)}.nav-tile-accent{position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 2px 2px 0}.nav-tile-main{flex:1 1;min-width:0}.nav-tile-title{font-size:1rem;font-weight:600;color:var(--text);letter-spacing:-.01em}.nav-tile-subtitle{font-size:.8125rem;color:var(--text-muted);margin-top:2px}.nav-tile-stats{display:flex;gap:var(--s-5);align-items:center}.nav-tile-stat{display:flex;flex-direction:column;align-items:flex-end;line-height:1}.nav-tile-stat-value{font-family:var(--font-mono),monospace;font-size:1.125rem;font-weight:500;color:var(--text);font-feature-settings:"tnum"}.nav-tile-stat-label{font-size:.6875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:4px}.nav-tile-chevron{color:var(--text-dim);flex-shrink:0;transition:transform var(--t-fast),color var(--t-fast)}.nav-tile:hover .nav-tile-chevron{color:var(--accent);transform:translateX(3px)}.empty-state{padding:var(--s-3) var(--s-4);text-align:center;color:var(--text-muted);font-size:.8125rem}.error-state{padding:var(--s-4);background:rgba(239,68,68,.1);color:#f87171;border:1px solid rgba(239,68,68,.25);border-radius:var(--r-md);font-size:.875rem;margin-bottom:var(--s-4)}.btn{font-family:inherit;font-size:.875rem;font-weight:500;padding:8px 16px;border-radius:var(--r-sm);background:var(--glass-bg-2);border:1px solid var(--glass-border);color:var(--text);cursor:pointer;transition:all var(--t-fast);letter-spacing:-.005em;display:inline-flex;align-items:center;gap:var(--s-2)}.btn:hover:not(:disabled){border-color:var(--glass-highlight)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--accent-grad);color:#04110a;border-color:transparent;box-shadow:var(--accent-glow)}.btn-primary:hover:not(:disabled){filter:brightness(1.06);box-shadow:var(--accent-glow),0 0 0 1px var(--glass-highlight) inset}.btn-secondary{background:var(--glass-bg-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text);border-color:var(--glass-border)}.btn-secondary:hover:not(:disabled){border-color:var(--glass-highlight);background:var(--glass-bg-strong)}.btn-danger{background:var(--danger);color:#fff;border-color:transparent;box-shadow:0 6px 18px rgba(239,68,68,.32)}.btn-danger:hover:not(:disabled){filter:brightness(1.06)}.btn-ghost{background:transparent;color:var(--text-muted);border-color:var(--glass-border)}.btn-ghost:hover:not(:disabled){color:var(--text);border-color:var(--glass-highlight);background:var(--glass-bg)}.header-actions{display:flex;gap:var(--s-2);align-items:center}.nav-tile-actions{display:flex;gap:4px;opacity:0;transition:opacity var(--t-fast)}.nav-tile:hover .nav-tile-actions{opacity:1}.tile-action{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text-muted);border:1px solid transparent;border-radius:var(--r-sm);cursor:pointer;transition:all var(--t-fast)}.tile-action:hover{background:var(--surface-2);color:var(--text);border-color:var(--border)}.tile-action-danger:hover{color:var(--danger);border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.08)}.modal-overlay{position:fixed;inset:0;background:rgba(5,10,20,.55);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--s-4);animation:modal-in .15s ease-out}@keyframes modal-in{0%{opacity:0}to{opacity:1}}@keyframes modal-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-box{width:100%;background:var(--glass-bg-strong);-webkit-backdrop-filter:saturate(180%) blur(var(--glass-blur));backdrop-filter:saturate(180%) blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-xl);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow-lg);display:flex;flex-direction:column;max-height:calc(100vh - 48px);animation:modal-pop .24s cubic-bezier(.22,1,.36,1)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--border)}.modal-header h2{font-size:1.1rem;font-weight:600;letter-spacing:-.01em}.modal-close{background:transparent;border:none;color:var(--text-muted);font-size:1.6rem;line-height:1;cursor:pointer;padding:0 var(--s-2);transition:color var(--t-fast)}.modal-close:hover{color:var(--text)}.modal-body{padding:var(--s-5);overflow-y:auto;display:flex;flex-direction:column;gap:var(--s-4)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--s-2);padding:var(--s-4) var(--s-5);border-top:1px solid var(--border)}.form-row{display:flex;flex-direction:column;gap:6px}.form-label{font-size:.8125rem;font-weight:500;color:var(--text-muted)}.form-req{color:var(--danger)}.form-input{background:var(--glass-bg);color:var(--text);border:1px solid var(--glass-border);border-radius:var(--r-sm);padding:9px 11px;font-size:.9rem;font-family:inherit;transition:border-color var(--t-fast),box-shadow var(--t-fast);width:100%}.form-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.form-input-mono{font-family:var(--font-mono),monospace;font-size:.85rem}.form-textarea{resize:vertical;min-height:60px}.form-color-row{display:flex;gap:var(--s-2);align-items:stretch}.form-color{width:48px;height:38px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);cursor:pointer;padding:2px}.form-hint{font-size:.75rem;color:var(--text-dim)}.form-error{padding:var(--s-3);background:rgba(239,68,68,.12);color:#f87171;border:1px solid rgba(239,68,68,.3);border-radius:var(--r-sm);font-size:.8125rem}.confirm-message{font-size:.9rem;color:var(--text);line-height:1.5}.confirm-hint{font-size:.8125rem;color:var(--text-muted)}.confirm-hint strong{font-family:var(--font-mono),monospace;color:var(--text);background:var(--surface-2);padding:1px 6px;border-radius:4px;border:1px solid var(--border)}:root{--wall-dry:#ef4444;--wall-ok:#22c55e;--wall-wet:#3b82f6;--wall-stale:#64748b}.wall-diagram-wrap{display:flex;flex-direction:column;gap:var(--s-3);margin-bottom:var(--s-5)}.wall-diagram-toolbar{justify-content:space-between;align-items:center}.wall-diagram-toolbar,.wall-legend{display:flex;gap:var(--s-4);flex-wrap:wrap}.wall-legend{font-size:.8125rem;color:var(--text-muted)}.wall-legend-item{gap:6px}.wall-legend-dot,.wall-legend-item{display:inline-flex;align-items:center}.wall-legend-dot{justify-content:center;width:18px;height:18px;border-radius:50%;color:#0b1120;font-weight:700;font-size:.7rem;font-family:var(--font-mono),monospace}.wall-legend-item.status-dry .wall-legend-dot{background:var(--wall-dry)}.wall-legend-item.status-ok .wall-legend-dot{background:var(--wall-ok)}.wall-legend-item.status-wet .wall-legend-dot{background:var(--wall-wet);color:#fff}.wall-legend-item.status-stale .wall-legend-dot{background:var(--wall-stale);color:#fff}.wall-edit-toggle{display:inline-flex;align-items:center;gap:var(--s-2);font-size:.8125rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:6px 12px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface-2);transition:all var(--t-fast)}.wall-edit-toggle:hover{border-color:var(--border-strong);color:var(--text)}.wall-edit-toggle input{accent-color:var(--accent)}.wall-diagram{position:relative;width:100%;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;transition:border-color var(--t-base),box-shadow var(--t-base)}.wall-diagram.is-edit{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.wall-svg{display:block;width:100%;height:100%;color:var(--text-dim);touch-action:none}.wall-bg{fill:var(--surface-2)}.wall-photo-bg{opacity:.85}.wall-dot-group{transition:filter var(--t-fast)}.wall-dot-group:hover{filter:brightness(1.1)}.wall-dot{transition:r .12s ease,filter var(--t-fast)}.wall-dot-echo{fill:none;stroke:currentColor;stroke-width:1;opacity:0;transition:opacity .12s ease,r .12s ease}.wall-dot-group.is-drag .wall-dot-echo,.wall-dot-group.is-hover .wall-dot-echo{opacity:.7}.wall-dot-group.is-drag .wall-dot-echo{opacity:1}.wall-dot-group.status-dry{color:var(--wall-dry)}.wall-dot-group.status-ok{color:var(--wall-ok)}.wall-dot-group.status-wet{color:var(--wall-wet)}.wall-dot-group.status-stale{color:var(--wall-stale)}.wall-dot-group.status-dry .wall-dot{fill:var(--wall-dry)}.wall-dot-group.status-ok .wall-dot{fill:var(--wall-ok)}.wall-dot-group.status-wet .wall-dot{fill:var(--wall-wet)}.wall-dot-group.status-stale .wall-dot{fill:var(--wall-stale)}.wall-dot-glyph{fill:#0b1120;font-size:2.8px;font-weight:700;font-family:var(--font-mono),monospace;pointer-events:none}.wall-dot-group.status-stale .wall-dot-glyph,.wall-dot-group.status-wet .wall-dot-glyph{fill:#fff}@media (prefers-reduced-motion:reduce){.wall-diagram,.wall-dot,.wall-dot-echo{transition:none}}.wall-tooltip{position:absolute;transform:translate(-50%,calc(-100% - 14px));background:var(--surface);border:1px solid var(--border-strong);border-left-width:3px;border-radius:var(--r-md);padding:var(--s-3) var(--s-4);box-shadow:var(--shadow-2);font-size:.8125rem;min-width:170px;pointer-events:none;z-index:5;animation:modal-in .12s ease-out}.wall-tooltip.status-dry{border-left-color:var(--wall-dry)}.wall-tooltip.status-ok{border-left-color:var(--wall-ok)}.wall-tooltip.status-wet{border-left-color:var(--wall-wet)}.wall-tooltip.status-stale{border-left-color:var(--wall-stale)}.wall-tooltip-title{font-weight:600;color:var(--text);margin-bottom:6px}.wall-tooltip-metric{display:flex;justify-content:space-between;gap:var(--s-4);color:var(--text-muted);font-size:.75rem}.wall-tooltip-metric strong{color:var(--text);font-family:var(--font-mono),monospace;font-weight:500;font-feature-settings:"tnum"}.wall-tooltip-meta{margin-top:6px;font-size:.7rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.wall-diagram-hint{font-size:.8125rem;color:var(--text-dim);padding:0 4px}.chart-controls{display:flex;justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;margin-bottom:var(--s-3)}.chart-tabs{display:inline-flex;gap:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px}.chart-tab{font-family:inherit;padding:5px 12px;font-size:.75rem;font-weight:500;background:transparent;color:var(--text-muted);border:none;border-radius:4px;cursor:pointer;transition:all var(--t-fast)}.chart-tab:hover{color:var(--text)}.chart-tab.is-active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.time-range{display:inline-flex;gap:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px}.time-btn{font-family:var(--font-mono),monospace;padding:5px 10px;font-size:.75rem;font-weight:500;background:transparent;color:var(--text-muted);border:none;border-radius:4px;cursor:pointer;transition:all var(--t-fast)}.time-btn:hover{color:var(--text)}.time-btn.is-active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:var(--s-4);gap:var(--s-4);margin-bottom:var(--s-6)}.kpi-card{background:var(--glass-bg);-webkit-backdrop-filter:saturate(160%) blur(var(--glass-blur));backdrop-filter:saturate(160%) blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-lg);padding:var(--s-5);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow);transition:transform var(--t-base),box-shadow var(--t-base),border-color var(--t-base)}.kpi-card:hover{border-color:var(--glass-highlight);transform:translateY(-2px);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow-lg)}.kpi-header{display:flex;align-items:center;gap:var(--s-2);margin-bottom:var(--s-3)}.kpi-icon{width:18px;height:18px;color:var(--text-muted);flex-shrink:0}.kpi-icon-moisture{color:var(--c-moisture)}.kpi-icon-battery{color:var(--c-battery)}.kpi-icon-danger{color:var(--danger)}.kpi-icon-ok{color:var(--accent)}.kpi-label{font-size:.6875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.kpi-value{font-family:var(--font-mono),monospace;font-size:2.25rem;font-weight:500;color:var(--text);line-height:1;letter-spacing:-.02em;font-feature-settings:"tnum","zero"}.kpi-value-danger{color:var(--danger)}.kpi-value-ok{color:var(--accent)}.kpi-unit{font-size:1rem;color:var(--text-muted);font-weight:400;margin-left:4px;font-family:var(--font-sans),sans-serif}.kpi-breakdown{display:flex;gap:var(--s-2);margin-top:var(--s-3);flex-wrap:wrap}.kpi-tag{font-size:.6875rem;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid transparent}.kpi-tag-online{background:rgba(34,197,94,.1);color:#4ade80;border-color:rgba(34,197,94,.25)}.kpi-tag-stale{background:rgba(245,158,11,.1);color:#fbbf24;border-color:rgba(245,158,11,.25)}.kpi-tag-offline{background:rgba(239,68,68,.1);color:#f87171;border-color:rgba(239,68,68,.25)}.kpi-sub{font-size:.75rem;color:var(--text-dim);margin-top:var(--s-2);font-family:var(--font-mono),monospace;font-feature-settings:"tnum"}.dash-section{margin-bottom:var(--s-7)}.dash-section-title{font-size:1.125rem;font-weight:600;color:var(--text);letter-spacing:-.01em;margin-bottom:var(--s-4)}.alerts-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.alert-row{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-3) var(--s-5);border-bottom:1px solid var(--border);transition:background var(--t-fast)}.alert-row:last-child{border-bottom:none}.alert-row:hover{background:var(--glass-bg)}.alert-type{display:flex;align-items:center;gap:var(--s-2);min-width:120px}.alert-type-icon{width:16px;height:16px;flex-shrink:0}.alert-badge{font-size:.6875rem;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid transparent;text-transform:uppercase;letter-spacing:.04em}.alert-badge-dry{background:rgba(239,68,68,.1);color:#f87171;border-color:rgba(239,68,68,.25)}.alert-badge-wet{background:rgba(59,130,246,.1);color:#60a5fa;border-color:rgba(59,130,246,.25)}.alert-badge-low_battery{background:rgba(245,158,11,.1);color:#fbbf24;border-color:rgba(245,158,11,.25)}.alert-badge-offline{background:rgba(100,116,139,.15);color:#94a3b8;border-color:rgba(100,116,139,.3)}.alert-dry .alert-type-icon{color:#f87171}.alert-wet .alert-type-icon{color:#60a5fa}.alert-low_battery .alert-type-icon{color:#fbbf24}.alert-offline .alert-type-icon{color:#94a3b8}.alert-device{flex:1 1;min-width:0}.alert-device-name{font-size:.875rem;font-weight:500;color:var(--text)}.alert-device-wall{display:block;font-size:.75rem;color:var(--text-dim);margin-top:2px}.alert-value{font-size:.875rem;color:var(--text-muted);text-align:right;min-width:80px}.walls-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:var(--s-4);gap:var(--s-4)}.wall-summary-card{position:relative;overflow:hidden;background:linear-gradient(135deg,color-mix(in srgb,var(--type-color,#8a8a8a) 20%,var(--glass-bg-2)) 0,color-mix(in srgb,var(--type-color,#8a8a8a) 8%,var(--glass-bg)) 55%,var(--glass-bg) 100%);-webkit-backdrop-filter:saturate(170%) blur(var(--glass-blur));backdrop-filter:saturate(170%) blur(var(--glass-blur));border:1px solid color-mix(in srgb,var(--type-color,#8a8a8a) 35%,var(--glass-border));border-radius:var(--r-lg);padding:var(--s-5);padding-left:calc(var(--s-5) + 10px);text-decoration:none;color:inherit;box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow);transition:border-color var(--t-base),transform var(--t-base),box-shadow var(--t-base);cursor:pointer;display:block}.wall-summary-card:hover{border-color:color-mix(in srgb,var(--type-color,#8a8a8a) 60%,var(--glass-highlight));transform:translateY(-3px);box-shadow:0 1px 0 var(--glass-highlight) inset,0 18px 44px -12px color-mix(in srgb,var(--type-color,#8a8a8a) 50%,rgba(0,0,0,.5))}.wall-summary-accent{position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--type-color,#8a8a8a);box-shadow:0 0 10px 0 color-mix(in srgb,var(--type-color,#8a8a8a) 40%,transparent)}.wall-summary-header{margin-bottom:var(--s-4);padding-right:28px}.wall-summary-customer-top{font-size:1.05rem;font-weight:700;color:var(--text);letter-spacing:-.01em;line-height:1.2}.wall-summary-project{font-size:.75rem;color:var(--text-muted);margin-top:3px;text-transform:uppercase;letter-spacing:.04em}.wall-summary-name{font-size:.9rem;font-weight:600;color:var(--text);margin-top:2px}.wall-summary-customer{font-size:.8125rem;color:var(--text-muted);margin-top:2px}.dash-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin-bottom:var(--s-3)}.dash-tabs{border-bottom:none;margin-bottom:0}.view-toggle{display:inline-flex;gap:2px;padding:3px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:999px}.view-toggle-btn{border:none;background:transparent;cursor:pointer;color:var(--text-muted);font-size:1rem;line-height:1;padding:5px 13px;border-radius:999px;transition:all var(--t-fast)}.view-toggle-btn:hover{color:var(--text)}.view-toggle-btn.is-active{background:var(--glass-bg-2);color:var(--accent);box-shadow:0 1px 0 var(--glass-highlight) inset,0 2px 8px rgba(0,0,0,.18)}.wall-fav-btn{position:absolute;top:10px;right:10px;z-index:2;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;font-size:1.05rem;line-height:1;color:var(--text-dim);border-radius:999px;transition:color var(--t-fast),background var(--t-fast),transform var(--t-fast)}.wall-fav-btn:hover{color:#fbbf24;background:var(--glass-bg);transform:scale(1.15)}.wall-fav-btn.is-fav{color:#fbbf24}.wall-list{padding:6px}.wall-list-row{position:relative;display:flex;align-items:center;gap:var(--s-3);padding:10px 12px;border-radius:var(--r-md);border-left:3px solid var(--type-color,var(--border));transition:background var(--t-fast)}.wall-list-row:hover{background:var(--glass-bg)}.wall-list-row+.wall-list-row{margin-top:2px}.wall-list-row .wall-fav-btn{position:static;flex:none}.wall-list-main{display:flex;flex-direction:column;gap:1px;text-decoration:none;color:inherit;min-width:0;flex:1 1}.wall-list-customer{font-weight:700;color:var(--text);font-size:.9rem}.wall-list-sub,.wall-list-type{font-size:.75rem;color:var(--text-muted)}.wall-list-type{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.wall-list-moisture{font-size:.95rem;font-weight:600;min-width:54px;text-align:right}.wall-list-moisture.is-warn{color:var(--warning)}.wall-list-health{display:flex;gap:var(--s-3);flex-wrap:wrap}@media (max-width:760px){.wall-list-health,.wall-list-type{display:none}}.wall-table td,.wall-table th{white-space:nowrap}.data-table td.num,.data-table th.num{text-align:right}.wall-table-star{width:38px;text-align:center}.wall-table-star .wall-fav-btn{position:static;width:24px;height:24px;font-size:.95rem}.wall-table-row td:first-child{border-left:3px solid var(--type-color,transparent)}.wall-table-customer a{font-weight:600;color:var(--text);text-decoration:none}.wall-table-customer a:hover{color:var(--accent)}.wall-table tbody tr:nth-child(2n) td{background:color-mix(in srgb,var(--text-muted) 12%,transparent)}.wall-table tbody tr:hover td{background:var(--accent-dim)}.wall-type-cell{display:inline-flex;align-items:center;gap:6px}.wall-table td.num.is-warn{color:var(--warning);font-weight:600}.health-cell{display:inline-flex;align-items:center;gap:5px;justify-content:flex-end}.health-cell .status-dot{background:var(--text-muted)}.health-cell.ok .status-dot{background:var(--accent)}.health-cell.mixed .status-dot{background:var(--warning)}.health-cell.down .status-dot{background:var(--danger)}.alerts-check{width:36px;text-align:center}.alerts-check input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:16px;height:16px}.data-table tr.is-selected td{background:var(--accent-dim)}.alerts-customer-select{padding:8px 11px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--r-sm);color:var(--text);font-family:inherit;font-size:.875rem}.alerts-customer-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.wall-edit-hint{margin:8px 0 0;padding:8px 12px;font-size:.8125rem;color:var(--text);background:var(--accent-dim);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--glass-border));border-radius:var(--r-sm)}.wall-summary-metrics{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:var(--s-3);gap:var(--s-3);margin-bottom:var(--s-4)}.wall-summary-metric{display:flex;flex-direction:column;gap:2px}.wall-summary-metric-label{font-size:.6875rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.wall-summary-metric-value{font-size:.875rem;color:var(--text);font-feature-settings:"tnum"}.wall-summary-metric-value.is-warn{color:var(--warning)}.wall-moisture-bar{padding-top:var(--s-2)}.wall-moisture-bar-track{position:relative;display:flex;height:6px;border-radius:3px;overflow:hidden}.wall-moisture-bar-zone{height:100%}.wall-moisture-bar-dry{background:rgba(239,68,68,.25)}.wall-moisture-bar-ok{background:rgba(34,197,94,.25)}.wall-moisture-bar-wet{background:rgba(59,130,246,.25)}.wall-moisture-bar-marker{position:absolute;top:-3px;width:3px;height:12px;background:var(--text);border-radius:2px;transform:translateX(-50%);box-shadow:0 0 4px rgba(0,0,0,.5)}.assign-list{flex-direction:column;gap:var(--s-1);max-height:240px;overflow-y:auto;border:1px solid var(--border);padding:4px}.assign-item,.assign-list{display:flex;border-radius:var(--r-sm)}.assign-item{align-items:center;gap:var(--s-3);padding:8px 10px;cursor:pointer;transition:background var(--t-fast)}.assign-item:hover{background:var(--glass-bg)}.assign-item.is-selected{background:var(--accent-dim);border:1px solid var(--accent);padding:7px 9px}.assign-item input{accent-color:var(--accent)}.assign-item-main{flex:1 1;min-width:0}.assign-item-name{font-size:.875rem;color:var(--text);font-weight:500}.assign-item-meta{margin-top:2px}.assign-item-meta,.assign-item-values{font-size:.75rem;color:var(--text-muted)}.assign-item-values{display:flex;gap:8px;font-family:var(--font-mono),monospace}.view-tabs{display:inline-flex;gap:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px;margin-bottom:var(--s-4)}.view-tab{font-family:inherit;padding:6px 14px;font-size:.8125rem;font-weight:500;background:transparent;color:var(--text-muted);border:none;border-radius:4px;cursor:pointer;transition:all var(--t-fast)}.view-tab:hover{color:var(--text)}.view-tab.is-active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-bottom:1.5rem}.kpi-card-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.kpi-card-value{font-size:1.5rem;font-weight:600;color:var(--text);margin-top:4px}.kpi-card-sub{font-size:.75rem;color:var(--text-muted);margin-top:2px}.tab-row{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:1rem}.tab-row-sub{border:0;margin-top:-.5rem;margin-bottom:1rem}.tab{font-family:inherit;padding:8px 16px;font-size:.875rem;font-weight:500;background:transparent;color:var(--text-muted);border:none;border-bottom:2px solid transparent;border-radius:8px 8px 0 0;cursor:pointer;transition:all var(--t-fast)}.tab:hover{color:var(--text);background:var(--glass-bg)}.tab.is-active{color:var(--accent);border-bottom-color:var(--accent);background:var(--accent-dim)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;font-weight:600;color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.data-table td,.data-table th{padding:10px 12px;border-bottom:1px solid var(--border)}.data-table td{color:var(--text);vertical-align:top}.data-table tr:last-child td{border-bottom:0}.data-table a{text-decoration:none;font-weight:500}.data-table a,.data-table a:visited{color:var(--text)}.data-table a:hover{color:var(--accent);text-decoration:underline}.table-card{padding:0;overflow-x:auto}.mono{font-family:var(--font-mono),monospace}.small{font-size:.75rem}.muted{color:var(--text-muted)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--text-muted);margin-right:6px;vertical-align:middle}.status-dot.online{background:#3fb950}.status-dot.offline{background:#c54d4d}.btn-link{background:transparent;border:0;color:var(--accent);cursor:pointer;font-size:.875rem;padding:4px 8px}.btn-link:hover{text-decoration:underline}.btn-link.danger{color:#c54d4d}.btn-dashed{width:100%;padding:9px 12px;background:transparent;border:1px dashed var(--glass-border);color:var(--accent);border-radius:var(--r-sm);cursor:pointer;margin-top:8px;transition:border-color var(--t-fast),background var(--t-fast)}.btn-dashed:hover{border-color:var(--accent);background:var(--accent-dim)}.btn-chip{font-size:.75rem;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-muted);border-radius:999px;padding:5px 11px;cursor:pointer;transition:all var(--t-fast)}.btn-chip:hover{border-color:var(--accent);color:var(--accent)}.btn-lg{padding:12px 20px;font-size:1rem}.severity-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.severity-low{background:rgba(59,130,246,.15);color:#3b82f6}.severity-medium{background:rgba(228,123,42,.15);color:#e47b2a}.severity-high{background:rgba(197,77,77,.15);color:#c54d4d}.alert-feed{list-style:none;padding:0;margin:0}.alert-feed li{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}.alert-feed li:last-child{border:0}.alert-msg{flex:1 1;color:var(--text);font-size:.875rem}.scope-section{margin-bottom:2rem}.scope-heading{font-size:.875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.card-row{display:flex;gap:8px;margin-bottom:1rem}.card-heading{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:12px}.valve-data .kpi-row{margin-bottom:1.5rem}.form-field{margin-bottom:12px}.form-field label{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:4px}.form-field input[type=date],.form-field input[type=email],.form-field input[type=number],.form-field input[type=password],.form-field input[type=text],.form-field input[type=time],.form-field select,.form-field textarea{width:100%;padding:9px 11px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--r-sm);color:var(--text);font-family:inherit;font-size:.875rem;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.form-info{font-size:.875rem;color:var(--text-muted);margin-bottom:12px}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:1rem}.scheduler-editor{max-width:520px}.sched-section{margin-bottom:1.25rem}.sched-section h3{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:10px}.sched-valve-grid{display:flex;flex-direction:column;gap:4px;max-height:160px;overflow-y:auto}.sched-valve-chip{display:flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid var(--glass-border);border-radius:999px;background:var(--glass-bg);cursor:pointer;font-size:.8125rem;transition:border-color var(--t-fast),background var(--t-fast),box-shadow var(--t-fast)}.sched-valve-chip:hover{border-color:var(--glass-highlight)}.sched-valve-chip.active{border-color:var(--accent);background:var(--accent-dim);box-shadow:0 0 0 3px var(--accent-dim)}.sched-valve-chip input{accent-color:var(--accent)}.sched-valve-chip span+span{margin-left:auto}.sched-slot-row{display:grid;grid-template-columns:1fr 1fr 36px;grid-gap:6px;gap:6px;margin-bottom:6px}.sched-slot-row input[type=time]{padding:7px 9px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--r-sm);color:var(--text);font-family:inherit;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.sched-slot-row input[type=time]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.sched-day-row{display:flex;flex-wrap:wrap;gap:6px}.sched-day-chip{padding:6px 13px;border:1px solid var(--glass-border);border-radius:999px;background:var(--glass-bg);color:var(--text-muted);cursor:pointer;font-weight:600;font-size:.8125rem;font-family:inherit;transition:all var(--t-fast)}.sched-day-chip:hover{border-color:var(--accent);color:var(--accent)}.sched-day-chip.active{background:var(--accent-grad);color:#04110a;border-color:transparent;box-shadow:var(--accent-glow)}.sched-day-actions{display:flex;gap:6px;margin-top:8px}.sched-opt-grid{display:grid;grid-template-columns:120px 1fr;grid-gap:8px 12px;gap:8px 12px;align-items:center}.sched-opt-grid label{font-size:.8125rem;color:var(--text-muted);text-align:right}.sched-opt-grid input,.sched-opt-grid select{padding:7px 9px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--r-sm);color:var(--text);font-family:inherit;font-size:.8125rem;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.sched-opt-grid input:focus,.sched-opt-grid select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.sched-status{padding:9px 13px;border:1px solid var(--glass-border);border-radius:var(--r-sm);background:var(--glass-bg);color:var(--text);font-size:.8125rem;margin:12px 0}.sched-actions-sticky{position:-webkit-sticky;position:sticky;bottom:calc(-1 * var(--s-5));margin:var(--s-4) calc(-1 * var(--s-5)) calc(-1 * var(--s-5));padding:var(--s-4) var(--s-5);background:var(--glass-bg-strong);-webkit-backdrop-filter:saturate(180%) blur(var(--glass-blur));backdrop-filter:saturate(180%) blur(var(--glass-blur));border-top:1px solid var(--glass-border);border-radius:0 0 var(--r-xl) var(--r-xl);box-shadow:0 -8px 22px rgba(0,0,0,.18);z-index:3}.wall-devices-section{margin-top:24px}.customer-control{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.customer-control-msg{margin-left:4px}.irrigation-paused-banner{gap:12px;border-radius:var(--r-sm);background:color-mix(in srgb,#f59e0b 18%,transparent);border:1px solid color-mix(in srgb,#f59e0b 50%,transparent);color:var(--text);font-size:.9rem}.irrigation-pause-picker,.irrigation-paused-banner{display:flex;align-items:center;flex-wrap:wrap;margin:12px 0;padding:10px 14px}.irrigation-pause-picker{gap:8px;border-radius:var(--r-sm);background:var(--glass-bg);border:1px solid var(--glass-border)}.wall-devices-header{display:flex;align-items:center;justify-content:space-between;margin:0 0 12px}.wall-devices-header h2{font-size:1rem;margin:0}.btn-sm{padding:4px 10px;font-size:.8125rem}.device-picker-list{display:flex;flex-direction:column;gap:8px;max-height:50vh;overflow-y:auto}.device-picker-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text);cursor:pointer;width:100%;text-align:left}.device-picker-row:hover:not(:disabled){background:var(--glass-bg)}.device-picker-row:disabled{opacity:.6;cursor:not-allowed}.device-picker-row .strong{font-weight:600}.device-picker-row .muted{color:var(--text-muted)}.customer-device-overview{margin-top:32px}.customer-device-block{margin-bottom:24px}.customer-device-block h2{font-size:1rem;margin:0 0 10px}.customer-device-block .muted{color:var(--text-muted);font-weight:400}.chart-range-row{display:flex;gap:16px;align-items:center;padding:8px 0 4px;flex-wrap:wrap}.chart-range-row label{display:flex;gap:8px;align-items:center;font-size:.8125rem;color:var(--text-muted)}.chart-range-row input[type=date]{padding:5px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);font-family:inherit;font-size:.8125rem}.chart-bucket-row{padding:4px 0 12px}.chart-bucket-row,.wall-tabs{display:flex;gap:6px;flex-wrap:wrap}.wall-tabs{margin:16px 0 12px;border-bottom:1px solid var(--border);padding-bottom:8px}.wall-tab{padding:8px 15px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:999px;color:var(--text-muted);cursor:pointer;font-size:.875rem;font-family:inherit;transition:all var(--t-fast)}.wall-tab:hover{color:var(--text);border-color:var(--glass-highlight)}.wall-tab.is-active{color:var(--text);background:var(--glass-bg-2);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.wall-tab .muted{color:var(--text-muted);font-size:.8125rem}.wall-inline-section{margin-top:8px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.wall-inline-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px;gap:12px;flex-wrap:wrap}.wall-inline-header h2{margin:0 0 4px;font-size:1.125rem}.wall-inline-header .subtitle{font-size:.8125rem;color:var(--text-muted)}.wall-inline-header .header-actions{display:flex;gap:6px}.health-stat{display:inline-flex;align-items:center;gap:6px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.health-stat .status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.health-stat.ok .status-dot{background:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.15)}.health-stat.mixed .status-dot{background:#f59e0b;box-shadow:0 0 0 2px rgba(245,158,11,.15)}.health-stat.down .status-dot{background:#ef4444;box-shadow:0 0 0 2px rgba(239,68,68,.15)}.health-stat.muted{color:var(--text-muted)}.device-state-badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:.8125rem;font-weight:500;border:1px solid var(--border);background:var(--surface-2)}.device-state-badge .status-dot{width:7px;height:7px;border-radius:50%}.device-state-badge.on .status-dot,.device-state-badge.open .status-dot{background:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.15)}.device-state-badge.on,.device-state-badge.open{color:#16a34a}.device-state-badge.closed .status-dot,.device-state-badge.off .status-dot{background:#64748b}.device-state-badge.closed,.device-state-badge.off{color:var(--text-muted)}.wall-summary-health{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:6px;gap:6px;padding:10px 14px;border-top:1px solid var(--border)}.wall-health-item{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;color:var(--text-muted)}.wall-health-item.muted{opacity:.5}.wall-health-label{font-weight:500}.wall-health-value{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wall-health-value .status-dot{width:7px;height:7px;border-radius:50%}.wall-health-item.ok .wall-health-value .status-dot{background:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.15)}.wall-health-item.mixed .wall-health-value .status-dot{background:#f59e0b;box-shadow:0 0 0 2px rgba(245,158,11,.15)}.wall-health-item.down .wall-health-value .status-dot{background:#ef4444;box-shadow:0 0 0 2px rgba(239,68,68,.15)}.project-type-badge{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .6rem;border-radius:999px;background:var(--surface-2,#f1f2f4);border:1px solid var(--border);font-size:.78rem;color:var(--text-muted)}.project-type-badge:before{content:"";width:.55rem;height:.55rem;border-radius:50%;background:var(--type-color,#8a8a8a)}.wall-type-filter{display:flex;flex-wrap:wrap;gap:.5rem;margin:.25rem 0 1rem}.wall-type-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .75rem;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.82rem;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease}.wall-type-pill:hover{background:var(--surface-2,#f1f2f4)}.wall-type-pill.is-active{background:var(--text);color:var(--surface);border-color:var(--text)}.wall-type-pill-dot{width:.6rem;height:.6rem;border-radius:50%}.wall-type-pill-count{opacity:.65;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wall-summary-type{display:inline-flex;align-items:center;gap:.4rem;font-size:.72rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:color-mix(in srgb,var(--type-color,#8a8a8a) 85%,var(--text));background:color-mix(in srgb,var(--type-color,#8a8a8a) 18%,var(--surface));border:1px solid color-mix(in srgb,var(--type-color,#8a8a8a) 40%,transparent);padding:.18rem .55rem;border-radius:999px;margin-top:.35rem}.wall-summary-type:before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:var(--type-color,#8a8a8a);box-shadow:0 0 0 2px color-mix(in srgb,var(--type-color,#8a8a8a) 25%,transparent)}.badge{display:inline-block;padding:.18rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.02em;border:1px solid var(--border)}.badge-ok{background:rgba(59,140,92,.14);color:#3b8c5c;border-color:rgba(59,140,92,.35)}.badge-warn{background:rgba(228,123,42,.14);color:#e47b2a;border-color:rgba(228,123,42,.35)}.badge-error{background:rgba(190,57,57,.14);color:#be3939;border-color:rgba(190,57,57,.35)}.vendor-badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;letter-spacing:.04em;text-transform:uppercase;margin-left:8px;vertical-align:middle}.vendor-badge.gardena{background:rgba(124,58,175,.14);color:#6b2fb3;border:1px solid rgba(124,58,175,.4)}.vendor-badge.lorawan{background:rgba(58,100,175,.14);color:#2c4f8d;border:1px solid rgba(58,100,175,.35)}.vendor-badge.tuya{background:rgba(228,123,42,.16);color:#c45a13;border:1px solid rgba(228,123,42,.4)}.tab.tab-tuya.is-active{color:#c45a13;border-bottom-color:#e47b2a}.tab.tab-tuya:hover{color:#c45a13}.tuya-tab-header{background:color-mix(in srgb,#e47b2a 8%,var(--surface));border-color:color-mix(in srgb,#e47b2a 30%,var(--border))}.tuya-tab-header .status-dot.ok{background:#c45a13}.tuya-tab-header .status-dot.error,.tuya-tab-header .status-dot.warn{background:#b8332b}.tuya-btn{background:#e47b2a!important;border-color:#e47b2a!important}.tuya-btn:hover:not(:disabled){background:#c45a13!important;border-color:#c45a13!important}.tuya-toggle{color:#e47b2a;font-weight:600;margin-right:8px}.btn-danger-link{color:#b8332b;margin-left:8px}.btn-danger-link:hover{color:#d6453a}.resource-search{margin-left:auto;min-width:280px;padding:6px 12px;font-size:13px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text)}.resource-search:focus{outline:none;border-color:var(--accent)}.filter-row{display:flex;align-items:center;gap:10px;margin:0 0 1rem;flex-wrap:wrap}.filter-row .resource-search{margin-left:0;flex:1 1 280px}.sort-select{padding:6px 12px;font-size:13px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);cursor:pointer}.sort-select:focus{outline:none;border-color:var(--accent)}.filter-count{white-space:nowrap}.tuya-switch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:12px;gap:12px}.tuya-switch-card{border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center;background:var(--surface)}.tuya-switch-label{font-size:13px;color:var(--text-muted);margin-bottom:10px}.tuya-switch-btn{width:100%;padding:14px 0;font-weight:700;font-size:16px;border-radius:8px;border:2px solid;cursor:pointer;transition:all .15s}.tuya-switch-btn.is-on{background:#e47b2a;border-color:#e47b2a;color:#fff}.tuya-switch-btn.is-off{background:var(--surface);border-color:var(--border);color:var(--text-muted)}.tuya-switch-btn.is-off:hover{border-color:#e47b2a;color:#c45a13}.tuya-switch-btn:disabled{opacity:.5;cursor:not-allowed}.dimmer-row{padding:14px 0;border-top:1px solid var(--border)}.dimmer-row:first-child{border-top:none;padding-top:0}.dimmer-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.dimmer-label{font-weight:600}.dimmer-pct{font-size:28px;font-weight:700;color:#c45a13;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dimmer-track-wrap{padding:4px 0}.dimmer-slider{width:100%;height:8px;border-radius:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;cursor:pointer}.dimmer-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid #e47b2a;box-shadow:0 2px 6px rgba(228,123,42,.4);cursor:pointer;-webkit-transition:transform .1s;transition:transform .1s}.dimmer-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.dimmer-slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid #e47b2a;cursor:pointer}.dimmer-slider:disabled{opacity:.5}.dimmer-quick{display:flex;gap:8px;margin-top:10px}.dimmer-quick-btn{flex:1 1;padding:6px 0;border:1px solid var(--border);background:var(--surface);border-radius:6px;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .1s}.dimmer-quick-btn:hover:not(:disabled){border-color:#e47b2a;color:#c45a13}.dimmer-quick-btn.is-active{background:#e47b2a;border-color:#e47b2a;color:#fff}.dimmer-quick-btn:disabled{opacity:.5;cursor:not-allowed}.weekday-row{display:flex;gap:6px;flex-wrap:wrap}.weekday-chip{padding:8px 14px;border:1.5px solid var(--border);border-radius:20px;background:var(--surface);font-weight:600;font-size:13px;color:var(--text-muted);cursor:pointer;transition:all .1s}.weekday-chip:hover{border-color:#e47b2a;color:#c45a13}.weekday-chip.is-active{background:#e47b2a;border-color:#e47b2a;color:#fff}.time-range-row{display:flex;gap:6px}.time-range-btn{padding:6px 14px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer}.time-range-btn:hover{border-color:#e47b2a;color:#c45a13}.time-range-btn.is-active{background:#e47b2a;border-color:#e47b2a;color:#fff}.schedule-readonly{display:grid;grid-template-columns:100px repeat(7,1fr);grid-gap:2px;gap:2px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden}.schedule-readonly>div{background:var(--surface);padding:8px 10px;font-size:13px}.schedule-readonly .head{background:color-mix(in srgb,var(--accent) 10%,var(--surface));font-weight:600;text-align:center}.schedule-readonly .slot{background:color-mix(in srgb,var(--accent) 18%,var(--surface));color:var(--accent);font-weight:500;text-align:center}.tab.tab-gardena.is-active{color:#6b2fb3;border-bottom-color:#7c3aaf}.tab.tab-gardena:hover{color:#6b2fb3}.gardena-tab-header{display:flex;align-items:center;justify-content:space-between;background:color-mix(in srgb,#7c3aaf 8%,var(--surface));border:1px solid color-mix(in srgb,#7c3aaf 30%,var(--border));border-radius:10px;padding:14px 18px;margin:0 0 16px}.gardena-tab-header .status-line{display:flex;align-items:center;gap:12px;font-size:14px}.gardena-tab-header .status-dot{width:9px;height:9px;border-radius:50%}.gardena-tab-header .status-dot.ok{background:#6b2fb3}.gardena-tab-header .status-dot.warn{background:#c45a13}.gardena-tab-header .status-dot.error{background:#b8332b}.banner-info{background:color-mix(in srgb,var(--accent) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--accent) 25%,var(--border));color:var(--text);padding:12px 14px;border-radius:8px;font-size:14px;margin:0 0 16px}.device-profile-card{margin-bottom:1rem}.device-profile-card .form-field{max-width:360px;margin:0}.daviteq-sync-card{margin-top:1rem}.sync-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.sync-card-header h3{margin:0 0 4px;font-size:1rem}.sync-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px}.sync-meta-grid>div{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--surface-2)}.sync-meta-grid span,.sync-meta-grid strong{display:block}.sync-preview-list{margin-top:12px;border-top:1px solid var(--border)}.sync-preview-row{display:grid;grid-template-columns:minmax(170px,1fr) 80px minmax(170px,1fr);grid-gap:10px;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:.875rem}@media (max-width:720px){.sync-card-header{align-items:stretch;flex-direction:column}.sync-preview-row{grid-template-columns:1fr}}.vendor-badge.shelly{background:rgba(0,147,221,.14);color:#006c9c;border:1px solid rgba(0,147,221,.4)}.tab.tab-shelly.is-active{color:#006c9c;border-bottom-color:#0093dd}.tab.tab-shelly:hover{color:#006c9c}.shelly-tab-header{background:color-mix(in srgb,#0093dd 8%,var(--surface));border-color:color-mix(in srgb,#0093dd 30%,var(--border))}.shelly-tab-header .status-dot.ok{background:#0093dd}.shelly-tab-header .status-dot.warn{background:#c45a13}.shelly-tab-header .status-dot.error{background:#b8332b}.shelly-btn{background:#0093dd!important;border-color:#0093dd!important}.shelly-btn:hover:not(:disabled){background:#006c9c!important;border-color:#006c9c!important}.shelly-toggle{color:#006c9c;font-weight:600;margin-right:8px}.vendor-badge.hydrawise{background:rgba(47,143,78,.14);color:#1f6e3a;border:1px solid rgba(47,143,78,.4)}.tab.tab-hydrawise.is-active{color:#1f6e3a;border-bottom-color:#2f8f4e}.tab.tab-hydrawise:hover{color:#1f6e3a}.hydrawise-tab-header{background:color-mix(in srgb,#2f8f4e 8%,var(--surface));border-color:color-mix(in srgb,#2f8f4e 30%,var(--border))}.hydrawise-tab-header .status-dot.ok{background:#2f8f4e}.hydrawise-tab-header .status-dot.warn{background:#c45a13}.hydrawise-tab-header .status-dot.error{background:#b8332b}.hydrawise-btn{background:#2f8f4e!important;border-color:#2f8f4e!important}.hydrawise-btn:hover:not(:disabled){background:#1f6e3a!important;border-color:#1f6e3a!important}.shelly-switch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:12px;gap:12px}.shelly-switch-card-inner{border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center;background:var(--surface)}.shelly-switch-label{font-size:13px;color:var(--text-muted);margin-bottom:10px}.shelly-switch-btn{width:100%;padding:14px 0;font-weight:700;font-size:16px;border-radius:8px;border:2px solid;cursor:pointer;transition:all .15s;background:var(--surface);color:var(--text-muted);border-color:var(--border)}.shelly-switch-btn.is-on{background:#0093dd;border-color:#0093dd;color:#fff}.shelly-switch-btn.is-off{background:var(--surface);border-color:var(--border);color:var(--text-muted)}.shelly-switch-btn.is-off:hover{border-color:#0093dd;color:#0093dd}.shelly-switch-btn:disabled{opacity:.5;cursor:not-allowed}.shelly-dimmer-pct{color:#006c9c!important}.shelly-dimmer-slider::-webkit-slider-thumb{border-color:#0093dd!important;box-shadow:0 2px 6px rgba(0,147,221,.4)!important}.shelly-dimmer-slider::-moz-range-thumb{border-color:#0093dd!important}.shelly-dimmer-quick-btn:hover:not(:disabled){border-color:#0093dd!important;color:#0093dd!important}.shelly-dimmer-quick-btn.is-active{background:#0093dd!important;border-color:#0093dd!important;color:#fff!important}.shelly-weekday-chip:hover{border-color:#0093dd;color:#0093dd}.shelly-weekday-chip.is-active{background:#0093dd;border-color:#0093dd;color:#fff}.shelly-time-range-btn:hover{border-color:#0093dd;color:#0093dd}.shelly-time-range-btn.is-active{background:#0093dd;border-color:#0093dd;color:#fff}.shelly-power-card{background:color-mix(in srgb,#0093dd 6%,var(--surface));border:1px solid color-mix(in srgb,#0093dd 25%,var(--border))}.shelly-power-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px}.shelly-power-pill{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 12px;border-radius:12px;background:var(--surface);border:1px solid var(--border);text-align:center}.shelly-power-num{font-size:28px;font-weight:700;color:#006c9c;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.1}.shelly-power-unit{font-size:13px;font-weight:600;color:var(--text-muted);margin-top:2px}.shelly-power-label{font-size:11px;color:var(--text-muted);margin-top:6px;text-transform:uppercase;letter-spacing:.05em}.wall-photo-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;margin:0 0 1rem}.wall-photo-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.wall-photo-header h3{margin:0;font-size:1rem}.wall-photo-dropzone{border:2px dashed var(--border);border-radius:10px;padding:36px 16px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;transition:border-color .15s,background .15s;background:var(--surface-2,var(--surface))}.wall-photo-dropzone.is-dragover,.wall-photo-dropzone:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.wall-photo-dropzone.is-busy{cursor:wait;opacity:.7}.wall-photo-dropzone-icon{font-size:32px}.wall-photo-dropzone-text{font-weight:600}.wall-photo-preview-btn{display:block;width:100%;padding:0;background:transparent;border:0;cursor:zoom-in}.wall-photo-thumb{width:100%;max-height:480px;object-fit:contain;border-radius:8px;background:#000}.wall-photo-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);display:flex;align-items:center;justify-content:center;z-index:1000;cursor:zoom-out;padding:24px}.wall-photo-lightbox img{max-width:100%;max-height:100%;object-fit:contain}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:transparent}.login-card{width:100%;max-width:380px;background:var(--glass-bg-strong);-webkit-backdrop-filter:saturate(180%) blur(var(--glass-blur));backdrop-filter:saturate(180%) blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-xl);padding:32px;display:flex;flex-direction:column;gap:14px;box-shadow:0 1px 0 var(--glass-highlight) inset,var(--glass-shadow-lg)}.login-card .brand-logo{height:36px;align-self:flex-start}.login-card h1{margin:0 0 4px;font-size:1.4rem}.top-nav-user{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13px}.top-nav-user-label{color:var(--text);display:inline-flex;align-items:center;gap:8px}.top-nav-role-badge{background:var(--accent);color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.04em}.top-nav-logout{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-muted);padding:4px 12px;border-radius:999px;font-size:13px;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast)}.top-nav-logout:hover{border-color:var(--accent);color:var(--accent)}.theme-toggle{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-muted);width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast),transform var(--t-fast)}.theme-toggle:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.device-history{margin-top:16px;padding:12px 16px}.device-history-summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--text);list-style:none;display:flex;align-items:center;gap:6px}.device-history-summary::-webkit-details-marker{display:none}.device-history-summary:before{content:"\25B8";color:var(--text-muted);transition:transform var(--t-fast);display:inline-block}.device-history[open]>.device-history-summary:before{transform:rotate(90deg)}.device-history-heading{color:var(--text);font-size:14px;font-weight:600;margin-bottom:8px}.device-history-body{margin-top:12px}.history-status{display:inline-flex;flex-direction:column;align-items:flex-start;gap:3px}.history-status small{color:var(--text-muted);font-size:11px;line-height:1.2}.gallery-inline{display:inline-flex;align-items:center;gap:6px;padding:4px;border:1px dashed transparent;border-radius:var(--r-sm);transition:border-color var(--t-fast),background var(--t-fast)}.gallery-inline.is-dragover{border-color:var(--accent);background:var(--accent-dim)}.gallery-inline-item{position:relative;display:inline-block}.gallery-inline-thumb{width:80px;height:80px;padding:0;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);overflow:hidden;cursor:pointer;display:block;transition:border-color var(--t-fast),transform var(--t-fast)}.gallery-inline-thumb:hover{border-color:var(--accent);transform:scale(1.06)}.gallery-inline-thumb img{width:100%;height:100%;object-fit:cover;display:block}.gallery-inline-del{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:2px solid var(--surface);background:var(--danger);color:#fff;font-size:12px;font-weight:700;line-height:1;cursor:pointer;opacity:0;transition:opacity var(--t-fast);display:inline-flex;align-items:center;justify-content:center;padding:0}.gallery-inline-del:focus,.gallery-inline-item:hover .gallery-inline-del{opacity:1}.gallery-inline-del:hover{background:#b91c1c}.lightbox-delete{position:absolute;top:-36px;right:38px;width:28px;height:28px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.lightbox-delete:hover{background:var(--danger)}.gallery-inline-more{width:80px;height:80px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-muted);font-size:18px;font-weight:600;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast)}.gallery-inline-more:hover{border-color:var(--accent);color:var(--accent)}.gallery-inline-add{width:80px;height:80px;border:1px dashed var(--border-strong);border-radius:var(--r-sm);background:transparent;color:var(--text-muted);font-size:36px;line-height:1;font-weight:300;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast)}.gallery-inline-add:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.gallery-inline-add:disabled{opacity:.5;cursor:wait}.gallery-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:16px;max-width:900px;width:min(90vw,900px);max-height:85vh;overflow:auto;position:relative}.gallery-modal-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.gallery-modal-head h3{flex:1 1;font-size:16px;font-weight:600;color:var(--text)}.gallery-modal-head .lightbox-close{position:static;width:32px;height:32px;border-radius:6px;background:transparent;border:1px solid var(--border);color:var(--text-muted);font-size:18px}.gallery-modal-head .lightbox-close:hover{border-color:var(--danger);color:var(--danger);background:transparent}.customer-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:10px;gap:10px}.customer-gallery-item{position:relative}.customer-gallery-thumb{width:100%;height:110px;padding:0;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);overflow:hidden;cursor:pointer;display:block;transition:border-color var(--t-fast),transform var(--t-fast)}.customer-gallery-thumb:hover{border-color:var(--accent);transform:scale(1.02)}.customer-gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}.customer-gallery-del{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:none;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;font-size:12px;line-height:1;opacity:0;transition:opacity var(--t-fast)}.customer-gallery-item:hover .customer-gallery-del{opacity:1}.customer-gallery-del:hover{background:var(--danger)}.lightbox-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;padding:24px}.lightbox-frame{position:relative;max-width:90vw;max-height:90vh}.lightbox-img{max-width:90vw;max-height:80vh;display:block;border-radius:var(--r-sm)}.lightbox-caption{margin-top:8px;padding:6px 10px;border-radius:var(--r-sm);background:rgba(0,0,0,.5);color:#fff;font-size:13px;text-align:center}.lightbox-counter{position:absolute;top:-28px;left:0;color:#fff;font-size:12px;opacity:.75}.lightbox-close,.lightbox-nav{position:absolute;background:rgba(0,0,0,.6);color:#fff;border:none;cursor:pointer;line-height:1}.lightbox-close{top:-36px;right:0;width:28px;height:28px;border-radius:50%;font-size:14px}.lightbox-nav{top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;font-size:28px;font-weight:300}.lightbox-prev{left:-56px}.lightbox-next{right:-56px}.lightbox-close:hover,.lightbox-nav:hover{background:var(--accent)}@media (max-width:600px){.lightbox-prev{left:8px}.lightbox-next{right:8px}}.role-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.04em}.role-badge.role-admin{background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border))}.role-badge.role-customer{background:color-mix(in srgb,#3b7dd8 14%,var(--surface));color:#2c4f8d;border:1px solid rgba(58,100,175,.35)}.project-picker{display:flex;flex-direction:column;gap:10px;max-height:360px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin:8px 0 12px}.project-picker-group+.project-picker-group{border-top:1px solid var(--border);padding-top:10px}.project-picker-customer{margin-bottom:4px}.project-picker ul{list-style:none;margin:0;padding:0 0 0 24px}.project-picker li{padding:2px 0}.project-picker label{display:inline-flex;align-items:center;gap:8px;cursor:pointer}