/* Skinglow Clinic, design tokens.
   Regine's identity (petrol, cool neutrals, Lufga, Georgia Script, the cell-mesh motif)
   as a modern token set. Every six-digit hex here is in build.py's PALETTE allowlist;
   derived tints are color-mix() of these tokens only. */

@font-face {
  font-family: 'Lufga';
  src: url('/assets/fonts/lufga-light.woff2') format('woff2');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Lufga';
  src: url('/assets/fonts/lufga-light-italic.woff2') format('woff2');
  font-weight: 300;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Lufga';
  src: url('/assets/fonts/lufga-medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Lufga';
  src: url('/assets/fonts/lufga-bold.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Georgia Script';
  src: url('/assets/fonts/georgia-script.otf') format('opentype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  /* Colour roles. --ink is the brand petrol, --ink-body is running text. */
  --ink: #2e435c;
  --ink-hover: #1d2a3a;
  --ink-body: #424242;
  --ink-muted: #8e9094;
  --ink-secondary: var(--ink-body);
  --line: #d5d9de;
  --paper: #ffffff;
  --bg: #f6f7f8;
  --bg-alt: #ebeaea;
  --inverse: #141618;
  --petrol: var(--ink);
  --focus-ring: var(--ink);

  /* Derived, never new hex. */
  --petrol-wash: color-mix(in oklab, var(--ink) 6%, var(--paper));
  --lattice-on-light: color-mix(in oklab, var(--ink) 9%, transparent);
  --lattice-on-dark: color-mix(in oklab, var(--paper) 14%, transparent);
  --line-on-dark: color-mix(in oklab, var(--paper) 22%, transparent);

  /* Surface indirection every component reads. */
  --bg-local: var(--paper);
  --ink-local: var(--ink);
  --text-local: var(--ink-body);
  --label-local: var(--ink);
  --line-local: var(--line);
  --lattice-local: var(--lattice-on-light);
  --btn-local: var(--ink);
  --btn-contrast: var(--paper);

  /* Type. One family, three weights; the script is the signature. */
  --f: 'Lufga', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --f-script: 'Georgia Script', cursive;
  --w-light: 300;
  --w-med: 500;
  --w-bold: 700;

  --fs-mark: clamp(2.75rem, 1.4rem + 6.4vw, 7.25rem);
  --fs-mark-xl: clamp(3.25rem, 2rem + 6vw, 8rem);
  --fs-display: clamp(2.5rem, 1.7rem + 3.4vw, 4.5rem);
  --fs-h2: clamp(1.9375rem, 1.4rem + 2.2vw, 3.125rem);
  --fs-h3: clamp(1.3125rem, 1.15rem + 0.7vw, 1.875rem);
  --fs-lead: clamp(1.1875rem, 1.1rem + 0.5vw, 1.375rem);
  --fs-body: 1.0625rem;
  --fs-small: 0.9375rem;
  --fs-label: 0.75rem;

  /* Legacy names the booking block reads. */
  --fs-title: var(--fs-display);
  --fs-section: var(--fs-h2);
  --fs-sub: var(--fs-h3);
  --fs-quote: var(--fs-lead);

  --lh-display: 1.1;
  --lh-title: 1.1;
  --lh-section: 1.2;
  --lh-sub: 1.35;
  --lh-lead: 1.5;
  --lh-body: 1.625;

  --track-display: -0.02em;
  --track-title: -0.02em;
  --track-section: -0.015em;
  --track-label: 0.18em;
  --track-meta: 0.1em;

  --measure: 46.875rem;
  --measure-prose: 44rem;
  --measure-body: 68ch;
  --measure-lead: 58ch;
  --measure-quote: 46ch;

  /* 8px rhythm. */
  --s1: 0.5rem;
  --s2: 1rem;
  --s3: 1.5rem;
  --s4: 2rem;
  --s5: 2.5rem;
  --s6: 3rem;
  --s7: 4rem;
  --s8: 6rem;
  --s9: 8rem;
  --s10: 10rem;

  --container: 75rem;
  --gutter: clamp(1.25rem, 4vw, 2.5rem);
  --section-y: clamp(4rem, 8vw, 6.5rem);
  --section-y-lg: clamp(5rem, 10vw, 8.75rem);
  --hero-y: clamp(5rem, 12vw, 11rem);
  --col-gap: clamp(2rem, 5vw, 5rem);
  --header-h: 5rem;

  /* Shape: nothing rounds except pills and circles. No shadows anywhere. */
  --radius-sm: 0;
  --radius-md: 0;
  --radius-lg: 0;
  --radius-pill: 100px;
  --radius-circle: 50%;
  --shadow-soft: none;

  --dur: 180ms;
  --dur-2: 320ms;
  --dur-3: 600ms;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);

  --z-lattice: 1;
  --z-content: 2;
  --z-header: 20;
  --z-nav: 30;
  --z-cookie: 40;
  --z-skip: 50;
}

.s-base,
.s-paper {
  --bg-local: var(--paper);
  --ink-local: var(--ink);
  --text-local: var(--ink-body);
  --label-local: var(--ink);
  --line-local: var(--line);
  --lattice-local: var(--lattice-on-light);
  --btn-local: var(--ink);
  --btn-contrast: var(--paper);
}

.s-quiet {
  --bg-local: var(--bg);
  --ink-local: var(--ink);
  --text-local: var(--ink-body);
  --label-local: var(--ink);
  --line-local: var(--line);
  --lattice-local: var(--lattice-on-light);
  --btn-local: var(--ink);
  --btn-contrast: var(--bg);
}

.s-grey {
  --bg-local: var(--bg-alt);
  --ink-local: var(--ink);
  --text-local: var(--ink-body);
  --label-local: var(--ink);
  --line-local: var(--line);
  --lattice-local: var(--lattice-on-light);
  --btn-local: var(--ink);
  --btn-contrast: var(--bg-alt);
}

.s-petrol {
  --bg-local: var(--ink);
  --ink-local: var(--bg);
  --text-local: var(--bg);
  --label-local: var(--bg);
  --line-local: var(--line-on-dark);
  --lattice-local: var(--lattice-on-dark);
  --btn-local: var(--bg);
  --btn-contrast: var(--ink);
  --ink-body: var(--bg);
  --ink-muted: var(--line);
  --ink-secondary: var(--line);
  --line: var(--line-on-dark);
  --focus-ring: var(--bg);
}

.s-inverse {
  --bg-local: var(--inverse);
  --ink-local: var(--paper);
  --text-local: var(--paper);
  --label-local: var(--paper);
  --line-local: var(--line-on-dark);
  --lattice-local: var(--lattice-on-dark);
  --btn-local: var(--paper);
  --btn-contrast: var(--inverse);
  --ink-body: var(--paper);
  --ink-muted: var(--line);
  --ink-secondary: var(--line);
  --line: var(--line-on-dark);
  --focus-ring: var(--paper);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --dur: 0ms;
    --dur-2: 0ms;
    --dur-3: 0ms;
  }
}
