/* Crucible — harmonic layout tokens. GENERATED by
 * web/tools/harmonic_layout.py. Do not hand-edit: every value here is
 * derived from a ratio and a root measure, and editing one by hand
 * breaks the relationship that makes the rest coherent.
 *
 * The bands are never painted. They are placement attractors: a section
 * or focal point is positioned ON a band, so composition is decided by
 * ratio rather than by eye. You should feel the order without being able
 * to point at a gridline.
 */
:root {
  /* Invisible bands — fractions of the available measure. */
  --tracks-split: minmax(0, 0.381966fr) minmax(0, 0.618034fr);
       /* headline on the golden minor, copy on the major; phi-minor (0.381966), band first */
  --tracks-split-mid: minmax(0, 0.292893fr) minmax(0, 0.707107fr);
       /* narrower canvas: the squarer root-2 rectangle, headline leading; root2 (0.707107), rest first */
  --tracks-split-reverse: minmax(0, 0.447214fr) minmax(0, 0.552786fr);
       /* mirrored section on the root-5 rectangle, copy leading; root5 (0.447214), band first */
  --tracks-split-reverse-mid: minmax(0, 0.75fr) minmax(0, 0.25fr);
       /* narrower canvas: the perfect fourth, copy leading; fourth (0.75), band first */
  --tracks-ledger: minmax(0, 0.666667fr) minmax(0, 0.333333fr);
       /* label column on the perfect fifth, values take the complement; fifth (0.666667), band first */

  /* Spacing — Vignola's module, in whole parti. */
  --space-tight: 4.0px;   /* 2 parti */
  --space-snug: 6.0px;   /* 3 parti */
  --space-base: 12.0px;   /* 6 parti */
  --space-comfortable: 18.0px;   /* 9 parti */
  --space-loose: 24.0px;   /* 12 parti */
  --space-section: 36.0px;   /* 18 parti */
  --space-movement: 60.0px;   /* 30 parti */

  /* Type — one step per distinct size in the sourced role registry. */
  --type-stepn4: 0.6923rem;   /* 9/13 of body1 (Source B) — badge */
  --type-stepn3: 0.7692rem;   /* 10/13 of body1 (Source B) — caption, sectionLabel, statusBar */
  --type-stepn2: 0.8462rem;   /* 11/13 of body1 (Source B) — body2 */
  --type-stepn1: 0.9231rem;   /* 12/13 of body1 (Source B) — button */
  --type-step0: 1.0rem;   /* 13/13 of body1 (Source B) — body1 */
  --type-step1: 1.2308rem;   /* 16/13 of body1 (Source B) — title */
  --type-step2: 1.3846rem;   /* 18/13 of body1 (Source B) — subHeading */
  --type-step3: 1.8462rem;   /* 24/13 of body1 (Source B) — heading */

  /* Roles bind to steps. These were ten hand-written rem
   * constants in tokens.css, unrelated to the ladder beside
   * them; both are now the same system and the ratios between
   * roles are exactly Source B's. */
  --type-heading: var(--type-step3);   /* Source B 24px */
  --type-subheading: var(--type-step2);   /* Source B 18px */
  --type-title: var(--type-step1);   /* Source B 16px */
  --type-body1: var(--type-step0);   /* Source B 13px */
  --type-body2: var(--type-stepn2);   /* Source B 11px */
  --type-caption: var(--type-stepn3);   /* Source B 10px */
  --type-section-label: var(--type-stepn3);   /* Source B 10px */
  --type-button: var(--type-stepn1);   /* Source B 12px */
  --type-badge: var(--type-stepn4);   /* Source B 9px */
  --type-status-bar: var(--type-stepn3);   /* Source B 10px */

  /* Corner radii — whole parti. Source A's 6/10/14 are 3/5/7 parti. */
  --radius-sm: 6px;   /* 3 parti */
  --radius-md: 10px;   /* 5 parti */
  --radius-lg: 14px;   /* 7 parti */

  /* Ordinal spacing. The stylesheets author against this compact scale
   * at 56 call sites; it lived in tokens.css as bare rem constants, so
   * the page was laid out on numbers unrelated to the module while the
   * harmonic scale beside it was consumed by nothing. Same pixels, now
   * expressed as parti of the module. */
  --space-1: var(--space-tight);          /* 2 parti */
  --space-2: var(--space-snug);           /* 3 parti */
  --space-3: var(--space-base);           /* 6 parti */
  --space-4: var(--space-comfortable);    /* 9 parti */
  --space-5: var(--space-loose);          /* 12 parti */
  --space-6: var(--space-section);        /* 18 parti */
  --space-7: var(--space-movement);       /* 30 parti */

  /* Shell — rails and centre by ratio, never by pixel guess. */
  --tracks-shell: minmax(0, 0.225884fr) minmax(0, 0.548232fr) minmax(0, 0.225884fr);
  --measure: 68ch;
  --icon-size: 48px;   /* 2 modules = 24 parti */
}
