/* T2 APPLIED: maps the tokens onto the existing selectors (22-t2-applied working copies; copied from 21-spacing). Every rule is scoped to html[data-sp],
   so the 'current' copies (no data-sp) render exactly as the real builds. Spacing only: no colour, type, glow or component change. */
/* ── side gutter (every sheet scroll, the ticket flyer, admin + door screens) ── */
html[data-sp] :is(.scroll, .flyer, .set-list, .list-searchbar, .sort-sheet, .list-top, .list-scroll, .door-screen, .scan-sheet, .mock-kb .kb-in, #door-dash.door-dash, .door-tray) {
  padding-left: var(--sp-gutter) !important; padding-right: var(--sp-gutter) !important; }
html[data-sp] #view-list .list-sort { margin-left: calc(-1 * var(--sp-gutter)) !important; margin-right: calc(-1 * var(--sp-gutter)) !important;
  padding-left: var(--sp-gutter) !important; padding-right: var(--sp-gutter) !important; scroll-padding: 0 var(--sp-gutter) !important; }
html[data-sp] .scroll { padding-bottom: calc(var(--sp-sheet-bottom) + env(safe-area-inset-bottom)) !important; }
html[data-sp] .edge { margin-bottom: var(--sp-edge) !important; }
/* ── RSVP form ── */
html[data-sp] #rsvp-sheet .name { margin-bottom: var(--sp-field) !important; }
html[data-sp] :is(#rsvp-form .field, #rsvp-form .mf) { margin-bottom: var(--sp-field) !important; }
html[data-sp] .names { column-gap: var(--sp-col) !important; }
html[data-sp] #rsvp-form .btn.pri { margin-top: calc(var(--sp-group) - var(--sp-field)) !important; }   /* last field -> button = one group gap */
html[data-sp] #consent { margin-top: var(--sp-helper) !important; }
/* ── quiet links (HELP · CAN'T MAKE IT · LOST TICKET): margin 0, hit area = 44 exactly (was 6px padding: 22 tall on the ticket) ── */
/* Ticket only (Isaiah Oct 28): after Wallet 24/24 the stacked HELP / CAN'T MAKE IT read uneven (text gaps ~16 / 33 / 26).
   Keep the 44 hits touching (between stays ~33). Raise the air above and below with existing --sp-4 (16) so the three text gaps land on T2 (~32 / 33 / 33).
   RSVP's single HELP is unchanged (its own #rsvp-sheet margin-top: 8). */
html[data-sp] #ticket-sheet .links { margin-top: var(--sp-4) !important; }
html[data-sp] #ticket-sheet .ig { padding-top: var(--sp-4) !important; }

html[data-sp] .links .scan-next { margin: 0 auto !important; padding: 0 !important; min-height: var(--sp-hit) !important;
  display: flex !important; align-items: center; justify-content: center; }
html[data-sp] .links { margin-top: 0 !important; }
/* ── IG guest footer: the quiet link's own 44px hit area is the gap above it (17px of air), divider -> row 8, row -> grid 12 ── */
html[data-sp] .ig { margin-top: 0 !important; padding-top: var(--sp-ig-pad) !important; }
html[data-sp] .ig-head { margin-bottom: var(--sp-ig-head) !important; }
html[data-sp] #waitlist-sheet .ig { margin-top: var(--sp-section) !important; }   /* waitlist has no quiet link above its footer */
/* ── ticket + waitlist status block ── */
html[data-sp] .hero { margin: var(--sp-section) 0 var(--sp-2) !important; }
html[data-sp] .hero-box { margin-bottom: var(--sp-3) !important; }
/* .acts margin-top 46 (badge clearance floor) and gap 12 (glow floor) are NOT changed. .tk / .wallet 12 are already on the scale. */
/* ── sheets ── */
html[data-sp] .btn-row { gap: var(--sp-btn-gap) !important; margin-top: var(--sp-btn-top) !important; }
html[data-sp] .osheet ol { margin-bottom: 0 !important; }
html[data-sp] .sheet.small .scan-state { margin-bottom: var(--sp-field) !important; }
/* ── admin + door group gaps (18 -> 16) ── */
html[data-sp] :is(.admin-acts, .scan-acts) { margin-top: var(--sp-group) !important; }
html[data-sp] :is(.pin-field, .door-dash .dash-mid) { margin-bottom: var(--sp-group) !important; }
html[data-sp] :is(.pin-hint, .set-queued) { margin-top: var(--sp-group) !important; }
html[data-sp] .host-head { margin-top: var(--sp-group) !important; }
