:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;--page:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-secondary:#52514e;--muted:#898781;--hairline:#e1e0d9;--border:#0b0b0b1a;--accent:#2a78d6;--accent-wash:#2a78d61a;--error:#d03b3b;--error-wash:#d03b3b14;--trend-rapid-falling:#7040b8;--trend-falling:#2a78d6;--trend-rising:#d97706;--comfort-surface-saturation:55%;--comfort-surface-lightness:95.5%;--comfort-border-saturation:45%;--comfort-border-lightness:74%;--warning-ink:#7a5200;--warning-wash:#fab21924;--recovery-overlay:#f9f9f794}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--ink:#fff;--ink-secondary:#c3c2b7;--muted:#898781;--hairline:#2c2c2a;--border:#ffffff1a;--accent:#3987e5;--accent-wash:#3987e529;--error:#e66767;--error-wash:#d03b3b29;--trend-rapid-falling:#b28af0;--trend-falling:#3987e5;--trend-rising:#f0a33a;--comfort-surface-saturation:26%;--comfort-surface-lightness:12%;--comfort-border-saturation:32%;--comfort-border-lightness:25%;--warning-ink:#fab219;--warning-wash:#fab2191a;--recovery-overlay:#0d0d0d9e}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--ink:#fff;--ink-secondary:#c3c2b7;--muted:#898781;--hairline:#2c2c2a;--border:#ffffff1a;--accent:#3987e5;--accent-wash:#3987e529;--error:#e66767;--error-wash:#d03b3b29;--trend-rapid-falling:#b28af0;--trend-falling:#3987e5;--trend-rising:#f0a33a;--comfort-surface-saturation:26%;--comfort-surface-lightness:12%;--comfort-border-saturation:32%;--comfort-border-lightness:25%;--warning-ink:#fab219;--warning-wash:#fab2191a;--recovery-overlay:#0d0d0d9e}}*{box-sizing:border-box}body{background:var(--page);color:var(--ink);margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.5}body.presentation-active{overflow:hidden}body.chart-overlay-active{overscroll-behavior:none;overflow:hidden}.app{max-width:2400px;padding:12px max(20px, env(safe-area-inset-right)) 48px max(20px, env(safe-area-inset-left));flex-direction:column;gap:8px;margin:0 auto;display:flex;position:relative}.app:not(.app--present){min-height:100svh}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;min-height:42px;padding-right:340px;display:flex}.app-header h1{margin:0;font-size:19px;font-weight:650;line-height:1.15}.app-subtitle{color:var(--muted);margin:2px 0 0;font-size:13px}.refresh-info{top:max(12px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));z-index:60;align-items:center;gap:12px;display:flex;position:fixed}.header-actions{align-items:center;gap:8px;display:flex}.header-actions>.button,.header-actions>.menu>.menu-toggle,.header-actions>.page-switch>.page-switch-toggle{min-height:38px;padding:7px 13px}.header-actions>.menu>.menu-toggle{min-width:38px}.refresh-time{color:var(--muted);font-size:12px;line-height:1.2}.refresh-status-compact{display:none}.button{border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;border-radius:8px;padding:6px 14px;font-size:13px}.button:hover:not(:disabled){background:var(--accent-wash)}.button:disabled{opacity:.6;cursor:default}.chip{border:1px solid var(--border);color:var(--ink-secondary);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:13px;display:inline-flex}.chip:hover{background:var(--accent-wash)}.chip--active{background:var(--accent-wash);border-color:var(--accent);color:var(--ink)}.chip--ghost{border-style:dashed}.chip-dot{border-radius:50%;flex:none;width:9px;height:9px}.chip-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}select,input[type=datetime-local]{border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;border-radius:8px;padding:5px 10px;font-size:13px}.filter-bar{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 18px 14px}.filter-bar--collapsed{cursor:pointer;padding-bottom:10px}.filter-bar-head{align-items:center;gap:10px;display:flex}.filter-bar-toggle{border:1px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--ink-secondary);font:inherit;cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;margin-left:auto;padding:0;display:inline-flex}.filter-bar-toggle:hover{background:var(--accent-wash)}.filter-summary{min-width:0;color:var(--ink-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;overflow:hidden}.filter-bar-content{flex-wrap:wrap;gap:20px 32px;padding-top:8px;display:flex}.filter-group{flex-direction:column;gap:7px;display:flex}.filter-group--wide{flex:100%}.filter-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.filter-sublabel{color:var(--muted);margin-right:6px;font-size:12px}.range-custom{flex-wrap:wrap;gap:14px;display:flex}.band-toggle{color:var(--ink-secondary);cursor:pointer;align-items:center;gap:6px;margin-left:6px;font-size:13px;display:inline-flex}.band-toggle--disabled{opacity:.5;cursor:default}.menu{position:relative}.menu-toggle{padding:6px 10px}.menu-panel{z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;min-width:250px;padding:12px 14px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #00000024}.menu-row{color:var(--ink-secondary);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.menu-row select,.menu-checkbox{margin-left:auto}.menu-hairline{border-top:1px solid var(--hairline)}.menu-note{color:var(--muted);margin:0;font-size:12px}.menu-version{opacity:.8;font-size:11px}.menu-button-note{color:var(--muted);font-size:12px;display:block}.page-switch{flex-shrink:0;position:relative}.page-switch-toggle{text-align:left;justify-content:space-between;align-items:center;gap:8px;width:100px;display:flex}.page-switch-value{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.page-switch-caret{opacity:.65;border-bottom:1.5px solid;border-right:1.5px solid;border-radius:1px;flex-shrink:0;width:7px;height:7px;margin-top:-3px;transition:transform .12s,margin-top .12s;transform:rotate(45deg)}.page-switch-toggle[aria-expanded=true] .page-switch-caret{margin-top:3px;transform:rotate(225deg)}.page-switch-panel{z-index:50;background:var(--surface);border:1px solid var(--border);overscroll-behavior:contain;border-radius:10px;min-width:100%;max-height:calc(100dvh - 90px);margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 8px 24px #00000024}.page-switch-option{color:var(--ink-secondary);white-space:nowrap;cursor:pointer;border-radius:7px;align-items:center;gap:6px;padding:7px 10px 7px 6px;font-size:13px;display:flex}.page-switch-option[data-active=true]{background:var(--accent-wash);color:var(--ink)}.page-switch-option--selected{color:var(--ink);font-weight:600}.page-switch-check{width:14px;color:var(--accent);text-align:center;flex-shrink:0;font-size:12px}.banner{border-radius:10px;padding:10px 14px;font-size:13px}.banner--error{background:var(--error-wash);color:var(--error);border:1px solid var(--error)}.banner--warning{background:var(--warning-wash);color:var(--warning-ink);border:1px solid var(--border)}.realtime-recovery-overlay{z-index:200;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));background:var(--recovery-overlay);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overscroll-behavior:none;place-items:center;display:grid;position:fixed;inset:0}.realtime-recovery-status{color:var(--ink);text-align:center;margin:0;font-size:17px;font-weight:600}.offline-screen{z-index:300;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));background:var(--page);overscroll-behavior:none;place-items:center;display:grid;position:fixed;inset:0}.offline-card{text-align:center;max-width:360px}.offline-icon{width:72px;height:72px;margin:0 auto 16px;display:block}.offline-title{margin:0 0 8px;font-size:20px;font-weight:600}.offline-text{color:var(--ink-secondary);margin:0 0 20px}.offline-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.offline-note{color:var(--muted);margin:12px 0 0;font-size:12px}.empty-state{text-align:center;color:var(--muted);margin:0;padding:56px 0}.view-toggle{gap:8px;display:flex}.chart-card,.table-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 8px}.chart-card{position:relative}.chart-fullscreen-toggle{z-index:2;padding:4px 10px;font-size:12px;position:absolute;top:10px;right:12px}.chart-card--overlay{width:100vw;height:100dvh;padding:16px 24px;padding-top:max(16px, env(safe-area-inset-top));padding-right:max(24px, env(safe-area-inset-right));padding-bottom:max(16px, env(safe-area-inset-bottom));padding-left:max(24px, env(safe-area-inset-left));background:var(--page);overscroll-behavior:none;border:none;border-radius:0;margin:0;position:fixed;inset:0;overflow:hidden}.chart-card:fullscreen{width:100vw;height:100dvh;padding:16px 24px;padding-top:max(16px, env(safe-area-inset-top));padding-right:max(24px, env(safe-area-inset-right));padding-bottom:max(16px, env(safe-area-inset-bottom));padding-left:max(24px, env(safe-area-inset-left));background:var(--page);overscroll-behavior:none;border:none;border-radius:0;margin:0;position:fixed;inset:0;overflow:hidden}.chart-card--overlay{z-index:100}.sensor-detail-backdrop{z-index:150;background:var(--recovery-overlay);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overscroll-behavior:contain;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sensor-detail{overscroll-behavior:contain;border:1px solid var(--border);background:var(--page);border-radius:16px;flex-direction:column;gap:14px;width:min(960px,100%);max-height:calc(100dvh - 40px);padding:18px 20px;display:flex;overflow:auto;box-shadow:0 20px 70px #0000004d}.sensor-detail>*,.sensor-detail-section>*{flex:none}.sensor-detail-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sensor-detail-heading{min-width:0}.sensor-detail-heading h2{margin:0;font-size:22px;font-weight:650;line-height:1.2}.sensor-detail-state{color:var(--muted);margin:3px 0 0;font-size:12px}.sensor-detail-close{flex:none;padding:1px 10px;font-size:22px;line-height:1.3}.sensor-detail-banner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.sensor-detail-now{border:1px solid var(--border);background:var(--surface);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.sensor-detail-now--comfort{background:hsl(var(--comfort-hue), var(--comfort-surface-saturation), var(--comfort-surface-lightness));border-color:hsl(var(--comfort-hue), var(--comfort-border-saturation), var(--comfort-border-lightness));transition:background-color .45s,border-color .45s}.sensor-detail-temp{letter-spacing:-.02em;font-variant-numeric:tabular-nums;align-items:center;gap:12px;font-size:46px;font-weight:650;line-height:1.1;display:flex}.sensor-detail-unit{color:var(--muted);font-size:.48em;font-weight:500}.sensor-detail-trend{flex-shrink:0;width:26px;height:26px}.sensor-detail-now-meta,.sensor-detail-device{flex-wrap:wrap;gap:8px 24px;margin:0;display:flex}.sensor-detail-now-meta dt,.sensor-detail-device dt,.sensor-detail-stat-label{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:11px;font-weight:600}.sensor-detail-now-meta dd,.sensor-detail-device dd{font-variant-numeric:tabular-nums;margin:2px 0 0}.sensor-detail-now-meta dd{font-size:17px}.sensor-detail-section{flex-direction:column;gap:10px;display:flex}.sensor-detail-section h3{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;margin:0;font-size:13px;font-weight:600}.sensor-detail-chart-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.sensor-detail-chart-controls{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.sensor-detail-window:disabled{opacity:.6;cursor:default}.sensor-detail-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.sensor-detail-stats--pending{opacity:.55}.sensor-detail-stat{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.sensor-detail-stat-value{font-variant-numeric:tabular-nums;font-size:19px;font-weight:650}.sensor-detail-stat-note{color:var(--ink-secondary);font-variant-numeric:tabular-nums;font-size:12px}.sensor-detail-note{color:var(--muted);margin:0;font-size:13px}.sensor-detail-footer{border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;padding-top:12px;display:flex}.sensor-detail-id{word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}@media (width<=640px){.sensor-detail-backdrop{align-items:stretch;padding:0}.sensor-detail{max-height:100dvh;padding:14px;padding-top:max(14px, env(safe-area-inset-top));padding-bottom:max(14px, env(safe-area-inset-bottom));border:none;border-radius:0}.sensor-detail-temp{font-size:38px}}.table-card{padding:0;overflow:hidden}.table-note{color:var(--muted);border-bottom:1px solid var(--hairline);margin:0;padding:10px 16px;font-size:12px}.table-scroll{max-height:70vh;overflow:auto}table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}thead th{z-index:2;background:var(--surface);color:var(--muted);letter-spacing:.05em;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--hairline);padding:8px 12px;font-size:11px;font-weight:600;position:sticky;top:0}tbody td{border-bottom:1px solid var(--hairline);white-space:nowrap;padding:6px 12px}tbody tr:last-child td{border-bottom:none}.table-sensor{color:var(--ink-secondary)}.table-num{text-align:right;font-variant-numeric:tabular-nums}.menu-zoom{gap:6px;margin-left:auto;display:flex}.present-zoom{text-align:center;width:28px;color:var(--ink-secondary);padding:2px 0;font-size:15px;line-height:1.3}.app.app--present{height:100svh;height:var(--present-viewport-height,100vh);padding-bottom:calc(env(safe-area-inset-bottom,0px) + 20px);overflow:hidden}.present-grid{justify-content:space-evenly;align-items:stretch;gap:var(--tile-gap,14px);opacity:0;flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.present-grid--ready{opacity:1;transition:opacity .15s}.present-loading{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;padding:48px 0;display:flex}.present-spinner{border:3px solid var(--hairline);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite present-spinner-turn}@keyframes present-spinner-turn{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.present-spinner{animation-duration:2.5s}.present-grid--ready{transition:none}}.present-row{justify-content:center;align-items:center;gap:var(--tile-spacing,14px);flex:none;min-height:0;display:flex}.present-tile{width:var(--tile-width,220px);height:var(--tile-height,160px);min-width:0;font-size:var(--tile-unit,15px);background:var(--surface);border:1px solid var(--border);-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:.8em;flex-direction:column;flex:none;gap:.2em;padding:.75em .95em;line-height:1.25;display:flex;overflow:hidden}.present-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.present-tile--comfort{background:hsl(var(--comfort-hue), var(--comfort-surface-saturation), var(--comfort-surface-lightness));border-color:hsl(var(--comfort-hue), var(--comfort-border-saturation), var(--comfort-border-lightness));transition:background-color .45s,border-color .45s}.present-tile--dragging{opacity:.4}.present-head{flex:none;align-items:baseline;gap:.4em;min-width:0;display:flex}.present-name{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em;min-width:0;color:var(--ink-secondary);flex:auto;font-size:1.1em;font-weight:600;overflow:hidden}.present-main{flex-direction:column;flex:auto;justify-content:center;align-items:flex-start;gap:.15em;min-height:0;display:flex;overflow:hidden}.present-temp{letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap;align-items:baseline;max-width:100%;margin:0;font-size:2.7em;font-weight:650;line-height:1.06;display:flex}.present-temp-unit{color:var(--muted);margin-left:.1em;font-size:.42em;font-weight:500}.present-trend{flex:none;align-self:center;width:.4em;height:.4em;margin-left:.16em}.present-trend--rapid-rising{color:var(--error)}.present-trend--rising{color:var(--trend-rising)}.present-trend--rapid-falling{color:var(--trend-rapid-falling)}.present-trend--falling{color:var(--trend-falling)}.present-trend--steady{color:var(--muted)}.present-humidity{color:var(--ink-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:.28em;margin:0;font-size:1.1em;display:flex}.present-icon{flex:none;width:.95em;height:.95em}.present-humidity .present-icon{color:var(--accent);opacity:.85}.present-foot{min-width:0;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;justify-content:space-between;align-items:center;gap:.5em;font-size:.8em;display:flex}.present-battery{color:var(--warning-ink);align-items:center;gap:.3em;font-weight:600;display:flex}.present-battery .present-icon{width:1.15em;height:1.15em}@keyframes present-value-bump{0%{transform:scale(1)}12%{color:var(--accent);transform:scale(1.18)}30%{transform:scale(1)}46%{color:var(--accent);transform:scale(1.1)}62%{transform:scale(1)}76%{transform:scale(1.05)}to{transform:scale(1)}}.present-temp--bump,.present-humidity--bump{transform-origin:0;animation:1.7s ease-in-out present-value-bump}@media (prefers-reduced-motion:reduce){.present-temp--bump,.present-humidity--bump{animation:none}}.app-version{right:calc(env(safe-area-inset-right,0px) + 12px);bottom:calc(env(safe-area-inset-bottom,0px) + 5px);z-index:30;color:var(--muted);opacity:.7;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:10px;position:absolute}@media (width>=1024px){.app-header{min-height:48px;padding-right:390px}.refresh-info{right:max(20px, calc((100vw - 2400px) / 2 + 20px), env(safe-area-inset-right))}}@media (width>=641px) and (width<=900px){.app-header{padding-right:310px}.refresh-status-long{display:none}.refresh-status-compact{display:inline}}@media (width>=641px){.refresh-info{top:max(6px, env(safe-area-inset-top))}.header-actions{gap:8px}.header-actions>.button,.header-actions>.menu>.menu-toggle,.header-actions>.page-switch>.page-switch-toggle{min-height:36px;padding:6px 12px;font-size:12px}.header-actions>.menu>.menu-toggle{min-width:36px}.page-switch-toggle{width:94px}}@media (width<=640px){.app{padding:max(8px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) 32px max(10px, env(safe-area-inset-left));gap:8px}.app-header{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"heading actions""status actions";align-items:start;gap:0 10px;min-height:0;padding-top:0;padding-right:0;display:grid}.app-heading{grid-area:heading;min-width:0}.app-subtitle{display:none}.refresh-info{display:contents;position:static}.header-actions{grid-area:actions;align-self:center;gap:6px;position:static}.header-actions>.button,.header-actions>.menu>.menu-toggle,.header-actions>.page-switch>.page-switch-toggle{min-height:36px;padding:6px 9px;font-size:12px}.header-actions>.menu>.menu-toggle{min-width:36px}.page-switch-toggle{gap:6px;width:86px}.page-switch-panel{max-width:calc(100vw - 20px);max-height:calc(100svh - 110px)}.refresh-time{white-space:nowrap;text-overflow:ellipsis;grid-area:status;min-width:0;line-height:1.2;overflow:hidden}.refresh-status-long{display:none}.refresh-status-compact{display:inline}.app.app--present{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 24px);gap:6px}.app-version{right:calc(env(safe-area-inset-right,0px) + 16px);bottom:calc(env(safe-area-inset-bottom,0px) + 8px)}.menu{margin-left:0}.menu-panel{overscroll-behavior:contain;width:min(280px,100vw - 20px);min-width:0;max-height:calc(100svh - 120px);overflow-y:auto}.filter-bar{padding:8px 12px 12px}.filter-bar--collapsed{padding-bottom:8px}.filter-bar-toggle{width:40px;height:40px}.filter-bar-content{gap:14px 18px}.range-custom{flex-direction:column;gap:8px;width:100%}.range-custom label{align-items:center;gap:8px;display:flex}.range-custom input{flex:1;min-width:0}.chart-card--overlay{padding:12px 6px;padding-top:max(12px, env(safe-area-inset-top));padding-right:max(6px, env(safe-area-inset-right));padding-bottom:max(12px, env(safe-area-inset-bottom));padding-left:max(6px, env(safe-area-inset-left))}.chart-card:fullscreen{padding:12px 6px;padding-top:max(12px, env(safe-area-inset-top));padding-right:max(6px, env(safe-area-inset-right));padding-bottom:max(12px, env(safe-area-inset-bottom));padding-left:max(6px, env(safe-area-inset-left))}}@media (width<=420px){.header-actions{gap:4px}.header-actions>.button,.header-actions>.menu>.menu-toggle,.header-actions>.page-switch>.page-switch-toggle{min-height:34px;padding:5px 7px;font-size:11px}.header-actions>.menu>.menu-toggle{min-width:34px}.page-switch-toggle{width:76px}}:root{--meteo-ring-track:#0b0b0b17;--meteo-humidity:#2a78d6;--meteo-pressure:#4c3ca9;--meteo-radiation:#eba007;--meteo-uv-low:#1baf7a;--meteo-uv-moderate:#b58900;--meteo-uv-high:#eb6834;--meteo-uv-very-high:#d03b3b;--meteo-uv-extreme:#8b2653;--meteo-sun:#eba007;--meteo-moon-lit:#d9d7cc;--meteo-moon-shadow:#0b0b0b29}:root[data-theme=dark]{--meteo-ring-track:#ffffff1f;--meteo-humidity:#3987e5;--meteo-pressure:#8d82e6;--meteo-radiation:#c48309;--meteo-uv-low:#199e70;--meteo-uv-moderate:#c48309;--meteo-uv-high:#d95926;--meteo-uv-very-high:#e66767;--meteo-uv-extreme:#c75f8f;--meteo-sun:#f0a33a;--meteo-moon-lit:#e7e5d8;--meteo-moon-shadow:#ffffff1a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--meteo-ring-track:#ffffff1f;--meteo-humidity:#3987e5;--meteo-pressure:#8d82e6;--meteo-radiation:#c48309;--meteo-uv-low:#199e70;--meteo-uv-moderate:#c48309;--meteo-uv-high:#d95926;--meteo-uv-very-high:#e66767;--meteo-uv-extreme:#c75f8f;--meteo-sun:#f0a33a;--meteo-moon-lit:#e7e5d8;--meteo-moon-shadow:#ffffff1a}}.meteo-page{flex-direction:column;gap:12px;display:flex}.meteo-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:stretch;gap:12px;display:grid}.meteo-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:12px;min-width:0;padding:16px 18px;display:flex}@media (width>=1200px){.meteo-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=900px){.meteo-card--wide{grid-column:span 2}}.meteo-card>:last-child{flex:auto;min-height:0}.meteo-card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.meteo-card-head h2{color:var(--muted);letter-spacing:.07em;text-transform:uppercase;margin:0;font-size:12px;font-weight:600}.meteo-card-source{color:var(--muted);margin:0;font-size:11px}.meteo-subheading{color:var(--ink-secondary);margin:4px 0 0;font-size:13px;font-weight:600}.meteo-note{color:var(--muted);font-size:11.5px;line-height:1.35;display:block}.meteo-note--error{color:var(--error)}.meteo-empty{color:var(--muted);margin:0;padding:18px 0;font-size:13px}.meteo-credits{color:var(--muted);margin:4px 0 0;font-size:11.5px}.meteo-credits a{color:inherit}.meteo-value-grid{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px 16px;margin:0;display:grid}.meteo-value-grid dt{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:10.5px;font-weight:600}.meteo-value-grid dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:15px}.meteo-summary{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main ring""extremes extremes";align-items:center;gap:14px 18px;display:grid}.meteo-summary-main{grid-area:main;min-width:0}.meteo-summary-temp{letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap;align-items:baseline;margin:0;font-size:clamp(44px,9vw,68px);font-weight:650;line-height:1.02;display:flex}.meteo-summary-unit{color:var(--muted);margin-left:.08em;font-size:.38em;font-weight:500}.meteo-summary-feels{color:var(--ink-secondary);font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:14px}.meteo-summary-extremes{border-top:1px solid var(--hairline);grid-area:extremes;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px 16px;margin:0;padding-top:12px;display:grid}.meteo-summary-extremes dt{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:10.5px;font-weight:600}.meteo-summary-extremes dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:15px}.meteo-ring-track{stroke:var(--meteo-ring-track)}.meteo-ring-value{transition:d .5s,stroke .4s}.meteo-ring-value--humidity{stroke:var(--meteo-humidity)}.meteo-ring-value--pressure{stroke:var(--meteo-pressure)}.meteo-ring-value--radiation{stroke:var(--meteo-radiation)}.meteo-ring-value--uv-low{stroke:var(--meteo-uv-low)}.meteo-ring-value--uv-moderate{stroke:var(--meteo-uv-moderate)}.meteo-ring-value--uv-high{stroke:var(--meteo-uv-high)}.meteo-ring-value--uv-very-high{stroke:var(--meteo-uv-very-high)}.meteo-ring-value--uv-extreme{stroke:var(--meteo-uv-extreme)}.meteo-humidity-ring{flex:none;grid-area:ring;width:104px;height:104px;position:relative}.meteo-humidity-ring svg{width:100%;height:100%}.meteo-humidity-ring-text{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex;position:absolute;inset:0}.meteo-humidity-ring-value{font-variant-numeric:tabular-nums;font-size:21px;font-weight:650;line-height:1}.meteo-humidity-ring-value small{color:var(--muted);font-size:.5em}.meteo-humidity-ring-label{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:10px}.meteo-gauge{flex-wrap:wrap;align-items:center;gap:14px 18px;display:flex}.meteo-gauge-dial{flex:none;width:150px;height:145px}.meteo-gauge>.meteo-value-grid,.meteo-gauge-side{flex-direction:column;flex:150px;gap:10px;min-width:0;display:flex}.meteo-gauge-marker{fill:var(--surface);stroke:var(--ink-secondary);stroke-width:2px;transition:cx .5s,cy .5s}.meteo-gauge-value{fill:var(--ink);font-variant-numeric:tabular-nums;font-size:21px;font-weight:650}.meteo-gauge-unit{fill:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:9px}.meteo-gauge-scale{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:8px}.meteo-badge-row{flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin:0;display:flex}.meteo-badge{border:1px solid;border-radius:999px;align-items:center;padding:1px 9px;font-size:12px;font-weight:600;display:inline-flex}.meteo-badge--uv-low{color:var(--meteo-uv-low)}.meteo-badge--uv-moderate{color:var(--meteo-uv-moderate)}.meteo-badge--uv-high{color:var(--meteo-uv-high)}.meteo-badge--uv-very-high{color:var(--meteo-uv-very-high)}.meteo-badge--uv-extreme{color:var(--meteo-uv-extreme)}.meteo-compass{flex-wrap:wrap;align-items:center;gap:14px 18px;display:flex}.meteo-compass-dial{flex:none;width:158px;height:158px}.meteo-compass-values{flex-direction:column;flex:150px;gap:10px;min-width:0;display:flex}.meteo-compass-tick{stroke:var(--meteo-ring-track);stroke-width:1.5px}.meteo-compass-tick--major{stroke:var(--muted);stroke-width:2px}.meteo-compass-cardinal{fill:var(--muted);font-size:10px;font-weight:600}.meteo-compass-needle{transform-box:view-box;transform-origin:70px 70px;transition:transform .6s}.meteo-compass-needle-head{fill:var(--accent)}.meteo-compass-needle-tail{stroke:var(--muted);stroke-width:2px;stroke-linecap:round}.meteo-compass-hub{fill:var(--ink-secondary)}.meteo-compass-direction{flex-direction:column;gap:1px;margin:0;display:flex}.meteo-compass-direction strong{font-size:26px;font-weight:650;line-height:1.05}.meteo-rain{flex-direction:column;gap:4px;display:flex}.meteo-rain-rate{font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;margin:0;display:flex}.meteo-rain-rate-value{letter-spacing:-.02em;font-size:40px;font-weight:650;line-height:1.05}.meteo-rain-rate-unit{color:var(--muted);font-size:15px}.meteo-value-grid--rain{border-top:1px solid var(--hairline);grid-template-columns:repeat(auto-fit,minmax(84px,1fr));margin-top:10px;padding-top:10px}.meteo-index-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.meteo-index{border-bottom:1px solid var(--hairline);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:0 12px;padding-bottom:8px;display:grid}.meteo-index:last-child{border-bottom:none;padding-bottom:0}.meteo-index-label{font-size:13px;font-weight:600}.meteo-index-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:16px}.meteo-index-note{color:var(--muted);grid-column:1/-1;font-size:11.5px}.meteo-sky{flex-direction:column;gap:12px;display:flex}.meteo-sky-state{align-items:center;gap:12px;display:flex}.meteo-sky-label{margin:0;font-size:16px;font-weight:600}.meteo-weather-icon{width:1em;height:1.08em;color:var(--ink-secondary);flex:none}.meteo-weather-icon--empty{color:var(--muted)}.meteo-bar{background:var(--meteo-ring-track);border-radius:999px;flex:auto;min-width:40px;height:8px;display:block;overflow:hidden}.meteo-bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .4s;display:block}.meteo-cloud-total-value{font-variant-numeric:tabular-nums;margin:6px 0 0;font-size:13px}.meteo-cloud-layers{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.meteo-cloud-layers li{grid-template-columns:62px minmax(0,1fr) 46px;align-items:center;gap:10px;display:grid}.meteo-cloud-layer-label{color:var(--muted);font-size:11.5px}.meteo-cloud-layer-value{text-align:right;font-variant-numeric:tabular-nums;font-size:12.5px}.meteo-astronomy{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px 24px;display:grid}.meteo-sun-arc{flex-direction:column;gap:10px;min-width:0;display:flex}.meteo-sun-arc svg{width:100%;max-width:320px;height:auto}.meteo-sun-horizon{stroke:var(--hairline);stroke-width:1.5px}.meteo-sun-path{stroke:var(--meteo-ring-track);stroke-width:2px;stroke-dasharray:4 5}.meteo-sun-disc{fill:var(--meteo-sun);transition:cx .6s,cy .6s}.meteo-moon{align-items:flex-start;gap:16px;min-width:0;display:flex}.meteo-moon-disc{flex:none;width:78px;height:78px}.meteo-moon-disc svg{width:100%;height:100%}.meteo-moon-shadow{fill:var(--meteo-moon-shadow);stroke:var(--hairline)}.meteo-moon-lit{fill:var(--meteo-moon-lit);stroke:var(--hairline);stroke-width:.6px}.meteo-moon-values{flex-direction:column;flex:auto;gap:8px;min-width:0;display:flex}.meteo-moon-phase{margin:0;font-size:17px;font-weight:600}.meteo-history{flex-direction:column;gap:10px;display:flex}.meteo-history-controls{flex-wrap:wrap;justify-content:space-between;gap:8px 16px;display:flex}.meteo-history-plot{min-height:260px}.meteo-history-chart{width:100%;height:280px}.meteo-forecast{flex-direction:column;gap:12px;display:flex}.meteo-tabs{flex-wrap:wrap;gap:8px;display:flex}.meteo-tab:focus-visible,.meteo-forecast-panel:focus-visible,.meteo-hour-strip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.meteo-tab-flag{background:var(--warning-wash);width:15px;height:15px;color:var(--warning-ink);border-radius:50%;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.meteo-forecast-panel{flex-direction:column;gap:10px;display:flex}.meteo-forecast-credit{color:var(--muted);margin:0;font-size:11.5px}.meteo-hour-strip{overscroll-behavior-x:contain;scroll-snap-type:x proximity;gap:8px;padding-bottom:6px;display:flex;overflow-x:auto}.meteo-hour{border:1px solid var(--border);background:var(--page);scroll-snap-align:start;text-align:center;border-radius:10px;flex-direction:column;flex:none;align-items:center;gap:3px;width:64px;padding:8px 4px;display:flex}.meteo-hour p{margin:0}.meteo-hour-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.meteo-hour-temp{font-variant-numeric:tabular-nums;font-size:15px;font-weight:650}.meteo-hour-detail{font-variant-numeric:tabular-nums;font-size:11px}.meteo-hour-detail--muted{color:var(--muted)}.meteo-day-list{flex-direction:column;gap:2px;max-width:860px;margin:0;padding:0;list-style:none;display:flex}.meteo-day{border-bottom:1px solid var(--hairline);grid-template-columns:74px 26px minmax(0,1fr) 68px 96px 104px;align-items:center;gap:10px;padding:8px 0;font-size:13px;display:grid}.meteo-day:last-child{border-bottom:none}.meteo-day-name{flex-direction:column;display:flex}.meteo-day-state{color:var(--ink-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.meteo-day-temps,.meteo-day-rain,.meteo-day-wind{font-variant-numeric:tabular-nums;flex-direction:column;display:flex}.meteo-day-temps strong{font-size:15px}.meteo-status{flex-direction:column;gap:12px;display:flex}.meteo-status-warning{margin:0}.meteo-status-warning+.meteo-status-warning{margin-top:4px}@media (width<=760px){.meteo-grid{grid-template-columns:minmax(0,1fr)}.meteo-summary{grid-template-columns:minmax(0,1fr) auto}.meteo-day{grid-template-columns:66px 24px minmax(0,1fr) 58px;grid-template-areas:"name icon state temps""rain rain wind wind";row-gap:4px}.meteo-day-name{grid-area:name}.meteo-day-state{grid-area:state}.meteo-day-temps{grid-area:temps;align-items:flex-end}.meteo-day-rain{grid-area:rain}.meteo-day-wind{grid-area:wind}.meteo-day-rain,.meteo-day-wind{color:var(--ink-secondary);flex-direction:row;align-items:baseline;gap:6px;font-size:12px}.meteo-history-chart{height:240px}}@media (width<=400px){.meteo-card{padding:13px 14px}.meteo-humidity-ring{width:86px;height:86px}}@media (prefers-reduced-motion:reduce){.meteo-ring-value,.meteo-compass-needle,.meteo-gauge-marker,.meteo-sun-disc,.meteo-bar-fill{transition:none}}.alert-dialog-backdrop[data-v-31aaccc7]{z-index:200;background:#0000007a;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.alert-dialog[data-v-31aaccc7]{border:1px solid var(--border);background:var(--page);border-radius:14px;width:min(900px,100%);max-height:calc(100dvh - 40px);padding:20px;overflow:auto;box-shadow:0 20px 70px #0000004d}.alert-dialog-header[data-v-31aaccc7],.alert-section-heading[data-v-31aaccc7],.alert-rule-card[data-v-31aaccc7],.alert-actions[data-v-31aaccc7],.alert-card-actions[data-v-31aaccc7]{align-items:center;gap:10px;display:flex}.alert-dialog-header[data-v-31aaccc7],.alert-section-heading[data-v-31aaccc7],.alert-rule-card[data-v-31aaccc7]{justify-content:space-between}.alert-dialog-header h2[data-v-31aaccc7],.alert-section h3[data-v-31aaccc7],.alert-rule-form h4[data-v-31aaccc7]{margin:0}.alert-dialog-header p[data-v-31aaccc7],.alert-rule-card p[data-v-31aaccc7],.alert-status[data-v-31aaccc7]{color:var(--ink-secondary);margin:3px 0 0}.alert-close[data-v-31aaccc7]{align-self:flex-start;padding:1px 10px;font-size:22px}.alert-section[data-v-31aaccc7]{border:1px solid var(--border);background:var(--surface);border-radius:12px;margin-top:16px;padding:16px}.alert-field[data-v-31aaccc7],.alert-toggle[data-v-31aaccc7]{color:var(--ink-secondary);gap:6px;display:flex}.alert-field[data-v-31aaccc7]{flex-direction:column;margin-top:12px;font-size:12px}.alert-field input[data-v-31aaccc7],.alert-field select[data-v-31aaccc7],.alert-period-grid select[data-v-31aaccc7]{border:1px solid var(--border);background:var(--page);color:var(--ink);font:inherit;border-radius:8px;padding:7px 9px}.alert-field--wide input[data-v-31aaccc7]{width:min(420px,100%)}.alert-toggle[data-v-31aaccc7]{align-items:center;margin:12px 0}.alert-period-grid[data-v-31aaccc7],.alert-sensor-grid[data-v-31aaccc7],.alert-number-grid[data-v-31aaccc7]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.alert-period-grid fieldset[data-v-31aaccc7]{border:1px solid var(--border);border-radius:8px;gap:8px;margin:0;padding:10px;display:flex}.alert-period-grid legend[data-v-31aaccc7]{color:var(--muted);font-size:12px}.alert-actions[data-v-31aaccc7]{flex-wrap:wrap;margin-top:12px}.button--primary[data-v-31aaccc7]{border-color:var(--accent);background:var(--accent-wash)}.alert-saved[data-v-31aaccc7]{color:var(--accent);font-size:12px}.alert-error[data-v-31aaccc7]{color:var(--error)}.alert-note[data-v-31aaccc7]{color:var(--muted);font-size:12px}.alert-rule-card[data-v-31aaccc7]{border:1px solid var(--hairline);border-radius:9px;margin-top:10px;padding:12px}.alert-rule-enabled[data-v-31aaccc7]{color:var(--muted);margin-left:8px;font-size:11px}.alert-card-actions[data-v-31aaccc7]{flex:none}.alert-rule-form[data-v-31aaccc7]{border-top:1px solid var(--hairline);margin-top:14px;padding-top:14px}.alert-preview[data-v-31aaccc7]{background:var(--accent-wash);border-radius:8px;margin:14px 0 0;padding:10px}@media (width<=640px){.alert-dialog-backdrop[data-v-31aaccc7]{align-items:stretch;padding:0}.alert-dialog[data-v-31aaccc7]{border-radius:0;max-height:100dvh;padding:14px}.alert-period-grid[data-v-31aaccc7],.alert-sensor-grid[data-v-31aaccc7],.alert-number-grid[data-v-31aaccc7]{grid-template-columns:1fr}.alert-rule-card[data-v-31aaccc7]{flex-direction:column;align-items:flex-start}}.widget-dialog-backdrop[data-v-1a7f91ec]{z-index:200;background:#0000007a;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.widget-dialog[data-v-1a7f91ec]{border:1px solid var(--border);background:var(--page);border-radius:14px;flex-direction:column;width:min(520px,100%);max-height:calc(100dvh - 40px);padding:20px;display:flex;box-shadow:0 20px 70px #0000004d}.widget-dialog-header[data-v-1a7f91ec]{justify-content:space-between;align-items:center;gap:10px;display:flex}.widget-dialog-header h2[data-v-1a7f91ec]{margin:0}.widget-dialog-header p[data-v-1a7f91ec]{color:var(--ink-secondary);margin:3px 0 0;font-size:13px}.widget-close[data-v-1a7f91ec]{align-self:flex-start;padding:1px 10px;font-size:22px}.widget-list[data-v-1a7f91ec]{flex-direction:column;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.widget-list--dragging[data-v-1a7f91ec]{-webkit-user-select:none;user-select:none}.widget-row[data-v-1a7f91ec]{border:1px solid var(--hairline);background:var(--page);border-radius:9px;align-items:center;gap:10px;padding:10px 12px;display:flex}.widget-row--dragged[data-v-1a7f91ec]{border-color:var(--accent);background:var(--accent-wash)}.widget-grip[data-v-1a7f91ec]{color:var(--muted);cursor:grab;touch-action:none;flex:none;padding:4px 9px;font-size:17px;line-height:1.2}.widget-row--dragged .widget-grip[data-v-1a7f91ec]{cursor:grabbing}.widget-label[data-v-1a7f91ec]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.widget-state[data-v-1a7f91ec]{color:var(--muted);margin-left:auto;font-size:12px}.widget-row--hidden .widget-label[data-v-1a7f91ec]{color:var(--muted);text-decoration:line-through}.widget-toggle[data-v-1a7f91ec]{flex:none;width:86px}.widget-actions[data-v-1a7f91ec]{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.widget-done[data-v-1a7f91ec]{margin-left:auto}.button--primary[data-v-1a7f91ec]{border-color:var(--accent);background:var(--accent-wash)}.widget-note[data-v-1a7f91ec]{color:var(--muted);margin:0;font-size:12px}@media (width<=640px){.widget-dialog-backdrop[data-v-1a7f91ec]{align-items:stretch;padding:0}.widget-dialog[data-v-1a7f91ec]{border-radius:0;max-height:100dvh;padding:14px}.widget-state[data-v-1a7f91ec]{display:none}.widget-label[data-v-1a7f91ec]{margin-right:auto}}
