/* ===== Full-page crossfade deck ===== */
body.deck.deck-ready{overflow:hidden;height:100vh}
body.deck.deck-ready .dots{display:none!important}
body.deck.deck-ready .prog{display:none}
.deck-ready .slide{
  position:fixed;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:stretch;padding:98px 0 30px;
  opacity:0;pointer-events:none;transform:scale(1.03);filter:blur(5px);z-index:1;visibility:hidden;
  overflow-y:auto;overscroll-behavior:contain;
  transition:none; /* instant on first paint — no fade-from-1 flash on load */
}
/* IDs like #hero/#final set position:relative — force every slide to be a fixed overlay */
.deck-ready .slide{position:fixed!important;inset:0!important}
.deck-ready .slide.active{opacity:1;pointer-events:auto;transform:none;filter:none;z-index:5;visibility:visible}
/* crossfade transitions only kick in AFTER the deck has settled (deck-anim added a frame later) */
.deck-anim .slide{transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1),filter .7s ease,visibility 0s linear .8s}
.deck-anim .slide.active{transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1),filter .7s ease,visibility 0s linear 0s}
.deck-ready .slide.scrollable{justify-content:flex-start;padding-top:104px;padding-bottom:52px}
/* keep multi-column sections as grids inside the deck (image left / text right) */
.deck-ready .slide.split{display:grid;align-content:center;align-items:center}
.deck-ready .slide.stats{display:grid;grid-template-columns:repeat(3,1fr);align-content:center;align-items:center;text-align:center}
@media(max-width:680px){.deck-ready .slide.stats{grid-template-columns:1fr}}
.deck-ready .slide.two{display:grid;align-content:center;align-items:center}
/* keep single-column statement/quote sections centered horizontally */
.deck-ready .slide.epic,.deck-ready .slide.pull,.deck-ready .slide.who{align-items:center;text-align:center}
.deck-ready .slide.epic .c,.deck-ready .slide.pull>*{margin-left:auto;margin-right:auto}
.deck-ready .slide::-webkit-scrollbar{width:0}
/* reveal content based on the ACTIVE slide, not scroll position — prevents blank slides */
.deck-ready .slide .reveal{opacity:0;transform:translateY(40px)}
.deck-ready .slide.active .reveal{opacity:1;transform:none}
/* footer as a full-screen slide */
.deck-ready footer.slide{border-top:none;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.deck-ready footer.slide a{color:var(--muted);transition:color .3s}
.deck-ready footer.slide a:hover{color:var(--accent)}
/* deck dots */
.deck-dots{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:120;display:flex;flex-direction:column;gap:14px}
.deck-dot{width:9px;height:9px;border-radius:50%;border:1px solid rgba(237,235,230,.35);background:transparent;transition:all .3s;cursor:none;padding:0}
.deck-dot:hover{border-color:var(--accent);transform:scale(1.3)}
.deck-dot.on{background:var(--accent);border-color:var(--accent);box-shadow:0 0 12px var(--accent)}
@media(max-width:820px){.deck-dots{right:12px;gap:11px}}
@media(pointer:coarse){.deck-dots{display:none}}
