:root{--bg:#070b12;--card:#0c121b;--card-2:#121b26;--line:#1c2733;--line-soft:#ffffff12;--text:#edf3f8;--muted:#93a7ba;--dim:#5e7285;--on-accent:#160f06;--red:#f5a524;--red-dark:#d98d18;--red-soft:#f5a52424;--amber:#f7c86b;--amber-soft:#f7c86b1f;--cool:#4fb3d9;--cool-soft:#4fb3d924;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);margin:0}body{-webkit-font-smoothing:antialiased;overflow:hidden}button{cursor:pointer;font-family:inherit}.app{background:var(--bg);flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--card);z-index:10;flex:0 0 64px;align-items:center;gap:24px;height:64px;padding:0 22px;display:flex}.brand{align-items:center;gap:11px;min-width:280px;display:flex}.crumbs{color:#a89c90;flex-wrap:wrap;align-items:center;gap:5px;margin:0 6px 12px;font-size:11.5px;display:flex}.crumb{color:#6b6158;background:0 0;border:0;border-radius:3px;padding:2px 4px;font-size:11.5px}.crumb:hover{color:var(--red);background:var(--red-soft)}.crumb.active{color:var(--red);font-weight:600}.back-btn{border:1px solid var(--line);color:#6b6158;background:#fffffff0;border-radius:6px;padding:7px 14px;font-size:12px;position:absolute;top:62px;left:18px}.back-btn:hover{border-color:var(--red);color:var(--red)}.brand-mark{color:#1a1206;letter-spacing:.02em;background:linear-gradient(140deg,#f7c86b,#c97c36);border-radius:10px;place-items:center;width:34px;height:34px;font-size:16px;font-weight:800;display:grid}.brand h1{letter-spacing:.02em;color:var(--text);margin:0;font-size:15px;font-weight:600}.brand p{color:var(--dim);letter-spacing:.06em;margin:2px 0 0;font-size:10.5px}.stats{gap:34px;margin-left:auto;display:flex}.stats div{flex-direction:column;align-items:flex-end;display:flex}.stats strong{color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:-.3px;font-size:21px;font-weight:600}.stats div:nth-child(4) strong{color:var(--amber)}.stats span{color:var(--dim);letter-spacing:.1em;margin-top:1px;font-size:10px}.btn{border:1px solid var(--line);color:var(--text);letter-spacing:.04em;background:#ffffff0a;border-radius:6px;padding:7px 16px;font-size:12px;transition:all .16s}.btn:hover{border-color:var(--red);color:var(--red);background:var(--red-soft)}.btn.ghost{background:0 0}.btn.primary{background:var(--red);border-color:var(--red);color:var(--on-accent)}.btn.primary:hover{background:var(--red-dark);border-color:var(--red-dark);color:var(--on-accent)}.btn.wide{width:100%;margin-top:14px;padding:10px}.layout{flex:1;min-height:0;display:flex;position:relative}.citybar{border-right:1px solid var(--line);background:var(--card);flex:0 0 236px;width:236px;padding:16px 12px;overflow-y:auto}.citybar-title{letter-spacing:.04em;color:var(--text);border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;margin:0 8px 10px;padding-bottom:12px;font-size:12px;font-weight:600;display:flex}.citybar-title span{color:var(--dim);letter-spacing:.06em;font-size:10px;font-weight:400}.city-list{flex-direction:column;gap:2px;display:flex}.city-item{width:100%;color:var(--text);text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-columns:22px 44px 1fr 34px;align-items:center;gap:8px;padding:8px;font-size:12.5px;transition:background .16s,border-color .16s,transform .16s;display:grid}.city-item:hover{background:#ffffff0b}.city-item.active{background:#16202c;border-color:#1e2a38}.city-rank{color:var(--dim);font-variant-numeric:tabular-nums;font-size:10px}.city-item.active .city-rank{color:var(--red)}.city-name{letter-spacing:.04em;color:#c6d4e1;font-weight:500}.city-item.active .city-name{color:var(--text)}.city-bar{background:#18222f;border-radius:2px;height:3px;overflow:hidden}.city-bar i{background:#36507a;border-radius:2px;height:100%;transition:width .3s;display:block}.city-bar i.hot{background:linear-gradient(90deg,#e9a93f,#f7c86b)}.city-score{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:12px}.city-item.active .city-score{color:var(--text)}.dot{border-radius:3px;place-items:center;width:17px;height:17px;font-size:9px;font-weight:700;display:grid}.dot.pri-A{background:var(--red-soft);color:var(--red)}.dot.pri-B{background:var(--amber-soft);color:var(--amber)}.dot.pri-C{color:var(--muted);background:#ffffff12}.city-store{color:var(--cool);font-size:10px}.stage{background:var(--bg);flex:1;min-width:0;position:relative}.stage canvas{display:block}.hint{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--dim);letter-spacing:.03em;pointer-events:none;background:#090e15cc;border-radius:8px;flex-direction:column;gap:3px;padding:9px 13px;font-size:10.5px;animation:.6s .4s both fadeUp;display:flex;position:absolute;bottom:16px;left:18px}.hint span:before{content:"· ";color:var(--cool);font-weight:700}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.legend{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--muted);letter-spacing:.03em;background:#090e15d1;border-radius:8px;gap:18px;padding:9px 14px;font-size:10.5px;animation:.6s .25s both fadeUp;display:flex;position:absolute;top:16px;left:18px}.legend span{align-items:center;gap:6px;display:flex}.sw{border-radius:2px;width:9px;height:9px;display:inline-block}.sw-live{background:var(--red)}.sw-plan{background:var(--amber)}.sw-a{background:#2f6b8f}.sw-b{background:#c3ced6}.sw-old{background:#e8944a;border-radius:50%}.sw-new{background:#4f9fc4;border-radius:50%}.rank-note{color:var(--muted);margin:-2px 0 12px;font-size:11px;line-height:1.6}.tier-bars{flex-direction:column;gap:11px;display:flex}.tier-row{display:block}.tier-head{color:var(--text);justify-content:space-between;align-items:baseline;margin-bottom:4px;font-size:12px;display:flex}.tier-head b{font-weight:600}.tier-head span{font-variant-numeric:tabular-nums;color:var(--red);font-weight:700}.tier-track{background:#ffffff12;border-radius:4px;height:7px;overflow:hidden}.tier-track i{background:linear-gradient(90deg,#2a7fa5,#37a8b8,#e9a93f);border-radius:4px;height:100%;transition:width .5s cubic-bezier(.22,1,.36,1);display:block}.tier-row small{color:#7e9aac;margin-top:4px;font-size:10.5px;line-height:1.5;display:block}.tier-foot{color:#7e9aac;margin-top:10px;font-size:11px;line-height:1.65}.block-list{flex-direction:column;gap:6px;display:flex}.block-row{color:var(--text);grid-template-columns:16px 30px 1fr 42px 44px;align-items:center;gap:7px;font-size:11px;display:grid}.block-rank{color:#6b8798;font-variant-numeric:tabular-nums}.block-zone{text-align:center;color:#9fb6c6;background:#ffffff0f;border-radius:3px;padding:1px 0;font-size:9.5px}.block-bar{background:#18222f;border-radius:3px;height:4px;display:block;overflow:hidden}.block-bar i{background:linear-gradient(90deg,#2a7fa5,#37a8b8,#e9a93f);border-radius:3px;height:100%;display:block}.block-rate{font-variant-numeric:tabular-nums;color:#c6d8e4;font-weight:600}.block-dist{color:#7e9aac;text-align:right;font-variant-numeric:tabular-nums;font-size:10px}.why{color:#a9c2d3;margin-top:8px;font-size:11.5px;line-height:1.75}.why b{color:var(--red);font-weight:600}.cb-row{color:var(--text);border-bottom:1px solid #141d28;grid-template-columns:16px 62px 1fr 44px 44px 34px;align-items:center;gap:9px;padding:7px 0;font-size:12px;display:grid}.cb-row:last-child{border-bottom:0}.cb-name{color:#c6d4e1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cb-rate{font-variant-numeric:tabular-nums;color:var(--text);text-align:right;font-weight:600}.cb-pop{font-variant-numeric:tabular-nums;color:var(--dim);text-align:right;font-size:11px}.cb-out{color:var(--cool);text-align:right;font-size:11px}.detail{border-left:1px solid var(--line);background:var(--card);flex:0 0 372px;width:372px;animation:.26s cubic-bezier(.22,1,.36,1) slideIn;position:relative;overflow-y:auto}@keyframes slideIn{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes panelIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.close{border:1px solid var(--line);width:26px;height:26px;color:var(--muted);z-index:2;background:#ffffff0f;border-radius:50%;font-size:15px;line-height:1;position:absolute;top:13px;right:13px}.close:hover{color:var(--red);border-color:var(--red)}.reopen{border:1px solid var(--red);background:var(--red);color:#fff;border-radius:7px;padding:9px 17px;font-size:12px;position:absolute;bottom:18px;right:18px}.panel-body{padding:20px 22px 28px;animation:.28s cubic-bezier(.22,1,.36,1) panelIn}.panel-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;padding-right:26px;display:flex}.eyebrow{letter-spacing:.14em;color:var(--dim);margin:0 0 6px;font-size:10px;font-weight:500}.panel-head h2{letter-spacing:-.4px;color:var(--text);margin:0;font-size:26px;font-weight:600}.panel-head h2.store-title{letter-spacing:0;font-size:17px;line-height:1.45}.pri{letter-spacing:.08em;border:1px solid #0000;border-radius:4px;flex:none;padding:4px 10px;font-size:10.5px;font-weight:700}.pri-A{background:var(--red);color:var(--on-accent)}.pri-B{background:var(--amber-soft);color:var(--amber);border-color:#d8a64859}.pri-C{color:var(--muted);background:#ffffff12}.pri-live{background:var(--red-soft);color:var(--red);border-color:#4f9fc459}.hero{border:1px solid var(--line);background:var(--card-2);border-radius:12px;margin-bottom:14px;padding:16px 18px 18px}.hero-top{align-items:flex-end;gap:10px;display:flex}.hero-num{letter-spacing:-2px;color:var(--amber);font-variant-numeric:tabular-nums;font-size:50px;font-weight:600;line-height:.9}.hero-pct{letter-spacing:0;opacity:.85;margin-left:2px;font-size:20px;font-weight:600}.hero-unit{color:var(--dim);padding-bottom:6px;font-size:11px}.meter{background:#1b2532;border-radius:2px;height:4px;margin-top:14px;overflow:hidden}.meter i{background:linear-gradient(90deg,#c97c36,#f7c86b);border-radius:2px;height:100%;transition:width .7s cubic-bezier(.22,1,.36,1);display:block}.hero-say{color:#c6d4e1;margin:14px 0 0;font-size:13px;line-height:1.72}.hero-say em{color:var(--amber);font-style:normal;font-weight:600}.score-ring{flex:0 0 54px;width:54px;height:54px;position:relative}.score-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.score-ring path{fill:none;stroke-width:2.8px}.ring-bg{stroke:#ffffff1a}.ring-fg{stroke:url(#scoreGrad);stroke-linecap:round}.score-ring span{color:var(--red);place-items:center;font-size:16px;font-weight:700;display:grid;position:absolute;inset:0}.metric-grid{background:var(--line);border:1px solid var(--line);border-radius:12px;grid-template-columns:1fr 1fr;gap:1px;margin-bottom:16px;display:grid;overflow:hidden}.metric-grid>div{background:var(--card);flex-direction:column;gap:5px;padding:12px 14px;display:flex}.metric-grid span{color:var(--dim);letter-spacing:.03em;font-size:10.5px}.metric-grid strong{font-variant-numeric:tabular-nums;color:var(--text);letter-spacing:-.2px;font-size:18px;font-weight:600}.metric-grid strong.hl{color:var(--amber)}.metric-grid.tight strong{font-size:14px}.block{margin-bottom:20px}.block-title{letter-spacing:.04em;color:var(--text);justify-content:space-between;align-items:baseline;margin-bottom:9px;font-size:12px;font-weight:600;display:flex}.block-title span{color:var(--dim);letter-spacing:.04em;font-size:10px;font-weight:400}.block p{color:#c6d4e1;margin:0;font-size:12.5px;line-height:1.75}.block.note{border-left:2px solid var(--red);background:#f5a5240f;border-radius:0 8px 8px 0;padding:14px 16px}.block.note .block-title{color:var(--amber)}.model-card{border:1px solid var(--line);background:#ffffff08;border-radius:8px;padding:13px 15px}.model-tag{color:var(--cool);background:#4f9fc424;border-radius:3px;margin-bottom:8px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.model-card p{color:#a9c2d3;font-size:11.5px;line-height:1.7}.site-card{border:1px solid var(--line);background:#ffffff08;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.site-card strong{font-size:13px;font-weight:700;display:block}.site-card span{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:4px;font-size:10px;display:block}.address{color:#a9c2d3;font-size:12.5px;line-height:1.75}.ring-note{color:var(--amber);background:var(--amber-soft);border:1px solid #d8a64852;border-radius:6px;align-items:center;gap:8px;margin-top:10px;padding:9px 12px;font-size:11px;display:flex}.city-label{color:#4a423a;letter-spacing:.04em;white-space:nowrap;background:#fffffff0;border:1px solid #e3d6c8;border-radius:4px;flex-direction:column;align-items:center;gap:1px;padding:3px 8px;font-size:11.5px;transition:all .18s;display:flex;box-shadow:0 1px 4px #785a3c14}.city-label em{color:var(--muted);letter-spacing:.02em;font-size:8.5px;font-style:normal}.city-label.is-active{background:var(--red);border-color:var(--red);color:#fff;box-shadow:0 4px 14px #c6282847}.city-label.is-active em{color:#fffc}.county-label{color:#7d7268;white-space:nowrap;letter-spacing:.03em;text-shadow:0 1px 2px #ffffffe6;font-size:9.5px}.county-label.is-active{color:#fff;background:var(--red);text-shadow:none;border-radius:3px;padding:2px 6px;font-weight:600}.foot{color:var(--muted);border-top:1px solid var(--line);letter-spacing:.02em;background:var(--card);flex:none;padding:8px 24px;font-size:10px;line-height:1.55}.foot a{color:var(--red);text-decoration:none}.boot,.boot-error{background:var(--bg);height:100%;color:var(--muted);letter-spacing:.08em;flex-direction:column;justify-content:center;align-items:center;gap:18px;font-size:13px;display:flex}.boot-ring{border:2px solid #ffffff1a;border-top-color:var(--red);border-radius:50%;width:40px;height:40px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1180px){.citybar{display:none}.detail{flex-basis:330px;width:330px}.stats{gap:16px}}@media (width<=860px){.stats{display:none}.detail{width:88%;position:absolute;top:0;bottom:0;right:0}}.toast{color:#fff;letter-spacing:.03em;z-index:50;background:#2b2b2beb;border-radius:8px;padding:10px 20px;font-size:12.5px;animation:.2s toastIn;position:fixed;bottom:90px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #0000002e}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.province-btn{color:#a83232;letter-spacing:.04em;white-space:nowrap;background:#fffffff5;border:1px solid #a83232;border-radius:6px;padding:7px 14px;font-size:12px;font-weight:600;box-shadow:0 3px 12px #a832322e}.province-btn:hover{color:#fff;background:#a83232}.legend-heat{align-items:center;gap:6px;display:flex}.heat-bar{background:linear-gradient(90deg,#1c2c4e 0%,#24507f 17%,#2a7fa5 37%,#37a8b8 57%,#56ced6 70%,#e9a93f 70%,#f4be5a 85%,#ffce74 100%);border-radius:2px;width:92px;height:8px;display:inline-block}.sw-hot{background:0 0;border:1px solid #ffd68c;border-radius:2px;width:9px;height:9px;box-shadow:0 0 4px #ffd68c8c}
