.stat-card{background:linear-gradient(180deg,rgba(171,239,70,.08) 0%,transparent 46%),var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;display:flex;flex-direction:column;gap:18px;transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease;position:relative;overflow:hidden;min-height:188px;box-shadow:0 16px 40px #0000002e;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.stat-card:before{content:"";position:absolute;inset:auto -20% -42% auto;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(171,239,70,.14),transparent 68%)}.stat-card:hover{border-color:var(--border-strong);box-shadow:0 26px 60px #00000038;transform:translateY(-4px)}.stat-header{display:flex;align-items:flex-start;gap:14px}.stat-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:46px;height:46px;border-radius:14px;background:#abef461a;border:1px solid rgba(171,239,70,.12);color:var(--accent);font-size:22px;font-weight:700}.stat-icon.alert{color:var(--warning);background:#ffbf5a1f;border-color:#ffbf5a2e}.stat-icon svg{filter:drop-shadow(0 6px 12px rgba(171,239,70,.16))}.stat-header h3{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;line-height:1.5;padding-top:3px}.stat-value{font-size:clamp(34px,4vw,42px);font-weight:700;color:var(--text);line-height:.95;letter-spacing:-.04em}.stat-trend{margin-top:auto;font-size:12px;color:var(--accent);text-transform:uppercase;letter-spacing:.12em;font-weight:700}@media (max-width: 720px){.stat-card{padding:20px;min-height:164px}}.floor-plan{background:linear-gradient(180deg,rgba(96,177,255,.08) 0%,transparent 44%),var(--panel);border:1px solid var(--border);border-radius:var(--radius-xl);padding:28px;grid-column:1 / 7;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.floor-plan h2{font-size:20px;font-weight:600;margin-bottom:22px;color:var(--text);letter-spacing:-.02em}.floor-plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}.classroom{background:#ffffff05;border:1px solid rgba(255,255,255,.06);border-radius:20px;padding:20px;text-align:left;cursor:pointer;transition:transform .25s ease,border-color .25s ease,background .25s ease;position:relative}.classroom:hover{transform:translateY(-3px);background:#ffffff0a}.classroom.utility{border-color:#ff7e6b24}.classroom.active{border-color:#abef4642;background:#abef4614}.classroom.anomaly{border-color:#ff7e6b47;background:#ff7e6b14}.room-label{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--text);margin-bottom:8px}.status-pill{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-pill.active{background:var(--accent);box-shadow:0 0 0 6px #abef461a}.status-pill.off{background:#ffffff38}.room-status{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin-bottom:8px;font-weight:700}.room-devices{font-size:13px;color:var(--muted-soft)}.room-meta{margin-top:12px;font-size:13px;color:var(--text)}.device-toggle,.device-tag{margin-top:18px;display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.device-toggle{border:1px solid rgba(171,239,70,.24);background:#abef4614;color:var(--accent);cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease}.device-toggle:hover:not(:disabled){transform:translateY(-1px);background:#abef4624}.device-toggle:disabled{opacity:.6;cursor:progress}.device-toggle.off{border-color:#ffffff1f;background:#ffffff0a;color:var(--text)}.device-tag{border:1px solid rgba(255,126,107,.16);background:#ff7e6b14;color:#ffc7bb}.floor-plan-legend{display:flex;gap:22px;padding-top:18px;border-top:1px solid rgba(171,239,70,.1);flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:700}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-dot.active{background:var(--accent)}.legend-dot.off{background:#ffffff38}.legend-dot.anomaly{background:var(--danger)}@media (max-width: 1024px){.floor-plan{grid-column:1 / -1}}@media (max-width: 720px){.floor-plan{padding:22px}.floor-plan-grid{grid-template-columns:1fr}}.energy-chart{background:linear-gradient(180deg,rgba(171,239,70,.08) 0%,transparent 44%),var(--panel);border:1px solid var(--border);border-radius:var(--radius-xl);padding:28px;grid-column:7 / -1;grid-row:span 2;display:flex;flex-direction:column;gap:22px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.chart-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.chart-header h2{font-size:20px;font-weight:600;color:var(--text);letter-spacing:-.02em}.chart-period{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.16em;background:#abef461a;padding:8px 12px;border-radius:999px;border:1px solid rgba(171,239,70,.16);font-weight:700}.chart-container{flex:1;display:flex;align-items:center;justify-content:center;min-height:240px;padding:6px 0}.chart-svg{width:100%;height:100%;max-height:250px}.chart-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding-top:18px;border-top:1px solid rgba(171,239,70,.1)}.stat{display:flex;flex-direction:column;gap:6px;text-align:left;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:16px;padding:16px}.stat .label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;font-weight:700}.stat .value{font-size:16px;font-weight:600;color:var(--text)}@media (max-width: 1024px){.energy-chart{grid-column:1 / -1;grid-row:auto}}@media (max-width: 720px){.energy-chart{padding:22px}.chart-stats{grid-template-columns:1fr}}.activity-log{background:linear-gradient(180deg,rgba(255,126,107,.08) 0%,transparent 42%),var(--panel);border:1px solid var(--border);border-radius:var(--radius-xl);padding:28px;grid-column:1 / 7;display:flex;flex-direction:column;gap:18px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.activity-log h2{font-size:20px;font-weight:600;color:var(--text);letter-spacing:-.02em}.log-items{display:flex;flex-direction:column;gap:12px;max-height:340px;overflow-y:auto;padding-right:4px}.log-entry{display:flex;align-items:flex-start;gap:14px;padding:16px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:18px;cursor:pointer;transition:transform .25s ease,background .25s ease,border-color .25s ease}.log-entry:hover{background:#ffffff0d;border-color:#abef4629;transform:translateY(-2px)}.log-entry.triggered{border-color:#ffbf5a3d}.log-entry.alert{border-color:#ff7e6b47}.log-entry.normal{border-color:#abef463d}.log-status{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:#abef461f;color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.08em;flex-shrink:0}.log-content{flex:1;min-width:0}.log-action{font-size:14px;font-weight:600;color:var(--text);line-height:1.5}.log-classroom{font-size:12px;color:var(--muted);margin-top:4px;text-transform:uppercase;letter-spacing:.12em}.log-time{font-size:11px;color:var(--muted-soft);text-transform:uppercase;letter-spacing:.12em;flex-shrink:0;padding-top:3px;font-weight:700}.log-items::-webkit-scrollbar{width:6px}.log-items::-webkit-scrollbar-track{background:#abef460f;border-radius:999px}.log-items::-webkit-scrollbar-thumb{background:#abef4670;border-radius:999px}.log-items::-webkit-scrollbar-thumb:hover{background:#abef46b8}@media (max-width: 1024px){.activity-log{grid-column:1 / -1}}@media (max-width: 720px){.activity-log{padding:22px}.log-entry{flex-wrap:wrap}}.dashboard{min-height:100vh;display:flex;flex-direction:column;gap:28px}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:20px 4px 8px}.hero-copy{max-width:760px}.eyebrow{display:inline-flex;align-items:center;padding:7px 12px;border:1px solid rgba(171,239,70,.18);border-radius:999px;margin-bottom:18px;background:#abef4614;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.dashboard-header h1{color:var(--text);font-size:clamp(36px,6vw,64px);margin:0 0 12px;letter-spacing:-.04em;font-weight:700;line-height:.95}.tagline{color:var(--muted);font-size:16px;margin:0;max-width:620px;line-height:1.7;font-weight:500}.status-indicator{display:inline-flex;align-items:center;gap:10px;color:var(--text);font-size:12px;text-transform:uppercase;letter-spacing:.16em;font-weight:700;white-space:nowrap;padding:14px 18px;border-radius:999px;border:1px solid rgba(171,239,70,.18);background:#08141cb8;box-shadow:0 10px 30px #0000002e}.dot{width:10px;height:10px;background:var(--accent);border-radius:50%;box-shadow:0 0 0 6px #abef461f;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.dashboard-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;auto-rows:auto;align-items:stretch}.stats-row{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.error-banner{background:#ff7e6b1f;border:1px solid rgba(255,126,107,.28);padding:18px 20px;color:#ffc7bb;border-radius:18px;font-size:14px;grid-column:1 / -1;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.function-panel{grid-column:1 / -1;padding:24px;border-radius:28px;border:1px solid rgba(171,239,70,.12);background:linear-gradient(180deg,#0a171ff5,#070f15fa),radial-gradient(circle at top right,rgba(171,239,70,.1),transparent 32%);box-shadow:0 22px 60px #00000038}.function-panel-header{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:18px}.function-panel-kicker{margin:0 0 6px;color:var(--accent);text-transform:uppercase;letter-spacing:.16em;font-size:11px;font-weight:700}.function-panel h2{margin:0;color:var(--text)}.function-empty{margin:0;color:var(--muted)}.function-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.function-card{padding:18px;border-radius:20px;border:1px solid rgba(171,239,70,.12);background:#ffffff08}.function-card-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.function-card-top strong{color:var(--text);font-size:14px}.function-card-top span{padding:6px 10px;border-radius:999px;color:var(--accent);background:#abef461a;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.function-card h3{margin:0 0 8px;color:var(--text);font-size:18px}.function-card p{margin:0 0 12px;color:var(--muted);line-height:1.6;font-size:14px}.function-card pre{margin:0;padding:14px;border-radius:16px;background:#00000047;color:#d7f6ac;overflow:auto;font-size:12px;line-height:1.6}@media (max-width: 1400px){.stats-row{grid-template-columns:repeat(2,1fr)}.function-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 1024px){.dashboard{gap:22px}.dashboard-header{align-items:flex-start;flex-direction:column}}@media (max-width: 720px){.stats-row,.function-list{grid-template-columns:1fr}.dashboard-grid{gap:18px}.dashboard-header{padding-top:0;gap:16px}.tagline{font-size:15px;line-height:1.6}}.sidebar{position:fixed;left:20px;top:20px;bottom:20px;width:240px;background:linear-gradient(180deg,rgba(171,239,70,.12) 0%,transparent 22%),#081219e0;border:1px solid var(--border);border-radius:28px;display:flex;flex-direction:column;padding:22px 16px 18px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);z-index:10}.sidebar-header{display:flex;flex-direction:column;align-items:flex-start;margin-bottom:28px;padding:6px 10px 22px;border-bottom:1px solid rgba(171,239,70,.14)}.logo{display:flex;align-items:center;gap:12px;margin-bottom:8px}.logo-text{color:var(--text);font-weight:700;font-size:19px;text-transform:uppercase;letter-spacing:.16em}.logo-subtext{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.2em;line-height:1.6}.sidebar-nav{display:flex;flex-direction:column;gap:10px;flex:1}.nav-item{display:flex;align-items:center;gap:14px;padding:14px;background:#ffffff05;border:1px solid transparent;border-radius:18px;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer;transition:all .25s ease;text-align:left;text-transform:uppercase;letter-spacing:.08em}.nav-item:hover{background:#abef4614;color:var(--text);border-color:#abef4629;transform:translate(4px)}.nav-item:hover .nav-icon svg{stroke:var(--accent)}.nav-item.active{background:linear-gradient(135deg,#abef462e,#abef460f);color:var(--text);border-color:var(--border-strong);font-weight:600;box-shadow:inset 0 0 0 1px #abef4614}.nav-item.active .nav-icon svg{stroke:var(--accent)}.nav-icon{display:flex;align-items:center;justify-content:center;min-width:22px;color:inherit}.nav-icon svg{stroke:inherit;transition:stroke .3s ease}.nav-label{flex:1}@media (max-width: 1024px){.sidebar{left:16px;top:16px;bottom:16px;width:72px;padding:16px 10px 14px}.sidebar-header{align-items:center;padding:6px 0 18px;margin-bottom:18px}.logo-text,.logo-subtext,.nav-label{display:none}.nav-item{justify-content:center;padding:14px 10px}}@media (max-width: 720px){.sidebar{left:16px;right:16px;top:16px;bottom:auto;width:auto;height:78px;padding:10px 12px;flex-direction:row;align-items:center;gap:12px}.sidebar-header{border-bottom:none;margin:0;padding:0}.sidebar-nav{flex-direction:row;gap:8px;overflow-x:auto;overflow-y:hidden;padding-bottom:2px}.nav-item{min-width:48px;border-radius:14px;transform:none}.nav-item:hover{transform:translateY(-2px)}}*{margin:0;padding:0;box-sizing:border-box}:root{color-scheme:dark;--bg: #09131a;--bg-deep: #050b10;--panel: rgba(10, 21, 29, .78);--panel-strong: rgba(14, 27, 37, .92);--border: rgba(171, 239, 70, .18);--border-strong: rgba(171, 239, 70, .32);--text: #f3f8ec;--muted: #9fb1a6;--muted-soft: #71827a;--accent: #abef46;--danger: #ff7e6b;--warning: #ffbf5a;--shadow: 0 24px 60px rgba(0, 0, 0, .34);--radius-xl: 28px;--radius-lg: 22px}html,body{min-height:100%}body{background:radial-gradient(circle at top left,rgba(171,239,70,.12),transparent 30%),radial-gradient(circle at 85% 15%,rgba(69,148,255,.12),transparent 22%),linear-gradient(180deg,#0d1b24,#071018 48%,#04080d);color:var(--text);font-family:Space Grotesk,Aptos,Segoe UI Variable Text,Trebuchet MS,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;min-height:100vh}.app-container{display:flex;min-height:100vh;background:radial-gradient(circle at 20% 0%,rgba(171,239,70,.08),transparent 25%),linear-gradient(135deg,#04080deb,#0a1117f5)}.main-content{flex:1;margin-left:280px;overflow-y:auto;padding:40px 40px 48px;position:relative}.main-content:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);background-size:72px 72px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.85),transparent 92%);mask-image:linear-gradient(180deg,rgba(0,0,0,.85),transparent 92%)}.page-shell{min-height:calc(100vh - 88px);display:flex;flex-direction:column;justify-content:center;gap:18px}.page-kicker{font-size:12px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}.page-card{max-width:640px;padding:36px;border-radius:var(--radius-xl);border:1px solid var(--border);background:linear-gradient(180deg,rgba(171,239,70,.08) 0%,transparent 42%),var(--panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow)}.page-card h2{font-size:clamp(28px,4vw,42px);line-height:1.05;margin-bottom:14px}.page-card p{color:var(--muted);font-size:16px;line-height:1.7}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#ffffff0a}::-webkit-scrollbar-thumb{background:#abef4659;border-radius:999px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#abef46a6;background-clip:content-box}::selection{background:var(--accent);color:#081016}@media (max-width: 1024px){.main-content{margin-left:96px;padding:28px 24px 36px}}@media (max-width: 720px){.main-content{margin-left:0;padding:112px 18px 28px}.page-card{padding:24px;border-radius:22px}}
