/* JAM — афиша. Цвета и тени берутся только из tokens.css. */
@font-face{font-family:Unb;font-weight:700;font-display:swap;src:url(/assets/fonts/Unbounded.woff2) format('woff2')}
@font-face{font-family:One;font-weight:400 700;font-display:swap;src:url(/assets/fonts/Onest.woff2) format('woff2')}
@font-face{font-family:Man;font-weight:500 800;font-display:swap;src:url(/assets/fonts/Manrope.woff2) format('woff2')}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
button{border:0;background:none;font:inherit;color:inherit;cursor:pointer}
html,body{background:var(--bg)}
body{font-family:One,system-ui,sans-serif;color:var(--ink);overscroll-behavior-y:none;
 padding-bottom:calc(24px + env(safe-area-inset-bottom))}

/* ── шапка ───────────────────────────────────────────────────────────────── */
.head{position:relative;z-index:2;height:calc(150px + env(safe-area-inset-top))}
.headbg{position:absolute;left:0;top:0;width:100%;
 height:calc(230px + env(safe-area-inset-top));z-index:1;pointer-events:none}
.htxt{position:relative;z-index:3;padding:calc(14px + env(safe-area-inset-top)) 20px 0}
.brand{display:flex;align-items:center;justify-content:space-between}
.wmbox{display:block;height:38px}
.wmbox svg{display:block;height:38px;width:auto}
.city{font-family:Man;font-weight:800;font-size:10px;letter-spacing:2.2px;color:#fff;
 text-shadow:0 1px 6px var(--tsh)}
