/* SHARED·GUIDEDECK (1124) — the shell all nine guide decks sit on. (drafts 2026-09-11,
 * ~/BabyWeeks-inbox/guide-drafts — PICTURES, not code: their hexes are resolved tokens, this
 * file reads the real tokens.) Four parts, one card:
 *
 *   .gd-nav   — "← Back" left · the pager dots (1102 SHARED·PAGERDOTS, composed) centred ·
 *               the deck eyebrow right. ONE line.
 *   .gd-body  — the guide card's type scale: headline (Fraunces 600 · 28/1.15 —
 *               --text-display-sm, the D-739 ladder's top step, the same step 502's
 *               .wkr-headline reads) · standfirst (18/1.55, .wkr-stand's own role
 *               --text-subtitle) · body (16/1.65, .wkr-p's --text-body).
 *   .gd-foot  — 1010 SHARED·PRIMARYCTA (composed, never restated) over the text Skip.
 *   .gd-weeks — the week label, present only where a real week range applies.
 *
 * ⚠️ WEEK-LABEL OWNERSHIP, RULED HERE (the brief's open decision): the type spine is 102
 * HOME·HERO's .wkhero-weeks (Inter 600 / 12 / uppercase / --tracking-14 / --text-secondary),
 * and it STAYS 102's. Check 16 gives the wkhero prefix ONE stylesheet owner, so this file
 * cannot style .wkhero-weeks — and a third file styling it would be exactly the cross-prefix
 * reach-in the 2026-08-25 host-context rule forbids. Composing 102 whole is wrong the same
 * way: a guide card needs the label line, not the hero's numeral, bars and stepper. So this
 * card declares ITS OWN label (.gd-weeks) from the same four tokens — two declarations of one
 * spine, by rule and named here, not by drift. Consolidating both under one shared label atom
 * is 1123-class consolidation work and stays out of this brief. The one divergence from 102's
 * rule is the margin: 102 spaces the label inside the hero's stack (--space-4 0 --space-8);
 * the deck's label sits directly under the nav row (--space-4 0 0).
 *
 * Two deliberate deviations from the draft pictures, both the 440-precedent contrast fix:
 * the back link and the deck eyebrow read --accent-hover, not the drafts' --accent — they are
 * TEXT on the bare ground, where --accent measures 3.41:1 (under the 4.5:1 floor, D-740);
 * --accent-hover clears it at 4.69:1. The dots stay --accent: non-text marks, 3:1 floor.
 */
.gd { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }

/* ── the nav row ─────────────────────────────────────────────────────────────── */
.gd-nav { position: relative; display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-8); padding: var(--space-8) var(--space-20) 0; min-height: var(--dim-24); }
.gd-back { display: inline-flex; align-items: center; background: none; border: 0;
  padding: var(--space-8) 0; margin: 0; cursor: pointer; flex: 0 0 auto;
  font-family: var(--font-label); font-size: var(--text-caption); font-weight: var(--weight-600);
  color: var(--accent-hover); }
.gd-back:active { opacity: 0.72; }
.gd-back:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); }
/* the deck eyebrow — the deck's name, right-aligned. (The ABOVE-HEADLINE label is a different
 * slot — 1123 SHARED·EYEBROW's consolidation; it is not built here.) */
.gd-deck { flex: 0 0 auto; margin-left: auto; font-family: var(--font-label);
  font-size: var(--text-meta); font-weight: var(--weight-700); letter-spacing: var(--tracking-12);
  text-transform: uppercase; color: var(--accent-hover); }
/* dots — 1102 composed, centred across the row's whole width. pointer-events OFF: the dots
 * report position and never navigate (1102's own contract); the deck's swipe is the
 * navigation, so the dot buttons must not eat the swipe's taps. */
.gd-dots { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  pointer-events: none; }

/* ── the body: the guide type scale ──────────────────────────────────────────── */
.gd-body { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0;
  padding: var(--space-4) var(--space-20) 0; }
.gd-weeks { margin: var(--space-4) 0 0; font-family: var(--font-label); font-size: var(--text-meta);
  font-weight: var(--weight-600); letter-spacing: var(--tracking-14); text-transform: uppercase;
  color: var(--text-secondary); }
.gd-hl { margin: var(--space-4) 0 0; font-family: var(--font-display); font-weight: var(--weight-600);
  font-size: var(--text-display-sm); line-height: var(--leading-115); color: var(--text-primary); }
.gd-stand { margin: var(--space-12) 0 var(--space-16); font-family: var(--font-body);
  font-weight: var(--weight-400); font-size: var(--text-subtitle); line-height: var(--leading-155);
  color: var(--text-primary); }
.gd-p { margin: var(--space-8) 0 var(--space-16); font-family: var(--font-body);
  font-size: var(--text-body); line-height: var(--leading-165); color: var(--text-primary); }

/* ── the footer ──────────────────────────────────────────────────────────────── */
.gd-foot { display: flex; flex-direction: column; gap: var(--space-8);
  padding: var(--space-12) var(--space-20) var(--space-16); }
/* 1010 composes the primary door; .lg-cta's own rule carries margin-top --space-24 for its
 * in-flow loggers — the foot's gap owns the rhythm here. HOST-CONTEXT: leads with .gd-foot,
 * so it lives in this file by the 2026-08-25 rule (counted by check 16, like .wkr .tpb). */
.gd-foot .lg-cta { margin-top: 0; }
.gd-skip { background: none; border: 0; padding: var(--space-8) 0; margin: 0; width: 100%;
  cursor: pointer; font-family: var(--font-body); font-size: var(--text-caption);
  font-weight: var(--weight-400); color: var(--text-secondary); text-align: center; }
.gd-skip:active { opacity: 0.72; }
.gd-skip:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); }

/* (Declared at the END of this file on purpose: these two rules set a dot's fill, and the contrast
 * audit reads "nearest preceding background in the file" as the ground for TEXT rules — a dot fill
 * above the text rules would be misread as the ground the deck's text sits on.)
 * ⚠️ GROUND ADAPTATION of the composed part (HOST-CONTEXT: leads with .gd-dots — this file).
 * 1102's inactive dot is --cream-450, measured on the timeline's --surface-card; the deck's
 * nav row sits on the bare --surface-ground, where cream-450 all but vanishes (found in the
 * first render: five of six dots invisible). The draft pictures' own inactive is --cream-600,
 * which reads on both grounds — so the deck's row adapts the composed dots to ITS ground,
 * here, scoped to this row only. 1102's own rule and grounds are untouched. Inactive is --ink-400
 * (a non-text mark, readable on the cream ground); the current dot is the teal accent. */
.gd-dots .pgd-dot { background: var(--ink-400); }
.gd-dots .pgd-dot.on { background: var(--accent); }
