/* Latimont design tokens — the family vocabulary, ported from Criteria
   (broker-platform tokens.css) minus the flow/breath machinery.
   The field is candle-temperature, not lab-clinical: the warmth of a room
   lit by a low source you can't quite locate. Parchment / raw silk. */

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 300 500;
  font-display: swap;
  src: url("/fonts/inter-latin.woff2") format("woff2");
}

:root {
  /* ── Field ── */
  --bg: #F3F0EE;
  --card-bg: #FFFFFF;

  /* ── Ink — warm near-black, never pure neutral: the ink matches the
        candle-temperature field (#111 on parchment read clinical) ── */
  --text: #211D19;
  --text-secondary: #5C554E;
  --text-tertiary: #9D958C;
  --text-muted: #BEB6AD;

  /* ── Hairlines ── */
  --border: #E0E0E0;
  --border-light: #EBEBEB;
  --border-faint: #F2F2F2;

  /* ── Warm accents — where the hand touches the field ── */
  --input-rule: #B8AC92;
  --input-rule-focus: #8A7E63;
  --input-rule-tint: rgba(184, 172, 146, 0.08);
  --input-rule-tint-selected: rgba(184, 172, 146, 0.18); /* the settled record's wash — the same sand, stated (the chosen chip left it 2026-07-30) */
  /* ── The settled ground's edge — the ONE dial for every resting settled
        container on the buyer surface (the confirmed record's snapshot, the
        checks station's completed leg). A settled container is a RESTING state
        and its edge is a boundary you can find but never notice: it sits BELOW
        the family's own sand rule, softer than any edge a writing ground wears
        (2026-07-27, George on his screen, three passes — the deep edge read
        stark, and even the plain sand rule still read as a drawn line around
        the block; the shape is meant to be stated by the wash, the edge only
        to close it). Held as its own token rather than aliased to any input
        edge, so the settled containers stay one uniform family and dial from
        one line. The chosen chip/tap was the third tenant
        until 2026-07-30, when the wash-and-settled-edge reading was superseded
        for the options alone: a chosen answer now states itself with the
        family's ink on its edge and the fact's weight, nothing filled (see
        buyer.css .chip--selected). The two record tenants here are unchanged.
        THE LADDER, darkest first, for reverting: #8A7E63
        (= var(--input-rule-focus), the original stark edge), #A1957A,
        #B8AC92 (= var(--input-rule), the family's sand rule), #CFC8BC. Change
        this one line and nothing else. ── */
  --ground-settled-edge: #CFC8BC;
  /* ── The settled ground's horizontal interior — the ONE dial for how far both
        settled containers reach outside the reading column. Their contents sit
        ON the page's axis (load-bearing on the checks station, where the settled
        sentence must align with the live act name in the same register), so the
        interior IS the bleed: the outer edge lands at this value plus the edge's
        own pixel outside the column, and the box is that much wider on each
        side. Raise it to widen both, lower it to bring both in; nothing else
        moves and the axis holds either way. Vertical interior is NOT this — it
        stays at --space-3, set by the ledger's own row rhythm. Was --space-3
        (2026-07-27); pulled to --space-2 the same day, George: too wide. ── */
  --ground-settled-inset: var(--space-2);
  --bind-rule: var(--text-tertiary);   /* the person-bind stroke — ink, not sand: it joins the chevron/underline/X family, never the field-edge material */
  --plane-bg: #FAF7F2;          /* lifted warm plane — suggestion lists */
  --plane-border: #E6E1D8;
  /* ── RETIRED 2026-07-28 (George): --action-bg / --action-bg-hover /
        --action-fg, the warm-graphite fill and its near-white ink. The filled
        action is gone from the buyer journey: every .action now wears the share
        election's act material — --input-rule edge, transparent ground, --text
        ink — so the commit act is separated from an answer ground by FORM
        (centred, weight-medium) rather than by material. Nothing stands in
        their place; the three tokens had one consumer (buyer.css .action) and
        no other surface referenced them. ── */

  /* ── Semantic — data verdicts ONLY, never decoration ── */
  --accept-fg: #1a7a3a; --accept-bg: #f0f9f2;
  --decline-fg: #c43333; --decline-bg: #fdf2f2;
  --refer-fg: #946b00; --refer-bg: #fdf8ec;

  /* ── Type scale — 6 sizes, ~1.2 ratio ── */
  --text-display: clamp(2rem, 1vw + 1.7rem, 2.5rem);
  --text-title:   clamp(1.0625rem, 0.5vw + 0.85rem, 1.25rem);
  --text-body:    1rem;
  --text-small:   0.8125rem;
  --text-micro:   0.6875rem;
  --text-legal:   0.625rem;

  /* ── Weight discipline — 3 weights; weight carries hierarchy, not size ── */
  --weight-light: 300;
  --weight-regular: 400;
  --weight-medium: 500;

  /* ── Letter-spacing per role ── */
  --tracking-display: -0.015em;
  --tracking-tight: -0.005em;
  --tracking-normal: 0.01em;
  --tracking-loose: 0.02em;
  --tracking-caps: 0.06em;

  /* ── Spacing — 6 steps, 8px base ── */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 16px;
  --space-4: 24px;
  --space-5: 40px;   /* concept break */
  --space-6: 64px;   /* moment-to-breathe */

  /* ── Motion ── */
  --motion-quick: 0.15s ease;
  --motion-state: 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  --motion-pulse-duration: 2s;

  /* ── Attention recession — everything not in the light ── */
  --recede-opacity: 0.35;
  --recede-blur: 0.5px;

  /* ── Layout ── */
  --content-max: 640px;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --motion-quick: 0s;
    --motion-state: 0s;
  }
}