.sub{display:inline-block;font-family:Man;font-size:11px;font-weight:800;letter-spacing:1.5px;
 margin-top:15px;color:#fff;text-shadow:0 1px 6px var(--tsh)}

/* ── дни ─────────────────────────────────────────────────────────────────── */
.chips{display:flex;gap:8px;padding:12px 14px 6px;position:relative;z-index:4;
 overflow-x:auto;scrollbar-width:none;
 -webkit-mask-image:linear-gradient(90deg,#000 0,#000 88%,transparent 100%);
 mask-image:linear-gradient(90deg,#000 0,#000 88%,transparent 100%)}
.chips::-webkit-scrollbar{display:none}
.chip{position:relative;flex:0 0 54px;height:61px;border-radius:18px;display:flex;
 flex-direction:column;align-items:center;justify-content:center;background:var(--chip);
 box-shadow:0 4px 12px var(--chsh);border:1px solid var(--bord);scroll-snap-align:start}
.chip svg{position:absolute;inset:0;width:100%;height:100%}
.chip b{font-family:Man;font-size:10px;font-weight:800;letter-spacing:1px;color:var(--mut);
 position:relative;z-index:2}
.chip i{font-family:Unb;font-style:normal;font-weight:700;font-size:19px;color:var(--ink);
 position:relative;z-index:2}
.chip.on b,.chip.on i{color:#fff;text-shadow:0 1px 6px var(--tsh)}
.chip.empty b,.chip.empty i{opacity:.42}

/* ── лента ───────────────────────────────────────────────────────────────── */
.list{padding:6px 14px 0;display:flex;flex-direction:column;gap:8px;position:relative;z-index:3}
.card .in{background:var(--card);border-radius:20px;padding:11px 16px 10px;
 box-shadow:0 8px 22px var(--csh);border:1px solid var(--bord)}
.card.hero .in{box-shadow:0 12px 30px var(--cshh)}
.card.past .in{opacity:.5}
.row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tm{font-family:Unb;font-weight:700;font-size:27px;color:var(--acc);letter-spacing:-.5px}
.card.hero .tm{font-size:30px}
.ds{font-family:Unb;font-weight:700;font-size:17px;white-space:nowrap;color:var(--ink)}
.nm{font-family:One;font-weight:700;font-size:16px;color:var(--ink);margin-top:6px}
/* в таблице попадаются описания вместо точки сбора — режем по двум строкам */
.pl{font-family:Man;font-size:12px;font-weight:500;color:var(--mut);margin-top:2px;
 display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.au{display:flex;align-items:center;gap:6px;margin-top:5px;flex-wrap:wrap}
.au svg{flex:0 0 auto}
.aut{font-family:Man;font-size:11px;font-weight:700;color:var(--acc2)}
.sep{width:1px;height:12px;background:var(--sep)}
.fm{font-family:Man;font-size:9px;font-weight:800;letter-spacing:.7px;color:var(--tag-ink);
 background:var(--tag-bg);padding:4px 7px;border-radius:8px;white-space:nowrap}
.fm.free{background:var(--acid-bg);color:var(--acid-ink)}
.fm.warn{background:transparent;color:var(--mut);box-shadow:inset 0 0 0 1px var(--sep)}
.bt{margin-top:8px}
.go{position:relative;width:104px;height:44px;display:flex;align-items:center;justify-content:center;
 flex:0 0 auto;transition:transform .12s ease}
.go:active{transform:scale(.95)}
.go svg{position:absolute;inset:0;width:100%;height:100%}
.go span{position:relative;z-index:2;font-family:Man;font-size:13px;font-weight:800;
 letter-spacing:.4px;color:#fff;text-shadow:0 1px 5px var(--tsh)}
.go.off svg{display:none}
.go.off{border-radius:22px;box-shadow:inset 0 0 0 1.5px var(--sep)}
.go.off span{color:var(--mut);text-shadow:none}
.cnt{font-family:Man;font-size:12px;font-weight:800;color:var(--mut);white-space:nowrap}
.cnt.zero{font-weight:600;font-size:11px;opacity:.72;white-space:normal;text-align:right}
.cnt b{font-family:Unb;font-weight:700;font-size:19px;color:var(--acc);margin-right:3px}

/* сеть площадок («5 вёрст») — одна карточка вместо полусотни */
.more{width:100%;margin-top:8px;height:40px;border-radius:14px;background:var(--tag-bg);
 color:var(--tag-ink);font-family:Man;font-size:12px;font-weight:800;letter-spacing:.3px}
.more:active{opacity:.8}

/* ── пусто и скелетоны ───────────────────────────────────────────────────── */
.empty-day{padding:44px 24px;text-align:center;color:var(--mut);font-family:Man;
 font-size:14px;font-weight:700;line-height:1.5}
.sk{height:118px;border-radius:20px;background:var(--skel);animation:pulse 1.1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.45}}

/* ── шторка площадок ─────────────────────────────────────────────────────── */
.sheet{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end}
.sheet[hidden]{display:none}   /* display:flex перебивает hidden — иначе шторка ловит все тапы */
.sheet-bg{position:absolute;inset:0;background:rgba(8,8,12,.5)}
.sheet-card{position:relative;width:100%;max-height:86vh;background:var(--card);
 border-radius:24px 24px 0 0;padding:8px 16px calc(18px + env(safe-area-inset-bottom));
 display:flex;flex-direction:column;animation:up .22s ease}
@keyframes up{from{transform:translateY(14px);opacity:.6}}
.grab{width:38px;height:4px;border-radius:3px;background:var(--sep);margin:2px auto 10px}
.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.sheet-head b{font-family:Unb;font-weight:700;font-size:17px}
.x{font-size:16px;color:var(--mut);padding:4px 6px}
.search{width:100%;height:42px;border-radius:14px;border:1px solid var(--sep);background:transparent;
 padding:0 14px;font-family:Man;font-size:14px;font-weight:600;color:var(--ink);margin-bottom:8px}
.search::placeholder{color:var(--mut)}
.sheet-list{overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.venue{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 4px;
 border-bottom:1px solid var(--sep)}
.venue b{font-family:One;font-weight:700;font-size:15px}
.venue span{display:block;font-family:Man;font-size:11px;font-weight:600;color:var(--mut);margin-top:2px}
.venue .go{width:88px;height:38px}
.venue .go span{color:#fff;font-size:12px;margin:0}
.venue .go.off span{color:var(--mut)}

.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);
 z-index:60;background:var(--card);color:var(--ink);border-radius:14px;padding:10px 16px;
 font-family:Man;font-size:13px;font-weight:700;box-shadow:0 10px 26px var(--csh);
 border:1px solid var(--bord);animation:up .18s ease}
