/* The Atlas: the map at /atlas, a room's page at /venue/<slug>, the claimed
 * venue's own page at /atlas/mine, tickets at /tickets.
 *
 * The site's look (aria.css): glass on the drifting red light, Geist, mono
 * labels behind a small light. Each kind of room has its own colour, used for
 * its pin, its row's mark and its filter chip, so two rooms that look alike
 * on the map never read alike (David: things that look alike get a mark that
 * tells them apart).
 */
:root {
  --k-music_venue: #ff2b4a; --k-theatre: #ffb547; --k-club: #b98cff; --k-event_space: #4fd1ff;
  /* Arena was orange beside the theaters' amber, and the two read as one on
     the map; pink tells them apart. */
  --k-arena: #ff6ad5; --k-amphitheater: #4dffa6; --k-festival_ground: #e8ff5a; --k-bar: #9aa3ad;
  --at-panel: rgba(13,13,16,.72);
}
.at { max-width: 1320px; margin: 0 auto; padding: 22px 20px 90px; }
.at_head { display: grid; grid-template-columns: 1fr auto; gap: 18px 28px; align-items: end; padding: 18px 4px 20px; }
.at_head h1 { margin: 10px 0 8px; font-size: clamp(2rem, 4.6vw, 3.3rem); line-height: 1.02; letter-spacing: -.025em; }
.at_head p { margin: 0; color: var(--x-dim); max-width: 62ch; line-height: 1.65; }
.at_crumbs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-family: var(--x-mono); font-size: .72rem;
  letter-spacing: .12em; text-transform: uppercase; color: var(--x-dim2); }
.at_crumbs a { color: var(--x-dim); text-decoration: none; padding: 4px 0; }
.at_crumbs a:hover { color: #fff; }
.at_crumbs span[aria-hidden] { opacity: .5; }
.at_crumbs b { color: var(--x-pink); font-weight: 500; }
.at_find { display: flex; gap: 8px; min-width: min(360px, 100%); }
.at_find input { flex: 1; min-width: 0; padding: 12px 15px; border-radius: 999px; font: inherit; color: #fff;
  background: rgba(0,0,0,.36); border: 1px solid var(--x-line2); }
.at_find input:focus { outline: none; border-color: var(--x-red); }

.at_body { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 16px; align-items: start; }
.at_mapwrap { position: sticky; top: calc(var(--x-hd) + 12px); }
.at_map { position: relative; border-radius: 22px; overflow: hidden; background:
  radial-gradient(120% 90% at 70% 0%, rgba(229,22,54,.10), rgba(229,22,54,0) 60%),
  radial-gradient(90% 80% at 10% 100%, rgba(79,209,255,.06), rgba(79,209,255,0) 60%), #0b0b0e;
  border: 1px solid var(--x-line); box-shadow: 0 30px 80px -40px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.05);
  aspect-ratio: 16 / 11; touch-action: pan-y; }
.at_map svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.at_map .at_noscript { position: absolute; inset: 0; display: grid; place-items: center; color: var(--x-dim2); padding: 30px; text-align: center; }
.js .at_map .at_noscript { display: none; }
.at_vb { transition: none; }
.at_state { fill: rgba(255,255,255,.055); stroke: rgba(255,255,255,.22); stroke-width: .7; vector-effect: non-scaling-stroke;
  cursor: pointer; transition: fill .25s var(--x-ease); }
.at_state:hover, .at_state:focus-visible { fill: rgba(255,43,74,.22); outline: none; }
.at_state.dim { fill: rgba(255,255,255,.025); stroke: rgba(255,255,255,.12); }
.at_county { fill: none; stroke: rgba(255,255,255,.09); stroke-width: .5; vector-effect: non-scaling-stroke; pointer-events: none; }
.at_sec { fill: rgba(255,255,255,.03); stroke: rgba(255,255,255,.3); stroke-width: .9; vector-effect: non-scaling-stroke; cursor: pointer;
  transition: fill .2s var(--x-ease); }
