/* deck-18740 Grand Dentistry — whole-composition centering overrides
   Display-standardization pass 2026-11-02 (G5.A2/A4).
   Rule: the ENTIRE meaningful slide composition (inner kicker/title/lead/body/
   comparison columns/cards/roadmap/tiers/notes) centers between the fixed
   GLOBAL masthead and the slide's anchored footer while the whole composition
   fits. Free space is split evenly by two auto margins — one above the slide
   head and the existing one above .slide-foot — so the group is centered and
   the footer stays anchored. When all content is taller than the stage the
   auto margins collapse to zero, the group keeps its natural reachable top
   flow, and the slide scrolls if needed. No font, scale, padding or copy
   shrinking; no dummy spacers. Copy, assets, typography, colors, controls,
   portraiture and footer positions are unchanged; global chrome stays anchored.
   Terra confirmed flags: slides 3 (dispersed comparison columns), 7 (roadmap
   items/owners separated by dead space), 8 (engagement cards stretched).
   Slides 1, 2, 4, 5, 6, 9 pass and are left untouched. */

/* --- Tall-content safety (short desktop stages) ---------------------------
   On short desktop stages (e.g. 1366x768) these three slides' natural
   content height can exceed the fixed stage. Give them the same reachable
   native scroll the deck already uses on tablet/phone and the audit slide,
   so nothing is clipped when the auto margins collapse to zero. The wheel
   handler in deck.js already yields to inner/slide scrolling. Not needed on
   tall stages, where the composition fits and autodistributes the gaps. */
@media (min-width: 901px) {
  .slide-gap,
  .slide-roadmap,
  .slide-engagement {
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
  }
}

/* --- Slide 3 · The Gap ----------------------------------------------------
   The comparison bands (.gap-flow) stretched to fill the whole stage between
   the head and the stats row, leaving large dead space: the flagship column
   pinned its THE RESULT block far away at the bottom while TODAY's six steps
   ended mid-band; the kicker sat frozen at the top. Fix: the flow band and
   its columns size to their content, THE RESULT follows the flagship steps
   with a modest fixed margin, and slide-head + head + band + stats center as
   ONE composition between the masthead and the slide footer via the auto
   margins above the head and above .slide-foot. */
.slide-gap .gap-flow { flex: 0 0 auto; align-items: start; }
.slide-gap .slide-head { margin-top: auto; }
.slide-gap .flow-outcome { margin-top: clamp(12px, 1.6vh, 18px); }

@media (max-width: 900px) {
  /* Below 900px the band is a single column and the outcome sits right after
     the flagship steps; drop the band to its natural stack flow. The head
     auto margin only applies while content is shorter than the stage, so it
     already collapses to zero on tall phone content. */
  .slide-gap .gap-flow { align-items: stretch; }
}

/* --- Short desktop stage (e.g. 1366x768) ----------------------------------
   At laptop heights slide 3's natural content exceeds the fixed stage by a
   small amount. Tighten spacing only (gaps and step paddings — no font, no
   scale change) inside this bounded media so the full composition fits at
   rest at 1366x768 like slides 7 and 8 already do; taller desktops are not
   affected. Spacing-only tightening keeps every word, number and control. */
@media (min-width: 901px) and (max-height: 820px) {
  /* First calibration still overflowed the 1366x768 stage by ~10.5px (slide-foot
     bled 2.5px under the global chrome bar), so pad gaps 7->5 and step bottom
     padding 3->2 close the remaining overflow; still spacing-only. */
  .slide-gap .pad { gap: 5px; padding-bottom: calc(var(--bottom) + 8px); }
  .slide-gap .gap-head > div > p { margin-top: 8px; }
  .slide-gap .flow-label { margin-bottom: 4px; }
  .slide-gap .flow-steps { gap: 3px; }
  .slide-gap .flow-step { padding-bottom: 2px; }
  .slide-gap .flow-step small { margin-top: 0; }
  .slide-gap .flow-outcome { margin-top: 8px; }
  .slide-gap .gap-stats { padding-top: 6px; }
}

/* --- Slide 7 · The Roadmap ------------------------------------------------
   Phase rows (align-items:stretch) stretched to the full stage and pinned
   their GATE + OWNER blocks to the bottom with margin-top:auto, separating
   the day lists from their owners by a large void; the kicker froze at the
   top. Fix: the grid sizes to the tallest phase's content (cross-column
   equal heights preserved by the grid's own stretch), so each phase's gate
   and owner sit just below its list; the head + phases + need strip center
   as one composition via the auto margins above the head and the footer. */
.slide-roadmap .roadmap-grid { flex: 0 0 auto; }
.slide-roadmap .slide-head { margin-top: auto; }

/* --- Slide 8 · The Engagement ---------------------------------------------
   The tier grid (flex:1 1 auto) stretched the three cards to fill the whole
   remaining stage, leaving tall internal voids above the pinned BEST FOR
   note; the kicker froze at the top. Fix: the grid sizes to the tallest
   card's natural content (cards stay equal height across the row), and the
   head + tiers + commercial strip center as one composition via the auto
   margins above the head and .slide-foot. */
.slide-engagement .tiers { flex: 0 0 auto; }
.slide-engagement .slide-head { margin-top: auto; }
