/* ==========================================================================
   Hiraya Dental Group — design tokens
   Source: CLAUDE.md §7 "Design system — LOCKED", derived from the approved
   Horizon H identity. This is an application of a locked system to a new
   medium, not a new system.

   Any deviation needs Raymund's written approval before production.
   ========================================================================== */

:root {

  /* --- Colour: these five, and no others -------------------------------- */

  --charcoal: #292C31;   /* body text · dark sections · footer · focus outline */
  --brass:    #BA9B5A;   /* DECORATIVE ONLY — lines, borders, the horizon rule.
                            Never body text. See §7 and Decision R. */
  --ivory:    #F7F5F0;   /* default page background */
  --white:    #FFFFFF;   /* cards and raised surfaces */
  --stone:    #D8D3C9;   /* dividers · disabled states · subtle fills. Never text */

  /* RETIRED AND NEVER REISSUED: the earlier, lighter champagne value; Neue Haas
     Grotesk; Cormorant Garamond. The retired hex is deliberately not written
     here — any champagne value other than --brass above is from a superseded
     document, whatever it is. The correct brass is #BA9B5A. See CLAUDE.md §7
     for the retired value if you need to identify it. */

  /* No success green. No error red. Errors are charcoal text with an icon. */

  /* --- Semantic assignments --------------------------------------------- */

  --bg:            var(--ivory);
  --bg-raised:     var(--white);
  --bg-inverse:    var(--charcoal);
  --text:          var(--charcoal);
  --text-inverse:  var(--ivory);
  --rule:          var(--brass);    /* the horizon device */
  --border-subtle: var(--stone);
  --focus:         var(--charcoal);

  /* --- Type: Inter only -------------------------------------------------
     Self-hosted, three weights, Latin subset, font-display: swap (§8).
     Never loaded from Google Fonts — that is an undisclosed third-party
     request and fails acceptance criterion 9.
     ---------------------------------------------------------------------- */

  --font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
          Helvetica, Arial, sans-serif;

  /* Fluid between 375px and 1280px viewports, clamped to the §7 endpoints. */

  --size-h1:    clamp(2rem,      1.586rem + 1.768vw, 3rem);      /* 32 → 48 */
  --size-h2:    clamp(1.625rem,  1.418rem + 0.884vw, 2.125rem);  /* 26 → 34 */
  --size-h3:    clamp(1.25rem,   1.146rem + 0.442vw, 1.5rem);    /* 20 → 24 */
  --size-body:  clamp(1.0625rem, 1.037rem + 0.110vw, 1.125rem);  /* 17 → 18 */
  --size-small: clamp(0.9375rem, 0.912rem + 0.110vw, 1rem);      /* 15 → 16 */
  --size-label: 0.8125rem;                                       /* 13, fixed */

  --weight-regular: 400;
  --weight-medium:  500;   /* labels only */
  --weight-semi:    600;   /* headings only */

  --tracking-label: 0.08em;

  --leading-tight: 1.15;   /* headings */
  --leading-body:  1.6;    /* body copy */

  /* --- Spacing: 8px base scale ------------------------------------------ */

  --space-1:  0.5rem;    /*   8 */
  --space-2:  1rem;      /*  16 */
  --space-3:  1.5rem;    /*  24 */
  --space-4:  2rem;      /*  32 */
  --space-5:  3rem;      /*  48 */
  --space-6:  4rem;      /*  64 */
  --space-7:  6rem;      /*  96 */
  --space-8:  8rem;      /* 128 */

  --section-padding: var(--space-6);            /* 64 mobile */
  --content-max:     1280px;
  --text-max:        720px;

  /* --- Lines and shapes -------------------------------------------------- */

  --rule-weight: 1px;
  --radius:      2px;    /* restrained. Not a rounded-card aesthetic */
  --tap-min:     44px;   /* minimum interactive target height */

  /* Prohibited by §7 and deliberately absent: gradients, metallic effects,
     drop shadows, glows, neon, dental iconography of any kind. */
}

@media (min-width: 768px) {
  :root { --section-padding: var(--space-7); }   /* 96 desktop */
}

@media (min-width: 1280px) {
  :root { --section-padding: var(--space-8); }   /* up to 128 */
}