.at_sec:hover, .at_sec:focus-visible, .at_sec.hot { fill: rgba(255,43,74,.16); outline: none; }
.at_sec.empty { cursor: default; fill: rgba(255,255,255,.012); }
.at_secout { fill: none; stroke: var(--x-red); stroke-width: 1.6; vector-effect: non-scaling-stroke; pointer-events: none;
  filter: drop-shadow(0 0 6px rgba(255,43,74,.6)); }
.at_bub { fill: rgba(255,43,74,.82); stroke: #fff; stroke-width: 1.2; vector-effect: non-scaling-stroke; pointer-events: none; }
.at_bubt, .at_cnt { fill: #fff; font-family: var(--x-mono); font-weight: 600; text-anchor: middle; dominant-baseline: central; pointer-events: none;
  paint-order: stroke; stroke: rgba(0,0,0,.55); stroke-width: 3px; }
.at_cnt { fill: rgba(255,255,255,.8); font-weight: 500; }
.at_road { fill: none; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; pointer-events: none; }
.at_road.k1 { stroke: rgba(255,214,170,.42); stroke-width: 1.6; }
.at_road.k2 { stroke: rgba(255,214,170,.32); stroke-width: 1.25; }
.at_road.k3 { stroke: rgba(255,255,255,.2); stroke-width: .95; }
.at_road.k4 { stroke: rgba(255,255,255,.13); stroke-width: .7; }
.at_road.k5 { stroke: rgba(255,255,255,.085); stroke-width: .55; }
.at_pin { cursor: pointer; }
.at_pin .hit { fill: transparent; }
.at_pin .dot { stroke: #0b0b0e; stroke-width: 1.4; vector-effect: non-scaling-stroke; transition: r .15s var(--x-ease); }
.at_pin .ring { fill: none; stroke: #fff; stroke-width: 1.4; vector-effect: non-scaling-stroke; }
.at_pin:hover .dot, .at_pin:focus-visible .dot, .at_pin.hot .dot { stroke: #fff; stroke-width: 2; }
.at_pin:focus-visible { outline: none; }
.at_pin .star { fill: #ffd34d; stroke: #0b0b0e; stroke-width: .8; vector-effect: non-scaling-stroke; }
.at_pin .tag { fill: #fff; }
.at_pin .tagt { fill: #0b0b0e; font-family: var(--x-mono); font-weight: 700; text-anchor: middle; dominant-baseline: central; }

.at_tools { position: absolute; right: 12px; top: 12px; display: flex; flex-direction: column; gap: 6px; z-index: 2; }
.at_tools button { width: 38px; height: 38px; border-radius: 12px; border: 1px solid var(--x-line2); color: #fff; font-size: 1.15rem;
  background: rgba(10,10,13,.78); backdrop-filter: blur(8px); cursor: pointer; display: grid; place-items: center; }
.at_tools button:hover { border-color: var(--x-red); }
.at_tools button[hidden] { display: none; }
.at_legend { position: absolute; left: 12px; bottom: 12px; z-index: 2; display: flex; flex-wrap: wrap; gap: 6px 12px; max-width: calc(100% - 24px);
  padding: 9px 12px; border-radius: 14px; background: rgba(10,10,13,.74); backdrop-filter: blur(8px); border: 1px solid var(--x-line);
  font-size: .74rem; color: var(--x-dim); }
.at_legend span { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.at_legend i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; flex: none; }
.at_legend i.ring { background: transparent; box-shadow: 0 0 0 1.5px #fff inset; }
.at_legend i.star { border-radius: 0; background: #ffd34d; clip-path: polygon(50% 0, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); width: 11px; height: 11px; }
.at_legend i.date { width: 14px; height: 10px; border-radius: 3px; background: #fff; }
.at_status { position: absolute; left: 14px; top: 12px; z-index: 2; margin: 0; padding: 7px 12px; border-radius: 999px; font-size: .78rem;
  color: var(--x-dim); background: rgba(10,10,13,.7); backdrop-filter: blur(8px); border: 1px solid var(--x-line); max-width: calc(100% - 80px);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.at_credit { margin: 14px 4px 0; font-size: .74rem; line-height: 1.6; color: var(--x-dim2); }
.at_credit a { color: var(--x-dim); }

/* The list beside the map. */
.at_list { border-radius: 22px; background: var(--at-panel); border: 1px solid var(--x-line); backdrop-filter: blur(10px);
  padding: 16px; min-height: 200px; }
.at_list h2 { font-size: 1.05rem; margin: 2px 4px 4px; }
.at_list .at_sub { margin: 0 4px 12px; color: var(--x-dim2); font-size: .84rem; line-height: 1.5; }
.at_chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.at_chip { display: inline-flex; align-items: center; gap: 7px; padding: 7px 11px; border-radius: 999px; font-size: .78rem; color: var(--x-dim);
  background: rgba(255,255,255,.04); border: 1px solid var(--x-line); cursor: pointer; font-family: inherit; }
.at_chip i { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.at_chip[aria-pressed="true"] { color: #fff; border-color: rgba(255,255,255,.4); background: rgba(255,255,255,.09); }
.at_chip:hover { color: #fff; }
.at_filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; align-items: center; }
.at_filters select, .at_filters input[type=search] { font: inherit; font-size: .84rem; color: #fff; background: rgba(0,0,0,.34);
  border: 1px solid var(--x-line2); border-radius: 10px; padding: 8px 10px; }
.at_filters input[type=search] { flex: 1; min-width: 140px; }
.at_filters label { display: inline-flex; gap: 6px; align-items: center; font-size: .8rem; color: var(--x-dim); }
.at_rows { display: flex; flex-direction: column; gap: 3px; max-height: min(72vh, 900px); overflow: auto; padding-right: 2px; }
.at_row { display: grid; grid-template-columns: 12px minmax(0, 1fr) auto; gap: 4px 11px; align-items: start; padding: 11px 12px;
  border-radius: 13px; color: inherit; text-decoration: none; background: rgba(255,255,255,.028); border: 1px solid transparent; }
.at_row:hover, .at_row:focus-visible, .at_row.hot { background: rgba(255,255,255,.07); border-color: var(--x-line2); outline: none; }
.at_row .k { width: 10px; height: 10px; border-radius: 50%; margin-top: 6px; }
.at_row .k.ring { box-shadow: 0 0 0 2px #0b0b0e, 0 0 0 3.5px #fff; }
.at_row b { display: block; font-weight: 600; color: #fff; line-height: 1.32; }
.at_row small { display: block; color: var(--x-dim2); font-size: .8rem; margin-top: 3px; line-height: 1.45; }
/* The venue's website, as its host, under the place (2026-10-29). */
.at_row small.at_web { color: var(--x-dim2); font-family: var(--x-mono); font-size: .68rem; letter-spacing: .02em; margin-top: 2px; }
.at_row small.at_web::before { content: '\2197'; margin-right: 5px; opacity: .7; }
.at_row .r { text-align: right; font-family: var(--x-mono); font-size: .74rem; color: var(--x-dim); white-space: nowrap; }
.at_row .r em { display: block; font-style: normal; color: #ffd34d; }
.at_mark { display: inline-flex; align-items: center; gap: 5px; font-family: var(--x-mono); font-size: .62rem; letter-spacing: .12em;
  text-transform: uppercase; padding: 3px 7px; border-radius: 6px; margin: 5px 6px 0 0; }
.at_mark.v { color: #4dffa6; background: rgba(77,255,166,.1); border: 1px solid rgba(77,255,166,.35); }
.at_mark.f { color: #ffd34d; background: rgba(255,211,77,.1); border: 1px solid rgba(255,211,77,.4); }
.at_mark.d { color: #fff; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.25); }
.at_mark.s { color: var(--x-pink); background: rgba(255,43,74,.1); border: 1px solid rgba(255,43,74,.35); }
.at_group { margin: 14px 4px 6px; font-family: var(--x-mono); font-size: .64rem; letter-spacing: .16em; text-transform: uppercase; color: var(--x-dim2); }
.at_group.f { color: #ffd34d; }
.at_more { margin: 10px 4px 2px; color: var(--x-dim2); font-size: .82rem; }
.at_bar { display: flex; height: 5px; border-radius: 3px; overflow: hidden; margin-top: 7px; background: rgba(255,255,255,.05); }
.at_bar i { display: block; height: 100%; }
.at_empty { color: var(--x-dim); line-height: 1.7; padding: 8px 4px; }
.at_terr { margin: 18px 4px 0; color: var(--x-dim2); font-size: .84rem; line-height: 1.7; }
.at_terr a { color: var(--x-dim); }
.at_ev { display: grid; grid-template-columns: 54px minmax(0, 1fr); gap: 11px; align-items: center; padding: 10px 12px; border-radius: 13px;
  background: rgba(255,255,255,.035); text-decoration: none; color: inherit; margin-bottom: 3px; }
.at_ev:hover { background: rgba(255,255,255,.07); }
.at_date { display: grid; place-items: center; border-radius: 10px; background: #fff; color: #0b0b0e; padding: 6px 0; line-height: 1; }
.at_date b { font-size: 1.15rem; font-weight: 700; }
.at_date small { font-family: var(--x-mono); font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; margin-top: 3px; }
.at_ev strong { display: block; color: #fff; line-height: 1.3; }
.at_ev span { display: block; color: var(--x-dim2); font-size: .8rem; margin-top: 3px; }
.at_ev .at_mark { margin-top: 6px; }
.at_reveal { opacity: 0; transform: translateY(8px); transition: opacity .35s var(--x-ease), transform .35s var(--x-ease); }
.at_reveal.in { opacity: 1; transform: none; }

@media (max-width: 980px) {
  .at_body { grid-template-columns: 1fr; }
  .at_mapwrap { position: relative; top: 0; }
  .at_head { grid-template-columns: 1fr; }
  .at_rows { max-height: none; }
}
@media (max-width: 600px) {
  .at { padding: 10px 14px 110px; }
  .at_map { aspect-ratio: 4 / 3.6; border-radius: 18px; }
  .at_legend { font-size: .68rem; gap: 4px 9px; padding: 7px 10px; }
  .at_crumbs { position: sticky; top: calc(var(--x-hd) + 4px); z-index: 5; background: rgba(5,5,6,.86); backdrop-filter: blur(8px);
    padding: 8px 10px; border-radius: 12px; margin: 0 -4px; }
}
@media (prefers-reduced-motion: reduce) {
  .at_reveal { opacity: 1; transform: none; transition: none; }
  .at_state, .at_sec, .at_pin .dot { transition: none; }
}

/* ── A room's page ───────────────────────────────────────────────────── */
.vn { max-width: 1120px; margin: 0 auto; padding: 22px 20px 100px; }
.vn_top { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 18px; align-items: stretch; margin-top: 12px; }
.vn_card { position: relative; border-radius: 24px; overflow: hidden; border: 1px solid var(--x-line); background: #0b0b0e; min-height: 340px;
  display: flex; flex-direction: column; justify-content: flex-end; }
.vn_card img.vn_ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; }
.vn_card::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(5,5,6,.05) 30%, rgba(5,5,6,.92) 100%); }
.vn_card .vn_noph { position: absolute; inset: 0; display: grid; place-items: center; }
.vn_card .vn_noph svg { width: 70%; max-width: 360px; opacity: .9; }
.vn_title { position: relative; z-index: 1; padding: 26px 26px 22px; }
.vn_title h1 { margin: 10px 0 6px; font-size: clamp(2rem, 5vw, 3.1rem); line-height: 1.02; letter-spacing: -.025em; }
.vn_title p { margin: 0; color: var(--x-dim); }
.vn_kind { display: inline-flex; align-items: center; gap: 8px; font-family: var(--x-mono); font-size: .68rem; letter-spacing: .18em;
  text-transform: uppercase; color: #fff; padding: 5px 10px; border-radius: 8px; background: rgba(0,0,0,.45); border: 1px solid var(--x-line2); }
.vn_kind i { width: 8px; height: 8px; border-radius: 50%; }
.vn_credit { position: relative; z-index: 1; margin: 0 26px 14px; font-size: .7rem; color: rgba(255,255,255,.6); line-height: 1.5; }
.vn_credit a { color: rgba(255,255,255,.75); }
.vn_side { display: flex; flex-direction: column; gap: 12px; }
.vn_streets { position: relative; border-radius: 24px; overflow: hidden; border: 1px solid var(--x-line); background: #0b0b0e; flex: 1; min-height: 240px; }
.vn_streets svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.vn_streets .vn_osm { position: absolute; right: 10px; bottom: 8px; font-size: .62rem; color: rgba(255,255,255,.5); z-index: 1; }
.vn_streets .vn_osm a { color: rgba(255,255,255,.66); }
.vn_where { padding: 16px 18px; border-radius: 18px; background: var(--at-panel); border: 1px solid var(--x-line); }
.vn_where b { display: block; color: #fff; }
.vn_where span { display: block; color: var(--x-dim); font-size: .9rem; margin-top: 2px; }
.vn_where .vn_links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.vn_links a { font-size: .84rem; }
.vn_grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 18px; margin-top: 18px; align-items: start; }
.vn_box { border-radius: 22px; background: var(--at-panel); border: 1px solid var(--x-line); padding: 20px 22px; margin-bottom: 18px; }
.vn_box h2 { margin: 0 0 4px; font-size: 1.15rem; }
.vn_box > p.n { margin: 0 0 14px; color: var(--x-dim2); font-size: .88rem; line-height: 1.6; }
.vn_facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
.vn_fact { padding: 12px 14px; border-radius: 14px; background: rgba(255,255,255,.035); }
.vn_fact small { display: block; font-family: var(--x-mono); font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: var(--x-dim2); }
.vn_fact b { display: block; color: #fff; margin-top: 5px; font-weight: 600; line-height: 1.4; word-break: break-word; }
.vn_fact em { display: block; font-style: normal; font-size: .72rem; color: var(--x-dim2); margin-top: 5px; }
.vn_fact em.venue { color: #4dffa6; }
.vn_fact em.ops { color: var(--x-pink); }
.vn_fact.wide { grid-column: 1 / -1; }
.vn_rev { padding: 16px 0; border-top: 1px solid var(--x-line); }
.vn_rev:first-of-type { border-top: 0; }
.vn_rev .who { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; color: #fff; font-weight: 600; }
.vn_rev .who small { color: var(--x-dim2); font-weight: 400; }
.vn_stars { color: #ffd34d; letter-spacing: 2px; font-size: .95rem; }
.vn_rev p { color: #cfcfcf; line-height: 1.75; margin: 8px 0 0; white-space: pre-wrap; }
.vn_rev .tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.vn_rev .tags span { font-size: .74rem; padding: 4px 9px; border-radius: 999px; background: rgba(77,255,166,.08); color: #9ff5c9; border: 1px solid rgba(77,255,166,.22); }
.vn_rev .deal { margin-top: 10px; padding: 10px 12px; border-radius: 12px; background: rgba(255,255,255,.04); font-size: .88rem; color: var(--x-dim); }
.vn_rev .reply { margin-top: 10px; padding: 10px 12px; border-left: 2px solid #4dffa6; background: rgba(77,255,166,.05); border-radius: 0 12px 12px 0; }
.vn_rev .reply b { color: #9ff5c9; font-size: .82rem; }
.vn_rev .acts { display: flex; gap: 14px; margin-top: 8px; font-size: .78rem; }
.vn_rev .acts button { background: none; border: 0; padding: 0; color: var(--x-dim2); cursor: pointer; font: inherit; text-decoration: underline; }
.vn_form { display: grid; gap: 10px; margin-top: 10px; }
.vn_form label { display: grid; gap: 5px; font-size: .84rem; color: var(--x-dim); }
.vn_form input, .vn_form select, .vn_form textarea { font: inherit; color: #fff; background: rgba(0,0,0,.34); border: 1px solid var(--x-line2);
  border-radius: 11px; padding: 10px 12px; }
.vn_form textarea { min-height: 110px; resize: vertical; }
.vn_form .row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.vn_rate { display: flex; gap: 6px; }
.vn_rate button { width: 42px; height: 42px; border-radius: 12px; border: 1px solid var(--x-line2); background: rgba(0,0,0,.3); color: #fff;
  font-size: 1.1rem; cursor: pointer; }
.vn_rate button[aria-pressed="true"] { background: rgba(255,211,77,.18); border-color: #ffd34d; color: #ffd34d; }
.vn_ticks { display: flex; flex-wrap: wrap; gap: 6px; }
.vn_ticks label { display: inline-flex; gap: 6px; align-items: center; padding: 6px 10px; border-radius: 999px; border: 1px solid var(--x-line2);
  font-size: .8rem; cursor: pointer; }
.vn_ticks input { accent-color: #4dffa6; }
.vn_note { font-size: .78rem; color: var(--x-dim2); line-height: 1.6; }
.vn_msg { min-height: 1.2em; font-size: .86rem; color: var(--x-pink); }
.vn_msg.ok { color: #4dffa6; }
.vn_book { padding: 14px 16px; border-radius: 14px; background: rgba(255,255,255,.04); border: 1px dashed var(--x-line2); color: var(--x-dim); line-height: 1.6; }
.vn_show { display: block; padding: 11px 13px; border-radius: 12px; background: rgba(255,255,255,.035); text-decoration: none; color: inherit; margin-bottom: 3px; }
.vn_show b { color: #fff; } .vn_show small { display: block; color: var(--x-dim2); margin-top: 3px; }
.vn_claim { border: 1px solid rgba(77,255,166,.3); background: linear-gradient(160deg, rgba(77,255,166,.08), rgba(77,255,166,0) 60%), var(--at-panel); }
.vn_attr { margin-top: 26px; font-size: .76rem; color: var(--x-dim2); line-height: 1.7; }
.vn_attr a { color: var(--x-dim); }
.vn_views { font-family: var(--x-mono); font-size: .72rem; letter-spacing: .1em; color: var(--x-dim2); margin-top: 10px; }
@media (max-width: 900px) {
  .vn_top, .vn_grid { grid-template-columns: 1fr; }
  .vn_card { min-height: 300px; }
  .vn_streets { min-height: 220px; }
}
@media (max-width: 600px) {
  .vn { padding: 10px 14px 110px; }
  .vn_form .row2 { grid-template-columns: 1fr; }
}

/* ── Tickets ─────────────────────────────────────────────────────────── */
.tk { max-width: 860px; margin: 0 auto; padding: 22px 20px 100px; }
.tk_card { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 18px; align-items: center; padding: 18px; border-radius: 20px;
  background: #fff; color: #0b0b0e; margin-bottom: 12px; }
.tk_card canvas, .tk_card svg { width: 100%; height: auto; display: block; }
.tk_card h3 { margin: 0 0 6px; font-size: 1.15rem; }
.tk_card p { margin: 0; color: #444; font-size: .9rem; line-height: 1.55; }
.tk_card code { display: inline-block; margin-top: 10px; font-family: var(--x-mono); font-size: 1.05rem; letter-spacing: .14em; color: #0b0b0e;
  background: #f0f0f2; padding: 5px 9px; border-radius: 7px; }
.tk_card.used { opacity: .55; }
.tk_door { display: grid; gap: 12px; }
.tk_door video { width: 100%; max-height: 50vh; border-radius: 18px; background: #000; object-fit: cover; }
.tk_door .tk_res { padding: 18px; border-radius: 18px; font-size: 1.1rem; text-align: center; font-weight: 600; }
.tk_door .tk_res.ok { background: rgba(77,255,166,.15); color: #4dffa6; border: 1px solid rgba(77,255,166,.4); }
.tk_door .tk_res.no { background: rgba(255,43,74,.14); color: var(--x-pink); border: 1px solid rgba(255,43,74,.4); }
@media (max-width: 600px) { .tk_card { grid-template-columns: 1fr; } .tk_card canvas, .tk_card svg { max-width: 220px; margin: 0 auto; } }

/* ── Drawn by the page scripts (venue-page.js, atlas-mine.js, tickets-page.js,
 * tickets-door.js): forms that fit a 360px phone, a plain text button, the
 * three ways to claim as cards, the tools as folding sections, the door's big
 * code field and answer. ─────────────────────────────────────────────── */
.vn_form[hidden], .vn_btns[hidden], .vn_ways[hidden], .vn_dates[hidden], .at_bar[hidden], .at_ev[hidden] { display: none; }
.vn_form label, .vn_form input, .vn_form select, .vn_form textarea { min-width: 0; max-width: 100%; }
.vn_form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: 8px; }
.vn_form legend { padding: 0; margin: 0 0 6px; font-size: .84rem; color: var(--x-dim); }
.vn_form legend.vn_group { width: 100%; padding-top: 14px; border-top: 1px solid var(--x-line); font-family: var(--x-mono); font-size: .66rem;
  letter-spacing: .16em; text-transform: uppercase; color: var(--x-dim2); }
.vn_btns { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; }
.vn_linkbtn { background: none; border: 0; padding: 6px 0; color: var(--x-dim); font: inherit; font-size: .88rem; cursor: pointer;
  text-decoration: underline; text-underline-offset: 3px; }
.vn_linkbtn:hover, .vn_linkbtn:focus-visible { color: #fff; }
.vn_linkbtn:disabled { opacity: .6; cursor: default; }
.vn_ways { display: grid; gap: 8px; }
.vn_ways label { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 3px 10px; align-items: start; padding: 12px 14px;
  border-radius: 14px; border: 1px solid var(--x-line2); background: rgba(255,255,255,.03); color: #fff; cursor: pointer; }
.vn_ways label:has(input:checked) { border-color: rgba(77,255,166,.6); background: rgba(77,255,166,.07); }
.vn_ways label.off { opacity: .5; cursor: default; }
.vn_ways input { margin: 3px 0 0; padding: 0; accent-color: #4dffa6; }
.vn_ways small { grid-column: 2; color: var(--x-dim2); font-size: .8rem; line-height: 1.5; }
.vn_code { display: inline-block; font-family: var(--x-mono); font-size: 1.05rem; letter-spacing: .06em; padding: 7px 11px; border-radius: 9px;
  background: rgba(255,255,255,.08); border: 1px solid var(--x-line2); color: #fff; overflow-wrap: anywhere; }
.vn_never { margin: 6px 0 0; padding-left: 1.2em; color: var(--x-dim); font-size: .88rem; line-height: 1.7; }
.vn_tool { border-top: 1px solid var(--x-line); }
.vn_tool > summary { cursor: pointer; padding: 13px 0; color: #fff; font-weight: 600; }
.vn_tool > summary:focus-visible { outline: 2px solid var(--x-red); outline-offset: 2px; border-radius: 6px; }
.vn_tool[open] { padding-bottom: 14px; }
.vn_tool[open] > summary { color: var(--x-pink); }
.vn_inline, .vn_buy { margin-top: 10px; padding: 12px 14px; border-radius: 14px; background: rgba(255,255,255,.03); border: 1px solid var(--x-line); }
.vn_dates { display: grid; gap: 4px; }
.vn_streets .vn_nost { position: absolute; inset: 0; margin: 0; display: grid; place-items: center; padding: 24px; text-align: center;
  color: var(--x-dim2); font-size: .88rem; line-height: 1.6; }
.am_room { padding: 16px 0; border-top: 1px solid var(--x-line); }
.am_room:first-of-type { border-top: 0; padding-top: 6px; }
.tk_door .tk_in { font-family: var(--x-mono); font-size: clamp(1.25rem, 5vw, 1.7rem); letter-spacing: .12em; text-transform: uppercase;
  text-align: center; padding: 14px 12px; }
.tk_door .tk_res b { display: block; font-size: clamp(1.5rem, 6.5vw, 2.3rem); line-height: 1.15; }
.tk_door .tk_res span { display: block; margin-top: 6px; font-size: .9rem; font-weight: 500; opacity: .85; overflow-wrap: anywhere; }
