@import "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;700&family=Space+Grotesk:wght@500;700&display=swap";:root{--bg-primary:#eef3f5;--bg-secondary:#fff;--bg-alt:#f8fbfc;--text-primary:#132533;--text-muted:#506878;--line:#d4e0e6;--brand:#136f63;--brand-dark:#0d4f49;--accent:#e08b3e;--warn-bg:#fff5e9;--warn-border:#ffd7a0;--warn-text:#9c5200}*{box-sizing:border-box}body{background:radial-gradient(circle at 15% -10%, #136f632e 0%, transparent 42%), radial-gradient(circle at 82% 0%, #e08b3e33 0%, transparent 36%), var(--bg-primary);min-height:100vh;color:var(--text-primary);margin:0;font-family:Outfit,sans-serif}#app{width:100%;min-height:100vh;padding:1rem;overflow-x:hidden}h1,h2,h3{margin:0;font-family:Space Grotesk,sans-serif}p{margin:0}.page-shell{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffd6;border-radius:26px;width:100%;max-width:1200px;margin:0 auto;padding:1.35rem;animation:.6s rise-in;box-shadow:0 24px 50px #09223224}.topbar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.brand-block{max-width:760px}.eyebrow{text-transform:uppercase;letter-spacing:.09em;color:var(--brand-dark);margin-bottom:.35rem;font-size:.78rem}.topbar h1{font-size:clamp(1.5rem,2.6vw,2.3rem)}.topbar-copy{color:var(--text-muted);max-width:58ch;margin-top:.5rem;line-height:1.55}.message-card,.auth-card,.devices-panel,.charts-panel{background:var(--bg-secondary);border:1px solid var(--line);border-radius:18px;padding:1.2rem}.info-banner{background:linear-gradient(135deg,#136f6312,#e08b3e12);justify-content:space-between;align-items:center;gap:1rem;display:flex}.status-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem;min-width:min(100%,620px);display:grid}.status-summary strong{margin-top:.22rem;font-size:1rem;display:block}.status-ok{color:#107243}.status-warn{color:#9c5200}.status-neutral{color:var(--text-muted)}.warning{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text)}.auth-card{max-width:450px;margin:2rem auto}.auth-card h2{margin-top:.15rem}.auth-card>p{color:var(--text-muted);margin-top:.5rem;line-height:1.55}.auth-form{gap:.8rem;margin-top:1rem;display:grid}.auth-form label{color:var(--text-muted);gap:.35rem;font-weight:500;display:grid}.auth-form input{background:var(--bg-alt);width:100%;color:var(--text-primary);border:1px solid #b9ccd5;border-radius:10px;padding:.72rem .85rem;font-size:.95rem}.dashboard-grid{gap:1rem;display:grid}.dashboard-grid>*{min-width:0}.device-grid,.chart-grid{gap:.9rem;min-width:0;margin-top:.9rem;display:grid}.device-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}.session-chip{border:1px solid var(--line);background:#ffffffeb;border-radius:16px;align-items:center;gap:1rem;padding:.9rem 1rem;display:flex;box-shadow:0 10px 24px #0a233814}.session-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.2rem;font-size:.76rem;display:block}.primary-btn,.secondary-btn,.link-btn{cursor:pointer;border:none;border-radius:12px;padding:.7rem 1rem;font-weight:700}.primary-btn{color:#fff;background:linear-gradient(120deg, var(--brand), var(--brand-dark))}.primary-btn:disabled{opacity:.6;cursor:not-allowed}.secondary-btn{color:var(--text-primary);background:#fff;border:1px solid #b9ccd5}.link-btn{color:var(--brand-dark);background:0 0;border:1px dashed #9fb7c1;margin-top:.5rem}.auth-switch{justify-content:space-between;align-items:center;gap:1rem;margin-top:.3rem;display:flex}.auth-switch p{color:var(--text-muted);line-height:1.45}.error-text{color:#9b2330;margin-top:.7rem}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=900px){.dashboard-grid,.device-grid,.chart-grid{grid-template-columns:1fr}.info-banner,.auth-switch,.session-chip{flex-direction:column;align-items:stretch}.status-summary{grid-template-columns:1fr;min-width:0}}@media (width<=768px){#app{padding:.35rem}.page-shell{border-radius:16px;padding:.7rem}.message-card,.auth-card,.devices-panel,.charts-panel{padding:.9rem}.topbar{flex-direction:column;align-items:stretch}}.device-card[data-v-6a3d66d6]{background:linear-gradient(#fffffffa,#f3f8fafa);border:1px solid #d5e3e8;border-radius:18px;gap:1rem;padding:1.2rem;transition:transform .2s,box-shadow .2s,border-color .2s;display:grid;box-shadow:0 12px 24px #0a233814}.device-card.active[data-v-6a3d66d6]{border-color:#1f7a8c73;transform:translateY(-1px);box-shadow:0 18px 34px #0a233824}.device-card.disabled[data-v-6a3d66d6]{opacity:.55;pointer-events:none}.device-head[data-v-6a3d66d6]{justify-content:space-between;align-items:center;gap:.8rem;display:flex}h3[data-v-6a3d66d6]{margin:0;font-size:1.15rem}.device-kicker[data-v-6a3d66d6]{color:#4a6572;text-transform:uppercase;letter-spacing:.08em;margin:0 0 .2rem;font-size:.78rem}.status[data-v-6a3d66d6]{border-radius:999px;padding:.3rem .8rem;font-size:.85rem;font-weight:600}.status.on[data-v-6a3d66d6]{color:#107243;background:#dbf5e6}.status.off[data-v-6a3d66d6]{color:#8f2525;background:#f9e0de}.metric-stack[data-v-6a3d66d6]{gap:.4rem;display:grid}.metric[data-v-6a3d66d6]{color:#365268;margin:0}.updated-at[data-v-6a3d66d6]{color:#5f7888;margin:0;font-size:.9rem}.brightness-control[data-v-6a3d66d6]{color:#365268;gap:.55rem;font-size:.95rem;display:grid}.brightness-row[data-v-6a3d66d6]{align-items:center;gap:.75rem;display:flex}.brightness-row strong[data-v-6a3d66d6]{text-align:right;min-width:3rem}.brightness-slider[data-v-6a3d66d6]{accent-color:#1f7a8c;flex:1}.toggle-btn[data-v-6a3d66d6]{cursor:pointer;color:#fff;background:linear-gradient(120deg,#1f7a8c,#1d4f77);border:none;border-radius:12px;width:100%;padding:.7rem 1rem;font-weight:700}.toggle-btn[data-v-6a3d66d6]:disabled{cursor:not-allowed;opacity:.6}.timer-section[data-v-6a3d66d6]{border-top:1px solid #e0f0f5;padding-top:1rem}.timer-summary[data-v-6a3d66d6]{cursor:pointer;color:#1f7a8c;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:.5rem 0;font-size:.95rem;font-weight:600;display:flex}.timer-summary[data-v-6a3d66d6]:hover{opacity:.8}.timer-badge[data-v-6a3d66d6]{color:#fff;background:#1f7a8c;border-radius:999px;padding:.25rem .65rem;font-size:.85rem;font-weight:700}.timer-content[data-v-6a3d66d6]{padding-top:.75rem}.timer-active[data-v-6a3d66d6]{background:#f0f8fa;border:1px solid #d5e8ed;border-radius:10px;gap:.75rem;padding:.75rem;display:grid}.timer-info[data-v-6a3d66d6]{color:#1f7a8c;margin:0;font-size:.95rem}.timer-form[data-v-6a3d66d6]{gap:.75rem;display:grid}.timer-form label[data-v-6a3d66d6]{color:#365268;gap:.35rem;font-size:.9rem;display:grid}.timer-form span[data-v-6a3d66d6]{font-weight:600}.timer-form input[type=number][data-v-6a3d66d6],.timer-form select[data-v-6a3d66d6]{color:#365268;border:1px solid #c5dce4;border-radius:8px;padding:.5rem;font-size:.95rem}.timer-form input[type=number][data-v-6a3d66d6]:disabled,.timer-form select[data-v-6a3d66d6]:disabled{cursor:not-allowed;background:#f5f5f5}.brightness-input-row[data-v-6a3d66d6]{align-items:center;gap:.75rem;display:flex}.brightness-input-row input[data-v-6a3d66d6]{accent-color:#1f7a8c;flex:1}.brightness-input-row strong[data-v-6a3d66d6]{text-align:right;min-width:3rem;font-size:.9rem}.primary-btn[data-v-6a3d66d6]{cursor:pointer;color:#fff;background:linear-gradient(120deg,#1f7a8c,#1d4f77);border:none;border-radius:8px;padding:.6rem 1rem;font-size:.95rem;font-weight:600;transition:opacity .2s}.primary-btn[data-v-6a3d66d6]:disabled{cursor:not-allowed;opacity:.5}.primary-btn[data-v-6a3d66d6]:not(:disabled):hover{opacity:.9}.danger-btn[data-v-6a3d66d6]{cursor:pointer;color:#fff;background:#c85a5a;border:none;border-radius:8px;padding:.6rem 1rem;font-size:.95rem;font-weight:600;transition:opacity .2s}.chart-card[data-v-71ba3347]{background:#fff;border:1px solid #d5e3e8;border-radius:18px;width:100%;min-width:0;min-height:320px;padding:1rem;box-shadow:0 12px 24px #0a233814}h3[data-v-71ba3347]{margin:0 0 .8rem;font-size:1rem}.canvas-wrap[data-v-71ba3347]{width:100%;height:260px;overflow:hidden}
