/* Karla — humanist sans for body. Variable font, one file covers 200–800. */

@font-face {
    font-family: "Karla";
    src: url("../fonts/Karla-Variable-Latin.woff2") format("woff2");
    font-weight: 200 800;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: "Karla";
    src: url("../fonts/Karla-Variable-LatinExt.woff2") format("woff2");
    font-weight: 200 800;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Brand fonts — self-hosted .woff2.
   Per CLAUDE.md §5, only the weights we actually use are loaded. */

@font-face {
    font-family: "35-FTR";
    src: url("../fonts/35-FTR Regular.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "35-FTR";
    src: url("../fonts/35-FTR Medium.woff2") format("woff2");
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "35-FTR";
    src: url("../fonts/35-FTR Bold.woff2") format("woff2");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

/* The third voice (structural) uses these heavier weights. */
@font-face {
    font-family: "35-FTR";
    src: url("../fonts/35-FTR Extra Bold.woff2") format("woff2");
    font-weight: 800;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "35-FTR";
    src: url("../fonts/35-FTR Black.woff2") format("woff2");
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Poppins";
    src: url("../fonts/Poppins-SemiBold.woff2") format("woff2");
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Poppins";
    src: url("../fonts/Poppins-Bold.woff2") format("woff2");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

/* =================================================================
   THE STRUCTURAL VOICE — the third type voice, formalised.
   35-FTR at extra-bold/black: the system's spine. Use for level
   NUMERALS, structural LABELS, wayfinding and NAMES — sparingly.
   It is NOT a headline voice (that's the Iowan display serif) and
   must never be bolted into the hero as a heavy block (that derailed
   the home hero). Three sanctioned roles:
     .structure-numeral  big sequence numerals (I–V, 01–0n)
     .structure-label    a strong uppercase label/eyebrow alternative
     .structure-meta     small uppercase metadata (dates, tags)
   ================================================================= */
.structure-numeral {
    font-family: var(--font-structure);
    font-weight: var(--weight-black);
    letter-spacing: -0.03em;
    line-height: 0.85;
    color: var(--ink-deep);
}
.structure-label {
    font-family: var(--font-structure);
    font-weight: var(--weight-extrabold);
    font-size: var(--text-sm);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ink-deep);
}
.structure-meta {
    font-family: var(--font-structure);
    font-weight: var(--weight-extrabold);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--ink-muted);
}

body {
    font-family: var(--font-text);
    font-size: var(--text-base);
    line-height: var(--lh-body);
    font-weight: 400;
}

.eyebrow {
    font-family: var(--font-ui);
    font-size: var(--text-xs);
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--ink-muted);
}

.quiet-headline {
    font-family: var(--font-display);
    font-size: var(--text-hero);
    font-weight: 400;
    line-height: var(--lh-display);
    letter-spacing: -0.005em;
    color: var(--ink);
}

.section-title {
    font-family: var(--font-display);
    font-size: clamp(var(--text-xl), 3.5vw, var(--text-3xl));
    font-weight: 400;
    line-height: var(--lh-display);
    letter-spacing: -0.005em;
    color: var(--ink);
}

.section-sub {
    font-family: var(--font-text);
    font-size: var(--text-lg);
    color: var(--ink-muted);
    line-height: var(--lh-body);
}

/* Subhead — h3-level heading used inside a section, between section-title
   and body copy. Smaller than section-title, larger than body. */
.quiet-subhead {
    font-family: var(--font-display);
    font-size: var(--text-xl);
    font-weight: 400;
    line-height: var(--lh-heading);
    color: var(--ink);
    margin-top: var(--space-6);
    margin-bottom: var(--space-2);
}

/* Event date stamp — prominent date in event-page heroes. Sits between
   eyebrow and the body of the hero. Display-typed so it reads as a
   typographic anchor, not as metadata. */
.event-date {
    font-family: var(--font-display);
    font-size: clamp(var(--text-xl), 3vw, var(--text-2xl));
    font-weight: 400;
    color: var(--ink);
    line-height: var(--lh-heading);
    letter-spacing: 0.01em;
    margin: var(--space-2) 0 var(--space-3);
}

.lede {
    font-family: var(--font-text);
    font-size: var(--text-lg);
    line-height: var(--lh-body);
    color: var(--ink);
}

.quiet-list,
.quiet-link-list {
    font-family: var(--font-text);
    font-size: var(--text-base);
    line-height: var(--lh-body);
    color: var(--ink);
}

.credibility {
    font-family: var(--font-text);
    font-style: italic;
    font-size: var(--text-lg);
    color: var(--ink-muted);
    line-height: var(--lh-caption);
    text-align: center;
}

.safety-line {
    font-size: var(--text-sm);
    color: var(--ink-muted);
    line-height: var(--lh-caption);
}

.centred { text-align: center; }

/* Brand signature: gradient text. Apply to key phrases. */
.accent-gradient {
    background: var(--gradient-action);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}
