@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Oswald:wght@500;600;700&display=swap');
:root{--bg:#090b0f;--panel:#0e1015;--panel-2:#14171d;--muted:#78808b;--text:#f4f2ef;--red:#f2483e;--red2:#bd312c;--line:#292d34;--fonthead:'Oswald',Impact,'Arial Narrow',sans-serif;--fontmain:'Manrope',Arial,sans-serif}
*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:var(--fontmain)}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.app-shell{height:100dvh;min-height:570px;display:grid;grid-template-columns:minmax(335px,390px) minmax(0,1fr);overflow:hidden}.panel{display:flex;flex-direction:column;z-index:300;background:var(--panel);border-right:1px solid var(--line);min-height:0;box-shadow:14px 0 44px #0006}
.header{padding:30px 28px 26px}.brand{display:flex;align-items:center;gap:13px;width:max-content}.brand-icon{font:700 31px/1 var(--fonthead);letter-spacing:-1.5px}.brand-dot{color:var(--red)}.brand-sub{font:700 9px/1.55 var(--fontmain);letter-spacing:2px;color:#eceeea}.brand-sub span{color:#6d747d;font-size:8px}.project-label{display:flex;align-items:center;gap:8px;color:#a2a7aa;letter-spacing:2px;font-weight:800;font-size:9px;margin-top:51px}.red-line{height:2px;width:23px;background:var(--red)}h1{font:700 clamp(44px,3.3vw,54px)/.98 var(--fonthead);margin:12px 0 13px;letter-spacing:-1.5px;white-space:nowrap}h1 span{color:var(--red)}.title-star{font-family:Arial,sans-serif;font-size:17px;vertical-align:top;margin-left:3px;color:#f5e4cf}.lead{font-size:12px;line-height:1.8;color:#9b9fa7;letter-spacing:.1px;margin:0}.lead em{color:#f1f0ec;font-style:normal}
.stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 28px}.stat{padding:17px 3px 18px;display:flex;flex-direction:column;gap:6px}.stat:not(:last-child){border-right:1px solid var(--line)}.stat:not(:first-child){padding-left:19px}.stat strong{font:600 36px/1 var(--fonthead);font-variant-numeric:tabular-nums}.stat span{font-size:9px;letter-spacing:1.8px;color:#848a93;font-weight:800}.search-block{padding:28px 28px 25px}.search-block label{font-size:10px;letter-spacing:1.8px;font-weight:800;color:#dedfe0;display:block;margin-bottom:13px}.search-wrap{height:48px;border:1px solid #3d414a;background:#171a20;display:flex;align-items:center;gap:11px;padding:0 13px;border-radius:6px;color:#8f969f}.search-wrap:focus-within{border-color:var(--red)}.search-wrap input{width:100%;background:transparent;border:0;outline:none;color:var(--text);font-size:12px;min-width:0}.search-wrap input::placeholder{color:#777d86}.search-wrap input::-webkit-search-cancel-button{display:none}.search-wrap button{border:0;background:none;color:#bcc0c7;font-size:24px;padding:0 3px;line-height:1}.list-head{margin:0 28px 12px;display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:10px;letter-spacing:1.6px}.list-head span:last-child{color:#8e939d}.city-list{overflow-y:auto;min-height:0;flex:1;padding:0 19px 8px 28px;scrollbar-color:#3a3e45 transparent;scrollbar-width:thin}.city-row{display:flex;align-items:center;text-align:left;gap:13px;border:0;border-bottom:1px solid #24272d;background:transparent;width:100%;padding:13px 9px 13px 0;color:var(--text);transition:background .2s,padding .2s}.city-row:hover,.city-row.is-active{background:#1c2027;padding-left:10px}.city-index{font:700 13px/1 var(--fonthead);color:#686f7a;min-width:21px}.city-row .city-name{font-weight:800;font-size:12px;display:block}.city-row .city-desc{font-size:10px;color:#7d858e;display:block;margin-top:4px}.city-row .city-n{margin-left:auto;background:#262b33;min-width:29px;text-align:center;border-radius:3px;padding:6px;font-size:11px;font-weight:800;color:#eceef0}.city-row:hover .city-n,.city-row.is-active .city-n{background:var(--red);color:#fff}.list-empty{padding:24px 10px;font-size:12px;line-height:1.7;color:#858e99}.panel-footer{padding:16px 28px 22px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:9px}.footer-caption{display:flex;align-items:center;font-size:9px;letter-spacing:1.3px;color:#a4aab0;font-weight:800}.pulse-dot{width:6px;height:6px;background:#72bd8e;border-radius:50%;display:inline-block;box-shadow:0 0 10px #72bd8e;margin-right:9px}.panel-footer a{font-weight:800;letter-spacing:1.1px;font-size:10px;color:var(--red)}.panel-footer small{font-size:9px;line-height:1.55;color:#6b747f}
.map-area{position:relative;background:#131820;min-width:0;overflow:hidden}#map{position:absolute;inset:0;background:#101720;z-index:1}.map-vignette{position:absolute;inset:0;z-index:400;pointer-events:none;box-shadow:inset 0 0 160px #02030455}.map-overlay-top{z-index:550;position:absolute;left:30px;right:28px;top:28px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.map-chip{display:flex;align-items:center;gap:8px;border:1px solid #434854b0;background:#13171cd9;padding:11px 16px;border-radius:50px;backdrop-filter:blur(10px);font-size:10px;letter-spacing:1.4px;font-weight:800;color:#d7dce0}.map-chip-dot{height:8px;width:8px;border:2px solid var(--red);background:#ee6b5b;border-radius:50%;box-shadow:0 0 0 3px #f2483e25}.map-button{pointer-events:auto;background:#151a20da;color:white;border:1px solid #3a424b;width:45px;height:45px;border-radius:6px;display:grid;place-items:center}.map-button:hover{background:#252b35}.map-overlay-bottom{position:absolute;z-index:550;pointer-events:none;left:32px;right:32px;bottom:20px;display:flex;justify-content:space-between;gap:20px;font-weight:800;font-size:9px;letter-spacing:1.1px;color:#b8bdc4;text-shadow:0 1px 9px #000}.leaflet-control-attribution{font-family:var(--fontmain);font-size:9px!important;background:#151b22cb!important;color:#a8adb6!important}.leaflet-control-attribution a{color:#bccce6!important}.leaflet-top.leaflet-left{top:auto;bottom:60px;left:23px}.leaflet-bar{border:1px solid #3c4045!important;box-shadow:none!important;border-radius:6px!important;overflow:hidden}.leaflet-bar a{background:#15191ef0!important;color:white!important;border-bottom:1px solid #2e343a!important}.leaflet-bar a:hover{background:#252a31!important}.leaflet-container{font:inherit!important}
/* Custom runner pushpin: real runner graphic above a physical needle */
.bb-pin{position:relative;width:80px;height:103px;filter:drop-shadow(0 6px 5px #000a);transform-origin:center bottom;transition:transform .16s ease}.bb-pin:hover{transform:translateY(-7px) scale(1.07)}.bb-pin__runner-bg{position:absolute;left:8px;top:0;width:66px;height:73px;background:linear-gradient(170deg,#252e34,#0d1014);border:2px solid #ff5c50;border-radius:46% 45% 47% 48%;box-shadow:inset 0 0 0 2px #101216,0 0 0 3px #ff554522;overflow:hidden}.bb-pin__runner{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain;transform:scale(1.17)}.bb-pin__needle{position:absolute;top:69px;left:38px;width:5px;height:30px;background:linear-gradient(90deg,#faeee1,#bbc1c8 70%,#3b4a59);border-radius:3px 3px 2px 2px;box-shadow:0 1px 3px #0008}.bb-pin__needle:after{content:'';position:absolute;top:27px;left:-2px;border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:9px solid #aeb5bc}.bb-pin__count{position:absolute;top:-8px;right:-4px;background:var(--red);color:#fff;min-width:26px;height:26px;padding:0 5px;display:grid;place-items:center;border:2px solid #15191e;border-radius:20px;font:800 12px/1 var(--fontmain)}.bb-pin__halo{position:absolute;top:28px;left:11px;width:60px;height:60px;border:1px solid #f2483e77;border-radius:50%;animation:halo 2.8s ease-out infinite;pointer-events:none}.bb-pin-icon{background:transparent!important;border:none!important}.bb-cluster{width:52px;height:52px;background:#ee4337;border:3px solid #f3cfba;border-radius:50%;display:grid;place-items:center;box-shadow:0 0 0 8px #e83e3422,0 8px 22px #0009;color:#fff;font:800 15px var(--fontmain)}@keyframes halo{from{transform:scale(.5);opacity:1}to{transform:scale(1.65);opacity:0}}
.detail-backdrop{position:absolute;inset:0;z-index:990;background:#0007}.detail{z-index:1000;position:fixed;right:24px;top:50%;width:min(370px,calc(100vw - 48px));max-height:min(80dvh,680px);transform:translate(115%,-50%);transition:transform .32s cubic-bezier(.2,.8,.2,1);background:#11151b;border:1px solid #3d4147;border-radius:7px;box-shadow:0 18px 70px #000a;display:flex;flex-direction:column;padding:26px 26px 22px;overflow:auto}.detail.is-open{transform:translate(0,-50%)}.detail-rule{height:4px;width:59px;background:var(--red);margin-bottom:26px}.detail-close{position:absolute;right:13px;top:13px;border:1px solid #343942;background:#1e2329;color:#e6e9eb;width:32px;height:32px;display:grid;place-items:center;border-radius:4px;font-size:21px}.detail-kicker{font-size:9px;letter-spacing:1.5px;font-weight:800;color:#9fa6ae}.detail h2{font:700 48px/1.05 var(--fonthead);text-transform:uppercase;overflow-wrap:anywhere;margin:11px 0 3px;letter-spacing:-.6px}.detail-region{font-size:11px;color:#8b939d;margin-top:7px}.detail-counter{display:flex;align-items:baseline;gap:9px;color:var(--red);margin:25px 0 23px}.detail-counter span:first-child{font:700 49px/1 var(--fonthead)}.detail-counter span:last-child{font-size:12px;color:#d3d7d9}.detail-caption{border-top:1px solid var(--line);padding-top:18px;letter-spacing:1.4px;font-size:10px;font-weight:800}.detail-members{padding:8px 0 14px;list-style:none;overflow:auto;margin:0;display:flex;gap:8px;flex-wrap:wrap;max-height:38dvh}.detail-members li{border:1px solid #343940;background:#1b2027;padding:9px 12px;font-weight:700;font-size:12px;border-radius:4px;overflow-wrap:anywhere;max-width:100%}.detail-footer{border-top:1px solid var(--line);padding-top:17px;color:#7c8792;font-size:10px;line-height:1.6}.map-failure{position:absolute;z-index:600;top:50%;left:50%;transform:translate(-50%,-50%);max-width:340px;padding:18px;text-align:center;border:1px solid #7d3633;background:#18191e;color:white;font-size:12px}.demo-flag{position:absolute;top:89px;left:30px;z-index:560;background:#efb93f;color:#16130b;font-weight:900;letter-spacing:.7px;border-radius:3px;padding:8px 10px;font-size:9px}.notice{position:fixed;z-index:1200;bottom:28px;left:50%;transform:translate(-50%,140px);background:#1d2229;border:1px solid #4a505a;border-radius:5px;color:#fff;font-size:12px;padding:13px 18px;opacity:0;transition:.2s}.notice.is-visible{transform:translate(-50%,0);opacity:1}.mobile-drawer,.mobile-drawer-toggle{display:none}
@media(max-width:960px){.app-shell{grid-template-columns:315px minmax(0,1fr)}.header{padding:26px 21px 22px}.header h1{font-size:46px}.stats{margin:0 21px}.search-block{padding:25px 21px}.list-head{margin-left:21px;margin-right:21px}.city-list{padding-left:21px}.panel-footer{padding:16px 21px 22px}.detail{right:16px}}
@media(max-width:680px){.app-shell{display:block;height:100dvh;min-height:0}.panel{position:absolute;top:0;left:0;right:0;height:auto;z-index:650;background:linear-gradient(#0d1014e9,#0d1014cf);pointer-events:none;border:0;box-shadow:none}.header{padding:15px 20px 8px}.brand{pointer-events:auto}.brand-icon{font-size:24px}.brand-sub{font-size:8px;line-height:1.4}.brand-sub span{font-size:7px}.project-label{display:none}.header h1{font-size:34px;margin:14px 0 5px}.title-star{font-size:12px}.lead{font-size:10px;line-height:1.5}.stats{margin:9px 20px 0;pointer-events:auto;max-width:340px;background:#12171cb8;border:1px solid #3b4048;border-radius:4px;backdrop-filter:blur(4px)}.stat{padding:9px 10px 9px}.stat:not(:first-child){padding-left:11px}.stat strong{font-size:24px}.stat span{font-size:7px;letter-spacing:1px}.search-block{padding:12px 20px;pointer-events:auto;max-width:430px}.search-block label{display:none}.search-wrap{height:43px;box-shadow:0 2px 9px #0004}.list-head,.city-list,.panel-footer{display:none}.map-area{position:absolute;inset:0}.map-overlay-top{left:auto;right:15px;top:19px}.map-chip{display:none}.map-overlay-bottom{display:none}.leaflet-top.leaflet-left{bottom:100px;left:15px}.leaflet-control-attribution{max-width:230px;text-align:right}.mobile-drawer-toggle{display:flex;align-items:center;justify-content:space-between;position:absolute;bottom:18px;left:15px;right:15px;z-index:800;background:#161a21e8;border:1px solid #4c525a;box-shadow:0 12px 30px #0008;padding:14px 18px;color:white;font-size:12px;font-weight:900;letter-spacing:1.1px;border-radius:5px;backdrop-filter:blur(10px)}.mobile-drawer-toggle span{font-size:21px;line-height:0;transition:transform .2s}.mobile-drawer-toggle[aria-expanded="true"] span{transform:rotate(180deg)}.mobile-drawer{position:absolute;display:block;z-index:790;background:#11151bf2;left:15px;right:15px;bottom:70px;max-height:min(51dvh,420px);border:1px solid #464d56;border-radius:6px;box-shadow:0 0 35px #0009;transform:translateY(25px);visibility:hidden;opacity:0;transition:transform .22s,opacity .22s,visibility .22s;overflow:auto}.mobile-drawer.is-open{transform:translateY(0);visibility:visible;opacity:1}.mobile-drawer-inner{padding:17px}.mobile-head{display:flex;justify-content:space-between;font-size:10px;font-weight:900;letter-spacing:1.5px;padding-bottom:8px;border-bottom:1px solid #383e46}.detail{left:0;right:0;top:auto;bottom:0;width:100%;max-height:min(77dvh,640px);border-radius:15px 15px 0 0;transform:translateY(105%);padding:23px 23px max(24px,env(safe-area-inset-bottom))}.detail.is-open{transform:translateY(0)}.detail h2{font-size:44px}.detail-members{max-height:29dvh}.demo-flag{left:20px;right:20px;top:251px;text-align:center;font-size:8px}.map-failure{top:59%;width:80vw}.bb-pin{transform:scale(.87);transform-origin:center bottom}.bb-pin:hover{transform:scale(.92) translateY(-5px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
