/* Grayscale antialiasing across the brand — the script and the display serif both
   render noticeably finer with it, which is the weight the artwork has. */
html, body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* Type scale. Two voices carry almost everything:
   a light high-contrast display serif, and a widely tracked uppercase sans.
   The script face is an accent only — never a paragraph, never a button. */

:root {
  --text-3xs: 0.625rem;   /* 10px — micro tracked labels */
  --text-2xs: 0.6875rem;  /* 11px — the @handle lockup */
  --text-xs: 0.75rem;     /* 12px — tracked eyebrows, tile captions */
  --text-sm: 0.875rem;    /* 14px — captions, fine print */
  --text-base: 1rem;      /* 16px — body */
  --text-md: 1.125rem;    /* 18px — lead paragraph */
  --text-lg: 1.375rem;    /* 22px — small display */
  --text-xl: 1.75rem;     /* 28px */
  --text-2xl: 2.25rem;    /* 36px */
  --text-3xl: 3rem;       /* 48px */
  --text-4xl: 4rem;       /* 64px — post headline */
  --text-5xl: 5.5rem;     /* 88px — hero */

  /* Leading runs tight throughout. Nothing here is airy — the brand's own artwork
     sets display type below 1.1 and body copy at 1.45. */
  --leading-tight: 0.98;
  --leading-display: 1.06;
  --leading-snug: 1.22;
  --leading-body: 1.45;
  --leading-loose: 1.6;

  --weight-light: 300;
  /* The brand never sets type bold. 300 is the working weight; 400 is the ceiling. */
  --weight-display: 300;  /* The Seasons Light — the weight the artwork uses */
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-bold: 400;  /* deliberately capped — nothing in the brand is heavier */

  /* Tracking is a signature: labels are set very wide, display type is not */
  --tracking-display: -0.01em;
  --tracking-normal: 0;
  --tracking-wide: 0.08em;
  --tracking-wider: 0.16em;
  --tracking-widest: 0.28em;
  --tracking-handle: 0.34em;

  /* ---- Semantic roles ---- */
  --type-hero-family: var(--font-display);
  --type-hero-size: var(--text-5xl);
  --type-hero-weight: var(--weight-display);
  --type-hero-leading: var(--leading-tight);

  --type-display-family: var(--font-display);
  --type-display-size: var(--text-4xl);
  --type-display-weight: var(--weight-display);

  --type-script-family: var(--font-script);

  --type-eyebrow-family: var(--font-sans);
  --type-eyebrow-size: var(--text-xs);
  --type-eyebrow-tracking: var(--tracking-widest);
  --type-eyebrow-transform: uppercase;

  --type-body-family: var(--font-sans);
  --type-body-size: var(--text-base);
  --type-body-leading: var(--leading-body);

  --type-label-family: var(--font-sans);
  --type-label-size: var(--text-xs);
  --type-label-tracking: var(--tracking-wider);
}
