:root{--amber: #ffb45c;--amber-deep: #ff8a2b;--cyan: #5ad2ff;--violet: #a78bfa;--mint: #4ade9b;--r-lg: 26px;--r-md: 20px;--r-sm: 14px;--font: -apple-system, "PingFang SC", "HarmonyOS Sans SC", system-ui, sans-serif;--blur-card: blur(26px) saturate(150%);--blur-glass: blur(22px) saturate(140%);--blur-nav: blur(26px) saturate(160%)}html[data-theme=dark]{color-scheme:dark;--bg-image: radial-gradient(1200px 700px at 12% -10%, #17244a 0%, transparent 60%), radial-gradient(900px 600px at 92% 4%, #2a1b3f 0%, transparent 55%), radial-gradient(1000px 800px at 50% 118%, #0f2e3a 0%, transparent 62%), linear-gradient(180deg, #080b14 0%, #06080e 100%);--grid-line: rgba(255, 255, 255, .028);--blob-a: #2b6cff;--blob-b: #a855f7;--blob-c: #0ea5a5;--blob-alpha: .2;--blob-blend: screen;--ink: #eef2fb;--ink-2: rgba(238, 242, 251, .72);--ink-3: rgba(238, 242, 251, .45);--glass: rgba(255, 255, 255, .055);--glass-2: rgba(255, 255, 255, .085);--stroke: rgba(255, 255, 255, .11);--stroke-2: rgba(255, 255, 255, .18);--card-bg: linear-gradient(160deg, rgba(255, 255, 255, .085), rgba(255, 255, 255, .028));--card-sheen: rgba(255, 255, 255, .16);--shadow: 0 22px 60px -28px rgba(0, 0, 0, .9), 0 2px 8px rgba(0, 0, 0, .35);--shadow-hover: 0 32px 70px -30px rgba(0, 0, 0, .95);--shadow-nav: 0 20px 60px -24px rgba(0, 0, 0, .55);--track: rgba(255, 255, 255, .1);--hairline: rgba(255, 255, 255, .06);--ctrl: rgba(255, 255, 255, .07);--ctrl-hover: rgba(255, 255, 255, .15);--ctrl-stroke: rgba(255, 255, 255, .1);--badge-bg: rgba(255, 255, 255, .08);--badge-stroke: rgba(255, 255, 255, .1);--knob: #fff;--tabbar: rgba(16, 20, 32, .62);--tab-on: rgba(255, 255, 255, .1);--tab-on-stroke: rgba(255, 255, 255, .14);--solid-bg: #fff;--solid-ink: #0a0d14;--pill-bg: rgba(255, 255, 255, .07);--good-ink: #4ade9b;--good-bg: rgba(74, 222, 155, .13);--warn-ink: #ffcf8a;--warn-bg: rgba(255, 180, 92, .14);--off-bg: rgba(255, 255, 255, .05);--amber-ink: #ffb45c;--amber-bg: rgba(255, 180, 92, .14);--amber-stroke: rgba(255, 180, 92, .26);--mint-ink: #4ade9b;--mint-bg: rgba(74, 222, 155, .14);--mint-stroke: rgba(74, 222, 155, .26);--cool-ink: #5ad2ff;--cool-bg: rgba(90, 210, 255, .13);--cool-stroke: rgba(90, 210, 255, .3);--media-ink: #a78bfa;--media-bg: rgba(167, 139, 250, .15);--media-stroke: rgba(167, 139, 250, .28);--light-on-bg: linear-gradient(155deg, rgba(255, 180, 92, .16), rgba(255, 255, 255, .03) 58%);--light-on-stroke: rgba(255, 180, 92, .32);--light-glow: rgba(255, 170, 80, .4);--light-badge: linear-gradient(140deg, #ffd08a, #ff8a2b);--light-badge-ink: #241403;--scene-on-bg: linear-gradient(120deg, #ffd08a, #ffb45c 55%, #ff9550);--scene-on-ink: #1a1206;--scene-on-shadow: 0 12px 34px -12px rgba(255, 150, 60, .75);--sw-on: linear-gradient(120deg, #ffd08a, #ff8a2b);--fill: linear-gradient(90deg, #ffcf8a, #ff8a2b);--title-grad: linear-gradient(100deg, #ffb45c, #ff8ab8 60%, #a78bfa);--foot: rgba(238, 242, 251, .26);--avatar-bg: linear-gradient(150deg, rgba(255, 255, 255, .16), rgba(255, 255, 255, .05));--chart: #ffb45c;--chart-2: #5ad2ff;--cover-glow: rgba(167, 139, 250, .9);--cover: conic-gradient(from 210deg, #ff8ab8, #a78bfa, #5ad2ff, #ffb45c, #ff8ab8);--cover-sheen: rgba(255, 255, 255, .55);--danger-ink: #ff9e9e;--danger-bg: rgba(255, 99, 99, .14);--danger-stroke: rgba(255, 99, 99, .28);--overlay: rgba(3, 5, 10, .62);--sheet-bg: linear-gradient(165deg, rgba(22, 27, 43, .94), rgba(12, 15, 25, .96));--menu-bg: rgba(20, 25, 40, .94);--toast-bg: rgba(20, 25, 40, .92);--input-bg: rgba(255, 255, 255, .06);--input-stroke: rgba(255, 255, 255, .13);--skeleton: rgba(255, 255, 255, .07);--skeleton-sheen: rgba(255, 255, 255, .13);--focus-ring: rgba(255, 180, 92, .7);--shadow-float: 0 18px 48px -22px rgba(0, 0, 0, .8);--scroll-thumb: rgba(255, 255, 255, .16);--knob-shadow: 0 2px 8px rgba(0, 0, 0, .45);--meta-theme-color: #080b14;--fallback-bg: #121826;--glow-amber: rgba(255, 160, 70, .8);--glow-mint: rgba(74, 222, 155, .55)}html[data-theme=light]{color-scheme:light;--bg-image: radial-gradient(1200px 700px at 10% -12%, #d8e3ff 0%, transparent 62%), radial-gradient(900px 620px at 94% 2%, #ffe0ee 0%, transparent 58%), radial-gradient(1000px 820px at 50% 120%, #d6eff3 0%, transparent 64%), linear-gradient(180deg, #f6f8fd 0%, #e9edf6 100%);--grid-line: rgba(16, 24, 40, .05);--blob-a: #a9c4ff;--blob-b: #ffc9e0;--blob-c: #a7e4ee;--blob-alpha: .38;--blob-blend: normal;--ink: #101828;--ink-2: rgba(16, 24, 40, .74);--ink-3: rgba(16, 24, 40, .5);--glass: rgba(255, 255, 255, .66);--glass-2: rgba(255, 255, 255, .88);--stroke: rgba(16, 24, 40, .09);--stroke-2: rgba(16, 24, 40, .16);--card-bg: linear-gradient(160deg, rgba(255, 255, 255, .94), rgba(255, 255, 255, .66));--card-sheen: rgba(255, 255, 255, .95);--shadow: 0 24px 60px -34px rgba(23, 33, 58, .34), 0 2px 6px rgba(23, 33, 58, .06);--shadow-hover: 0 34px 74px -34px rgba(23, 33, 58, .42);--shadow-nav: 0 18px 50px -26px rgba(23, 33, 58, .4);--track: rgba(16, 24, 40, .1);--hairline: rgba(16, 24, 40, .07);--ctrl: rgba(16, 24, 40, .05);--ctrl-hover: rgba(16, 24, 40, .1);--ctrl-stroke: rgba(16, 24, 40, .08);--badge-bg: rgba(16, 24, 40, .05);--badge-stroke: rgba(16, 24, 40, .08);--knob: #fff;--tabbar: rgba(255, 255, 255, .74);--tab-on: rgba(16, 24, 40, .07);--tab-on-stroke: rgba(16, 24, 40, .09);--solid-bg: #101828;--solid-ink: #fff;--pill-bg: rgba(16, 24, 40, .06);--good-ink: #0b9d64;--good-bg: rgba(16, 185, 129, .13);--warn-ink: #b45309;--warn-bg: rgba(217, 119, 6, .13);--off-bg: rgba(16, 24, 40, .05);--amber-ink: #b8620a;--amber-bg: rgba(240, 138, 30, .13);--amber-stroke: rgba(240, 138, 30, .22);--mint-ink: #0b9d64;--mint-bg: rgba(16, 185, 129, .13);--mint-stroke: rgba(16, 185, 129, .22);--cool-ink: #0284c7;--cool-bg: rgba(14, 165, 233, .12);--cool-stroke: rgba(14, 165, 233, .22);--media-ink: #6d4ce0;--media-bg: rgba(124, 92, 240, .11);--media-stroke: rgba(124, 92, 240, .2);--light-on-bg: linear-gradient(155deg, rgba(255, 196, 120, .38), rgba(255, 255, 255, .86) 64%);--light-on-stroke: rgba(240, 138, 30, .34);--light-glow: rgba(255, 170, 80, .34);--light-badge: linear-gradient(140deg, #ffd08a, #f08a1e);--light-badge-ink: #3a2205;--scene-on-bg: linear-gradient(120deg, #ffca7c, #f7a03c 55%, #ef8a2a);--scene-on-ink: #2a1a05;--scene-on-shadow: 0 12px 30px -16px rgba(210, 125, 35, .55);--sw-on: linear-gradient(120deg, #ffc978, #ef8a2a);--fill: linear-gradient(90deg, #ffcf8a, #f08a1e);--title-grad: linear-gradient(100deg, #e8801a, #d9457d 60%, #7c5cf0);--foot: rgba(16, 24, 40, .42);--avatar-bg: linear-gradient(150deg, rgba(255, 255, 255, .95), rgba(255, 255, 255, .62));--chart: #ef8a2a;--chart-2: #0ea5e9;--cover-glow: rgba(124, 92, 240, .55);--cover: conic-gradient(from 210deg, #ffb3cd, #b9a4ff, #9fe3ff, #ffcf8f, #ffb3cd);--cover-sheen: rgba(255, 255, 255, .65);--danger-ink: #c22b2b;--danger-bg: rgba(220, 38, 38, .1);--danger-stroke: rgba(220, 38, 38, .22);--overlay: rgba(23, 33, 58, .28);--sheet-bg: linear-gradient(165deg, rgba(255, 255, 255, .96), rgba(244, 247, 253, .98));--menu-bg: rgba(255, 255, 255, .95);--toast-bg: rgba(255, 255, 255, .93);--input-bg: rgba(255, 255, 255, .7);--input-stroke: rgba(16, 24, 40, .14);--skeleton: rgba(16, 24, 40, .06);--skeleton-sheen: rgba(255, 255, 255, .6);--focus-ring: rgba(240, 138, 30, .55);--shadow-float: 0 18px 48px -24px rgba(23, 33, 58, .32);--scroll-thumb: rgba(16, 24, 40, .18);--knob-shadow: 0 2px 8px rgba(23, 33, 58, .22);--meta-theme-color: #eef2f9;--fallback-bg: #f7f9fe;--glow-amber: rgba(240, 138, 30, .5);--glow-mint: rgba(16, 185, 129, .4)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg-image);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;transition:color .5s ease,background-color .5s ease}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}::selection{background:var(--amber-bg);color:var(--ink)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.card,.login-card,.drawer,.account-pop,.toast,.tabbar{background:var(--fallback-bg)}.chip,.scene,.icon-btn,.avatar,.auto-row{background:var(--glass-2)}}.bg{position:fixed;inset:0;z-index:-1;overflow:hidden;background:var(--bg-image);transition:background .6s ease;pointer-events:none}.bg:after{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 78%);mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 78%);transition:background-image .6s ease}.blob{position:absolute;border-radius:50%;filter:blur(90px);opacity:var(--blob-alpha);mix-blend-mode:var(--blob-blend);animation:float 26s ease-in-out infinite;transition:opacity .6s ease,background .6s ease}.blob.a{width:520px;height:520px;left:-120px;top:-140px;background:var(--blob-a)}.blob.b{width:460px;height:460px;right:-100px;top:60px;background:var(--blob-b);animation-delay:-9s}.blob.c{width:600px;height:600px;left:38%;bottom:-320px;background:var(--blob-c);animation-delay:-16s}@keyframes float{0%,to{transform:translateZ(0) scale(1)}50%{transform:translate3d(30px,-24px,0) scale(1.08)}}.app{max-width:1180px;margin:0 auto;padding:26px 20px 168px;position:relative;z-index:1}.page-in{animation:page-in .45s cubic-bezier(.2,.8,.3,1) both}@keyframes page-in{0%{opacity:0}to{opacity:1}}.boot{min-height:100dvh;display:grid;place-items:center;color:var(--ink-3);font-size:13px;letter-spacing:.08em}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.hello{font-size:12px;letter-spacing:.14em;color:var(--ink-3);text-transform:uppercase;margin-bottom:8px;font-variant-numeric:tabular-nums}.title{font-size:clamp(26px,3.4vw,36px);font-weight:650;letter-spacing:-.02em;line-height:1.12;margin:0;color:var(--ink)}.title em{font-style:normal;background:var(--title-grad);-webkit-background-clip:text;background-clip:text;color:transparent}.meta{margin-top:11px;font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:9px;flex-wrap:wrap}.meta b{color:var(--ink-2);font-weight:600;font-variant-numeric:tabular-nums}.meta-sep{opacity:.3}.clock{font-variant-numeric:tabular-nums;color:var(--ink-2)}.dot{width:6px;height:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--glow-mint);flex:none}.dot.warn{background:var(--warn-ink);box-shadow:0 0 10px var(--warn-bg);animation:pulse 1.6s ease-in-out infinite}.dot.bad{background:var(--danger-ink);box-shadow:0 0 10px var(--danger-bg)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.top-actions{display:flex;align-items:center;gap:10px;flex:none}.icon-btn,.avatar{width:46px;height:46px;flex:none;border-radius:16px;display:grid;place-items:center;color:var(--ink);font-family:inherit;font-size:15px;font-weight:600;background:var(--avatar-bg);border:1px solid var(--stroke-2);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:var(--shadow);transition:transform .25s,border-color .25s,background .45s,color .45s}.icon-btn:hover,.avatar:hover{transform:translateY(-2px);border-color:var(--stroke-2);filter:brightness(1.08)}.icon-btn:active,.avatar:active{transform:scale(.96)}.icon-btn svg{width:19px;height:19px}html[data-theme=dark] .when-light,html[data-theme=light] .when-dark{display:none}.avatar{background:var(--scene-on-bg);color:var(--scene-on-ink);border-color:transparent;box-shadow:var(--scene-on-shadow)}.account-wrap{position:relative}.account-pop{position:absolute;right:0;top:calc(100% + 8px);min-width:216px;padding:8px;border-radius:18px;background:var(--menu-bg);border:1px solid var(--stroke-2);box-shadow:var(--shadow-float);backdrop-filter:var(--blur-card);-webkit-backdrop-filter:var(--blur-card);z-index:60;animation:pop-in .18s ease both}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}.account-head{padding:10px 12px 12px;border-bottom:1px solid var(--hairline);margin-bottom:6px}.account-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-sub{font-size:11.5px;color:var(--ink-3);margin-top:3px}.menu-item{width:100%;min-height:44px;display:flex;align-items:center;gap:10px;padding:0 12px;border:0;border-radius:11px;background:transparent;color:var(--ink-2);font-size:13.5px;text-align:left;transition:background .2s,color .2s}.menu-item svg{width:17px;height:17px;opacity:.7}.menu-item:hover{background:var(--ctrl);color:var(--ink)}.menu-item.danger{color:var(--danger-ink)}.menu-item.danger:hover{background:var(--danger-bg)}.conn{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--stroke);background:var(--pill-bg);color:var(--ink-3);font-size:11.5px;line-height:1.4;white-space:nowrap}.conn .dot{width:5px;height:5px;background:currentColor;box-shadow:none}.conn[data-status=connected]{color:var(--good-ink);background:var(--good-bg);border-color:var(--mint-stroke)}.conn[data-status=connecting],.conn[data-status=reconnecting]{color:var(--warn-ink);background:var(--warn-bg);border-color:var(--amber-stroke)}.conn[data-status=disconnected],.conn[data-status=auth_error]{color:var(--danger-ink);background:var(--danger-bg);border-color:var(--danger-stroke)}.strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}.chip{position:relative;overflow:hidden;padding:15px 16px;border-radius:var(--r-md);background:var(--glass);border:1px solid var(--stroke);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);transition:background .45s,border-color .45s,transform .3s,box-shadow .45s}.chip:hover{background:var(--glass-2);transform:translateY(-2px);border-color:var(--stroke-2)}.chip .k{font-size:11.5px;color:var(--ink-3);letter-spacing:.06em;display:flex;align-items:center;gap:6px}.chip .k svg{width:14px;height:14px}.chip .v{font-size:22px;font-weight:600;margin-top:7px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1.15}.chip .v small{font-size:12px;font-weight:500;color:var(--ink-3);margin-left:3px}.chip .ic{position:absolute;right:12px;top:12px;width:26px;height:26px;opacity:.5}.chip .ic svg{width:26px;height:26px}.chip.t .ic{color:var(--amber)}.chip.h .ic{color:var(--cyan)}.chip.p .ic{color:var(--violet)}.chip.g .ic{color:var(--mint)}.chip .sub-line{font-size:11px;color:var(--ink-3);margin-top:5px;font-variant-numeric:tabular-nums}.scenes{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 6px;margin-bottom:20px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scenes::-webkit-scrollbar{display:none}.scenes-label{flex:none;display:flex;align-items:center;color:var(--ink-3);font-size:11px;letter-spacing:.12em;padding-right:2px}.scene{flex:none;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 17px 0 14px;border-radius:999px;color:var(--ink-2);font-size:13.5px;background:var(--glass);border:1px solid var(--stroke);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:background .45s,color .25s,border-color .25s,transform .28s,box-shadow .45s;white-space:nowrap}.scene svg{width:17px;height:17px;flex:none}.scene:hover{color:var(--ink);border-color:var(--stroke-2);transform:translateY(-1px)}.scene.on{color:var(--scene-on-ink);font-weight:600;border-color:transparent;background:var(--scene-on-bg);box-shadow:var(--scene-on-shadow)}.scene:disabled{opacity:.5;cursor:wait}.scene-count{font-size:10.5px;color:var(--ink-3);background:var(--pill-bg);border-radius:99px;padding:2px 6px;margin-left:1px;font-variant-numeric:tabular-nums}.scene.on .scene-count{color:var(--scene-on-ink);background:var(--card-sheen)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:16px;align-items:stretch;grid-auto-flow:dense}.card{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:20px;background:var(--card-bg);border:1px solid var(--stroke);backdrop-filter:var(--blur-card);-webkit-backdrop-filter:var(--blur-card);box-shadow:var(--shadow);transition:transform .35s cubic-bezier(.2,.8,.3,1),border-color .35s,background .45s,box-shadow .35s,color .45s;animation:rise .7s cubic-bezier(.2,.8,.3,1) both}.card:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(180deg,var(--card-sheen),transparent 42%);-webkit-mask:linear-gradient(#000 0 1px,transparent 1px);mask:linear-gradient(#000 0 1px,transparent 1px);opacity:.9;transition:background .45s}.card:hover{transform:translateY(-4px);border-color:var(--stroke-2);box-shadow:var(--shadow-hover)}.card.is-clickable{cursor:pointer}.card:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.card:nth-child(1){animation-delay:.04s}.card:nth-child(2){animation-delay:.09s}.card:nth-child(3){animation-delay:.14s}.card:nth-child(4){animation-delay:.19s}.card:nth-child(5){animation-delay:.24s}.card:nth-child(6){animation-delay:.29s}.card:nth-child(7){animation-delay:.34s}.card:nth-child(8){animation-delay:.39s}.card.span-2{grid-column:span 1}.card .head{display:flex;align-items:center;gap:11px;margin-bottom:16px;position:relative;z-index:1}.badge{width:38px;height:38px;flex:none;border-radius:13px;display:grid;place-items:center;color:var(--ink-2);background:var(--badge-bg);border:1px solid var(--badge-stroke);transition:background .45s,color .45s,border-color .45s,box-shadow .45s}.badge svg{width:19px;height:19px}.badge.amber{color:var(--amber-ink);background:var(--amber-bg);border-color:var(--amber-stroke)}.badge.mint{color:var(--mint-ink);background:var(--mint-bg);border-color:var(--mint-stroke)}.badge.cool{color:var(--cool-ink);background:var(--cool-bg);border-color:var(--cool-stroke)}.badge.media{color:var(--media-ink);background:var(--media-bg);border-color:var(--media-stroke)}.badge.danger{color:var(--danger-ink);background:var(--danger-bg);border-color:var(--danger-stroke)}.name{font-size:14.5px;font-weight:560;letter-spacing:-.01em;line-height:1.25;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room{font-size:11.5px;color:var(--ink-3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grow{flex:1;min-width:0}.card-actions{display:flex;align-items:center;gap:8px;flex:none}.bigval{font-size:34px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1;color:var(--ink);display:flex;align-items:baseline;gap:4px}.bigval small{font-size:14px;font-weight:500;color:var(--ink-3)}.sub{font-size:12.5px;color:var(--ink-3);margin-top:9px;line-height:1.5}.card-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--ink-3)}.card-foot b{color:var(--ink-2);font-weight:560;font-variant-numeric:tabular-nums}.expand-btn{border:0;background:transparent;color:var(--amber-ink);font-family:inherit;font-size:12px;font-weight:560;min-height:44px;padding:0 2px;display:inline-flex;align-items:center;justify-content:flex-end;white-space:nowrap;transition:color .2s}.expand-btn:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}.expand-btn:active{opacity:.7}.card-body{position:relative;z-index:1}.card-link-hint{display:inline-flex;align-items:center;gap:4px;opacity:0;transition:opacity .25s;font-size:11px;color:var(--ink-3)}.card:hover .card-link-hint{opacity:1}.toggle{background:none;border:0;padding:0;min-width:51px;min-height:44px;display:inline-flex;align-items:center;justify-content:flex-end;flex:none;color:var(--ink)}.toggle .track{width:50px;height:29px;border-radius:999px;position:relative;display:block;background:var(--track);border:1px solid var(--stroke);transition:background .32s,border-color .32s,box-shadow .32s}.toggle .thumb{position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:var(--knob);transition:left .32s cubic-bezier(.3,.9,.3,1),background .45s;box-shadow:var(--knob-shadow)}.toggle[aria-checked=true] .track{background:var(--sw-on);border-color:transparent;box-shadow:0 0 22px -6px var(--glow-amber)}.toggle[aria-checked=true] .thumb{left:26px}.toggle:disabled{opacity:.45;cursor:not-allowed}.toggle:active .track{transform:scale(.96)}.toggle .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.slider{position:relative;display:flex;align-items:center;height:44px;margin:3px 0}.slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:44px;margin:0;background:transparent;cursor:pointer}.slider input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:99px;background:linear-gradient(90deg,var(--slider-a, var(--amber)) 0%,var(--slider-b, var(--amber-deep)) var(--pct, 50%),var(--track) var(--pct, 50%),var(--track) 100%)}.slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;margin-top:-6px;border-radius:50%;background:var(--knob);border:1px solid var(--stroke-2);box-shadow:var(--knob-shadow);transition:transform .15s}.slider input[type=range]:active::-webkit-slider-thumb{transform:scale(1.15)}.slider input[type=range]::-moz-range-track{height:6px;border-radius:99px;background:var(--track)}.slider input[type=range]::-moz-range-progress{height:6px;border-radius:99px;background:var(--slider-b, var(--amber-deep))}.slider input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--knob);border:1px solid var(--stroke-2);box-shadow:var(--knob-shadow)}.slider-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11.5px;color:var(--ink-3);margin-top:-2px}.slider-row b{color:var(--ink-2);font-weight:560;font-variant-numeric:tabular-nums}.control-block{margin-top:10px}.control-block:first-of-type{margin-top:14px}.control-label{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--ink-3);margin-bottom:1px}.control-label b{color:var(--ink-2);font-weight:560;font-variant-numeric:tabular-nums}.card.light.on{background:var(--light-on-bg);border-color:var(--light-on-stroke)}.card.light.on .badge{background:var(--light-badge);color:var(--light-badge-ink);border-color:transparent;box-shadow:0 0 34px -8px var(--glow-amber)}.card.light:after{content:"";position:absolute;width:280px;height:280px;right:-90px;top:-110px;border-radius:50%;background:radial-gradient(circle,var(--light-glow),transparent 68%);opacity:0;transition:opacity .6s;pointer-events:none}.card.light.on:after{opacity:1}.light-status{display:flex;align-items:center;gap:8px;margin-top:8px}.dial{display:flex;align-items:center;justify-content:space-between;margin-top:4px;gap:8px}.dial .bigval{font-size:32px}.step{width:44px;height:44px;flex:none;border-radius:15px;display:grid;place-items:center;background:var(--ctrl);border:1px solid var(--ctrl-stroke);color:var(--ink);font-size:20px;font-family:inherit;transition:background .25s,transform .2s,color .45s,border-color .45s}.step:hover{background:var(--ctrl-hover);transform:scale(1.06)}.step:active{transform:scale(.95)}.step:disabled{opacity:.4;cursor:not-allowed}.modes{display:flex;gap:7px;margin-top:14px;flex-wrap:wrap}.mode{flex:1;min-width:52px;min-height:44px;padding:0 4px;border-radius:11px;font-size:11.5px;color:var(--ink-3);background:var(--pill-bg);border:1px solid transparent;transition:background .45s,color .25s,border-color .25s;white-space:nowrap}.mode:hover{color:var(--ink-2);background:var(--ctrl)}.mode.on{color:var(--cool-ink);background:var(--cool-bg);border-color:var(--cool-stroke)}.climate-meta{display:flex;justify-content:space-between;gap:8px;margin-top:10px;font-size:11.5px;color:var(--ink-3)}.climate-meta b{color:var(--ink-2);font-weight:560;font-variant-numeric:tabular-nums}.now{display:flex;align-items:center;gap:14px}.cover{width:60px;height:60px;flex:none;border-radius:16px;position:relative;overflow:hidden;background:var(--cover);box-shadow:0 10px 30px -14px var(--cover-glow)}.cover:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 25%,var(--cover-sheen),transparent 60%)}.cover.playing{animation:cover-spin 18s linear infinite}@keyframes cover-spin{to{filter:hue-rotate(20deg)}}.track-name{font-size:15px;font-weight:560;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.artist{font-size:12.5px;color:var(--ink-3);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar{height:4px;border-radius:99px;background:var(--track);margin:18px 0 12px;position:relative;overflow:hidden}.bar i{position:absolute;inset:0 auto 0 0;border-radius:99px;background:linear-gradient(90deg,var(--violet),var(--cyan));transition:width .5s linear}.transport{display:flex;align-items:center;gap:20px;justify-content:center}.tbtn{background:none;border:0;padding:0;width:44px;height:44px;color:var(--ink-2);display:grid;place-items:center;border-radius:50%;transition:color .25s,transform .25s,background .25s}.tbtn:hover{color:var(--ink);background:var(--ctrl);transform:scale(1.08)}.tbtn:active{transform:scale(.94)}.tbtn.main{width:46px;height:46px;background:var(--solid-bg);color:var(--solid-ink);box-shadow:var(--shadow-float)}.tbtn.main:hover{background:var(--solid-bg);transform:scale(1.06)}.tbtn svg{width:18px;height:18px}.tbtn.main svg{width:20px;height:20px}.volume-row{display:flex;align-items:center;gap:8px;margin-top:8px;color:var(--ink-3)}.volume-row svg{width:16px;height:16px;flex:none}.volume-row .slider{flex:1;height:32px}.volume-row .slider input[type=range]{height:32px}.volume-row .slider input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg,var(--chart-2) 0%,var(--chart-2) var(--pct, 50%),var(--track) var(--pct, 50%),var(--track) 100%)}.volume-val{width:34px;text-align:right;font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.power-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}.power-chart{margin-top:10px;position:relative}.power-chart svg{display:block;width:100%;height:64px;overflow:visible}.chart-line{fill:none;stroke:var(--chart);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.chart-fill{opacity:.55}.chart-empty{height:64px;border-radius:12px;background:var(--pill-bg);display:grid;place-items:center;color:var(--ink-3);font-size:11.5px;margin-top:10px}.rows{display:flex;flex-direction:column;gap:0;margin-top:0}.row{display:flex;align-items:center;gap:11px;min-height:48px;padding:7px 0;border-top:1px solid var(--hairline);transition:border-color .45s;width:100%;background:none;border-left:0;border-right:0;border-bottom:0;color:var(--ink);text-align:left}.row:first-child{border-top:0}button.row{cursor:pointer;border-radius:10px;padding-left:7px;padding-right:7px;margin-left:-7px;margin-right:-7px;transition:background .2s}button.row:hover{background:var(--ctrl)}.row .row-icon{width:18px;height:18px;color:var(--ink-3);flex:none;display:grid;place-items:center}.row .row-icon svg{width:17px;height:17px}.row-main{flex:1;min-width:0;display:flex;align-items:center;gap:11px;background:none;border:0;padding:0;min-height:44px;color:inherit;text-align:left;font-family:inherit}.row-main:hover .t{color:var(--ink)}.row .t{font-size:13.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.row .s{font-size:11.5px;color:var(--ink-3);white-space:nowrap;max-width:46%;overflow:hidden;text-overflow:ellipsis}.row .row-end{display:flex;align-items:center;gap:9px;flex:none}.pill{font-size:11px;padding:4px 10px;border-radius:99px;background:var(--pill-bg);color:var(--ink-3);white-space:nowrap;border:0;font-family:inherit}.pill.warn{color:var(--warn-ink);background:var(--warn-bg)}.pill.off{color:var(--ink-3);background:var(--off-bg)}.pill.good{color:var(--good-ink);background:var(--good-bg)}.pill.danger{color:var(--danger-ink);background:var(--danger-bg)}.row-action{min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;border:0;background:none;padding:0;color:var(--ink-2)}.row-action .pill{transition:background .2s,color .2s}.row-action:hover .pill{color:var(--ink);background:var(--ctrl-hover)}.battery{width:46px;height:8px;border-radius:99px;background:var(--track);position:relative;overflow:hidden;flex:none}.battery i{position:absolute;inset:0 auto 0 0;background:var(--mint);border-radius:99px}.battery.low i{background:var(--warn-ink)}.sensor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:2px}.sensor-item{min-height:44px;display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:12px;background:var(--pill-bg);border:1px solid transparent;min-width:0;width:100%;color:inherit;font-family:inherit;text-align:left;cursor:pointer;transition:background .2s,border-color .2s}.sensor-item:hover{background:var(--ctrl);border-color:var(--stroke)}.sensor-item svg{width:15px;height:15px;color:var(--ink-3);flex:none}.sensor-item .sn{flex:1;min-width:0;font-size:12px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensor-item .sv{font-size:12.5px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.sensor-item .sv small{font-size:10px;font-weight:500;color:var(--ink-3);margin-left:1px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:22px}.page-title{font-size:clamp(24px,3vw,32px);font-weight:650;letter-spacing:-.02em;margin:6px 0 0;line-height:1.15}.page-sub{margin-top:8px;font-size:13px;color:var(--ink-3);line-height:1.6}.section-title{font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--ink-2);margin:0 0 12px}.foot{text-align:center;font-size:11.5px;color:var(--foot);margin-top:34px;transition:color .5s}.banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:14px;border:1px solid var(--amber-stroke);background:var(--warn-bg);color:var(--warn-ink);font-size:12.5px;margin-bottom:16px}.banner.danger{border-color:var(--danger-stroke);background:var(--danger-bg);color:var(--danger-ink)}.banner .banner-spacer{flex:1}.banner button{min-height:40px;padding:0 10px;border-radius:9px;border:1px solid var(--stroke);background:var(--glass);color:inherit;font-size:12px}.skeleton{position:relative;overflow:hidden;background:var(--skeleton);border-radius:var(--r-sm)}.skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,var(--skeleton-sheen),transparent);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translate(100%)}}.skeleton-card{height:186px;border-radius:var(--r-lg);border:1px solid var(--stroke)}.empty{padding:42px 20px;text-align:center;color:var(--ink-3)}.empty-icon{width:48px;height:48px;margin:0 auto 12px;border-radius:15px;display:grid;place-items:center;background:var(--pill-bg);color:var(--ink-3)}.empty-icon svg{width:22px;height:22px}.empty-title{font-size:14px;color:var(--ink-2);font-weight:560;margin-bottom:5px}.empty-sub{font-size:12.5px;line-height:1.6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.auto-list{display:flex;flex-direction:column;gap:10px}.auto-row{display:flex;align-items:center;gap:13px;padding:14px 16px;border-radius:var(--r-md);background:var(--glass);border:1px solid var(--stroke);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);transition:background .3s,border-color .3s,transform .3s;animation:page-in .5s cubic-bezier(.2,.8,.3,1) both}.auto-row:hover{background:var(--glass-2);border-color:var(--stroke-2);transform:translateY(-1px)}.auto-row .badge{width:40px;height:40px}.auto-row .badge.on{color:var(--mint-ink);background:var(--mint-bg);border-color:var(--mint-stroke)}.auto-info{flex:1;min-width:0}.auto-name{font-size:14px;font-weight:560;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auto-meta{margin-top:4px;font-size:11.5px;color:var(--ink-3);display:flex;gap:8px;flex-wrap:wrap;align-items:center}.auto-end{display:flex;align-items:center;gap:12px;flex:none}.auto-state{font-size:11px;color:var(--ink-3);min-width:34px;text-align:right}.auto-state.on{color:var(--good-ink)}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.settings-card{padding:22px}.settings-card.wide{grid-column:span 2}.settings-card .card-title{font-size:15px;font-weight:600;margin:0 0 4px;display:flex;align-items:center;gap:9px}.settings-card .card-title svg{width:17px;height:17px;color:var(--ink-3)}.settings-card .card-desc{font-size:12px;color:var(--ink-3);margin:0 0 8px;line-height:1.6}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--hairline);flex-wrap:wrap}.setting-row:first-of-type{border-top:0}.setting-label{font-size:13.5px;color:var(--ink)}.setting-hint{font-size:11.5px;color:var(--ink-3);margin-top:3px;line-height:1.5}.setting-control{flex:none}.segmented{display:inline-flex;padding:4px;gap:3px;border-radius:14px;background:var(--pill-bg);border:1px solid var(--stroke)}.segmented button{min-height:44px;padding:0 16px;border:0;border-radius:11px;background:transparent;color:var(--ink-3);font-size:12.5px;display:inline-flex;align-items:center;gap:6px;transition:background .25s,color .25s,box-shadow .25s;white-space:nowrap}.segmented button svg{width:15px;height:15px}.segmented button:hover{color:var(--ink-2)}.segmented button.on{color:var(--ink);background:var(--glass-2);box-shadow:0 2px 8px var(--hairline),inset 0 0 0 1px var(--stroke)}.segmented.wide{display:flex;width:100%}.segmented.wide button{flex:1;justify-content:center}.select,.input{height:44px;border-radius:12px;border:1px solid var(--input-stroke);background:var(--input-bg);color:var(--ink);padding:0 12px;font-size:13px;transition:border-color .25s,background .25s}.select{padding-right:30px;min-width:128px;cursor:pointer}.input{width:100%}.input::placeholder{color:var(--ink-3)}.select:focus,.input:focus{border-color:var(--amber);outline:none}.input-wrap{display:flex;gap:8px;align-items:center;width:100%}.btn{min-height:44px;padding:0 18px;border-radius:13px;border:1px solid var(--ctrl-stroke);background:var(--ctrl);color:var(--ink);font-size:13px;font-weight:560;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .2s,border-color .2s,transform .15s,filter .2s;white-space:nowrap}.btn svg{width:16px;height:16px}.btn:hover{background:var(--ctrl-hover)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--scene-on-bg);color:var(--scene-on-ink);border-color:transparent;box-shadow:var(--scene-on-shadow)}.btn.primary:hover{filter:brightness(1.04);background:var(--scene-on-bg)}.btn.danger{background:var(--danger-bg);color:var(--danger-ink);border-color:var(--danger-stroke)}.btn.danger:hover{background:var(--danger-bg);filter:brightness(1.06)}.btn.ghost{background:transparent}.account-box{display:flex;align-items:center;gap:13px;padding:14px;border-radius:16px;background:var(--pill-bg);border:1px solid var(--stroke);margin-bottom:6px}.account-box .avatar-lg{width:48px;height:48px;border-radius:15px;background:var(--scene-on-bg);color:var(--scene-on-ink);display:grid;place-items:center;font-size:18px;font-weight:650;flex:none;box-shadow:var(--scene-on-shadow)}.account-box .ab-name{font-size:14px;font-weight:600}.account-box .ab-sub{font-size:11.5px;color:var(--ink-3);margin-top:3px;word-break:break-all}.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.settings-footnote{font-size:11.5px;color:var(--ink-3);line-height:1.6;margin-top:10px}.kv{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-top:1px solid var(--hairline);font-size:12.5px}.kv:first-child{border-top:0}.kv span:first-child{color:var(--ink-3)}.kv span:last-child{color:var(--ink-2);text-align:right;word-break:break-all}.login{position:relative;z-index:1;min-height:100dvh;display:grid;place-items:center;padding:76px 18px 54px}.login-card{width:min(432px,100%);padding:30px;border-radius:30px;background:var(--card-bg);border:1px solid var(--stroke);backdrop-filter:var(--blur-card);-webkit-backdrop-filter:var(--blur-card);box-shadow:var(--shadow);animation:rise .7s cubic-bezier(.2,.8,.3,1) both;position:relative;overflow:hidden}.login-card:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(180deg,var(--card-sheen),transparent 34%);-webkit-mask:linear-gradient(#000 0 1px,transparent 1px);mask:linear-gradient(#000 0 1px,transparent 1px);opacity:.9}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:24px;position:relative;z-index:1}.brand-mark{width:50px;height:50px;flex:none;border-radius:16px;display:grid;place-items:center;background:var(--light-badge);color:var(--light-badge-ink);box-shadow:0 14px 34px -14px var(--glow-amber)}.brand-mark svg{width:25px;height:25px}.brand-name{font-size:15px;font-weight:650;letter-spacing:-.01em}.brand-sub{font-size:11px;color:var(--ink-3);margin-top:3px;letter-spacing:.06em}.login-title{font-size:24px;font-weight:650;letter-spacing:-.02em;margin:0;position:relative;z-index:1}.login-sub{font-size:12.5px;color:var(--ink-3);margin:8px 0 0;line-height:1.6;position:relative;z-index:1}.login-card .segmented{margin-top:22px;width:100%;position:relative;z-index:1}.login-card .segmented button{flex:1;justify-content:center}.login-form{position:relative;z-index:1}.field{margin-top:15px}.field>label{display:block;font-size:12px;color:var(--ink-3);margin-bottom:7px;letter-spacing:.02em}.field-control{position:relative;display:flex;align-items:center}.field input{width:100%;height:48px;border-radius:14px;border:1px solid var(--input-stroke);background:var(--input-bg);color:var(--ink);padding:0 14px;font-size:14px;transition:border-color .25s,background .25s,box-shadow .25s}.field input::placeholder{color:var(--ink-3)}.field input:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px var(--amber-bg)}.field input:disabled{opacity:.6}.eye-btn{position:absolute;right:2px;top:2px;width:44px;height:44px;border:0;background:transparent;color:var(--ink-3);display:grid;place-items:center;border-radius:12px}.eye-btn:hover{color:var(--ink)}.eye-btn svg{width:18px;height:18px}.login-error{margin-top:14px;padding:10px 12px;border-radius:12px;background:var(--danger-bg);border:1px solid var(--danger-stroke);color:var(--danger-ink);font-size:12.5px;line-height:1.5;position:relative;z-index:1;display:flex;gap:8px;align-items:flex-start}.login-error svg{width:15px;height:15px;flex:none;margin-top:1px}.login-form .btn-primary{width:100%;margin-top:20px;min-height:50px;border-radius:16px;border:0;background:var(--scene-on-bg);color:var(--scene-on-ink);font-size:14.5px;font-weight:650;box-shadow:var(--scene-on-shadow);display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .2s,transform .15s}.login-form .btn-primary:hover{filter:brightness(1.05)}.login-form .btn-primary:active{transform:scale(.99)}.login-form .btn-primary:disabled{opacity:.65;cursor:wait}.btn-spinner{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-hint{margin-top:12px;font-size:11.5px;color:var(--ink-3);line-height:1.6;position:relative;z-index:1}.link-btn{border:0;background:none;padding:0 2px;color:var(--amber-ink);font-size:inherit;font-family:inherit;text-decoration:underline;text-underline-offset:2px}.link-btn:hover{color:var(--ink)}.login-hint code{font-size:11px;padding:1px 5px;border-radius:5px;background:var(--pill-bg);color:var(--ink-2)}.login-actions{position:fixed;top:20px;right:20px;z-index:5;display:flex;gap:10px}.login-foot{position:fixed;left:0;right:0;bottom:18px;text-align:center;font-size:11px;color:var(--foot);letter-spacing:.04em;pointer-events:none}.toast-host{position:fixed;top:18px;left:50%;transform:translate(-50%);z-index:120;width:min(92vw,430px);display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border-radius:16px;background:var(--toast-bg);border:1px solid var(--stroke-2);box-shadow:var(--shadow-float);backdrop-filter:var(--blur-card);-webkit-backdrop-filter:var(--blur-card);color:var(--ink);font-size:13px;line-height:1.5;pointer-events:auto;animation:toast-in .3s cubic-bezier(.2,.8,.3,1) both}.toast.out{animation:toast-out .22s ease forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(-6px)}}.toast-icon{width:20px;height:20px;flex:none;margin-top:1px;color:var(--ink-3)}.toast-icon svg{width:18px;height:18px}.toast.success .toast-icon{color:var(--mint-ink)}.toast.error .toast-icon{color:var(--danger-ink)}.toast.warn .toast-icon{color:var(--warn-ink)}.toast.info .toast-icon{color:var(--cool-ink)}.toast p{margin:0;flex:1;min-width:0;word-break:break-word}.toast-close{flex:none;width:32px;height:32px;margin:-3px -4px -3px 0;border:0;border-radius:8px;background:transparent;color:var(--ink-3);display:grid;place-items:center}.toast-close:hover{background:var(--ctrl);color:var(--ink)}.toast-close svg{width:14px;height:14px}.toast.progress{position:relative;overflow:hidden}.toast.progress:after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--stroke-2);transform-origin:left;animation:toast-bar var(--toast-ttl, 4s) linear forwards}@keyframes toast-bar{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.drawer-backdrop{position:fixed;inset:0;z-index:90;background:var(--overlay);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);animation:fade-in .25s ease both;border:0;padding:0;cursor:default}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);z-index:91;display:flex;flex-direction:column;background:var(--sheet-bg);border-left:1px solid var(--stroke);box-shadow:var(--shadow);backdrop-filter:var(--blur-card);-webkit-backdrop-filter:var(--blur-card);animation:drawer-in .38s cubic-bezier(.2,.8,.3,1) both}@keyframes drawer-in{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}.drawer-head{padding:20px 20px 16px;border-bottom:1px solid var(--hairline);display:flex;align-items:flex-start;gap:12px;flex:none}.drawer-head .badge{width:42px;height:42px}.drawer-title{font-size:17px;font-weight:650;letter-spacing:-.01em;line-height:1.3;word-break:break-word}.drawer-sub{font-size:11.5px;color:var(--ink-3);margin-top:4px;word-break:break-all}.drawer-close{width:44px;height:44px;flex:none;border-radius:13px;border:1px solid var(--stroke);background:var(--ctrl);color:var(--ink-2);display:grid;place-items:center;transition:background .2s,color .2s}.drawer-close:hover{background:var(--ctrl-hover);color:var(--ink)}.drawer-close svg{width:17px;height:17px}.drawer-body{overflow-y:auto;padding:18px 20px 44px;flex:1;overscroll-behavior:contain}.drawer-state{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border-radius:16px;background:var(--pill-bg);border:1px solid var(--stroke);margin-bottom:18px}.drawer-state .ds-label{font-size:11px;color:var(--ink-3);letter-spacing:.06em}.drawer-state .ds-value{font-size:16px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums;word-break:break-word}.drawer-state .ds-time{font-size:11px;color:var(--ink-3);margin-top:4px;text-align:right;line-height:1.5}.drawer-section{margin-top:22px}.drawer-section h3{font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--ink-3);margin:0 0 10px;text-transform:uppercase}.attr-table{margin:0;border-radius:14px;background:var(--pill-bg);border:1px solid var(--hairline);padding:4px 12px}.attr-row{display:grid;grid-template-columns:minmax(84px,.8fr) minmax(0,1.4fr);gap:12px;padding:9px 0;border-top:1px solid var(--hairline);font-size:12px}.attr-row:first-child{border-top:0}.attr-row dt{color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attr-row dd{margin:0;color:var(--ink-2);word-break:break-word;font-variant-numeric:tabular-nums}.attr-row dd.pre{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;max-height:160px;overflow:auto}.service-chips{display:flex;flex-wrap:wrap;gap:7px}.service-chip{min-height:44px;padding:0 12px;border-radius:10px;border:1px solid var(--stroke);background:var(--ctrl);color:var(--ink-2);font-size:12px;display:inline-flex;align-items:center;gap:5px;transition:background .2s,color .2s,border-color .2s}.service-chip:hover{background:var(--ctrl-hover);color:var(--ink);border-color:var(--stroke-2)}.service-chip:disabled{opacity:.5;cursor:wait}.chart-box{padding:12px;border-radius:16px;background:var(--pill-bg);border:1px solid var(--hairline)}.chart-box svg{display:block;width:100%;height:128px;overflow:visible}.chart-axis{font-size:9px;fill:var(--ink-3);font-family:var(--font);font-variant-numeric:tabular-nums}.chart-grid-line{stroke:var(--hairline);stroke-width:1}.chart-legend{display:flex;justify-content:space-between;gap:8px;margin-top:8px;font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}.spark-svg{display:block;width:100%;height:100%;overflow:visible}.mini-empty{font-size:11.5px;color:var(--ink-3);padding:12px;border-radius:12px;background:var(--pill-bg);text-align:center}.tabbar{position:fixed;left:50%;bottom:22px;transform:translate(-50%);z-index:40;display:flex;gap:6px;padding:8px;border-radius:24px;background:var(--tabbar);border:1px solid var(--stroke-2);backdrop-filter:var(--blur-nav);-webkit-backdrop-filter:var(--blur-nav);box-shadow:var(--shadow-nav);transition:background .5s,border-color .5s,box-shadow .5s}.tab{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:64px;min-height:48px;padding:7px 15px;border-radius:17px;color:var(--ink-3);font-size:10.5px;background:none;border:0;font-family:inherit;transition:background .4s,color .25s,box-shadow .4s}.tab svg{width:19px;height:19px}.tab.on{color:var(--ink);background:var(--tab-on);box-shadow:inset 0 0 0 1px var(--tab-on-stroke)}.tab:hover{color:var(--ink)}.fatal{min-height:100dvh;display:grid;place-items:center;padding:24px;position:relative;z-index:1}.fatal-card{width:min(460px,100%);padding:28px;border-radius:26px;background:var(--card-bg);border:1px solid var(--stroke);box-shadow:var(--shadow);backdrop-filter:var(--blur-card);-webkit-backdrop-filter:var(--blur-card);text-align:center}.fatal-card .brand-mark{margin:0 auto 16px;background:var(--danger-bg);color:var(--danger-ink);box-shadow:none}.fatal-card h1{font-size:20px;margin:0 0 8px}.fatal-card p{font-size:12.5px;color:var(--ink-3);line-height:1.7;margin:0 0 18px}.fatal-detail{text-align:left;font-size:11px;color:var(--ink-3);background:var(--pill-bg);border-radius:12px;padding:10px 12px;margin:0 0 16px;max-height:140px;overflow:auto;white-space:pre-wrap;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}*{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:99px}::-webkit-scrollbar-track{background:transparent}@media (max-width: 1080px){.grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.card.span-2{grid-column:span 1}}@media (max-width: 820px){.app{padding:22px 16px 132px}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.card.span-2{grid-column:span 1}.strip{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-grid{grid-template-columns:1fr}.settings-card.wide{grid-column:auto}.input-wrap{min-width:0!important}.title{font-size:28px}}@media (max-width: 560px){.app{padding:18px 14px 122px}.grid{grid-template-columns:1fr;gap:12px}.card.span-2{grid-column:span 1}.card{padding:17px;border-radius:23px}.strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.chip{padding:13px 14px}.chip .v{font-size:19px}.chip .ic{width:22px;height:22px}.chip .ic svg{width:22px;height:22px}.title{font-size:26px}.topbar{gap:10px}.top-actions{gap:8px}.icon-btn,.avatar{width:44px;height:44px;border-radius:14px}.meta{font-size:12px;gap:7px}.card.light .bigval{font-size:32px}.settings-card{padding:18px}.setting-row{gap:10px}.setting-row .input-wrap{flex:1 1 100%;flex-wrap:wrap}.setting-row .input-wrap .btn{flex:1 1 100%}.segmented{width:100%}.segmented button{flex:1;justify-content:center;padding:0 10px}.login-card{padding:24px 20px;border-radius:26px}.login-actions{top:14px;right:14px}.login-foot{display:none}.drawer{inset:auto 0 0;width:100%;height:min(88dvh,780px);border-left:0;border-top:1px solid var(--stroke-2);border-radius:26px 26px 0 0;animation:sheet-in .4s cubic-bezier(.2,.8,.3,1) both}@keyframes sheet-in{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}.drawer-body{padding-bottom:calc(30px + env(safe-area-inset-bottom))}.drawer-head{padding-top:16px}.toast-host{top:12px}}@media (max-width: 520px){.tabbar{bottom:14px;left:14px;right:14px;transform:none;justify-content:space-around}.tab{padding:6px 10px;flex:1;min-width:0}}@media (max-width: 390px){.hello{font-size:11px}.title{font-size:24px}.sensor-grid{grid-template-columns:1fr}.settings-grid{gap:12px}}
