/* ============================================================================
   Behavior Secrets — tokens + self-hosted faces
   "Field Guide" (house-design.md override, direction C; Stitch project
   6501153814175714904, design system assets/11615052246407201801,
   2026-09-14). Loads FIRST, before main.css and bvs.css.
   ========================================================================= */

/* --- Faces ----------------------------------------------------------------
   Outfit carries the wordmark, headlines and numerals; Nunito Sans is the
   reading and UI face. Static woff2 subsets served from the theme; latin-ext
   is loaded so diacritics never fall back mid-word. */

@font-face {
    font-family: 'Outfit';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/outfit-700-latin.woff2') format('woff2');
    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: 'Outfit';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/outfit-700-latin-ext.woff2') format('woff2');
    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;
}
@font-face {
    font-family: 'Nunito Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/nunito-sans-400-latin.woff2') format('woff2');
    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: 'Nunito Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/nunito-sans-400-latin-ext.woff2') format('woff2');
    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;
}
@font-face {
    font-family: 'Nunito Sans';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/nunito-sans-400-italic-latin.woff2') format('woff2');
    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: 'Nunito Sans';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/nunito-sans-400-italic-latin-ext.woff2') format('woff2');
    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;
}
@font-face {
    font-family: 'Nunito Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/nunito-sans-600-latin.woff2') format('woff2');
    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: 'Nunito Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/nunito-sans-600-latin-ext.woff2') format('woff2');
    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;
}
@font-face {
    font-family: 'Nunito Sans';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/nunito-sans-700-latin.woff2') format('woff2');
    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: 'Nunito Sans';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/nunito-sans-700-latin-ext.woff2') format('woff2');
    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;
}

