:root{--bg:#fff;--panel:#fff;--ink:#0c0c0c;--body:#2a2a28;--mut:#8d8d88;--line:#e3e3e0;--accent:#e8321e;--accent2:#0c0c0c;--f-display:Futura, "Avenir Next", sans-serif;--f-body:"Avenir Next", Avenir, sans-serif;--f-data:Futura, "Avenir Next", sans-serif;--radius:0px;--h1-weight:500;--h1-case:uppercase;--h1-style:normal;--h1-spacing:-.02em;--label-spacing:.26em;--kpi-font:Futura, "Avenir Next", sans-serif;--texture:none;--brand-font:Futura, "Avenir Next", Avenir, sans-serif;--brand-red:#e8321e}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--body);font-family:var(--f-body);transition:background .45s,color .45s;position:relative}body:after{content:"";pointer-events:none;background:var(--texture);position:fixed;inset:0}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.wrap{max-width:1180px;margin:0 auto;padding:30px 28px 70px}header{border-bottom:1px solid var(--ink);flex-wrap:wrap;align-items:baseline;gap:18px;padding-bottom:18px;display:flex}h1{font-family:var(--brand-font);letter-spacing:-.02em;text-transform:uppercase;color:var(--ink);font-size:34px;font-weight:500}h1 em{color:var(--brand-red);font-style:normal}.tag{font-family:var(--f-data);letter-spacing:.1em;color:var(--mut);font-size:11.5px}.skins{gap:6px;margin-left:auto;display:flex}.skins button{letter-spacing:.08em;text-transform:uppercase;cursor:pointer;color:var(--mut);border:1px solid var(--line);background:0 0;border-radius:999px;padding:9px 15px;font:600 11.5px/1 Avenir Next,sans-serif;transition:all .25s}.skins button:hover{color:var(--ink);border-color:var(--ink)}.skins button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skins button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.kpis{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);grid-template-columns:repeat(4,1fr);margin-top:22px;transition:background .45s;display:grid;overflow:hidden}.kpi{border-right:1px solid var(--line);padding:20px 22px}.kpi:last-child{border-right:0}.kpi b{font-family:var(--kpi-font);font-weight:var(--h1-weight);color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:var(--h1-spacing);font-size:34px;line-height:1.05;display:block}.kpi b i{color:var(--accent);font-size:.55em;font-style:normal}.kpi span{letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--mut);margin-top:7px;font:600 10px/1.4 Avenir Next,sans-serif;display:block}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);margin-top:18px;transition:background .45s;overflow:hidden}.panel h3{letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--mut);border-bottom:1px solid var(--line);padding:14px 18px;font:600 10.5px/1 Avenir Next,sans-serif}.citymap{width:100%;height:400px;display:block}.cap{font-family:var(--f-body);color:var(--mut);border-top:1px solid var(--line);font-size:12.5px}.cap summary{cursor:pointer;padding:10px 18px 12px;font-style:italic;list-style:none}.cap summary::-webkit-details-marker{display:none}.cap summary:after{content:" ⌄";opacity:.7;font-style:normal}.cap[open] summary:after{content:" ⌃"}.cap summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.cap p{padding:0 18px 14px;font-style:italic;line-height:1.55}.row{border-bottom:1px solid var(--line);align-items:center;gap:13px;padding:14px 18px;display:flex}.row:last-child{border-bottom:0}.mark{border-radius:50%;flex:none;width:11px;height:11px}.mark[data-style=glow]{box-shadow:0 0 10px}.mark[data-style=flat]{border-radius:0}.row .nm{font-family:var(--f-display);color:var(--ink);font-size:15px;font-weight:600}:root[data-skin=grid] .row .nm{text-transform:uppercase;font-weight:500}.row .mac{color:var(--mut);font:400 10.5px/1.5 ui-monospace,Menlo,monospace}.nmwrap{min-width:0}.nmbtn{cursor:pointer;color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:7px;padding:0;display:flex}.nmbtn:disabled{cursor:default}.nmbtn .pen{opacity:0;color:var(--mut);font-size:12px;transition:opacity .15s}.nmbtn:hover .pen,.nmbtn:focus-visible .pen{opacity:1}.nmbtn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.row .nm.unnamed{color:var(--mut)}.nmedit{font-family:var(--f-display);color:var(--ink);border:1px solid var(--accent);border-radius:var(--radius);background:0 0;width:15em;max-width:100%;padding:2px 6px;font-size:15px;font-weight:600}.nmedit:focus{outline:none}:root[data-skin=grid] .nmedit{text-transform:uppercase;font-weight:500}.mark[data-unnamed]{border:2px solid;background:0 0!important}.row .tk{font-family:var(--f-data);color:var(--accent);font-variant-numeric:tabular-nums;margin-left:auto;font-size:14.5px;font-weight:600}.trendfact{font-family:var(--f-body);color:var(--mut);padding:14px 18px 0;font-size:13px}.trendfact b{color:var(--ink);font-family:var(--f-data);font-variant-numeric:tabular-nums;font-weight:600}.trendchart{padding:18px}.bars{align-items:flex-end;gap:5px;height:112px;display:flex;position:relative}.bars i{background:var(--accent);opacity:.4;transform-origin:bottom;border-radius:2px 2px 0 0;flex:1;animation:.7s cubic-bezier(.2,.8,.2,1) backwards rise}.bars i[data-peak]{opacity:1}.bars .mean{border-top:1px dashed var(--line);pointer-events:none;height:0;position:absolute;left:0;right:0}:root[data-skin=grid] .bars i{border-radius:0}@keyframes rise{0%{transform:scaleY(0)}to{transform:scaleY(1)}}footer{letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--mut);margin-top:26px;font:600 10px/1.8 Avenir Next,sans-serif}@media (max-width:880px){.wrap{padding:20px 16px 60px}.kpis{grid-template-columns:repeat(2,1fr)}.kpi:nth-child(2n){border-right:0}.kpi{border-bottom:1px solid var(--line)}.main{grid-template-columns:1fr}.citymap{height:46vh}}.realmap{width:100%;height:400px}@media (max-width:880px){.realmap{height:46vh}}.pin{width:var(--pin-size,22px);height:var(--pin-size,22px);background:var(--pin);cursor:pointer;border:2px solid #ffffffd9;border-radius:50%}.pin-glow{box-shadow:0 0 14px var(--pin), 0 0 4px var(--pin)}.pin-engraved{border:2px solid var(--pin);background:0 0}.pin-engraved:after{content:"";background:var(--pin);border-radius:50%;position:absolute;inset:30%}.pin-flat{border-color:#0c0c0c;border-radius:0}.pin-unnamed{border:2px dashed var(--pin);background:0 0}.maplibregl-popup-content{background:var(--panel);color:var(--body);border:1px solid var(--line);border-radius:var(--radius);font-family:var(--f-body);padding:12px 14px;box-shadow:0 10px 30px #00000040}.maplibregl-popup-tip{border-top-color:var(--panel)!important}.pop{flex-direction:column;gap:3px;display:flex}.pop b{font-family:var(--f-display);color:var(--ink);font-size:14px}.pop span{color:var(--mut);font-size:11.5px}.pop b.unnamed{color:var(--mut);font-style:italic}.pop span.hint{max-width:17em;color:var(--accent);margin-top:4px;line-height:1.45}.pop em{font-style:normal;font-family:var(--f-data);color:var(--accent);font-size:11.5px}.pop a{color:var(--accent);margin-top:6px;font:600 11px/1 Avenir Next,sans-serif;text-decoration:none}.pop a:hover{text-decoration:underline}.sharehdr{letter-spacing:.08em;text-transform:uppercase;cursor:pointer;color:var(--bg);background:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:9px 16px;font:700 11.5px/1 Avenir Next,sans-serif;transition:opacity .2s}.sharehdr:hover{opacity:.85}.panel h3{align-items:center;display:flex}.ranges{gap:4px;margin-left:auto;display:flex}.ranges button{cursor:pointer;color:var(--mut);border:1px solid var(--line);background:0 0;border-radius:999px;padding:5px 10px;font:600 10.5px/1 Avenir Next,sans-serif}.ranges button.on{color:var(--bg);background:var(--ink);border-color:var(--ink)}.shmask{z-index:40;background:#00000080;justify-content:center;align-items:center;padding:18px;animation:.25s veil;display:flex;position:fixed;inset:0}@keyframes veil{0%{opacity:0}}.shbox{background:var(--panel);border:1px solid var(--line);border-radius:16px;flex-direction:column;width:min(480px,100%);max-height:92vh;display:flex;overflow:hidden}.shhead{align-items:center;padding:16px 18px 0;display:flex}.shhead h3{letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--mut);font:600 11px/1 Avenir Next,sans-serif}.shx{color:var(--mut);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:4px 8px;font-size:16px}.shpicks{flex-wrap:wrap;gap:8px;padding:14px 18px;display:flex}.shpicks label{cursor:pointer;color:var(--mut);border:1px solid var(--line);border-radius:999px;align-items:center;gap:7px;padding:9px 14px;font:600 12px/1 Avenir Next,sans-serif;display:flex}.shpicks label.on{color:var(--ink);border-color:var(--accent)}.shpicks input{accent-color:var(--accent)}.shprev{flex:1;justify-content:center;align-items:flex-start;min-height:160px;padding:0 18px;display:flex;overflow-y:auto}.shprev img{border:1px solid var(--line);border-radius:8px;max-width:100%}.shempty{color:var(--mut);font:400 13px/3 Avenir Next,sans-serif}.shbox .sharebtn{cursor:pointer;background:var(--accent);color:var(--bg);letter-spacing:.06em;border:0;border-radius:12px;justify-content:center;align-items:center;margin:14px 18px 18px;padding:14px;font:700 13px/1 Avenir Next,sans-serif;display:flex}.shbox .sharebtn:disabled{opacity:.45;cursor:default}.authwrap{background:var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.authbox{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius,12px);flex-direction:column;gap:14px;width:min(360px,100%);padding:34px 30px;display:flex}.authbox h1{font-size:26px}.authbox p{color:var(--mut);margin-top:-6px;font-size:13px}.authbox input{font-family:var(--f-data);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:11px 13px;font-size:14px}.authbox input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.authbox button{font-family:var(--f-data);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:var(--ink);color:var(--bg);border:0;border-radius:8px;padding:12px;font-size:12px}.authbox button:disabled{opacity:.5;cursor:default}.autherr{color:var(--accent2);font-size:12.5px;font-family:var(--f-data)}.signout{font-family:var(--f-data);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;color:var(--mut);border:1px solid var(--line);background:0 0;border-radius:999px;margin-left:12px;padding:5px 12px;font-size:10.5px}.signout:hover{color:var(--ink);border-color:var(--ink)}.oauthbtn{font-family:var(--f-data);letter-spacing:.08em;cursor:pointer;color:var(--ink);border:1px solid var(--line);background:0 0;border-radius:8px;padding:12px;font-size:12px}.oauthbtn:hover{border-color:var(--ink)}.authdiv{color:var(--mut);font-size:11px;font-family:var(--f-data);letter-spacing:.15em;text-transform:uppercase;align-items:center;gap:12px;display:flex}.authdiv:before,.authdiv:after{content:"";background:var(--line);flex:1;height:1px}.authalt{cursor:pointer;font-size:11.5px;font-family:var(--f-data);text-underline-offset:3px;border:0;padding:2px;text-decoration:underline;color:var(--mut)!important;background:0 0!important}.authalt:hover{color:var(--ink)!important}:root[data-skin=trace] .panel{border-color:#0000}:root[data-skin=trace] .kpis{background:0 0;border:0;border-radius:0;gap:14px 0;margin-top:26px;padding:4px 2px}:root[data-skin=trace] .kpi{border-right:0;align-items:center;gap:9px;padding:0;display:flex}:root[data-skin=trace] .kpi b{letter-spacing:-.02em;font-size:23px}:root[data-skin=trace] .kpi b i{margin-left:1px;font-size:.62em}:root[data-skin=trace] .kpi span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.kpiicon{display:none}:root[data-skin=trace] .kpiicon{width:17px;height:17px;fill:var(--ink);flex:none;display:block}:root[data-skin=trace] .kpi span,:root[data-skin=trace] .panel h3,:root[data-skin=trace] footer{text-transform:none;letter-spacing:.01em;font-weight:500}:root[data-skin=trace] .panel h3{border-bottom-color:#0000}:root[data-skin=trace] .kpi b i{color:var(--mut)}:root[data-skin=trace] .bars i{border-radius:3px}:root[data-skin=trace] header{border-bottom-color:var(--line)}:root[data-skin=trace] .pin{border-color:var(--panel)}:root[data-skin=trace] .skins button,:root[data-skin=trace] .sharehdr{text-transform:none;letter-spacing:.01em}.skins button{align-items:center;gap:5px;padding:9px 11px;display:inline-flex}.pol{border:1.5px solid;border-radius:50%;flex:none;width:6px;height:6px}.pol[data-pol=dark]{background:currentColor}.row.unmapped .nm,.row.unmapped .tk{color:var(--mut)}.mark[data-unmapped]{border:2px dashed var(--mut);opacity:.7;background:0 0}.demobar{border:1px solid var(--accent);border-radius:var(--radius);font-family:var(--f-body);color:var(--body);align-items:center;gap:12px;margin-bottom:18px;padding:10px 16px;font-size:13px;display:flex}.demobar b{color:var(--accent)}.demobar button{cursor:pointer;border:1px solid var(--line);color:var(--mut);font-family:var(--f-data);letter-spacing:.1em;text-transform:uppercase;background:0 0;border-radius:999px;margin-left:auto;padding:5px 12px;font-size:10.5px}.demobar button:hover{color:var(--ink);border-color:var(--ink)}.connbox{width:min(460px,100%)}.cmdrow{border:1px solid var(--line);background:var(--bg);border-radius:8px;align-items:stretch;gap:8px;display:flex}.cmd{white-space:nowrap;min-width:0;font-family:var(--f-data);color:var(--ink);flex:1;padding:11px 12px;font-size:11.5px;overflow-x:auto}.cmdcopy{cursor:pointer;border:0;border-left:1px solid var(--line);color:var(--mut);font-family:var(--f-data);letter-spacing:.1em;text-transform:uppercase;background:0 0;flex:none;padding:0 14px;font-size:10.5px}.cmdcopy:hover{color:var(--ink)}.steps{flex-direction:column;gap:12px;list-style:none;display:flex}.steps li{align-items:flex-start;gap:11px;display:flex}.stepn{border:1px solid var(--line);width:20px;height:20px;color:var(--mut);font:600 10.5px/18px var(--f-data);text-align:center;border-radius:999px;flex:none}.steps li[data-done] .stepn{border-color:var(--accent);color:var(--accent)}.stepl{font-family:var(--f-body);color:var(--body);flex-direction:column;gap:3px;font-size:13px;display:flex}.steps li[data-done] .stepl{color:var(--mut)}.stepl code{font-family:var(--f-data);color:var(--mut);font-size:11px}.waiting{font-family:var(--f-data);color:var(--mut);letter-spacing:.04em;font-size:11px}
