:root{--bg:#050a14;--bg-2:#081120;--line:#5a8cb42e;--text:#dbe8f4;--muted:#7f95ab;--gold:#d8b64a;--gold-soft:#d8b64a24;--green:#3ddc97;--amber:#ffb020;--blue:#4aa3d8;--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:radial-gradient(1200px 600px at 50% 0%, #1e50782e, transparent 60%), var(--bg);flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;background:linear-gradient(#0a1626f2,#060d18d9);flex:0 0 68px;align-items:center;gap:24px;height:68px;padding:0 22px;display:flex}.brand{align-items:center;gap:12px;min-width:280px;display:flex}.brand-mark{width:38px;height:38px;color:var(--gold);background:linear-gradient(145deg,#1d3c58,#0d2033);border:1px solid #78b4dc59;border-radius:10px;place-items:center;font-size:18px;font-weight:700;display:grid;box-shadow:inset 0 1px #ffffff14}.brand h1{letter-spacing:.06em;margin:0;font-size:16px;font-weight:650}.brand p{color:var(--muted);letter-spacing:.08em;margin:2px 0 0;font-size:11px}.stats{gap:26px;margin-left:auto;display:flex}.stats div{flex-direction:column;align-items:center;display:flex}.stats strong{font-variant-numeric:tabular-nums;font-size:18px;font-weight:650}.stats span{color:var(--muted);letter-spacing:.12em;margin-top:1px;font-size:10px}.btn{color:var(--text);letter-spacing:.04em;background:#142d448c;border:1px solid #78afd759;border-radius:7px;padding:6px 14px;font-size:12px;transition:all .18s}.btn:hover{border-color:var(--gold);color:var(--gold);background:#d8b64a14}.btn.ghost{background:0 0}.btn.wide{width:100%;margin-top:14px;padding:9px}.layout{flex:1;min-height:0;display:flex;position:relative}.citybar{border-right:1px solid var(--line);background:#060d18b8;flex:0 0 186px;width:186px;padding:14px 10px;overflow-y:auto}.citybar-title{letter-spacing:.18em;color:var(--muted);text-transform:uppercase;margin:2px 6px 10px;font-size:10px}.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:7px;align-items:center;gap:8px;padding:7px 8px;font-size:12.5px;transition:all .15s;display:flex}.city-item:hover{background:#28507338;border-color:#5a8cb433}.city-item.active{background:var(--gold-soft);border-color:#d8b64a73}.city-name{letter-spacing:.04em;flex:1}.city-score{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.city-store{color:var(--green);font-size:10px}.dot{border-radius:4px;place-items:center;width:16px;height:16px;font-size:9px;font-weight:700;display:grid}.dot.pri-A{color:var(--gold);background:#d8b64a2e}.dot.pri-B{color:var(--blue);background:#4aa3d829}.dot.pri-C{color:var(--muted);background:#7f95ab24}.stage{flex:1;min-width:0;position:relative}.stage canvas{display:block}.hint{color:#a0b9d0d9;letter-spacing:.04em;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#050b14b8;border:1px solid #5a8cb424;border-radius:8px;flex-direction:column;gap:3px;padding:8px 12px;font-size:10.5px;display:flex;position:absolute;bottom:16px;left:18px}.hint span:before{content:"· ";color:var(--gold)}.legend{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--muted);letter-spacing:.05em;background:#050b14b8;border-radius:8px;gap:16px;padding:7px 12px;font-size:10.5px;display:flex;position:absolute;top:16px;left:18px}.legend span{align-items:center;gap:6px;display:flex}.sw{border-radius:2px;width:8px;height:8px;display:inline-block}.sw-live{background:var(--green);box-shadow:0 0 8px #3ddc97b3}.sw-plan{background:var(--amber);box-shadow:0 0 8px #ffb020b3}.sw-a{background:var(--gold)}.sw-b{background:var(--blue)}.detail{border-left:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(#091321f7,#050b14f7);flex:0 0 372px;width:372px;animation:.24s slideIn;position:relative;overflow-y:auto}@keyframes slideIn{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}.close{border:1px solid var(--line);width:26px;height:26px;color:var(--muted);z-index:2;background:#0f1e2ecc;border-radius:50%;font-size:15px;line-height:1;position:absolute;top:12px;right:12px}.close:hover{color:var(--text);border-color:#78afd780}.reopen{color:var(--gold);background:#142014d9;border:1px solid #d8b64a73;border-radius:8px;padding:8px 16px;font-size:12px;position:absolute;bottom:18px;right:18px}.panel-body{padding:22px 22px 30px}.panel-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;padding-right:26px;display:flex}.eyebrow{letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin:0 0 5px;font-size:9.5px}.panel-head h2{letter-spacing:.05em;margin:0;font-size:24px;font-weight:650}.panel-head h2.store-title{letter-spacing:.02em;font-size:17px;line-height:1.4}.pri{letter-spacing:.08em;border:1px solid #0000;border-radius:5px;flex:none;padding:3px 9px;font-size:10.5px;font-weight:700}.pri-A{color:var(--gold);background:#d8b64a24;border-color:#d8b64a66}.pri-B{color:var(--blue);background:#4aa3d81f;border-color:#4aa3d859}.pri-C{color:var(--muted);background:#7f95ab1f}.pri-live{color:var(--green);background:#3ddc971f;border-color:#3ddc9766}.score-row{border:1px solid var(--line);background:#0c1a2a8c;border-radius:10px;align-items:center;gap:14px;margin-bottom:16px;padding:14px;display:flex}.score-ring{flex:0 0 52px;width:52px;height:52px;position:relative}.score-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.score-ring path{fill:none;stroke-width:2.6px}.ring-bg{stroke:#5a8cb429}.ring-fg{stroke:var(--gold);stroke-linecap:round}.score-ring span{color:var(--gold);place-items:center;font-size:15px;font-weight:700;display:grid;position:absolute;inset:0}.score-copy strong{letter-spacing:.05em;font-size:12px}.score-copy p{color:var(--muted);margin:3px 0 0;font-size:10.5px;line-height:1.5}.metric-grid{background:var(--line);border:1px solid var(--line);border-radius:10px;grid-template-columns:1fr 1fr;gap:1px;margin-bottom:16px;display:grid;overflow:hidden}.metric-grid>div{background:#091320eb;flex-direction:column;gap:3px;padding:9px 12px;display:flex}.metric-grid span{color:var(--muted);letter-spacing:.08em;font-size:9.5px}.metric-grid strong{font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}.metric-grid strong.hl{color:var(--green)}.metric-grid.tight strong{font-size:12.5px}.block{margin-bottom:16px}.block-title{letter-spacing:.16em;color:var(--muted);text-transform:uppercase;margin-bottom:7px;font-size:10px}.block p{color:#b9cbd9;margin:0;font-size:12px;line-height:1.7}.block.note{background:#18221e59;border-left:2px solid #d8b64a80;border-radius:0 8px 8px 0;padding:12px 14px}.model-card{border:1px solid var(--line);background:#0c1a2a80;border-radius:9px;padding:12px 14px}.model-tag{color:var(--gold);background:var(--gold-soft);border-radius:4px;margin-bottom:7px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.model-card p{color:#a9bccb;font-size:11.5px;line-height:1.65}.site-card{border:1px solid var(--line);background:#0c1a2a80;border-radius:9px;justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;display:flex}.site-card strong{font-size:12.5px;font-weight:600;display:block}.site-card span{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:3px;font-size:10px;display:block}.address{color:#b9cbd9;font-size:12px;line-height:1.7}.city-label{color:#cfe0ee;letter-spacing:.06em;white-space:nowrap;background:#060e19b8;border:1px solid #5a8cb440;border-radius:4px;flex-direction:column;align-items:center;gap:1px;padding:2px 7px;font-size:11px;transition:all .2s;display:flex}.city-label em{color:#7f95abe6;letter-spacing:.04em;font-size:8.5px;font-style:normal}.city-label.is-active{color:var(--gold);background:#1c180ad9;border-color:#d8b64aa6;box-shadow:0 0 14px #d8b64a40}.county-label{color:#aac3d7cc;white-space:nowrap;letter-spacing:.05em;text-shadow:0 1px 3px #000000e6;font-size:9px}.foot{color:#7f95ab9e;border-top:1px solid var(--line);letter-spacing:.03em;background:#050a12e6;flex:none;padding:7px 22px;font-size:10px;line-height:1.5}.boot,.boot-error{background:var(--bg);height:100%;color:var(--muted);letter-spacing:.1em;flex-direction:column;justify-content:center;align-items:center;gap:18px;font-size:13px;display:flex}.boot-ring{border:2px solid #5a8cb433;border-top-color:var(--gold);border-radius:50%;width:42px;height:42px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1180px){.citybar{display:none}.detail{flex-basis:320px;width:320px}.stats{gap:16px}}@media (width<=860px){.stats{display:none}.detail{width:88%;position:absolute;top:0;bottom:0;right:0}}