:root {
    /* --- Field Guide palette --------------------------------------------- */
    --bvs-cream:         #FBF7F2;   /* page ground */
    --bvs-ink:           #2A2430;   /* headings + body text */
    --bvs-primary:       #7E2E5F;   /* plum: links, chips, buttons, numerals — 8:1 on cream */
    --bvs-primary-dark:  #65244C;   /* hover */
    --bvs-meta:          #5C5364;   /* meta text — 6.4:1 on cream, never lighter */
    --bvs-panel:         #F5EAF1;   /* tinted panel: cards, TOC, masthead */
    --bvs-highlight:     #EEDDE8;   /* deeper tint: lead frame, hover */
    --bvs-rule:          #E8DDE3;   /* the rare hairline, ad frames */
    --bvs-footer-bg:     #2B1424;
    --bvs-footer-text:   #F3E6EE;
    --bvs-footer-muted:  #C9A9BC;
    --bvs-footer-rule:   #4A2A40;

    /* --- Type: Outfit display, Nunito Sans reading/UI ----------------------- */
    --bvs-display: 'Outfit', 'Avenir Next', 'Segoe UI', Arial, sans-serif;
    --bvs-text:    'Nunito Sans', 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    --bvs-ui:      'Nunito Sans', 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

    --bvs-size-body:    clamp(1.0625rem, 1rem + 0.35vw, 1.1875rem);   /* 17–19px */
    --bvs-size-body-sm: 1rem;
    --bvs-size-meta:    0.8125rem;   /* 13px caps */
    --bvs-lh-body:      1.7;
    --bvs-lh-head:      1.1;
    --bvs-track-meta:   0.06em;
    --bvs-track-head:   -0.015em;

    /* Short titles (archive, pages) may go big; article and lead headlines run
       long in a 560–740px column, so they cap around 44px. */
    --bvs-h1:         clamp(2.25rem, 1.5rem + 2.4vw, 3.5rem);
    --bvs-h1-lead:    clamp(1.9rem, 1.3rem + 1.7vw, 2.75rem);
    --bvs-title:      clamp(1.9rem, 1.3rem + 1.7vw, 2.75rem);
    --bvs-h2:         clamp(1.5rem, 1.25rem + 0.9vw, 1.9rem);
    --bvs-h3:         clamp(1.25rem, 1.1rem + 0.5vw, 1.45rem);
    --bvs-section:    clamp(1.6rem, 1.3rem + 1vw, 2rem);
    --bvs-card-title: 1.3125rem;

    /* --- Shape & metrics: rounded panels, pills, no shadows ------------------ */
    --bvs-radius-sm: 8px;
    --bvs-radius:    12px;
    --bvs-radius-lg: 16px;
    --bvs-pill:      999px;
    --bvs-page-max:  1200px;
    --bvs-content-max: 740px;
    --bvs-sidebar:   304px;   /* 300px ad unit + the frame's 1px borders */
    --bvs-side-gap:  2.5rem;
    --bvs-measure:   70ch;
    --bvs-gutter:    clamp(1rem, 3vw, 2.5rem);
    --bvs-col-gap:   clamp(1.5rem, 3vw, 3rem);
    --bvs-grid-gap:  clamp(1rem, 2vw, 1.5rem);
    --bvs-panel-pad: clamp(1.25rem, 2.5vw, 1.75rem);
    --bvs-tap:       44px;
    --bvs-nav-tap:   48px;

    /* --- Bridge to main.css ----------------------------------------------
       main.css is the shared core and names its own variables. Point every
       one of them at the tokens above so the core inherits the palette
       instead of fighting it. Do not restyle main.css. */
    --font-size-body-min: 1.0625rem;
    --font-size-body-max: 1.1875rem;
    --font-size-body-fluid: calc(1rem + 0.35vw);
    --font-size-h1-min: 2.25rem;
    --font-size-h1-max: 3.5rem;
    --font-size-h1-fluid: calc(1.5rem + 2.4vw);
    --font-size-h2-min: 1.5rem;
    --font-size-h2-max: 1.9rem;
    --font-size-h2-fluid: calc(1.25rem + 0.9vw);
    --font-size-h3-min: 1.25rem;
    --font-size-h3-max: 1.45rem;
    --font-size-h3-fluid: calc(1.1rem + 0.5vw);
    --font-size-h4-min: 1.125rem;
    --font-size-h4-max: 1.25rem;
    --font-size-h4-fluid: calc(1.05rem + 0.3vw);
    --font-size-h5-min: 1.0625rem;
    --font-size-h5-max: 1.125rem;
    --font-size-h5-fluid: calc(1rem + 0.2vw);
    --font-size-h6-min: 1rem;
    --font-size-h6-max: 1.0625rem;
    --font-size-h6-fluid: calc(0.96rem + 0.12vw);
    --line-height-body: 1.7;
    --line-height-heading: 1.1;

    --color-primary: #7E2E5F;
    --color-primary-hover: #65244C;
    --color-heading: #2A2430;
    --color-accent: #7E2E5F;
    --color-text-dark: #2A2430;
    --color-text-medium: #5C5364;
    --color-text-light: #5C5364;
    --color-background: #FBF7F2;
    --color-background-light: #F5EAF1;
    --color-border-light: #E8DDE3;
    --color-border: #E8DDE3;
    --color-footer-bg: #2B1424;
    --color-footer-border: #4A2A40;
    --color-footer-text: #F3E6EE;
    --color-copyright: #C9A9BC;

    --color-facebook: #7E2E5F;
    --color-facebook-hover: #65244C;
    --color-twitter: #7E2E5F;
    --color-twitter-hover: #65244C;
    --color-pinterest: #7E2E5F;
    --color-pinterest-hover: #65244C;
    --color-linkedin: #7E2E5F;
    --color-linkedin-hover: #65244C;

    --color-error: #B91C1C;
    --color-error-bg: #FEE2E2;
    --color-error-text: #991B1B;
    --color-warning: #92400E;
    --color-warning-bg: #FEF3C7;
    --color-warning-text: #78350F;
}
