/* Self-hosted brand fonts (woff2, latin). No external font host. */
/* Body/UI */
@font-face{font-family:'Geist';font-style:normal;font-weight:300;font-display:swap;src:url('/assets/fonts/geist-sans-latin-300-normal.woff2') format('woff2')}
@font-face{font-family:'Geist';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/geist-sans-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Geist';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/geist-sans-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Geist';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/geist-sans-latin-600-normal.woff2') format('woff2')}
/* Editorial accent / numbering — Instrument Serif (normal + italic) */
@font-face{font-family:'Instrument Serif';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/instrument-serif-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Instrument Serif';font-style:italic;font-weight:400;font-display:swap;src:url('/assets/fonts/instrument-serif-latin-400-italic.woff2') format('woff2')}
/* Eyebrows & labels — Montserrat */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/montserrat-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/montserrat-latin-600-normal.woff2') format('woff2')}
/* Big stats — Playfair Display */
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/playfair-display-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/playfair-display-latin-700-normal.woff2') format('woff2')}

/* =========================================================
   tokens.css — Sovereignty Global design tokens (single source)
   Navy + Gold · Instrument Serif / Geist / Montserrat / Playfair Display
   Foundation layer: public components consume these primitives rather than
   redefining brand colours, typography, geometry or motion page-by-page.
   ========================================================= */

:root {
  /* === Palette (locked) === */
  --color-navy-950:#091426;
  --color-navy-900:#0F1A30;
  --color-navy-800:#0D203B;
  --color-navy-700:#14213A;
  --color-navy-600:#1C2E4A;

  --color-gold:#C9AA66;
  --color-gold-light:#E4D1A3;
  --color-gold-muted:#B6A783;
  --color-gold-dark:#A88B4A;

  --color-off-white:#F2EEE6;
  --color-light:#F6F8FB;
  --color-white:#FFFFFF;

  --color-text-primary:#FFFFFF;
  --color-text-secondary:#C3CAD4;
  --color-text-muted:#8B95A5;
  --color-text-on-light:#0F1A30;
  --color-text-on-gold:#1a1206;

  --border-subtle:rgba(255,255,255,.08);
  --border-medium:rgba(255,255,255,.14);
  --border-gold:rgba(201,170,102,.34);

  /* === Typography === */
  --font-heading:'Playfair Display', ui-serif, Georgia, 'Times New Roman', serif; /* headers */
  --font-body:'Geist', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;  /* body / UI */
  --font-label:'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;    /* eyebrows / labels (caps) */
  --font-accent:'Instrument Serif', ui-serif, Georgia, serif;                     /* accents / numbering (italic) */
  --font-stat:'Playfair Display', ui-serif, Georgia, serif;                       /* big stats */

  /* === Type scale === */
  --type-display-xl:clamp(3.8rem,6vw,6rem);
  --type-display-lg:clamp(3rem,4.5vw,4.5rem);
  --type-h2:clamp(1.9rem,2.75vw,3rem);
  --type-section-title:clamp(2.05rem,3vw,3.25rem);
  --type-h3:clamp(1.5rem,2vw,2rem);
  --type-lead:clamp(1.125rem,1.4vw,1.25rem);
  --type-body:1rem;
  --type-small:.875rem;
  --type-label:.75rem;
  --leading-display:.94;
  --leading-heading:1.08;
  --leading-body:1.7;

  /* === Layout === */
  --layout-max:1320px;
  --copy-max:720px;
  --article-max:1180px;
  --article-copy:760px;
  --page-gutter:24px;
  --page-gutter-mobile:20px;
  --section-compact:clamp(48px,6vw,64px);
  --section-standard:clamp(72px,8vw,112px);
  --section-feature:clamp(88px,9vw,120px);

  /* === Spacing (4px base) === */
  --space-1:.25rem;  --space-2:.5rem;  --space-3:.75rem; --space-4:1rem;
  --space-5:1.25rem; --space-6:1.5rem; --space-8:2rem;   --space-10:2.5rem;
  --space-12:3rem;   --space-16:4rem;  --space-20:5rem;  --space-24:6rem;

  /* === Radius / shadow / motion === */
  --radius-sm:8px; --radius:12px; --radius-lg:18px; --radius-xl:26px; --radius-full:999px;
  --radius-control:10px;
  --radius-card:20px;
  --radius-panel:28px;
  --radius-pill:999px;
  --shadow:0 4px 12px rgba(0,0,0,.3);
  --shadow-lg:0 20px 50px -24px rgba(2,8,20,.6);
  --shadow-gold:0 10px 30px -10px rgba(201,170,102,.35);
  --motion-fast:160ms;
  --motion-base:240ms;
  /* Service page heroes share one headline scale and height (Tax Strategy is the reference). */
  --hero-title-size:clamp(2.85rem,4.15vw,4rem);
  --hero-title-leading:.98;
  --hero-min-height:clamp(520px,40vw,640px);
  --motion-slow:480ms;
  --motion-lift:-3px;
  --motion-lift-control:-2px;
  --ease:cubic-bezier(.22,.61,.36,1);

  /* === Legacy variable unification (overrides earlier stylesheets) === */
  /* styles.css */
  --navy:#0F1A30;
  --navy-deep:#091426;
  --accent:#C9AA66;          /* remap green -> gold */
  --accent-light:#E4D1A3;
  --white:#F6F8FB;
  --serif:var(--font-heading);
  --sans:var(--font-body);
  --mono:var(--font-accent);
  /* modern.css */
  --sg-navy:#0F1A30;
  --sg-navy-2:#091426;
  --sg-accent:#C9AA66;
  --sg-accent-light:#E4D1A3;
  --sg-gold:#C9AA66;
  --sg-gold-soft:#E4D1A3;
}

/* ---------- Typography normalization ---------- */
body{font-family:var(--font-body);font-size:var(--type-body);font-weight:400;line-height:var(--leading-body)}

/* Headers — Playfair Display. Use the real 600 weight for a broader,
   calmer display shape without synthetic weight or overly tight spacing. */
h1,h2,h3,h4,h5,h6{
  font-family:var(--font-heading);
  font-weight:600 !important;
  letter-spacing:-.018em;
}

/* Eyebrows & labels — Montserrat, uppercase with tracking. */
.eyebrow,.mini-label,.card-cat,.callout-label,.guide-card__meta,.page-kicker,
.stat-label,.goal-card .go,.hww-card__time,.res-chip,.article-meta,.card-eyebrow{
  font-family:var(--font-label) !important;
  text-transform:uppercase;
  letter-spacing:.14em;
}

/* Big stats — Playfair Display. */
.stat-num,.stat-list-num,.stat-list-num .accent,.hero-copy h1 .accent,
.v2 #method .goal-card .big,.geo-rate-number,.geo-compare-stat strong{
  font-family:var(--font-stat);
  font-variant-numeric:tabular-nums;
  font-weight:600;
  font-style:normal;
}

/* Accents & numbering — Instrument Serif italic (single weight, 400). */
.process-step__num,.hww-card__num,.num,.accent-num{
  font-family:var(--font-accent);
  font-style:italic;
  font-weight:400;
}

/* ---------- Buttons: primary = gold ---------- */
.button{border-radius:var(--radius-pill);background:var(--color-gold);color:var(--color-text-on-gold);transition:transform var(--motion-base) var(--ease),background var(--motion-base) var(--ease),border-color var(--motion-base) var(--ease)}
.button:hover{background:var(--color-gold-light);transform:translateY(var(--motion-lift-control))}
.button--header{background:var(--color-gold);color:var(--color-text-on-gold)}
.button--header:hover{background:var(--color-gold-light)}
.button--light{background:var(--color-white);color:var(--color-navy-900)}
.button--light:hover{background:#e4e9f1}
/* outline / ghost secondaries: gold hairline, light text */
.button--outline,.button--ghost{background:transparent;color:var(--color-text-primary);border:1px solid var(--border-gold)}
.button--outline:hover,.button--ghost:hover{background:rgba(201,170,102,.1);border-color:var(--color-gold)}

a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--color-gold-light);outline-offset:3px}

::selection{background:rgba(201,170,102,.35);color:#fff}

@media(max-width:720px){:root{--hero-title-size:clamp(2.2rem,8.2vw,3rem)}}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{scroll-behavior:auto!important}
}
