:root{--bg:#f6f7f9;--surface:#ffffff;--surface-2:#eef1f5;--border:#dde2e9;--text:#16191d;--text-dim:#5c6672;--accent:#0b6bcb;--accent-text:#ffffff;--cool:#1f7ae0;--heat:#e0601f;--ok:#1a7f4b;--warn:#9a6400;--warn-bg:#fff6e0;--radius:14px;--shadow:0 1px 2px rgb(16 24 40/6%),0 1px 3px rgb(16 24 40/10%)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1116;--surface:#171b21;--surface-2:#1f242c;--border:#2b323c;--text:#e9edf2;--text-dim:#9aa5b1;--accent:#4f9ff0;--accent-text:#0b1016;--cool:#5aa9f5;--heat:#f5924f;--ok:#4cc38a;--warn:#e5b445;--warn-bg:#2a2110;--shadow:none}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}main{max-width:1100px;margin:0 auto;padding:16px 16px 96px}header.app{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:baseline;justify-content:space-between;margin:8px 0 20px}header.app h1{font-size:1.35rem;margin:0;letter-spacing:-.01em}.muted{color:var(--text-dim);font-size:.875rem}.grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card.off{opacity:.78}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:12px}.zone-name{font-weight:650;font-size:1.05rem;margin:0}.zone-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;color:var(--text-dim)}.temps{display:flex;align-items:baseline;gap:14px;margin-bottom:14px}.temp-big{font-size:2.1rem;font-weight:600;letter-spacing:-.02em;line-height:1}.temp-label{font-size:.75rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.mode-cool{color:var(--cool)}.mode-heat{color:var(--heat)}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}button{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;min-height:44px;min-width:44px;padding:8px 14px;cursor:pointer;transition:background .12s ease,border-color .12s ease}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.primary{background:var(--accent)}button.on,button.primary{color:var(--accent-text);border-color:transparent}button.on{background:var(--ok)}button.icon{padding:8px 0;width:44px;font-size:1.2rem;line-height:1}.chip{font-size:.75rem;padding:3px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);white-space:nowrap}.attention{background:var(--warn-bg);border:1px solid var(--warn);color:var(--warn);border-radius:10px;padding:10px 12px;font-size:.8125rem;margin-bottom:14px}.banner{border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;border:1px solid var(--border)}.banner,.banner.error{background:var(--surface)}.banner.error{border-color:#c0392b;color:#c0392b}.banner.warn{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.voicebar{position:fixed;left:0;right:0;bottom:0;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);padding:10px 16px calc(10px + env(safe-area-inset-bottom))}.voicebar .inner{max-width:1100px;margin:0 auto;display:flex;gap:10px;align-items:center}.voicebar input{flex:1 1;font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;min-height:44px;padding:8px 12px}.voicebar input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.mic{width:52px;height:52px;border-radius:50%;font-size:1.3rem;padding:0}.mic.listening{background:#c0392b;color:#fff;border-color:transparent;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.said{font-size:.875rem;color:var(--text-dim);margin:8px 0 0;min-height:1.4em}table.audit{width:100%;border-collapse:collapse;font-size:.8125rem}table.audit th{text-align:left;color:var(--text-dim);font-weight:600}table.audit td,table.audit th{padding:6px 8px;border-bottom:1px solid var(--border)}.outcome-ok{color:var(--ok)}.outcome-failed,.outcome-refused{color:#c0392b}.outcome-pin_required{color:var(--warn)}@media (max-width:420px){.temp-big{font-size:1.8rem}main{padding-bottom:104px}}main.auth{min-height:100dvh;display:grid;place-items:center;padding:24px 16px}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px 24px}.auth-brand{margin:0 0 18px;font-weight:700;letter-spacing:.02em;color:var(--accent)}.auth-card h1{font-size:1.4rem;margin:0 0 6px;letter-spacing:-.01em}.auth-sub{margin:0 0 20px}.auth-form{display:grid;grid-gap:14px;gap:14px;margin-top:18px}.auth-form label{display:grid;grid-gap:6px;gap:6px}.auth-form label>span{font-size:.875rem;font-weight:600}.auth-form input[type=email],.auth-form input[type=password],.auth-form input[type=text]{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;min-height:48px;padding:10px 12px;width:100%}.auth-form input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.auth-form a.button,.auth-form button.primary{min-height:48px;width:100%;font-weight:600}a.button{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;text-decoration:none;padding:8px 14px}a.button.primary{background:var(--accent);color:var(--accent-text)}.auth-check{display:flex!important;align-items:center;gap:8px!important}.auth-check input{width:18px;height:18px}.auth-check span{font-weight:400!important}.auth-rule{margin:-6px 0 0;font-size:.8125rem;color:var(--text-dim)}.auth-rule.warn{color:var(--warn)}.auth-error{margin:0;padding:10px 12px;border-radius:10px;border:1px solid #c0392b;color:#c0392b;font-size:.875rem}.auth-ok{margin:0;padding:12px;border-radius:10px;border:1px solid var(--ok);color:var(--ok)}.auth-hints{margin:0;padding-left:18px;font-size:.875rem}.auth-alt{margin:4px 0 0;font-size:.875rem;color:var(--text-dim)}.auth-alt a,a.auth-alt{color:var(--accent)}.banner.ok{border-color:var(--ok);color:var(--ok)}button.link{background:none;border:none;min-height:0;min-width:0;padding:0;color:inherit;text-decoration:underline}