:root{--bg-gradient-start:#0f172a;--bg-gradient-end:#020617;--panel-bg:rgba(30,41,59,0.4);--panel-border:rgba(148,163,184,0.1);--panel-hover:rgba(30,41,59,0.6);--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--accent-base:#10b981;--accent-glow:rgba(16,185,129,0.4);--accent-hover:#34d399;--danger-base:#ef4444;--danger-glow:rgba(239,68,68,0.4);--shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5),0 4px 6px -4px rgba(0,0,0,0.5);--shadow-glow:0 0 20px var(--accent-glow)}*{box-sizing:border-box;margin:0;padding:0}body,html{background:linear-gradient(135deg,var(--bg-gradient-start) 0,var(--bg-gradient-end) 100%);color:var(--text-primary);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.app-root,body{position:relative}.app-root{min-height:100vh;isolation:isolate}.app-content{position:relative;z-index:1}.shape-grid-background{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden;opacity:1}.shape-grid-surface{position:absolute;inset:0;opacity:.94}.shapegrid-canvas{width:100%;height:100%;border:none;display:block}.shape-grid-vignette{position:absolute;inset:0;background:radial-gradient(circle at top left,rgba(16,185,129,.05),transparent 32%),radial-gradient(circle at bottom right,rgba(3,38,5,.14),transparent 34%),linear-gradient(180deg,rgba(2,6,23,.04),rgba(2,6,23,.12))}a{color:inherit;text-decoration:none}button{font:inherit}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 0 0 var(--accent-glow)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(16,185,129,0)}to{transform:scale(.95);box-shadow:0 0 0 0 rgba(16,185,129,0)}}@keyframes pulse-danger{0%{transform:scale(.95);box-shadow:0 0 0 0 var(--danger-glow)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(239,68,68,0)}to{transform:scale(.95);box-shadow:0 0 0 0 rgba(239,68,68,0)}}.page-shell{min-height:100vh;padding:48px 24px 80px;position:relative;overflow:hidden}.page-shell:before{content:"";position:absolute;top:-20%;left:-10%;width:50%;height:50%;background:radial-gradient(circle,var(--accent-glow) 0,transparent 70%);filter:blur(100px);z-index:-1;pointer-events:none}.page-header{max-width:1200px;margin:0 auto 48px;text-align:center;animation:fadeInUp .8s ease-out forwards}.page-title{font-size:clamp(2.5rem,5vw,4.5rem);font-weight:800;letter-spacing:-.02em;background:linear-gradient(90deg,#ffffff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1.1;margin-bottom:24px}.page-subtitle{max-width:600px;margin:0 auto;color:var(--text-secondary);font-size:1.125rem;line-height:1.6;font-weight:400}.status-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 16px;background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.2);border-radius:999px;color:var(--accent-base);font-size:.875rem;font-weight:500;margin-bottom:24px;letter-spacing:.05em;text-transform:uppercase}.device-grid{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:24px;gap:24px}.card{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:24px;padding:32px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:var(--shadow-lg);transition:transform .3s ease,background .3s ease,border-color .3s ease;animation:fadeInUp .6s ease-out backwards}.card:first-child{animation-delay:.1s}.card:nth-child(2){animation-delay:.2s}.card:nth-child(3){animation-delay:.3s}.card:hover{transform:translateY(-4px);background:var(--panel-hover);border-color:rgba(148,163,184,.2)}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.card-title-group h2{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin-bottom:4px}.card-title-group p{font-size:.875rem;color:var(--text-muted);font-family:monospace}.live-indicator{display:flex;align-items:center;gap:8px;font-size:.875rem;font-weight:500}.dot{width:10px;height:10px;border-radius:50%}.dot.online{background:var(--accent-base);animation:pulse 2s infinite}.dot.offline{background:var(--danger-base);animation:pulse-danger 2s infinite}.live-indicator.online{color:var(--accent-base)}.live-indicator.offline{color:var(--danger-base)}.badge-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:32px}.badge{background:rgba(15,23,42,.6);border:1px solid var(--panel-border);border-radius:8px;padding:6px 12px;font-size:.75rem;font-weight:500;color:var(--text-secondary)}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;margin-bottom:32px}.metric-box{background:rgba(15,23,42,.4);border-radius:16px;padding:16px;border:1px solid var(--panel-border)}.metric-label{display:block;font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.metric-value{font-size:1.75rem;font-weight:700;color:var(--text-primary);display:flex;align-items:baseline;gap:4px}.metric-unit{font-size:.875rem;font-weight:500;color:var(--text-muted)}.metric-row{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--panel-border);font-size:.875rem}.metric-row span:first-child{color:var(--text-secondary)}.metric-row span:last-child{color:var(--text-primary);font-weight:500}.relays-container{margin-top:32px}.relays-container h3{font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:16px}.relay-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:16px;gap:16px}.relay-item{background:rgba(15,23,42,.4);border:1px solid var(--panel-border);border-radius:16px;padding:16px}.relay-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.relay-title{font-weight:600;font-size:.875rem;color:var(--text-primary)}.relay-status{font-size:.75rem;font-weight:500}.relay-status.active{color:var(--accent-base)}.relay-status.inactive{color:var(--text-muted)}.relay-actions{display:flex;gap:8px}.btn{flex:1 1;border:none;border-radius:8px;padding:8px 0;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-on{background:rgba(16,185,129,.1);color:var(--accent-base);border:1px solid rgba(16,185,129,.2)}.btn-on:hover:not(:disabled){background:var(--accent-base);color:white;box-shadow:0 0 10px var(--accent-glow)}.btn-on.active{background:var(--accent-base);color:white;box-shadow:0 0 15px var(--accent-glow)}.btn-off{background:rgba(239,68,68,.1);color:var(--danger-base);border:1px solid rgba(239,68,68,.2)}.btn-off:hover:not(:disabled){background:var(--danger-base);color:white;box-shadow:0 0 10px var(--danger-glow)}.btn-off.active{background:var(--danger-base);color:white;box-shadow:0 0 15px var(--danger-glow)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.card-footer{margin-top:24px;padding-top:24px;border-top:1px solid var(--panel-border);display:flex;justify-content:space-between;align-items:center}.error-msg{color:var(--danger-base);font-size:.875rem;margin-top:16px}.device-error-card{max-width:840px;margin:80px auto 0;padding:32px;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:24px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:var(--shadow-lg)}.device-error-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.device-error-digest{margin-top:20px;font-size:.8rem;color:var(--text-muted);font-family:monospace}.detail-link{color:var(--accent-base);font-size:.875rem;font-weight:500;transition:opacity .2s}.detail-link:hover{opacity:.8;text-decoration:underline}.sensor-section-label{font-size:.75rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin:24px 0 12px;display:flex;align-items:center;gap:12px}.sensor-section-label:after{content:"";flex:1 1;height:1px;background:var(--panel-border)}.sensor-history{margin-top:48px;animation:fadeInUp .8s ease-out .4s backwards}.sensor-history-title{font-size:1.25rem;font-weight:600;margin-bottom:24px;color:var(--text-primary)}.sensor-charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:20px;gap:20px}.sensor-chart{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:20px;padding:20px;display:flex;flex-direction:column;gap:12px}.sensor-chart-canvas{height:220px;margin:4px -8px 0}.sensor-chart-header{display:flex;justify-content:space-between;align-items:flex-start}.sensor-chart-label{font-size:.875rem;font-weight:500;max-width:120px}.sensor-chart-value{font-size:1.25rem;font-weight:700}.sensor-chart-range,.sensor-chart-unit{font-size:.75rem;color:var(--text-muted)}.sensor-chart-range{display:flex;justify-content:space-between;margin-top:4px}.sensor-chart-period{font-weight:500;color:var(--text-secondary)}.sensor-chart-empty{height:220px;display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--text-muted);background:rgba(15,23,42,.2);border-radius:14px;border:1px dashed rgba(148,163,184,.16)}.sensor-tooltip{background:rgba(2,6,23,.94);border:1px solid rgba(148,163,184,.18);border-radius:12px;padding:10px 12px;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.sensor-tooltip-time{font-size:.75rem;color:var(--text-secondary);margin-bottom:4px}.sensor-tooltip-value{font-size:.95rem;font-weight:700;color:var(--text-primary)}.rooms-shell{max-width:1280px;margin:0 auto}.rooms-layout{display:grid;grid-template-columns:minmax(320px,390px) minmax(0,1fr);grid-gap:28px;gap:28px;align-items:start}.rooms-layout-empty{grid-template-columns:minmax(320px,720px);justify-content:center}.dashboard-edit-panel,.dashboard-panel,.rooms-create-panel,.rooms-list-panel{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:28px;padding:28px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:var(--shadow-lg)}.dashboard-section-header,.room-panel-heading,.rooms-list-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.room-panel-heading{flex-direction:column;margin-bottom:24px}.dashboard-section-header h2,.room-panel-heading h2,.rooms-list-header h2{font-size:clamp(1.25rem,2vw,1.8rem);margin-bottom:8px}.room-panel-heading p:last-child{color:var(--text-secondary);line-height:1.6}.room-card-kicker,.room-panel-kicker{font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;color:var(--accent-hover);margin-bottom:10px}.room-form-grid{display:grid;grid-template-columns:1fr;grid-gap:16px;gap:16px}.field{display:grid;grid-gap:10px;gap:10px}.field span{font-size:.82rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}.field input,.field select{width:100%;border:1px solid rgba(148,163,184,.18);background:rgba(15,23,42,.5);color:var(--text-primary);border-radius:16px;padding:15px 16px;outline:none;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.field input:focus,.field select:focus{border-color:rgba(52,211,153,.55);box-shadow:0 0 0 4px rgba(16,185,129,.12)}.field input::placeholder{color:var(--text-muted)}.field select:disabled{opacity:.75}.room-form-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:20px}.room-form-actions-compact{margin-top:0}.primary-button,.secondary-button{border:1px solid transparent;border-radius:999px;padding:12px 18px;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease,background .2s ease}.primary-button{background:linear-gradient(135deg,#10b981,#059669);color:#f8fafc;box-shadow:0 16px 34px rgba(16,185,129,.24)}.primary-button:hover:not(:disabled),.secondary-button:hover:not(:disabled){transform:translateY(-1px)}.secondary-button{background:rgba(15,23,42,.65);color:var(--text-primary);border-color:rgba(148,163,184,.16)}.primary-button:disabled,.secondary-button:disabled{opacity:.55;cursor:not-allowed}.helper-text{color:var(--text-muted);font-size:.86rem}.room-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:20px;gap:20px;margin-top:22px}.room-card{display:grid;grid-gap:18px;gap:18px;min-height:220px;padding:24px;border-radius:24px;background:linear-gradient(180deg,rgba(15,23,42,.54),rgba(15,23,42,.28)),radial-gradient(circle at top right,rgba(16,185,129,.16),transparent 42%);border:1px solid rgba(148,163,184,.16);box-shadow:var(--shadow-lg);transition:transform .25s ease,border-color .25s ease,background .25s ease}.room-card:hover{transform:translateY(-4px);border-color:rgba(52,211,153,.28)}.dashboard-header-actions,.room-card-footer,.room-card-top,.room-dashboard-header{display:flex;gap:16px}.room-card-top h2{font-size:1.35rem;line-height:1.2}.room-card-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.room-card-metric{background:rgba(2,6,23,.34);border:1px solid rgba(148,163,184,.14);border-radius:18px;padding:14px}.room-card-metric span{display:block;font-size:.78rem;color:var(--text-secondary);margin-bottom:8px}.room-card-footer span,.room-card-metric strong{font-size:.95rem}.room-card-footer{align-items:center;margin-top:auto;color:var(--text-secondary)}.room-dashboard{max-width:1440px;margin:0 auto;display:grid;grid-gap:24px;gap:24px}.room-dashboard-header{--room-header-columns:minmax(0,1fr) minmax(0,1fr);display:grid;grid-gap:22px;gap:22px;align-items:flex-start}.room-dashboard-header-settings{--room-header-columns:minmax(0,1.2fr) minmax(320px,0.9fr)}.room-dashboard-topbar{display:grid;grid-template-columns:var(--room-header-columns);grid-gap:24px;gap:24px;align-items:center}.room-dashboard-topbar .detail-link{justify-self:start}.room-dashboard-identity{display:grid;grid-template-columns:var(--room-header-columns);grid-gap:24px;gap:24px;align-items:start}.room-dashboard-header-copy{min-width:0}.dashboard-header-actions{width:100%;display:flex;align-items:center;gap:16px;justify-content:flex-end;justify-self:end;flex-wrap:wrap}.room-dashboard-title{font-size:clamp(2.3rem,4vw,4rem);line-height:1.02;margin-top:8px}.room-dashboard-subtitle{margin-top:14px;max-width:760px;color:var(--text-secondary);line-height:1.7}.dashboard-assigned-device-card{width:100%;display:grid;grid-gap:6px;gap:6px;padding:18px 20px;border-radius:22px;background:linear-gradient(180deg,rgba(15,23,42,.72),rgba(15,23,42,.48)),radial-gradient(circle at top right,rgba(56,189,248,.14),transparent 48%);border:1px solid rgba(148,163,184,.16);box-shadow:var(--shadow-lg)}.dashboard-assigned-device-card strong{font-size:1.12rem;line-height:1.3}.dashboard-assigned-device-card-aligned{align-self:start;margin-top:34px}.dashboard-assigned-device-detail,.dashboard-assigned-device-label{color:var(--text-secondary)}.dashboard-assigned-device-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.dashboard-assigned-device-detail{font-size:.9rem}.dashboard-section-copy{margin-top:16px;color:var(--text-secondary);line-height:1.7}.room-assignment-grid{display:grid;grid-template-columns:minmax(280px,420px) minmax(0,1fr);grid-gap:18px;gap:18px;align-items:end;margin-top:18px}.dashboard-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:24px;gap:24px}.dashboard-settings-grid{grid-template-columns:minmax(0,1.2fr) minmax(320px,.9fr);align-items:start}.dashboard-settings-grid,.dashboard-settings-sidebar{display:grid;grid-gap:24px;gap:24px}.dashboard-panel-primary{background:linear-gradient(180deg,rgba(30,41,59,.54),rgba(15,23,42,.42)),radial-gradient(circle at top right,rgba(16,185,129,.16),transparent 40%)}.dashboard-badges{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 24px}.dashboard-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px}.dashboard-metrics-grid-solution{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-metric-panel{padding:18px;border-radius:22px;background:rgba(2,6,23,.34);border:1px solid rgba(148,163,184,.14)}.dashboard-metric-label{display:block;color:var(--text-secondary);font-size:.82rem;margin-bottom:10px}.dashboard-metric-value{display:flex;align-items:baseline;gap:6px;font-size:clamp(1.5rem,2vw,2.25rem);font-weight:700}.dashboard-metric-value span{font-size:.95rem;color:var(--text-muted)}.dashboard-stat-list{display:grid;grid-gap:12px;gap:12px;margin-top:22px}.dashboard-stat-list-compact{margin-top:18px}.dashboard-stat-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid rgba(148,163,184,.12)}.dashboard-stat-row span{color:var(--text-secondary)}.dashboard-stat-row strong{text-align:right}.dashboard-empty-note{padding:18px;border-radius:18px;margin:14px 0 20px;background:rgba(15,23,42,.45);border:1px dashed rgba(148,163,184,.18);color:var(--text-secondary)}.relay-grid-wide{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.relay-item-wide{padding:20px}.dashboard-single-metric{margin-top:20px}.dashboard-single-metric .dashboard-metric-panel{min-height:100%}@media (max-width:1100px){.dashboard-settings-grid,.dashboard-summary-grid,.room-assignment-grid,.room-dashboard-identity,.room-dashboard-topbar,.rooms-layout{grid-template-columns:1fr}.room-dashboard-topbar{align-items:flex-start}.dashboard-header-actions{width:100%;justify-content:flex-start;justify-self:stretch}.dashboard-assigned-device-card-aligned{margin-top:0}}@media (max-width:768px){.page-shell{padding:28px 16px 64px}.dashboard-header-actions,.dashboard-stat-row,.room-card-footer,.room-card-top,.room-dashboard-topbar{align-items:flex-start}.dashboard-metrics-grid,.dashboard-metrics-grid-solution{grid-template-columns:repeat(2,minmax(0,1fr))}.room-card-metrics{grid-template-columns:1fr}}@media (max-width:560px){.dashboard-metrics-grid,.dashboard-metrics-grid-solution,.sensor-charts-grid{grid-template-columns:1fr}.dashboard-edit-panel,.dashboard-panel,.rooms-create-panel,.rooms-list-panel{padding:22px;border-radius:22px}}@font-face{font-family:Inter;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;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;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;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;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;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;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;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}