/* Base styles for the deck.deal landing page.
   The page scrolls natively and snaps to one slide per screen.
   The page brings its own look; this file only holds the mechanics. */

html {
  scroll-snap-type: y mandatory;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* On small or short screens a slide can be taller than the screen, so snapping only helps. */
@media (max-width: 760px), (max-height: 560px) {
  html { scroll-snap-type: y proximity; }
}

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

body { margin: 0; }

*, *::before, *::after { box-sizing: border-box; }

[data-slide] {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  scroll-snap-align: start;
  scroll-snap-stop: always;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* Headlines split into words by deck.js */
.split .word { display: inline-block; }

/* Accordion panels open with a height animation that never measures. */
.acc-panel {
  display: grid;
  grid-template-rows: 0fr;
}
[data-open] > .acc-panel { grid-template-rows: 1fr; }
.acc-panel > * { min-height: 0; overflow: hidden; }

/* The slide counter stacks old and new numbers while they swap. */
[data-counter-now],
[data-slide-title] { display: inline-grid; }
[data-counter-now] > *,
[data-slide-title] > * { grid-area: 1 / 1; }
