@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/manrope-cyrillic-ext-wght-normal.d1990364.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/manrope-cyrillic-wght-normal.2ffcac4f.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/manrope-greek-wght-normal.6b69666c.woff2) format("woff2-variations");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/manrope-vietnamese-wght-normal.383b32a0.woff2) format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/manrope-latin-ext-wght-normal.f5cc7610.woff2) format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/manrope-latin-wght-normal.fedf4c92.woff2) format("woff2-variations");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}:root{--paper:#07080a;--bg-2:#0d0e12;--surface:#101115;--raised:#16181d;--soft:rgba(255,255,255,.05);--glass:rgba(255,255,255,.028);--hover:rgba(255,255,255,.035);--bar:rgba(7,8,10,.78);--line:rgba(255,255,255,.09);--line-strong:rgba(255,255,255,.16);--scrim:rgba(3,4,6,.72);--ink:#ededee;--muted:#a0a5ad;--dim:#6b7078;--amber:#ffb070;--violet:#a99ff0;--mint:#9fe0bb;--glow:linear-gradient(90deg,#ffd2a8,#c9c2ff 52%,#b5f0cf);--glow-conic:conic-gradient(from 200deg,#ffb070,#a99ff0,#9fe0bb,#ffb070);--glow-soft:rgba(169,159,240,.16);--focus-ring:0 0 0 3px rgba(169,159,240,.45);--primary:#ffffff;--on-primary:#07080a;--primary-hover:#ecebff;--accent:#c9c2ff;--accent-strong:#a99ff0;--accent-light:rgba(169,159,240,.14);--on-accent:#07080a;--on-glow:#07080a;--success:#9fe0bb;--success-light:rgba(159,224,187,.12);--warning:#ffb070;--warning-light:rgba(255,176,112,.13);--danger:#ff8f80;--danger-light:rgba(255,143,128,.13);--sans:"Manrope Variable","Manrope",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;--radius:18px;--radius-sm:12px;--pill:999px;--shadow:0 24px 70px rgba(0,0,0,.55);--shadow-glow:0 0 0 1px rgba(255,255,255,.1),0 10px 40px rgba(169,159,240,.28);--ease:cubic-bezier(.2,.8,.2,1);color-scheme:dark}@media (prefers-color-scheme:light){:root{--paper:#fafafb;--bg-2:#f1f1f4;--surface:#ffffff;--raised:#ffffff;--soft:rgba(12,14,22,.045);--glass:rgba(255,255,255,.72);--hover:rgba(12,14,22,.03);--bar:rgba(250,250,251,.82);--line:rgba(12,14,22,.09);--line-strong:rgba(12,14,22,.17);--scrim:rgba(12,14,22,.38);--ink:#0c0d11;--muted:#5a5f68;--dim:#8a8f98;--amber:#e07a2e;--violet:#6d5ce8;--mint:#1f9d68;--glow:linear-gradient(90deg,#d9692a,#6d5ce8 52%,#12935d);--glow-soft:rgba(109,92,232,.1);--focus-ring:0 0 0 3px rgba(109,92,232,.3);--primary:#0c0d11;--on-primary:#ffffff;--primary-hover:#2a2c35;--accent:#5a4bd6;--accent-strong:#6d5ce8;--accent-light:rgba(109,92,232,.1);--on-accent:#ffffff;--success:#17784f;--success-light:rgba(31,157,104,.11);--warning:#a4520f;--warning-light:rgba(224,122,46,.13);--danger:#c03a28;--danger-light:rgba(214,69,50,.1);--shadow:0 22px 60px rgba(12,14,22,.13);--shadow-glow:0 0 0 1px rgba(12,14,22,.06),0 10px 30px rgba(109,92,232,.22);color-scheme:light}}html{background:var(--paper);-webkit-text-size-adjust:100%}body{margin:0;color:var(--ink);background:radial-gradient(1100px 560px at 50% -12%,var(--glow-soft),transparent 70%) no-repeat,var(--paper);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--accent-light);color:var(--ink)}:where(h1,h2,h3){line-height:1.12;text-wrap:balance}:focus-visible{outline:2px solid var(--accent-strong);outline-offset:3px}:is(input,textarea)::placeholder{color:var(--dim);opacity:1}*{scrollbar-color:var(--line-strong) transparent}.glow-text{background:var(--glow);-webkit-background-clip:text;background-clip:text;color:transparent}.glow-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--violet);box-shadow:0 0 10px var(--violet)}@keyframes frontier-rise{0%{opacity:0;transform:translateY(10px);filter:blur(6px)}}@keyframes frontier-fade{0%{opacity:0}}@keyframes frontier-pulse{70%{box-shadow:0 0 0 9px transparent}to{box-shadow:0 0 0 0 transparent}}@keyframes frontier-sheen{0%,70%{background-position:140% 0}to{background-position:-40% 0}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root{--sidebar-width:232px}*{box-sizing:border-box}body{font-size:14px}button,input,select{font:inherit;color:inherit}a{color:inherit}.brand,h1,h2,h3,h4{letter-spacing:-.02em}.brand{display:inline-flex;align-items:center;gap:10px;font-size:17px;font-weight:700;text-decoration:none}.brand-mark{display:block;flex:none;width:30px;height:30px;border-radius:8px}.brand small{padding:3px 8px;border-radius:var(--pill);background:var(--accent-light);color:var(--accent);font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.auth-page{min-height:100svh;display:grid;place-items:center;padding:24px 16px}.auth-card{width:min(440px,100%);padding:32px 28px;border:1px solid var(--line);border-radius:24px;background:radial-gradient(380px 220px at 100% 0,var(--glow-soft),transparent 70%),var(--bg-2);box-shadow:var(--shadow);animation:frontier-rise .6s var(--ease) both}.auth-card .brand{margin-bottom:26px}.auth-card h1{margin:0 0 8px;font-size:30px;font-weight:600;letter-spacing:-.04em;line-height:1.1}.auth-card p{margin:0 0 18px;color:var(--muted);line-height:1.55}.auth-card form{display:grid;gap:12px}.auth-card label{display:grid;gap:8px;font-family:var(--mono);font-size:11.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.auth-card input{width:100%;min-height:48px;padding:0 18px;border:1px solid var(--line-strong);border-radius:var(--pill);background:var(--surface);color:var(--ink);font-family:var(--sans);font-size:15px;letter-spacing:0;text-transform:none}.auth-card input:focus{outline:none;border-color:var(--accent-strong);box-shadow:var(--focus-ring)}.divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase}.divider:after,.divider:before{content:"";flex:1 1;height:1px;background:var(--line)}.primary-action{width:100%;min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--pill);background:var(--primary);color:var(--on-primary);font-size:14.5px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-glow);transition:transform .18s ease,background .18s ease}.primary-action:hover{background:var(--primary-hover);transform:translateY(-1px)}.primary-action:disabled{opacity:.6;cursor:progress;transform:none}.secondary-action{width:100%;min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line-strong);border-radius:var(--pill);background:transparent;color:var(--ink);font-size:14.5px;font-weight:650;cursor:pointer}.form-status{margin:14px 0 0!important;padding:11px 14px;border-radius:var(--radius-sm);font-size:13px;line-height:1.45}.form-status.success{background:var(--success-light);color:var(--success)!important}.form-status.error{background:var(--danger-light);color:var(--danger)!important}.shell{min-height:100svh;display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;gap:22px;padding:24px 16px;background:var(--bg-2);border-right:1px solid var(--line)}.sidebar nav{display:grid;gap:4px}.nav-link{min-height:40px;padding:0 12px;display:flex;align-items:center;gap:11px;border-radius:var(--radius-sm);color:var(--muted);font-size:13.5px;font-weight:600;text-decoration:none;transition:background .18s ease,color .18s ease}.nav-link:hover{background:var(--hover);color:var(--ink)}.nav-link.active{background:var(--soft);color:var(--ink)}.workspace-switch{display:grid;gap:6px;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.workspace-switch select,.workspace-switch strong{min-height:38px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--sans);font-size:13px;letter-spacing:0;text-transform:none;color:var(--ink);display:flex;align-items:center}.sidebar-footer{margin-top:auto;display:grid;gap:10px;padding-top:14px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);overflow-wrap:anywhere}.alpha-tag{justify-self:start;padding:3px 8px;border-radius:var(--pill);background:var(--glow-soft);color:var(--ink);font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}.page{width:min(1320px,100%);margin:0 auto;padding:36px 36px 64px;animation:frontier-fade .4s ease both}.page-header{margin-bottom:22px}.page-header h1{margin:0 0 6px;font-size:28px;font-weight:650;letter-spacing:-.035em}.page-header p{margin:0;color:var(--muted)}.eyebrow{margin:0 0 10px;color:var(--muted);font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase}.btn{min-height:36px;display:inline-flex;align-items:center;gap:8px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--pill);background:transparent;color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .18s ease}.btn:hover:not(:disabled){background:var(--hover)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{border-color:transparent;background:var(--primary);color:var(--on-primary)}.btn.small{min-height:30px;padding:0 10px;font-size:12px}.btn.danger{color:var(--danger)}.link{padding:0;border:0;background:none;color:var(--accent);cursor:pointer;font-size:12.5px}.muted{color:var(--muted)}.mono,.small{font-size:12px}.mono{font-family:var(--mono)}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.error{color:var(--danger)}.good{color:var(--success)}.stack{display:flex;flex-direction:column;gap:16px}.row,.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.toolbar{margin-bottom:16px}.field,.toolbar input:not([type=checkbox]),.toolbar select{min-height:36px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--pill);background:var(--surface);color:var(--ink);font-size:13px}.toolbar .search{flex:1 1;min-width:180px;max-width:360px}.check{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.card{padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--glass);min-width:0}.card h2{margin:0 0 4px;font-size:15px}.card.flush{padding:0;overflow-x:auto}.empty{padding:44px 16px;color:var(--muted);text-align:center}.banner{padding:10px 14px;border-radius:var(--radius-sm);font-size:13px}.banner.error{background:var(--danger-light);color:var(--danger)}.banner.info{background:var(--soft);color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:16px;align-items:start}.grid.two{grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr))}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:var(--pill);background:var(--soft);color:var(--muted);font-family:var(--mono);font-size:11px;white-space:nowrap}.pill.ok{color:var(--success)}.pill.on{color:var(--amber)}.pill.warn{color:var(--warning)}.pill.bad{color:var(--danger)}.segmented{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--pill);overflow:hidden}.segmented button{padding:6px 12px;border:0;background:none;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer}.segmented button+button{border-left:1px solid var(--line)}.segmented button.active{background:var(--soft);color:var(--ink)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{position:sticky;top:0;background:var(--soft);color:var(--muted);font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.12em;text-align:left;text-transform:uppercase;white-space:nowrap}.table td,.table th{padding:10px 14px;border-bottom:1px solid var(--line)}.table td{vertical-align:top}.table tbody tr:hover{background:var(--hover)}.device-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.device-icon{width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:10px;background:var(--soft);object-fit:contain;font-size:20px}.device-title{flex:1 1;min-width:0}.device-title h3{margin:0;font-size:14.5px}.device-title div,.device-title h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card.device.offline{opacity:.72}.device-section{padding:12px 0;border-top:1px solid var(--line)}.device-section h4{margin:0 0 8px;color:var(--muted);font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase}.controls{display:flex;flex-direction:column;gap:9px}.control{display:flex;align-items:center;justify-content:space-between;gap:12px}.control.stacked{flex-direction:column;align-items:stretch;gap:4px}.control-row{display:flex;justify-content:space-between}.control select{max-width:55%;min-height:32px;padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--pill);background:var(--surface)}input[type=range]{width:100%;accent-color:var(--accent-strong)}.switch{position:relative;width:42px;height:24px;flex:none;border:0;border-radius:var(--pill);background:var(--soft);box-shadow:inset 0 0 0 1px var(--line-strong);cursor:pointer;transition:background .15s}.switch .knob{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--ink);transition:transform .15s}.switch.on{background:var(--accent-strong)}.switch.on .knob{transform:translateX(18px);background:var(--on-accent)}.switch:disabled{opacity:.5;cursor:default}.readings{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin:0}.readings dt{color:var(--muted);font-size:12px}.readings dd{margin:0;font-weight:650;overflow-wrap:anywhere}.dp-list{display:flex;flex-direction:column;gap:10px}.dp-head{display:flex;justify-content:space-between;gap:8px}.dp-label{color:var(--muted)}.dp-now{font-weight:650;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sparkline{display:block;width:100%;height:28px;margin:2px 0}.sparkline path{fill:none;stroke:var(--accent-strong);stroke-width:2;stroke-linejoin:round}.device-info summary{cursor:pointer;color:var(--muted);font-size:12px}.device-info .readings{margin-top:8px}.device-foot{display:flex;justify-content:space-between;gap:8px;margin-top:10px;font-size:12px}.raw-command{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.raw-command input{flex:1 1;min-width:100px;min-height:32px;padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--pill);background:var(--surface)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}.tile-label{color:var(--muted);font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}.tile-value{overflow:hidden;font-size:24px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.stat-row{display:flex;flex-wrap:wrap;gap:8px 32px;margin:12px 0}.stat-value{font-size:18px;font-weight:650}.subhead{margin:18px 0 4px;font-size:13px;font-weight:650}.chart{width:100%}.homes-body{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;height:calc(100svh - 190px);min-height:460px}.scene{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-2);touch-action:none}.scene canvas{display:block}.scene-labels{position:absolute;inset:0;pointer-events:none}.scene-fit{position:absolute;right:10px;bottom:10px;z-index:2}.room-label{padding:2px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);font-size:12px;font-weight:650;white-space:nowrap}.room-label.selected{border-color:var(--accent-strong);color:var(--accent)}.device-label{padding:1px 6px;border-radius:4px;background:var(--scrim);color:var(--ink);font-size:11px;white-space:nowrap}.device-pin{width:34px;height:34px;display:grid;place-items:center;border:2px solid var(--success);border-radius:50%;background:var(--surface);box-shadow:0 1px 4px rgba(0,0,0,.25);font-size:19px;line-height:1}.device-pin.on{border-color:var(--amber);box-shadow:0 0 14px 3px color-mix(in srgb,var(--amber) 55%,transparent)}.device-pin.offline{border-color:var(--muted);filter:grayscale(1);opacity:.6}.device-pin.selected{outline:3px solid var(--accent-strong);outline-offset:2px;transform:scale(1.15)}.device-pin.dim{opacity:.25}.homes-panel{overflow-y:auto}.homes-panel .card.device{padding:0;border:0;background:none}.room-list{display:flex;flex-direction:column;gap:2px;margin:4px 0 0;padding:0;list-style:none}.room-list button{width:100%;display:flex;align-items:center;gap:8px;padding:6px 8px;border:0;border-radius:8px;background:none;text-align:left;cursor:pointer}.room-list button:hover{background:var(--hover)}.grow{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swatch{width:16px;height:16px;flex:none;padding:0;border:1px solid var(--line);border-radius:4px}button.swatch{width:24px;height:24px;cursor:pointer}button.swatch[aria-checked=true]{outline:2px solid var(--accent-strong);outline-offset:1px}.swatches{display:flex;gap:6px}.form{display:grid;gap:10px}.form label{display:grid;gap:4px;color:var(--muted);font-size:12px;font-weight:600}.form input,.form select{min-height:34px;padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}.form .row label{flex:1 1;min-width:70px}@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px}.sidebar nav{display:flex;flex-wrap:wrap}.sidebar-footer{margin-top:0;padding-top:0;border-top:0}.page{padding:20px 16px 48px}.homes-body{grid-template-columns:1fr;height:auto}.scene{height:60svh}}