/**
 * System scale. Deliberately brand-free - colour and font seeds live in
 * css/brand/. Swap a preset and every measurement here is identical.
 */
:root {
  /* Type scale. STATIC, not fluid - and that is the whole point of this
     comment, because a `clamp(..., ...vw, ...)` scale is the obvious thing to
     write here and it is wrong for a Reveal deck.
     A slide is laid out in a FIXED 960x700 box which Reveal then scales to
     the window with a CSS transform, so a viewport-relative font size does
     not adapt to anything - it changes the type's size RELATIVE TO THE SLIDE
     as the window grows, on top of the scale transform that was already
     handling the window. Measured with the fluid version this file used to
     ship: --step-4 resolved to 64.6px in a 780px window and 88px at 1280px
     and above, a 36% swing against a layout box that never changed size, and
     the stat-wall's "1,250ms" overflowed its own column by 72px at every
     width from 1280 up while looking perfect on a narrower laptop. That is
     the "fine on my machine, broken in the room" failure this template
     exists to avoid. Same reasoning as --slide-h below, for size instead of
     height. */
  --step-0: 1.1rem;
  --step-1: 1.6rem;
  --step-2: 2.4rem;
  --step-3: 3.6rem;
  --step-4: 5.5rem;

  /* The height of a slide in Reveal's own coordinates (js/main.js leaves the
     default 960x700). Use this, never `vh`, to size anything against slide
     height: Reveal lays every slide out in this fixed box and then scales the
     whole box to the window with a CSS transform, so `vh` resolves against
     the window BEFORE that scale - a vh-sized box grows relative to
     everything around it as the window grows. */
  --slide-h: 700px;

  /* space */
  --space-1: 0.35rem;
  --space-2: 0.7rem;
  --space-3: 1.2rem;
  --space-4: 2rem;
  --space-5: 3.2rem;

  /* The breathing room every layout keeps between its content and the slide's
     own edge. Reveal gives a <section> no padding of its own, so without this
     a grid layout's first tile starts at the exact pixel the slide starts -
     measured before this existed, bento's tiles began at x=0 and its heading
     sat at y=0 with no headroom at all. Declared once here so the four
     layouts cannot drift apart, and safe to take out of the box rather than
     add to it because css/theme.css puts slide content in border-box. */
  --slide-pad: 2.2rem;

  /* Hover to speak to one row: how much a hovered flip strip
     (css/reveal-modes.css) or table row (css/layouts/table.css) grows, and
     how far the other rows fade. A full-width row outgrows the slide's side
     padding past about 1.08, so at larger values its ends run to (and in wide
     mode past) the screen edges. */
  --row-hover-grow: 1.1;
  --row-hover-dim: 0.45;

  /* motion */
  --dur-fast: 180ms;
  --dur-slow: 520ms;
  --dur-stagger: 110ms;   /* per card, a data-together="cascade" row */
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}
