/* The Gilded Chamber: Phones mode privacy, lobby QR, the card-gallery carousel and the one screen fade (loaded last).
   The only things that move here animate opacity and transform, run once per real change, and are off under
   prefers-reduced-motion and the host's Animations switch (html.fx-off). Nothing is tied to scroll. */

/* ---------------------------------------------------------------- hold to reveal (Phones mode) */
.hold{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.rcard-tap,.tiles.hold{position:relative}
button.tiles.hold{all:unset;box-sizing:border-box;display:flex;flex-wrap:wrap;gap:var(--s3);justify-content:center;position:relative;cursor:pointer;border-radius:var(--f-r-field);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
button.tiles.hold:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
.hold-chip{position:absolute;left:50%;top:50%;translate:-50% -50%;z-index:2;padding:10px 18px;border-radius:var(--f-r-pill);background:rgba(20,10,3,.86);color:#FFF4DC;border:2px solid #E2B04A;
  font:800 var(--fs-sm)/1 var(--font-ui);letter-spacing:.02em;white-space:nowrap;pointer-events:none}
.center{text-align:center}

/* ---------------------------------------------------------------- lobby QR */
.qr-tap{all:unset;box-sizing:border-box;display:grid;justify-items:center;gap:var(--s2);margin-top:var(--s3);padding:var(--s3);border-radius:var(--f-r-card);background:#fff;color:#1B1410;cursor:pointer;
  font:700 var(--fs-sm)/1.3 var(--font-ui);text-align:center;max-width:100%}
.qr-tap:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.qr-tap.is-static{cursor:default;justify-self:center}
.qr-tap .qr{display:block;width:min(56vw,208px);height:auto}
#qrfs{position:fixed;inset:0;z-index:200;display:grid;place-content:center;justify-items:center;gap:var(--s3);padding:16px;background:#fff;color:#1B1410;cursor:pointer;overscroll-behavior:contain}
#qrfs[hidden]{display:none}
#qrfs .qr{display:block;width:min(88vw,70vh);height:auto}
#qrfs .qr-code{margin:0;font:900 clamp(2rem,10vw,3.5rem)/1 var(--font-display);letter-spacing:.2em;text-indent:.2em}
#qrfs .qr-hint{margin:0;font:600 var(--fs-sm)/1.2 var(--font-ui);color:#5a4a3a}

/* ---------------------------------------------------------------- swipe carousels (scroll-snap) */
.car{display:grid;gap:var(--s2);min-width:0}
.car-track{list-style:none;margin:0;padding:2px 2px var(--s1);display:flex;gap:var(--s3);overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;scroll-padding-inline:2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.car-track::-webkit-scrollbar{display:none}
.car-track:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:var(--f-r-field)}
.car-slide{flex:0 0 82%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always}
.car-dots{display:flex;justify-content:center;gap:0}
.car-dot{all:unset;box-sizing:border-box;position:relative;width:28px;height:28px;cursor:pointer;border-radius:var(--f-r-round)}
.car-dot::before{content:"";position:absolute;inset:10px;border-radius:var(--f-r-round);background:var(--candle);opacity:.35;transition:transform var(--t-open) var(--ease-out),opacity var(--t-open) var(--ease-out)}
.car-dot.on::before{opacity:1;transform:scale(1.45)}
.car-dot:focus-visible{outline:3px solid var(--focus)}
/* How to Play steps become cards */
.how.car-track{padding:2px;border:0;background:none;counter-reset:s}
.how .car-slide{display:grid;grid-template-columns:32px 1fr;column-gap:var(--s3);align-content:start;align-items:baseline;padding:var(--s4);border:0;border-radius:var(--f-r-sheet);background:var(--panel);min-height:11rem}
.how .car-slide:first-child{border-top:0}
@media (min-width:720px){.car-slide{flex-basis:46%}.cards .car-slide{flex-basis:28%}}
/* The Cards gallery */
.cards .car-slide{flex-basis:58%}
.gal-card{margin:0;display:grid;gap:var(--s2)}
.gal-card .dcard{display:block;width:100%;height:auto;aspect-ratio:63/88;border-radius:var(--f-r-face);box-shadow:0 4px 8px rgba(0,0,0,.35)}
.gal-card figcaption{display:grid;gap:2px;font-size:var(--fs-sm);line-height:1.35;color:var(--on-fill,var(--candle))}
.gal-card figcaption b{font-family:var(--font-display);font-weight:800;font-size:var(--fs-md)}

/* ---------------------------------------------------------------- one screen fade per real screen change */
@media (prefers-reduced-motion:no-preference){
  #app.screen-in{animation:screen-in var(--t-enter) var(--ease-out) both}
  html.fx-off #app.screen-in{animation:none}
  @keyframes screen-in{from{opacity:0}to{opacity:1}}
}
@media (prefers-reduced-motion:reduce){.car-track{scroll-behavior:auto}.car-dot::before{transition:none}}
html.fx-off .car-dot::before{transition:none}
/* Toast: appears and disappears instantly under reduced motion and the Animations-off switch */
@media (prefers-reduced-motion:reduce){#toast{transition:none}}
html.fx-off #toast,html[data-fxlite] #toast{transition:none}
