@font-face{font-family:Anton;src:url(fonts/anton.woff2) format("woff2");font-display:swap}
@font-face{font-family:Montserrat;src:url(fonts/montserrat.woff2) format("woff2");font-weight:100 900;font-display:swap}
:root{--lime:#c6ff00;--pink:#ff2e88;--cyan:#00e5ff;--bg:#08080a;--grey:#afafb9;--card:#131317;--line:#24242b}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:#fff;font-family:Montserrat,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
body{max-width:640px;margin:0 auto;min-height:100vh;padding-bottom:env(safe-area-inset-bottom)}
a{color:inherit}
.top{padding:18px 18px 8px;display:flex;flex-direction:column;align-items:center;gap:2px}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none}
.brand img{filter:drop-shadow(0 0 8px rgba(198,255,0,.5))}
.word{font-family:Anton,Impact,sans-serif;font-size:30px;letter-spacing:.5px;line-height:1}
.dot{color:var(--lime)}
.tag{margin:4px 0 0;font-weight:700;font-size:13px;letter-spacing:2.5px;text-transform:uppercase;color:var(--pink)}
.label{font-family:Anton,Impact,sans-serif;font-weight:400;font-size:22px;text-align:center;margin:10px 0 10px;letter-spacing:.5px;color:var(--lime)}
#map{height:min(58vh,460px);margin:0 12px;border-radius:18px;border:1px solid var(--line);background:#0d0d10;box-shadow:0 0 0 1px rgba(198,255,0,.08),0 10px 40px rgba(0,0,0,.6)}
.leaflet-container{background:#0d0d10;font-family:Montserrat,sans-serif}
.leaflet-control-attribution{background:rgba(8,8,10,.75)!important;color:#8a8a95!important;font-size:9px}
.leaflet-control-attribution a{color:#b5b5c0!important}
.leaflet-bar a{background:#16161b;color:#fff;border-color:#2a2a31}
.hint{text-align:center;color:var(--grey);font-size:12px;margin:10px 0 4px}
.chips{list-style:none;padding:6px 12px;margin:0;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.chips a{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:999px;border:1.5px solid var(--c,var(--lime));text-decoration:none;font-weight:800;font-size:14px;letter-spacing:.3px;min-height:44px;background:rgba(255,255,255,.02)}
.chips a:hover,.chips a:focus-visible{background:var(--c,var(--lime));color:#08080a;outline:none}
.chips a .n{font-weight:600;color:var(--grey);font-size:12px}
.chips a:hover .n,.chips a:focus-visible .n{color:#08080a}
.chips.small a{padding:8px 12px;font-size:13px;min-height:40px}
.soon{text-align:center;color:#7d7d88;font-size:12px;margin:8px 0 0}
/* pins */
.pin{position:relative;width:22px;height:22px}
.pin i{position:absolute;inset:6px;border-radius:50%;background:var(--c);box-shadow:0 0 10px 3px var(--c),0 0 24px 8px color-mix(in srgb,var(--c) 45%,transparent)}
.pin b{position:absolute;inset:0;border-radius:50%;border:2px solid var(--c);animation:pulse 2.2s ease-out infinite;opacity:0}
.pin span{position:absolute;left:50%;top:22px;transform:translateX(-50%);white-space:nowrap;font:800 11px Montserrat,sans-serif;letter-spacing:1px;text-transform:uppercase;color:#fff;text-shadow:0 0 6px #000,0 0 2px #000}
.pin.l-top span{top:auto;bottom:22px}
.pin.l-left span{left:auto;right:20px;top:50%;transform:translateY(-50%)}
.pin.l-right span{left:20px;top:50%;transform:translateY(-50%)}
#map{background:#0a0a0d}
@keyframes pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.4);opacity:0}}
@media (prefers-reduced-motion:reduce){.pin b{animation:none}}
/* city */
#city{padding:0 14px}
.back{display:inline-block;margin:6px 0 4px;color:var(--grey);text-decoration:none;font-weight:700;font-size:13px;padding:8px 0}
#city-h{font-family:Anton,Impact,sans-serif;font-weight:400;font-size:34px;line-height:1.05;margin:4px 0 4px;letter-spacing:.3px}
#city-h em{font-style:normal;color:var(--c,var(--lime))}
.sub{color:var(--grey);font-size:13px;margin:0 0 14px}
.cards{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;position:relative}
.ph{position:relative;aspect-ratio:4/5;max-height:440px;width:100%;overflow:hidden;background:#000}
.ph img{width:100%;height:100%;object-fit:cover;display:block}
.ph::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(8,8,10,.92) 100%)}
.ph .nm{position:absolute;left:16px;right:16px;bottom:10px;z-index:1}
.nm h2{font-family:Anton,Impact,sans-serif;font-weight:400;font-size:clamp(34px,11vw,54px);line-height:.98;margin:0;text-transform:uppercase;letter-spacing:.5px;word-break:break-word}
.txt{padding:26px 16px 6px;background:radial-gradient(120% 90% at 100% 0%,color-mix(in srgb,var(--c) 22%,transparent),transparent 60%)}
.txt .nm h2{color:#fff}
.txt .nm .bar{width:46px;height:5px;background:var(--c);border-radius:3px;margin-bottom:12px;box-shadow:0 0 12px var(--c)}
.meta{padding:12px 16px 16px}
.when{font-weight:800;font-size:15px;color:var(--c,var(--lime));text-transform:uppercase;letter-spacing:.6px}
.time{font-weight:600;color:#fff;font-size:14px;margin-top:3px}
.venue{font-weight:700;font-size:16px;margin-top:8px}
.note{color:var(--grey);font-size:13.5px;line-height:1.45;margin-top:6px}
.btn{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:12px;font-weight:800;text-decoration:none;letter-spacing:.4px;font-size:15px}
.meta .btn{margin-top:14px;background:var(--c,var(--lime));color:#08080a}
.credit{font-size:10.5px;color:#7d7d88;margin-top:10px}
.credit a{color:#9a9aa5}
.other{margin:26px 0 4px}
.empty{color:var(--grey);text-align:center;padding:30px 0}
.foot{padding:28px 14px 30px;display:grid;gap:10px;margin-top:22px;border-top:1px solid var(--line)}
.btn.news{background:var(--lime);color:#08080a}
.btn.tt{border:1.5px solid var(--pink);color:#fff}
.btn.tt:hover{background:var(--pink)}
.fine{color:#7d7d88;font-size:11px;line-height:1.5;margin:4px 0 0;text-align:center}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
@media (min-width:600px){#city-h{font-size:42px}}

#city-h .rng{white-space:nowrap;color:var(--grey);font-size:.62em}
