:root{color-scheme:light;--page:#f3f1ea;--surface:#fbfaf5;--ink-1:#201f1b;--ink-2:#565349;--ink-3:#8c887b;--grid:#e3e0d6;--baseline:#cbc7ba;--hairline:rgba(32,31,27,.1);--wash:rgba(32,31,27,.05);--tier-active:#4a7fd0;--tier-emerging:#45b3a4;--tier-latent:#d98a52;--tier-low:#a39f93;--accent:#4a7fd0;--accent-soft:rgba(74,127,208,.12);--gold:#b3985a;--good:#45b3a4;--good-soft:rgba(69,179,164,.14);--bg-glow-1:rgba(74,127,208,.05);--bg-glow-2:rgba(179,152,90,.06)}:root[data-theme=dark]{color-scheme:dark;--page:#131311;--surface:#1d1c19;--ink-1:#f2f0e9;--ink-2:#c2bfb2;--ink-3:#8c887b;--grid:#2b2a26;--baseline:#3a3934;--hairline:hsla(47,26%,93%,.11);--wash:hsla(47,26%,93%,.055);--tier-active:#4a7fd0;--tier-emerging:#45b3a4;--tier-latent:#d98a52;--tier-low:#8b887e;--accent:#5d8ed8;--accent-soft:rgba(93,142,216,.16);--gold:#cbb379;--good:#45b3a4;--good-soft:rgba(69,179,164,.16);--bg-glow-1:rgba(74,127,208,.07);--bg-glow-2:hsla(42,44%,64%,.045)}*{box-sizing:border-box;margin:0;padding:0;border-radius:0}body,html{height:100%}body{background:radial-gradient(1100px 560px at 80% -8%,var(--bg-glow-1),transparent 60%),radial-gradient(880px 500px at 8% 108%,var(--bg-glow-2),transparent 60%),var(--page);color:var(--ink-1);font-family:Baloo\ 2,ui-rounded,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5}.shell{flex-direction:column;height:100vh}.hdr,.shell{display:flex}.hdr{gap:12px;padding:14px 22px 8px}.hdr,.hdr .logo{align-items:center}.hdr .logo{display:inline-flex}.hdr h1{font-size:18px;font-weight:700;letter-spacing:.1px}.hdr .tag{color:var(--ink-3);font-size:12px}.hdr .spacer{flex:1 1}.badge{font-size:11px;font-weight:600;letter-spacing:.4px;color:var(--ink-2);display:inline-flex;align-items:center;gap:7px}.badge .dot{width:8px;height:8px}.badge .dot.live{background:var(--good)}.badge .dot.demo{background:var(--gold)}.btn{font:inherit;font-size:12.5px;font-weight:600;color:var(--ink-2);background:transparent;border:1px solid var(--hairline);padding:6px 14px;cursor:pointer}.btn:hover{color:var(--ink-1);background:var(--wash)}.btn.primary{color:var(--page);background:var(--ink-1);border-color:transparent}.btn.primary:hover{opacity:.88}.btn:disabled{opacity:.45;cursor:default}.filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 22px 12px;border-bottom:1px solid var(--hairline)}.filters .lbl{color:var(--ink-3);font-size:10.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;margin-right:2px}.chip{font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:7px;padding:4px 2px;background:transparent;color:var(--ink-2);border:none;border-bottom:2px solid transparent}.chip .sw{width:9px;height:9px}.chip.on{color:var(--ink-1);border-bottom-color:currentColor}.chip.off{opacity:.4}.chip:hover{color:var(--ink-1)}.main{flex:1 1;display:flex;min-height:0}.map-wrap{flex:1 1;position:relative;min-width:0}.legend{position:absolute;left:18px;bottom:16px;z-index:5;max-width:240px}.legend .row{display:flex;align-items:center;gap:8px;margin:3px 0;font-size:12px;font-weight:500;color:var(--ink-2);text-shadow:0 0 8px var(--page),0 0 3px var(--page)}.legend .sw{width:10px;height:10px;flex:none}.legend .hint{color:var(--ink-3);font-size:11px;margin-top:6px;text-shadow:0 0 8px var(--page),0 0 3px var(--page)}.panel{width:402px;flex:none;overflow-y:auto;border-left:1px solid var(--hairline);padding:18px 20px 22px;display:flex;flex-direction:column;gap:22px}.card{background:transparent;padding:0}.card h3{font-size:10.5px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:1.4px;margin-bottom:10px}.card h3 .sub{text-transform:none;letter-spacing:.2px;font-weight:500}.tiles{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px 12px;gap:16px 12px}.tile .v{font-size:30px;font-weight:700;letter-spacing:-.5px}.tile .k{font-size:11.5px;color:var(--ink-3)}.tile .d{font-size:11px;margin-top:1px;font-weight:600}.bar-row{display:grid;grid-template-columns:118px 1fr 42px;align-items:center;grid-gap:8px;gap:8px;margin:6px 0}.bar-row .nm{font-size:12px;font-weight:500;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.bar-row .nm:hover{color:var(--ink-1)}.bar-row .tr{position:relative;height:7px;background:var(--grid)}.bar-row .fl{position:absolute;inset:0 auto 0 0;min-width:4px}.bar-row .vv{font-size:11.5px;color:var(--ink-2);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stack{display:flex;height:12px;gap:2px}.stack div{height:100%}.stack-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.stack-legend .it{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--ink-2)}.stack-legend .sw{width:9px;height:9px}.sig{border-top:1px solid var(--grid);padding:10px 0}.sig:first-of-type{border-top:none;padding-top:0}.sig .t{font-size:12.5px;color:var(--ink-1);font-weight:600}.sig .m{font-size:11px;color:var(--ink-3);margin-top:4px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sig .m .cat{color:var(--ink-2);background:var(--wash);padding:1px 8px}.sig .m .ok{color:var(--good);font-weight:700}.vote{display:inline-flex;gap:4px;margin-left:auto}.vote button{font:inherit;font-size:11px;font-weight:600;cursor:pointer;color:var(--ink-2);background:transparent;border:1px solid var(--hairline);padding:2px 9px}.vote button:hover{color:var(--ink-1);background:var(--wash)}.vote button.sel{color:var(--accent);border-color:var(--accent)}.form{display:flex;flex-direction:column;gap:8px}.form input,.form select,.form textarea{font:inherit;font-size:12.5px;color:var(--ink-1);background:transparent;border:1px solid var(--hairline);padding:8px 11px}.form input::placeholder{color:var(--ink-3)}.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--accent)}table.tbl{width:100%;border-collapse:collapse;font-size:12px}.tbl th{text-align:left;color:var(--ink-3);font-weight:600;padding:5px 6px;border-bottom:1px solid var(--baseline)}.tbl td{padding:5px 6px;border-bottom:1px solid var(--grid);color:var(--ink-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tbl td:first-child{color:var(--ink-1);font-feature-settings:normal;font-variant-numeric:normal;font-weight:500}.tbl .swd{display:inline-block;width:8px;height:8px;margin-right:6px}.detail .hd{display:flex;align-items:center;gap:10px;margin-bottom:4px}.detail .hd .nm{font-size:17px;font-weight:700}.detail .hd .tier{font-size:11px;font-weight:700;padding:1px 9px;border:1px solid}.detail .note{color:var(--ink-3);font-size:12px;margin-bottom:10px}.kv{display:flex;gap:20px;margin:10px 0 12px}.kv .it .v{font-size:22px;font-weight:700;letter-spacing:-.3px}.kv .it .k{font-size:9.5px;font-weight:700;letter-spacing:1.1px;color:var(--ink-3)}.ents{margin-top:9px}.ents .e{font-size:12px;color:var(--ink-2);padding:3px 0;display:flex;gap:6px}.ents .e .ty{color:var(--ink-3);font-size:11px}.brief{margin-top:10px;font-size:12.5px;color:var(--ink-2);border-left:2px solid var(--accent);padding:2px 0 2px 11px;white-space:pre-wrap}.mut{color:var(--ink-3)}.err,.mut{font-size:12px}.err{color:#c65454}.maplibregl-popup-content{background:var(--surface)!important;color:var(--ink-1)!important;border:1px solid var(--hairline);border-radius:0!important;padding:10px 12px;font-size:12px;font-family:inherit;box-shadow:0 6px 22px rgba(0,0,0,.18)}.maplibregl-popup-tip{border-top-color:var(--surface)!important;border-bottom-color:var(--surface)!important}.maplibregl-ctrl-group,.maplibregl-ctrl-group button{border-radius:0!important}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes floaty{0%{transform:translateY(0) rotate(-1deg)}to{transform:translateY(-3px) rotate(1.5deg)}}.map-wrap,.panel>*{animation:rise .6s cubic-bezier(.2,.7,.2,1) both}.panel>:first-child{animation-delay:.08s}.panel>:nth-child(2){animation-delay:.16s}.panel>:nth-child(3){animation-delay:.24s}.panel>:nth-child(4){animation-delay:.32s}.panel>:nth-child(5){animation-delay:.4s}.panel>:nth-child(6){animation-delay:.48s}.hdr .logo{animation:floaty 3.5s ease-in-out infinite alternate}.btn,.chip,.vote button{transition:color .18s ease,background-color .18s ease,border-color .18s ease,opacity .18s ease}body{transition:background-color .3s ease,color .3s ease}@media (prefers-reduced-motion:reduce){.hdr .logo,.map-wrap,.panel>*{animation:none}}@media (max-width:900px){.main{flex-direction:column}.map-wrap{height:46vh;flex:none}.panel{width:100%;border-left:none;border-top:1px solid var(--hairline);flex:1 1}}