:root{--bg:#e7eef5;--ink:#172033;--muted:#5c6b80;--line:rgba(23,32,51,0.08);--card:#ffffff;--side:#141c2b;--side-text:#d5deea;--accent:#2f6fed;--ok:#128a4e;--warn:#c47b12;--bad:#d14332;--chip:#e8eef6;--temp:#d86a32;--humid:#2b7eb8;--co2:#1c8a62;--pm:#6556c8;--hcho:#c25474;--aqi:#15796f}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:radial-gradient(980px 420px at 100% -8%,rgba(47,111,237,.16),transparent 58%),radial-gradient(760px 380px at -8% 8%,rgba(28,138,98,.12),transparent 52%),linear-gradient(180deg,#f7f4ee 0,var(--bg) 38%,#e4edf5 100%);color:var(--ink);font-family:PingFang SC,Noto Sans SC,sans-serif}a{color:inherit;text-decoration:none}.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.side{background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 28%),linear-gradient(180deg,#1b2740,#121a28);color:var(--side-text);padding:22px 14px}.brand{font-size:12px;letter-spacing:.16em;color:#9aadc4;margin:0 10px 18px}.menu a{display:block;padding:11px 12px;border-radius:10px;margin-bottom:6px}.menu a.active{background:linear-gradient(90deg,rgba(94,156,255,.34),rgba(94,156,255,.08));box-shadow:inset 3px 0 0 #8eb6ff;color:#fff}.content{padding:22px 24px 36px}.top{display:flex;flex-direction:column;gap:14px;margin-bottom:16px}.report-bar{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;padding:18px 22px 16px;border-radius:22px;color:#f7f9fc;background:radial-gradient(420px 160px at 100% 0,rgba(94,196,176,.28),transparent 70%),linear-gradient(128deg,#1a2742,#243654 52%,#1a4c60);box-shadow:0 18px 36px rgba(20,32,56,.16)}.kicker{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}.kicker-label{font-size:12px;letter-spacing:.16em;color:rgba(247,249,252,.62)}.kicker-time{font-size:12px;letter-spacing:.02em;color:rgba(247,249,252,.9);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.clock{display:block;margin-top:8px;font-size:42px;font-weight:650;letter-spacing:-.02em;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.status-col{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:none}.intro h1{margin:0;font-size:26px;letter-spacing:-.03em}.sub{margin:6px 0 0;max-width:40em;color:var(--muted);line-height:1.65}.badge{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.16);color:#fff;font-size:14px;white-space:nowrap}.badge.ok{background:rgba(46,196,122,.22);border-color:rgba(150,230,186,.35)}.badge.warn{background:rgba(240,168,50,.24);border-color:rgba(255,214,140,.35)}.badge.bad{background:rgba(226,92,74,.24);border-color:rgba(255,176,166,.34)}.refresh{font-size:12px;color:rgba(247,249,252,.68);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.7);flex:none}.dot.ok{background:#3dce86}.dot.warn{background:#f0b14a}.dot.bad{background:#ff7d6c}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.card{--metric:var(--accent);position:relative;overflow:hidden;min-width:0;background:linear-gradient(180deg,color-mix(in srgb,var(--metric) 10%,white) 0,#fff 46%);border:1px solid var(--line);border-radius:18px;padding:16px 16px 15px;box-shadow:0 10px 26px rgba(23,32,51,.045)}.card:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--metric),color-mix(in srgb,var(--metric) 55%,white))}.metric-temp{--metric:var(--temp)}.metric-humid{--metric:var(--humid)}.metric-co2{--metric:var(--co2)}.metric-pm{--metric:var(--pm)}.metric-hcho{--metric:var(--hcho)}.metric-aqi{--metric:var(--aqi)}.card .name{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.card .name:before{content:"";width:8px;height:8px;border-radius:3px;background:var(--metric);flex:none}.card .value{margin-top:10px;color:var(--metric);font-size:32px;font-weight:650;letter-spacing:-.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.05}.card .unit{margin-left:4px;font-size:14px;font-weight:500;color:var(--muted)}.card .hint{margin-top:8px;color:#66758a;font-size:13px;line-height:1.45}.card.ok .value{color:var(--ok)}.card.warn .value{color:var(--warn)}.card.bad .value{color:var(--bad)}.card.off .value{color:#98a4b5}.card.warn{background:linear-gradient(180deg,#fff6ea,#fff 52%)}.card.bad{background:linear-gradient(180deg,#fff3f1,#fff 52%)}.card.off{background:linear-gradient(180deg,#f4f6f8,#fff 52%)}.card.warn:before{background:var(--warn)}.card.bad:before{background:var(--bad)}.card.off .name:before,.card.off:before{background:#c5ced8}.panel{margin-top:12px;background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:18px;padding:16px 16px 14px;box-shadow:0 10px 26px rgba(23,32,51,.04)}.panel h2{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:16px}.panel h2:before{content:"";width:4px;height:14px;border-radius:4px;background:var(--accent)}.panel-dust h2:before{background:var(--pm)}.panel-status h2:before{background:var(--aqi)}.rows{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px 18px;gap:8px 18px}.row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid rgba(23,32,51,.06);font-size:14px}.row span{color:var(--muted)}.row b{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:620}.note{margin:12px 0 0;color:var(--muted);font-size:13px;line-height:1.6}.error{margin:0 0 12px;padding:14px 16px;border-radius:12px;background:#fff1ef;color:var(--bad)}@media (max-width:860px){.shell{grid-template-columns:1fr}.content{padding:16px 16px 28px}.report-bar{flex-direction:column;align-items:stretch;gap:14px;padding:16px}.status-col{align-items:flex-start;gap:6px}.clock{font-size:36px}.intro h1{font-size:22px}.sub{display:flex;flex-direction:column;gap:2px}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.rows{grid-template-columns:1fr}.card{padding:12px 12px 13px}.card .value{font-size:26px}.card .hint,.card .unit{font-size:12px}}