/* ============================================================
   UBIQUITUS — "SOFT BANKNOTE"
   Evergreen paper, rainbow value-ink, engraving printed over color.
   Soft corners, no black boxes, sentence-case labels. The dithered
   gradient field (banknote-field.js) appears only at money moments:
   the home hero, the home closing call to action, the dashboard pool plate.
   Spec: docs/superpowers/specs/2026-09-25-soft-banknote-color-design.md
   ============================================================ */

/* ---------- Fonts (self-hosted, from Google Fonts, SIL OFL) ----------
   Cut to what the site sets: Stack Sans Text 200-700, Spline Sans Mono
   400-700, Stack Sans Notch 400. Latin and latin-ext
   only; a page downloads latin-ext only if it prints a character from it.
   base.html preloads the two faces every page paints first. */
@font-face { font-family: "Stack Sans Text"; font-style: normal; font-weight: 200 700; font-display: swap; src: url("fonts/stack-sans-text-latin-ext.17333f9b0249.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: "Stack Sans Text"; font-style: normal; font-weight: 200 700; font-display: swap; src: url("fonts/stack-sans-text-latin.d4cc6b3d869d.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: "Spline Sans Mono"; font-style: normal; font-weight: 400 700; font-display: swap; src: url("fonts/spline-sans-mono-latin-ext.b7a3170e5df9.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: "Spline Sans Mono"; font-style: normal; font-weight: 400 700; font-display: swap; src: url("fonts/spline-sans-mono-latin.4ebf124f4aa2.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: "Stack Sans Notch"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/stack-sans-notch-latin-ext.6a4bd131eeb4.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: "Stack Sans Notch"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/stack-sans-notch-latin.12ff1ef0e911.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; }

/* ---------- Tokens ---------- */
:root {
    /* PALETTE — green, teal and gold, with a little rose kept to gradient tails */
    --evergreen: #0E6B52;         /* primary accent, links, main CTA start */
    --evergreen-dark: #0A5140;    /* hover / pressed */
    --evergreen-deep: #0C2E24;    /* deepest green, rarely used */
    --teal: #1A9C86;              /* gradient mid-stop, live dot */
    --teal-ink: #0E7A63;          /* teal as text (contrast-safe on paper) */
    --mint: #7DC7A2;              /* gradient light stop, soft fills */
    --mint-tint: rgba(125, 199, 162, 0.16);
    --mint-wash: rgba(226, 241, 236, 0.75);
    --rose: #D98A7A;              /* gradient tail only, never solid UI */
    --paper: #F3F4EE;             /* page ground */

    /* BRONZE — the matte value-ink of the instrument. Serials, seals. */
    --bronze: #8A6B3E;
    --bronze-deep: #6E5530;       /* bronze as text: 6:1 on paper */
    --bronze-tint: rgba(138, 107, 62, 0.10);

    /* GRADIENTS */
    --grad-cta: linear-gradient(120deg, #0E6B52 0%, #1A9C86 40%, #2E6FB7 70%, #BC9F6E 100%);
    /* Text-bearing buttons: same family, weighted dark so light label text
       keeps 4.5:1 across the middle where the words sit. */
    /* Buttons are printed like the field: green ink warming to amber at the
       tail, under a fine 4px dither. Text sits on the green, so it keeps
       contrast; hover slides more amber in. */
    --dither-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' shape-rendering='crispEdges'%3E%3Crect width='2' height='2' fill='%23fff' fill-opacity='.09'/%3E%3Crect x='2' y='2' width='2' height='2' fill='%23fff' fill-opacity='.09'/%3E%3C/svg%3E");
    --dither-amber: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' shape-rendering='crispEdges'%3E%3Crect width='2' height='2' fill='%23D9963A' fill-opacity='.16'/%3E%3Crect x='2' y='2' width='2' height='2' fill='%23D9963A' fill-opacity='.16'/%3E%3C/svg%3E");
    --grad-btn: var(--dither-light) 0 0 / 4px 4px, linear-gradient(105deg, #0B5A45 0%, #0E6B52 50%, #127560 74%, #9E6A27 112%) 0 0 / 150% 100%;
    /* Text-bearing gradients stay in the green family end to end: a gold or
       bronze stop drags the middle through khaki and reads as olive ink. */
    --grad-value: linear-gradient(90deg, #0E6B52, #178A74 50%, #0E7A63);
    --grad-headline: linear-gradient(100deg, #0E6B52 0%, #13806A 40%, #1A9C86 70%, #0E7A63 100%);
    --grad-edge: linear-gradient(140deg, #1A9C86, #7DC7A2 30%, #8CB9E6 55%, #BC9F6E 80%, #1A9C86);

    /* Legacy brand aliases (templates reference these) */
    --brand: var(--evergreen);
    --brand-deep: var(--evergreen);
    --brand-darker: var(--evergreen-dark);
    --brand-ink: #F8FFFB;
    --brand-glow: var(--teal);
    --brand-soft: var(--mint);
    --brand-tint: rgba(14, 107, 82, 0.07);
    --brand-edge: rgba(14, 107, 82, 0.30);
    --brand-2: var(--teal-ink);
    --brand-3: var(--evergreen);
    --color-primary: var(--evergreen);
    --color-primary-dark: var(--evergreen-dark);
    --color-primary-light: var(--teal);
    --color-accent: var(--evergreen);
    --color-accent-dark: var(--evergreen-dark);
    --color-accent-light: var(--teal);
    --secondary-accent: var(--teal);

    /* "Gold" — now a real warm stop. NOT text-safe on paper (1.9:1):
       use --gold-deep for gold-colored text. */
    --gold: #D9963A;              /* amber — the warm ink in the field */
    --gold-deep: #9A5F1C;
    --gold-darker: #6E5530;
    --gold-ink: #13241C;
    --gold-glow: #E0B86A;
    --gold-tint: rgba(224, 184, 106, 0.16);
    --gold-edge: rgba(224, 184, 106, 0.55);

    /* PAPER — green-biased ground and surfaces */
    --ink-0: #E7EBE3;             /* page frame */
    --ink-1: #F3F4EE;             /* canvas */
    --ink-2: #FBFCF8;             /* surface / card */
    --ink-3: #FFFFFF;             /* raised surface */
    --ink-4: #E8F0EA;             /* hover well, mint-tinted */
    --paper-0: var(--ink-0);
    --paper-1: var(--ink-1);
    --paper-2: var(--ink-2);
    --paper-3: var(--ink-3);
    --paper-4: var(--ink-4);
    --surface: rgba(255, 255, 255, 0.8);        /* ordinary card fill: enough to quiet the print behind it */
    --surface-strong: rgba(255, 255, 252, 0.84); /* money panel fill */

    /* LINES — hairlines only. No black structural rules anywhere. */
    --line: rgba(19, 36, 28, 0.10);
    --line-strong: rgba(19, 36, 28, 0.14);  /* legacy name, now a soft hairline */
    --line-bronze: rgba(138, 107, 62, 0.35);
    --rule: 1px solid var(--line);
    --rule-hair: 1px solid var(--line);

    /* TEXT — green-biased ink */
    --text: #13241C;
    --text-1: #2C3D35;
    --text-2: #4E5E56;
    --text-3: #5E6C65;
    --ink: var(--text);

    /* Template aliases */
    --color-text: var(--text);
    --color-text-light: var(--text-1);
    --color-text-muted: var(--text-2);
    --color-bg: var(--ink-1);
    --color-bg-light: var(--ink-2);
    --color-bg-dark: var(--ink-3);
    --color-border: var(--line);
    --color-border-light: var(--line);

    /* States */
    --success: #0E6B52;
    --warning: #8A6A00;
    --danger: #A4362F;
    --info: #1F6280;
    --success-tint: rgba(26, 156, 134, 0.12);
    --warning-tint: rgba(224, 184, 106, 0.22);
    --danger-tint: rgba(217, 138, 122, 0.18);
    --info-tint: rgba(31, 98, 128, 0.09);

    /* TYPE — Stack Sans Notch display (single 400 weight: keep font-weight
       400, font-synthesis none, non-negative tracking); Stack Sans Text (same
       family) for body and labels; mono only for serials, the protocol
       formula, and code. */
    --ff-display: "Stack Sans Notch", "Stack Sans Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
    --ff-serif: "Stack Sans Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
    --ff-sans: "Stack Sans Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
    --ff-label: "Stack Sans Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
    --ff-mono: "Spline Sans Mono", "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;

    --font-family: var(--ff-sans);
    --font-family-mono: var(--ff-mono);
    --fraunces-display: normal;          /* legacy alias — no longer used */

    /* Spacing */
    --s-1: 0.25rem;
    --s-2: 0.5rem;
    --s-3: 0.75rem;
    --s-4: 1rem;
    --s-5: 1.5rem;
    --s-6: 2rem;
    --s-7: 3rem;
    --s-8: 4rem;
    --s-9: 6rem;
    --s-10: 8rem;
    --spacing-xs: var(--s-2);
    --spacing-sm: var(--s-4);
    --spacing-md: var(--s-5);
    --spacing-lg: var(--s-6);
    --spacing-xl: var(--s-7);
    --spacing-2xl: var(--s-8);

    /* Radii — pill for actions, 24 money panels, 16 tiles, 12 inputs */
    --r-pill: 999px;
    --r-lg: 24px;
    --r-md: 16px;
    --r-sm: 12px;
    --r-1: 6px;
    --r-2: var(--r-sm);
    --r-3: var(--r-md);
    --r-4: var(--r-lg);
    --r-5: var(--r-lg);
    --r-full: var(--r-pill);
    --radius-sm: var(--r-sm);
    --radius-md: var(--r-md);
    --radius-lg: var(--r-lg);
    --radius-full: var(--r-pill);

    /* Shadows — soft, green-tinted */
    --shadow-sm: 0 1px 2px rgba(19, 36, 28, 0.04), 0 10px 24px -18px rgba(14, 80, 70, 0.30);
    --shadow-md: 0 18px 40px -26px rgba(14, 80, 70, 0.38);
    --shadow-lg: 0 30px 60px -30px rgba(14, 80, 70, 0.45);
    --shadow-money: var(--shadow-lg);
    --shadow-btn: none;
    --glow-brand: none;
    --glow-violet: none;

    /* The Floor Line — a gradient hairline */
    --floor-color: var(--grad-cta);
    --floor-weight: 2px;

    /* Motion */
    --e-out: cubic-bezier(0.2, 0, 0, 1);
    --e-in-out: cubic-bezier(0.65, 0, 0.35, 1);
    --e-set: cubic-bezier(0.2, 0, 0, 1);
    --d-fast: 120ms;
    --d-base: 220ms;
    --d-slow: 420ms;
    --d-draw: 700ms;
    --transition-fast: var(--d-fast) var(--e-out);
    --transition-base: var(--d-base) var(--e-out);
    --transition-slow: var(--d-slow) var(--e-out);

    /* Legacy grid tokens */
    --grid-size: 72px;
    --grid-color: transparent;
}

/* Where the browser can interpolate in oklch, the text gradients do, so
   evergreen -> teal never dips through a muddy midpoint. */
@supports (background-image: linear-gradient(in oklch 90deg, red, blue)) {
    :root {
        --grad-value: linear-gradient(in oklch 90deg, #0E6B52, #178A74 50%, #0E7A63);
        --grad-headline: linear-gradient(in oklch 100deg, #0E6B52 0%, #13806A 40%, #1A9C86 70%, #0E7A63 100%);
    }
}

/* ---------- Reset / base ---------- */
* { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; box-sizing: border-box; }
*:focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; }

.skip-link { position: absolute; left: 8px; top: -48px; z-index: 200; background: var(--evergreen); color: #fff; font-family: var(--ff-label); font-size: 0.875rem; font-weight: 600; padding: 0.6rem 1.1rem; border-radius: var(--r-pill); transition: top var(--transition-fast); }
.skip-link:focus { top: 8px; color: #fff; outline: 2px solid var(--teal); outline-offset: 2px; }

html { scroll-behavior: smooth; background: var(--paper); overflow-x: clip; }
body {
    font-family: var(--ff-sans);
    color: var(--text);
    background: var(--paper);
    line-height: 1.6;
    margin: 0;
    padding: 0;
    overflow-x: clip;
    max-width: 100vw;
}

::selection { background: rgba(125, 199, 162, 0.45); color: var(--text); }

/* ---------- Page wrapper — paper with a faint green wash + film grain ---------- */
.page-wrapper {
    min-height: 100vh;
    width: 100%;
    position: relative;
    isolation: isolate;
    background: var(--paper);
    overflow-x: clip;   /* clip, not hidden: hidden makes a scroll box and breaks the sticky nav */
}
/* Wash — real fixed divs at z-index 0: above the wrapper's paper, below all
   content (.page-wrapper > * sits at z-index 1). Negative-z pseudos get
   painted under the wrapper background in Chrome — don't use them. */
.page-wrapper > .bg-aurora {
    position: fixed;
    inset: -12vmax;
    z-index: 0;
    pointer-events: none;
    background:
        radial-gradient(80vmax 55vmax at 82% 2%, rgba(26, 156, 134, 0.10), transparent 55%),
        radial-gradient(72vmax 50vmax at 6% 16%, rgba(14, 107, 82, 0.08), transparent 55%),
        radial-gradient(85vmax 58vmax at 94% 94%, rgba(224, 184, 106, 0.12), transparent 56%),
        radial-gradient(60vmax 46vmax at 10% 100%, rgba(125, 199, 162, 0.12), transparent 58%);
    animation: auroraDrift 48s var(--e-in-out) infinite alternate;
}
@keyframes auroraDrift {
    from { transform: translate3d(0, 0, 0) scale(1); }
    to   { transform: translate3d(-2.5%, 1.5%, 0) scale(1.06); }
}
/* Film grain — SVG turbulence, analog texture over everything */
.page-wrapper > .bg-grain {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    opacity: 0.45;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.08 0 0 0 0 0.14 0 0 0 0 0.11 0 0 0 0.20 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
.page-wrapper::before, .page-wrapper::after { content: none; }
.page-wrapper > .grain { display: none; }
.page-wrapper > * { position: relative; z-index: 1; }

/* ---------- Typography ---------- */
h1, h2, h3, h4, h5, h6, .h5 {
    font-family: var(--ff-display);
    color: var(--text);
    font-weight: 400;            /* Stack Sans Notch's only weight */
    font-synthesis: none;        /* never fake-bold a single-weight face */
    letter-spacing: 0;           /* negative tracking clips the notches */
    line-height: 1.12;
    margin: 0 0 var(--s-4);
}

h1 { font-size: clamp(2.375rem, 5vw, 3.875rem); line-height: 1.06; }
h2 { font-size: clamp(1.6875rem, 3vw, 2.375rem); line-height: 1.1; }
h3 { font-size: clamp(1.3125rem, 2vw, 1.625rem); }
h4 { font-size: 1.25rem; }
h5, .h5 { font-size: 1.0625rem; }
h6 { font-family: var(--ff-label); font-size: 0.875rem; font-weight: 600; font-synthesis: initial; color: var(--text-2); }

p { color: var(--text-1); font-size: 1rem; line-height: 1.6; margin: 0 0 var(--s-4); }
.lead { color: var(--text-1); font-size: 1.1875rem; font-weight: 400; line-height: 1.5; max-width: min(58ch, 100%); }

a { color: var(--evergreen); text-decoration: none; transition: color var(--transition-fast); }
a:hover { color: var(--evergreen-dark); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
/* A link inside running text can't lean on color alone (WCAG 1.4.1): a quiet underline. */
p a:not(.btn), .accordion-body a:not(.btn), .figure-cite a { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); }
p a:not(.btn):hover, .accordion-body a:not(.btn):hover, .figure-cite a:hover { text-decoration-color: currentColor; }

code { font-family: var(--ff-mono); font-size: 0.85em; color: var(--text); background: var(--mint-tint); padding: 0.12em 0.45em; border-radius: var(--r-1); }

.text-primary { color: var(--evergreen) !important; }
.text-accent { color: var(--evergreen) !important; }
.text-muted { color: var(--text-2) !important; }
.text-dark { color: var(--text) !important; }
.text-success { color: var(--success) !important; }
.text-danger { color: var(--danger) !important; }
.text-white { color: var(--text) !important; }
.text-white-50 { color: var(--text-2) !important; }

.fw-bold { font-weight: 700 !important; }
.fw-semibold { font-weight: 620 !important; }
.fw-medium { font-weight: 520 !important; }

/* Money figures — the display face, tabular, never synthesized bold.
   (.mono is the legacy class templates put on figures.) */
.mono, .money, .countdown-timer {
    font-family: var(--ff-display);
    font-weight: 400;
    font-synthesis: none;
    letter-spacing: 0;
    font-variant-numeric: tabular-nums lining-nums;
}

/* Eyebrow — the live chip: translucent pill with a breathing dot */
.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    width: fit-content;
    font-family: var(--ff-label);
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--text);
    padding: 0.45rem 0.9rem 0.45rem 0.7rem;
    border-radius: var(--r-pill);
    background: rgba(255, 255, 255, 0.66);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    box-shadow: 0 1px 2px rgba(19, 36, 28, 0.04);
}
.eyebrow::before {
    content: "";
    width: 8px; height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    background: var(--teal);
    animation: livePulse 2.4s ease-out infinite;
}
/* Live signal — a ring that spreads from the dot */
@keyframes livePulse {
    0%   { box-shadow: 0 0 0 0 rgba(26, 156, 134, 0.55); }
    100% { box-shadow: 0 0 0 10px rgba(26, 156, 134, 0); }
}
@media (prefers-reduced-motion: reduce) { .eyebrow::before { animation: none; } }

/* ---------- Navbar — a floating glass pill over the field ---------- */
.navbar {
    background: transparent !important;
    padding: 14px 0 0;
    position: sticky;
    top: 0;
    z-index: 50;
}
.navbar > .container {
    background: rgba(251, 251, 247, 0.78);
    -webkit-backdrop-filter: saturate(160%) blur(18px);
    backdrop-filter: saturate(160%) blur(18px);
    border: 1px solid rgba(14, 107, 82, 0.12);
    border-radius: var(--r-pill);
    box-shadow: 0 12px 32px -22px rgba(12, 46, 36, 0.45);
    padding: 0.4rem 0.45rem 0.4rem 1.1rem;
    max-width: 1160px;
}

/* The wordmark is the one place uppercase tracking stays. */
.navbar-brand {
    font-family: var(--ff-display);
    font-weight: 400;
    font-synthesis: none;
    font-size: 1.0625rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text) !important;
    display: flex !important;
    align-items: center;
    gap: 0.6rem;
    padding: 0;
    margin-right: var(--s-4);
    text-decoration: none !important;
}
.navbar-brand .brand-mark { width: 28px; height: 28px; transition: transform 0.8s var(--e-out); }
.navbar-brand:hover .brand-mark { transform: rotate(60deg); }

.navbar-toggler {
    border: 0;
    background: transparent;
    padding: 0.45rem 0.65rem;
    border-radius: var(--r-pill);
}
.navbar-toggler:focus { box-shadow: none; outline: 2px solid var(--teal); outline-offset: 2px; }
.navbar-toggler-icon {
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='%2313241C' stroke-width='2' stroke-linecap='round' d='M5 8h20M5 15h20M5 22h20'/%3E%3C/svg%3E");
}

.navbar-nav { gap: 2px; }
.nav-link {
    color: var(--text-1) !important;
    font-family: var(--ff-label);
    font-weight: 500;
    font-size: 0.9375rem;
    padding: 0.55rem 1rem !important;
    border-radius: var(--r-pill);
    transition: color var(--transition-fast), background-color var(--transition-fast);
}
.nav-link:hover { color: var(--evergreen) !important; background: rgba(125, 199, 162, 0.16); text-decoration: none; }
.nav-link.active { color: var(--evergreen-dark) !important; background: rgba(125, 199, 162, 0.26); }
.navbar .btn { padding: 0.65rem 1.25rem; font-size: 0.9375rem; }

/* Below lg the links drop into a panel inside the same glass */
@media (max-width: 991.98px) {
    .navbar { padding: 10px 12px 0; }
    .navbar > .container { border-radius: 22px; padding: 0.45rem 0.5rem 0.45rem 1rem; }
    .navbar-collapse .navbar-nav { padding: 0.5rem 0 0.4rem; align-items: stretch !important; }
    .navbar-collapse .nav-item.ms-lg-2 { margin-top: 0.35rem; }
    .navbar-collapse .btn { width: 100%; }
}

/* ---------- Buttons — flat ink pills ---------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--s-2);
    font-family: var(--ff-label);
    font-weight: 600;
    font-size: 0.9375rem;
    letter-spacing: 0;
    padding: 0.85rem 1.5rem;
    border-radius: var(--r-pill);
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none !important;
    transition: transform var(--transition-base), box-shadow var(--transition-base), background-color var(--transition-fast), background-position var(--d-slow) var(--e-out), color var(--transition-fast);
    position: relative;
    white-space: nowrap;
    line-height: 1.1;
}
.btn:hover, .btn:active { transform: none; }
.btn:focus { outline: none; box-shadow: none; }
.btn:focus-visible { outline: 2px solid var(--teal); outline-offset: 3px; }

.btn-lg { padding: 1rem 1.75rem; font-size: 1rem; white-space: normal; text-align: center; }

/* Primary / gold / success = the gradient pill. Hover slides the gradient. */
.btn-primary, .btn-gold, .btn-success {
    background: var(--grad-btn);
    color: var(--brand-ink);
    border-color: transparent;
    box-shadow: inset 0 0 0 1px rgba(217, 150, 58, 0.28);
    transition: background-position var(--d-slow) var(--e-out), box-shadow var(--transition-fast), color var(--transition-fast);
}
.btn-primary:hover, .btn-gold:hover, .btn-success:hover,
.btn-primary:focus, .btn-gold:focus, .btn-success:focus {
    background: var(--grad-btn);
    background-position: 0 0, 100% 0;
    color: var(--brand-ink);
    border-color: transparent;
    box-shadow: inset 0 0 0 1px rgba(217, 150, 58, 0.6);
}
.btn-primary:active, .btn-gold:active, .btn-success:active,
.btn-primary:not(:disabled):not(.disabled):active { background: var(--evergreen-dark); color: var(--brand-ink); border-color: transparent; }
.btn-primary:disabled, .btn-primary.disabled { background: var(--grad-btn); color: var(--brand-ink); opacity: 0.55; border-color: transparent; }

/* Outline = warm paper with an amber hairline; hover prints a fine amber dither */
.btn-outline, .btn-outline-primary, .btn-outline-secondary, .btn-light {
    background: #FCF9F2;
    color: var(--evergreen-dark);
    border: 1px solid rgba(217, 150, 58, 0.55);
}
.btn-outline:hover, .btn-outline-primary:hover, .btn-outline-secondary:hover, .btn-light:hover,
.btn-outline:focus, .btn-outline-primary:focus {
    background: var(--dither-amber) 0 0 / 4px 4px, #FFF8EC;
    border-color: #D9963A;
    color: var(--evergreen-dark);
    box-shadow: none;
}

.btn-close {
    background: transparent;
    border: none;
    color: var(--text-2);
    width: 28px; height: 28px;
    border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0;
    opacity: 0.75;
    cursor: pointer;
}
.btn-close::before { content: "\00D7"; font-size: 1.25rem; line-height: 1; }
.btn-close:hover { color: var(--text); opacity: 1; background: var(--mint-tint); }

/* ---------- Sections ---------- */
.section {
    padding: clamp(var(--s-7), 8vw, var(--s-9)) 0;
    position: relative;
}
.section-light { position: relative; background: transparent; isolation: isolate; }
/* The light band feathers in and out instead of starting on a hard line. */
.section-light::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background: rgba(255, 255, 255, 0.42);
    -webkit-mask-image: linear-gradient(180deg, transparent, #000 min(18%, 140px), #000 calc(100% - min(18%, 140px)), transparent);
    mask-image: linear-gradient(180deg, transparent, #000 min(18%, 140px), #000 calc(100% - min(18%, 140px)), transparent);
}

.container { max-width: 1200px; width: 100%; padding-left: var(--s-5); padding-right: var(--s-5); box-sizing: border-box; }
.section, .hero-main { overflow: clip; }
@media (max-width: 768px) { .container { padding-left: var(--s-4); padding-right: var(--s-4); } }

/* ---------- Hero ---------- */
.hero-main {
    position: relative;
    padding: clamp(var(--s-6), 2.4vw, 2.5rem) 0 clamp(var(--s-7), 8vw, 6.5rem);   /* the nav floats over the hero: keep the top gap tight */
    overflow: hidden;
}
.hero-main::before { content: none; }
/* The hero is a printed note; on it sits one paper sheet holding the copy,
   with the live pool as a mint plate inset along its right side. One border,
   one radius, edges that line up. */
.hero-sheet {
    background: rgba(251, 251, 247, 0.94);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    backdrop-filter: blur(14px) saturate(140%);
    border: 1px solid rgba(14, 107, 82, 0.10);
    border-radius: 28px;
    box-shadow: 0 30px 70px -40px rgba(12, 46, 36, 0.5);
    padding: 10px;
}
.hero-copy-card { padding: clamp(1.5rem, 3.4vw, 3rem); }
.hero-sheet .hero-coin-col { display: flex; }
.hero-sheet .hero-panel {
    max-width: none;
    margin: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
    border-radius: 20px;
    background: linear-gradient(160deg, rgba(226, 241, 236, 0.95), rgba(214, 234, 240, 0.9));
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}
.hero-sheet .hero-panel::before { display: none; }   /* no second border: the plate is part of the sheet */
/* the plate matches the copy's height; the extra goes to the orbit, not a gap */
@media (min-width: 992px) { .hero-sheet .hero-viz { flex: 1 1 auto; height: auto; min-height: 300px; } }
@media (max-width: 991.98px) {
    .hero-sheet .hero-coin-col { margin-top: 10px; }
}
@media (max-width: 575.98px) { .hero-sheet { border-radius: 22px; padding: 8px; } .hero-copy-card { padding: 1.25rem; } }
@media (min-width: 992px) { .hero-copy-card .hero-headline { font-size: clamp(2.125rem, 2.9vw, 2.875rem); } }

.hero-main h1 {
    font-size: clamp(2rem, 6vw, 4rem);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.04;
    margin-bottom: var(--s-5);
    overflow-wrap: break-word;
    font-stretch: 112%;
}

.hero-main .lead { color: var(--text-1); font-size: 1.125rem; max-width: min(54ch, 100%); }

/* Accent words in the headline — printed in the value gradient */
.hero-main h1 .text-primary {
    color: var(--evergreen) !important;
    background: var(--grad-headline);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    padding-bottom: 0.08em;
}

/* Countdown — a soft tile */
.countdown-box {
    display: inline-flex;
    align-items: center;
    gap: var(--s-3);
    padding: 0.8rem 1.2rem;
    border-radius: var(--r-md);
    background: var(--surface);
    position: relative;
}
.countdown-box::before { content: none; }
.countdown-box small { display: block; font-family: var(--ff-label); font-size: 0.8125rem; color: var(--text-2); }
.countdown-timer { font-size: 1.25rem; color: var(--text); }

/* Hero viz column */
.hero-viz-wrapper { position: relative; display: flex; align-items: center; justify-content: center; }

.flow-canvas-wrap {
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    max-width: 480px;
    border-radius: var(--r-lg);
    overflow: hidden;
    background: var(--surface);
}
.flow-canvas-wrap canvas { width: 100%; height: 100%; display: block; }
.flow-canvas-ring { position: absolute; inset: 10%; border-radius: 50%; border: 1px solid var(--line); animation: none; }
.flow-canvas-ring.r2 { inset: 22%; }
.flow-canvas-ring.r3 { inset: 34%; }
.flow-core { display: none; }

/* Brand mark — the torc coin */
.brand-mark { width: 30px; height: 30px; display: block; flex-shrink: 0; }
.coin-3d, .coin-layer, .coin-face-front, .coin-face-back, .coin-3d-hero { display: none !important; }

/* ============================================================
   MONEY PANEL — the note. Translucent fill, 24px corners, soft green
   shadow, and a 1px rainbow edge drawn by a masked ::before. Reserved
   for genuine money moments. .instrument-frame is the retired name,
   kept as an alias until every template is migrated.
   ============================================================ */
.money-panel, .instrument-frame {
    position: relative;
    border-radius: var(--r-lg);
    background: var(--surface-strong);
    box-shadow: var(--shadow-money);
    -webkit-backdrop-filter: blur(18px) saturate(1.2);
    backdrop-filter: blur(18px) saturate(1.2);
}
.money-panel::before, .instrument-frame::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    border-radius: inherit;
    padding: 1px;
    pointer-events: none;
    background: var(--grad-edge);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
}
/* Figure cell inside a money panel */
.money-cell {
    border-radius: var(--r-md);
    padding: 0.875rem 1rem;
    background: var(--mint-wash);
}
/* The headline money figure, printed in value-ink */
.money-value {
    font-family: var(--ff-display);
    font-weight: 400;
    font-synthesis: none;
    letter-spacing: 0;
    font-variant-numeric: tabular-nums lining-nums;
    color: var(--evergreen);
    background: var(--grad-value);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* ---------- Metric cards ---------- */
.metric-card {
    position: relative;
    padding: var(--s-5);
    border-radius: var(--r-md);
    background: var(--surface);
    border: 0;
    transition: background var(--transition-fast), box-shadow var(--transition-base);
}
.metric-card::before, .metric-card::after { content: none; }
.metric-card:hover { background: rgba(255, 255, 255, 0.8); transform: none; }

/* Label — sentence case, normal tracking. Used for every small caption. */
.metric-label, .label {
    font-family: var(--ff-label);
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
    color: var(--text-2);
    margin-bottom: var(--s-2);
}
.metric-value {
    font-family: var(--ff-display);
    font-size: clamp(1.75rem, 2.7vw, 2.375rem);
    font-weight: 400;
    font-synthesis: none;
    letter-spacing: 0;
    line-height: 1.05;
    color: var(--text);
    font-variant-numeric: tabular-nums lining-nums;
    margin-bottom: var(--s-2);
}
.metric-sub { font-size: 0.875rem; color: var(--text-2); }

/* ---------- Step cards ---------- */
.step-card {
    position: relative;
    padding: var(--s-6) var(--s-5);
    border-radius: var(--r-lg);
    background: var(--surface);
    border: 0;
    transition: box-shadow var(--transition-base);
}
.step-card:hover { box-shadow: var(--shadow-sm); transform: none; }
.step-card::before { content: none; }

.step-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px; height: 44px;
    margin-bottom: var(--s-4);
    border-radius: 50%;
    font-family: var(--ff-display);
    font-weight: 400;
    font-synthesis: none;
    font-size: 1.125rem;
    color: var(--brand-ink);
    background: var(--grad-btn);
    box-shadow: var(--shadow-btn);
    position: relative;
}
.step-number::before { content: none; }

/* ---------- Formula display — the protocol line, still mono ---------- */
.formula-display {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    flex-wrap: wrap;
    justify-content: center;
    padding: var(--s-4) var(--s-5);
    border-radius: var(--r-md);
    background: var(--surface);
    font-family: var(--ff-mono);
    font-size: 1rem;
}
.formula-payment { color: var(--evergreen); font-weight: 600; }
.formula-operator { color: var(--text-3); }
.formula-value { color: var(--text); font-weight: 500; padding: 0.15em 0.55em; border-radius: var(--r-1); background: var(--mint-tint); }

/* ---------- Trust items — whitespace only ---------- */
.trust-item {
    padding: var(--s-5) var(--s-4);
    background: transparent;
    border: 0;
    transition: none;
}
.trust-item:hover { background: transparent; transform: none; }
.trust-item i { color: var(--evergreen) !important; }
.trust-item h5, .trust-item .h5 { color: var(--text) !important; margin-bottom: var(--s-2); }
.trust-item p { color: var(--text-2) !important; }

/* ---------- Cards (Bootstrap override) — light fill, no border ---------- */
.card {
    background: var(--surface);
    border: 0;
    border-radius: var(--r-lg);
    box-shadow: 0 1px 2px rgba(19, 36, 28, 0.03);
    color: var(--text);
    transition: none;
}
.card-body { padding: var(--s-5); color: var(--text-1); }
.card-title { color: var(--text); }
.card-header {
    background: transparent;
    border-bottom: 1px solid var(--line);
    color: var(--text);
    padding: var(--s-4) var(--s-5);
    border-radius: var(--r-lg) var(--r-lg) 0 0 !important;
    font-family: var(--ff-label);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0;
}
.card-text { color: var(--text-1); }

.bg-custom {
    background: transparent !important;
    color: var(--text);
}
.bg-custom .text-white { color: var(--text) !important; }
.bg-custom .text-white-50 { color: var(--text-2) !important; }

/* ---------- Icon circle ---------- */
.icon-circle {
    width: 44px; height: 44px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--mint-tint);
    border: 0;
    color: var(--evergreen);
    font-size: 1.125rem;
    flex-shrink: 0;
}
.icon-circle i { color: var(--evergreen) !important; }

/* ---------- Badges — soft pills ---------- */
.badge {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-family: var(--ff-label);
    font-size: 0.75rem !important;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    padding: 0.3rem 0.7rem;
    border-radius: var(--r-pill);
    border: 0;
    background: var(--mint-tint);
    color: var(--evergreen);
}
.badge-success, .bg-success { background: var(--success-tint) !important; color: var(--success) !important; border: 0 !important; }
.badge-primary, .bg-primary { background: var(--brand-tint) !important; color: var(--evergreen) !important; border: 0 !important; }
.bg-warning { background: var(--warning-tint) !important; color: var(--warning) !important; border: 0 !important; }
.bg-danger { background: var(--danger-tint) !important; color: var(--danger) !important; border: 0 !important; }
.bg-info { background: var(--info-tint) !important; color: var(--info) !important; border: 0 !important; }
.bg-secondary { background: var(--ink-4) !important; color: var(--text-1) !important; }
.bg-light { background: var(--ink-1) !important; color: var(--text-1) !important; }
.bg-white { background: var(--ink-2) !important; }
.bg-danger-subtle { background: var(--danger-tint) !important; }

/* ---------- Forms — soft fields ---------- */
.form-label {
    font-family: var(--ff-label);
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    color: var(--text);
    margin-bottom: var(--s-2);
}
.form-control, .form-select, input[type="text"], input[type="email"], input[type="number"], input[type="tel"], textarea, select {
    background-color: #FFFFFF !important;
    color: var(--text) !important;
    border: 1px solid rgba(19, 36, 28, 0.12) !important;
    border-radius: var(--r-sm) !important;
    padding: 0.75rem 0.95rem !important;
    font-size: 0.9375rem !important;
    font-family: var(--ff-sans);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast) !important;
}
.form-select { padding-right: 2.5rem !important; }
.form-control:focus, .form-select:focus, input:focus, textarea:focus, select:focus {
    outline: none !important;
    border-color: var(--teal) !important;
    background-color: #FFFFFF !important;
    box-shadow: 0 0 0 4px rgba(26, 156, 134, 0.16) !important;
}
.form-control::placeholder { color: var(--text-3); }
.form-text { color: var(--text-2); font-size: 0.8125rem; }
.form-check-input { border-color: rgba(19, 36, 28, 0.25); }
.form-check-input:checked { background-color: var(--evergreen); border-color: var(--evergreen); }
.form-check-input:focus { box-shadow: 0 0 0 4px rgba(26, 156, 134, 0.16); border-color: var(--teal); }

.input-group { background: transparent; }
.input-group-text {
    background: var(--ink-4);
    color: var(--text-1);
    border: 1px solid rgba(19, 36, 28, 0.12);
    border-right: 0;
    border-radius: var(--r-sm) 0 0 var(--r-sm);
    font-family: var(--ff-sans);
    font-size: 0.9375rem;
    padding: 0 0.95rem;
}
.input-group > .input-group-text + .form-control { border-radius: 0 var(--r-sm) var(--r-sm) 0 !important; }

/* ---------- Alerts — tinted, rounded, no rules ---------- */
.alert {
    border-radius: var(--r-md);
    border: 0;
    padding: 0.95rem 1.15rem;
    color: var(--text-1);
    background: var(--surface);
}
.alert h6, .alert h5, .alert h4 { color: var(--text); margin-bottom: var(--s-2); }
.alert-success { background: var(--success-tint); color: var(--text); }
.alert-info    { background: var(--info-tint); color: var(--text); }
.alert-warning { background: var(--warning-tint); color: var(--text); }
.alert-danger, .alert-error { background: var(--danger-tint); color: var(--text); }
.alert-primary { background: var(--brand-tint); color: var(--text); }
.alert-light { background: var(--surface); color: var(--text-1); }

/* ---------- Accordion — separate soft tiles ---------- */
.accordion { background: transparent; border: 0; display: grid; gap: 0.5rem; }
.accordion-item {
    background: var(--surface) !important;
    border: 0 !important;
    border-radius: var(--r-md) !important;
    overflow: hidden;
}
.accordion-button {
    background: transparent !important;
    color: var(--text) !important;
    font-family: var(--ff-sans);
    font-weight: 560 !important;
    font-size: 1rem;
    padding: 1.1rem 1.25rem;
    box-shadow: none !important;
    border: none !important;
    border-radius: 0 !important;
}
.accordion-button:not(.collapsed) { color: var(--evergreen) !important; background: transparent !important; box-shadow: none !important; }
.accordion-button:focus-visible { outline: 2px solid var(--teal); outline-offset: -2px; }
.accordion-button::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230E6B52' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M8 3v10M3 8h10'/%3E%3C/svg%3E");
    transition: transform var(--transition-base);
}
.accordion-button:not(.collapsed)::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230E6B52' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 8h10'/%3E%3C/svg%3E");
    transform: none;
}
.accordion-body { color: var(--text-1); padding: 0 1.25rem 1.25rem; font-size: 0.9375rem; line-height: 1.6; }

/* ---------- Lists / Leaderboard ---------- */
.list-group, .list-group-flush { background: transparent; border-radius: 0; }
.list-group-item {
    background: transparent !important;
    border-color: var(--line) !important;
    border-radius: 0 !important;
    color: var(--text-1) !important;
    padding: 0.85rem 1.1rem;
    transition: background var(--transition-fast);
}
.list-group-item:hover { background: rgba(255, 255, 255, 0.5) !important; }
.list-group-item strong { color: var(--text); font-weight: 560; }

.list-group-item .badge.rounded-pill {
    background: var(--mint-tint) !important;
    color: var(--evergreen) !important;
    border: 0;
    border-radius: var(--r-pill) !important;
    font-family: var(--ff-display);
    font-weight: 400;
    font-synthesis: none;
    font-variant-numeric: tabular-nums;
    min-width: 2.5em;
    justify-content: center;
}

/* ---------- Tables ---------- */
.table {
    color: var(--text-1) !important;
    border-color: var(--line) !important;
    margin-bottom: 0;
}
.table > :not(caption) > * > * { background: transparent !important; color: inherit; border-bottom-color: var(--line); padding: 0.75rem 0.9rem; }
.table > :not(:first-child) { border-top: 0; }
.table thead th, .table-light {
    background: transparent !important;
    color: var(--text-2) !important;
    font-family: var(--ff-label);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    border-bottom: 1px solid var(--line) !important;
}
.table tbody td { font-variant-numeric: tabular-nums; }
.table-hover tbody tr:hover td { background: rgba(125, 199, 162, 0.10) !important; }
.table-responsive { border-radius: var(--r-md); border: 0; }

/* ---------- Progress ---------- */
.progress { background: var(--mint-tint); border: 0; border-radius: var(--r-pill); overflow: hidden; height: 8px; }
.progress-bar { background: var(--grad-cta); border-radius: var(--r-pill); }
.progress-bar.bg-success { background: var(--teal) !important; border: 0 !important; }
.progress-bar.bg-warning { background: var(--gold) !important; border: 0 !important; }
.progress-bar.bg-secondary { background: var(--text-3) !important; border: 0 !important; }

/* ---------- Modal / dropdown (Bootstrap) ---------- */
.modal-content { border: 0; border-radius: var(--r-lg); background: var(--ink-2); box-shadow: var(--shadow-lg); }
.modal-header, .modal-footer { border-color: var(--line); }
.dropdown-menu { border: 0; border-radius: var(--r-md); background: var(--ink-3); box-shadow: var(--shadow-md); padding: 0.4rem; }
.dropdown-item { border-radius: var(--r-1); color: var(--text-1); }
.dropdown-item:hover, .dropdown-item:focus { background: var(--mint-tint); color: var(--evergreen); }

/* ---------- Ticker — the index strip ---------- */
.ticker {
    width: 100%;
    overflow: hidden;
    /* a paper ribbon across the field: solid where the words run */
    background: linear-gradient(180deg, rgba(243, 244, 238, 0), var(--paper) 28%, var(--paper) 72%, rgba(243, 244, 238, 0));
    padding: 1rem 0;
    margin-top: var(--s-7);
    position: relative;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.ticker::before, .ticker::after { content: none; }

.ticker-track {
    display: inline-flex;
    white-space: nowrap;
    animation: tickerSlide 48s linear infinite;
    gap: var(--s-6);
    font-family: var(--ff-label);
    font-size: 0.875rem;
    letter-spacing: 0;
    color: var(--text-2);
}
.ticker-track span { display: inline-flex; align-items: center; gap: var(--s-3); }
.ticker-track span::before {
    content: "";
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--teal);
    display: inline-block;
}
@keyframes tickerSlide { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ---------- Footer — two tiers: link columns, then the seal line ---------- */
footer {
    padding: var(--s-8) var(--s-5) var(--s-6);
    color: var(--text-2);
    background: linear-gradient(180deg, transparent, rgba(125, 199, 162, 0.12) 60%, rgba(125, 199, 162, 0.18));
}
footer a { color: var(--text-2); }
footer a:hover { color: var(--evergreen); }
.footer-inner { max-width: calc(1200px - 2 * var(--s-5)); margin: 0 auto; }
.footer-top {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 2fr);
    gap: var(--s-7);
    padding-bottom: var(--s-6);
}
.footer-wordmark {
    font-family: var(--ff-display);
    font-weight: 400;
    font-synthesis: none;
    font-size: 1.5rem;
    color: var(--evergreen) !important;
    text-decoration: none !important;
}
.footer-tagline { color: var(--text-2); font-size: 0.9375rem; max-width: 34ch; margin: var(--s-3) 0 0; }
.footer-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-5); }
.footer-h {
    font-family: var(--ff-label);
    font-size: 0.875rem;
    font-weight: 600;
    font-synthesis: initial;
    letter-spacing: 0;
    color: var(--text);
    margin: 0 0 var(--s-3);
}
.footer-col ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.55rem; }
.footer-col a { font-size: 0.9375rem; display: inline-flex; align-items: center; gap: 0.55rem; }
.footer-contact i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px; height: 28px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.72);
    color: var(--evergreen);
    font-size: 0.8125rem;
    transition: background var(--transition-fast), color var(--transition-fast);
}
.footer-contact a:hover i { background: var(--grad-btn); color: var(--brand-ink); }
.footer-bottom {
    display: flex;
    align-items: center;
    gap: var(--s-5);
    padding: var(--s-5) var(--s-5);
    border-radius: var(--r-lg);
    background: rgba(255, 255, 255, 0.5);
}
.footer-bottom .footer-seal { width: 64px; height: 64px; margin: 0; flex-shrink: 0; }
.footer-bottom p { margin: 0; }
.footer-meta { font-family: var(--ff-label); font-size: 0.875rem; color: var(--text-1); }

.disclaimer-text { color: var(--text-3); font-size: 0.8125rem; max-width: 760px; margin: var(--s-2) 0 0; }
.footer-bottom .disclaimer-text { margin-top: var(--s-2); }

@media (max-width: 767.98px) {
    footer { padding: var(--s-7) var(--s-4) var(--s-5); }
    .footer-top { grid-template-columns: 1fr; gap: var(--s-5); }
    .footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--s-5); }
    .footer-bottom { flex-direction: column; align-items: flex-start; gap: var(--s-3); padding: var(--s-4); }
}

/* ---------- Reveal animation — brief, functional ---------- */
[data-reveal] {
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 0.45s var(--e-out), transform 0.45s var(--e-out);
    transition-delay: var(--reveal-delay, 0ms);
}
[data-reveal].in { opacity: 1; transform: translateY(0); }
[data-aos] { opacity: 1; transform: none; }

/* ---------- The Floor Line — a gradient hairline ---------- */
.floor-line {
    display: block;
    width: var(--floor-w, 100%);
    height: var(--floor-weight);
    background: var(--floor-color);
    border: 0;
    border-radius: var(--r-pill);
    margin: 0;
    transform-origin: left center;
}
.floor-line--ink { background: var(--evergreen); }
.floor-line--hair { height: 1px; background: var(--line); }
/* The kicker stubs under every section stay retired. */
.floor-line--stub { display: none !important; }
.floor-line--center { margin-left: auto; margin-right: auto; transform-origin: center; }

[data-draw] { animation: floorDraw var(--d-draw) var(--e-out) both; }
@keyframes floorDraw { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* Section kicker — engraved fleuron + a sentence-case label. The serial
   number the markup still carries is hidden. */
.kicker {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    font-family: var(--ff-label);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    color: var(--evergreen);
}
.kicker::before {
    content: "";
    width: 22px; height: 22px;
    background: url("rosette-corner.df8c16a75c7b.svg") center / contain no-repeat;
    opacity: 0.9;
    flex-shrink: 0;
}
.kicker .num { display: none; }
/* Bootstrap's .d-block is !important and would collapse the fleuron row */
.kicker.d-block { display: flex !important; }
/* centered section heads: center the kicker too */
.section-head--center .kicker,
.text-center .kicker { justify-content: center; }

/* Pool field — retired decoration */
.pool-field { display: none; }

/* ============================================================
   THE BANKNOTE FIELD — dithered gradient + guilloché, drawn by
   static/banknote-field.js into <canvas class="bn-field"> as the first
   child of a .bn-host. Without JS the host shows a CSS radial version of
   the same palette; the script adds .bn-live once it has painted.
   ============================================================ */
.bn-host { position: relative; isolation: isolate; overflow: hidden; }
.bn-host > .bn-field {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    display: block;
    max-width: none;
    pointer-events: none;
    image-rendering: pixelated;   /* one canvas px per 4px cell: scale it up crisp */
}
/* The engraving layer is drawn at device resolution, and the wash is a tiny
   canvas the browser stretches: both must scale smoothly, never pixelated */
.bn-host > .bn-lines, .bn-host > .bn-wash { image-rendering: auto; }
.bn-host > .bn-wash { inset: auto; }   /* JS sets left/top/width/height to the lattice */
.bn-host > :not(.bn-field) { position: relative; z-index: 1; }
/* Grain printed over the color, under the content. Bounded plates only: on a
   full-bleed section it would grey the whole band. */
.bn-plate::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    opacity: 0.3;
    mix-blend-mode: overlay;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* No-JS fallback — pooled lower right, like the canvas presets */
.bn-host:not(.bn-live) {
    background-image:
        radial-gradient(38% 55% at 96% 88%, rgba(14, 107, 82, 0.85), transparent 70%),
        radial-gradient(26% 40% at 80% 62%, rgba(26, 156, 134, 0.7), transparent 70%),
        radial-gradient(24% 36% at 66% 92%, rgba(224, 184, 106, 0.6), transparent 70%),
        radial-gradient(22% 32% at 100% 32%, rgba(217, 138, 122, 0.4), transparent 70%);
}
/* The page field — one canvas set per printed band of the document (hero,
   top and bottom borders), positioned over that band so it scrolls with the
   content. JS sets top and height. Above the wrapper's paper, below all
   content (like .bg-aurora, which it replaces once live). */
.page-wrapper > .bn-page {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 0;
    z-index: 0;
    display: block;
    max-width: none;
    pointer-events: none;
    image-rendering: pixelated;
}
.page-wrapper > .bn-page.bn-wash { inset: auto; image-rendering: auto; }  /* JS sizes it to the lattice */
.page-wrapper > .bn-page.bn-lines { image-rendering: auto; }
.page-wrapper.bn-live > .bg-aurora { display: none; }

/* A plate — a money panel that carries its own field (dashboard pool) */
.bn-plate {
    border-radius: var(--r-lg);
    padding: clamp(1.5rem, 3.5vw, 2.75rem);
}

/* ============================================================
   THE INSTRUMENT — guilloché engraving layer
   ============================================================ */

/* Faint watermark rosette — money moments ONLY, never behind body copy. */
.wm { position: relative; isolation: isolate; overflow: hidden; }
.wm > * { position: relative; z-index: 1; }
.wm::after {
    content: "";
    position: absolute;
    z-index: 0;
    top: 50%; left: 50%;
    width: 340px; height: 340px;
    transform: translate(-50%, -50%);
    background: url("rosette-watermark.2ae6f3679ad8.svg") center / contain no-repeat;
    opacity: 0.5;
    pointer-events: none;
}
.wm--lg::after { width: 460px; height: 460px; }
.wm--sm::after { width: 150px; height: 150px; opacity: 0.4; }
.wm--right::after { left: auto; right: -40px; transform: translate(0, -50%); }

/* Wax-seal stamp — the certified emblem */
.seal-stamp {
    display: inline-block;
    width: 96px; height: 96px;
    background: url("seal-emblem.ebf4c8a72d89.svg") center / contain no-repeat;
}
.seal-stamp--lg { width: 132px; height: 132px; }
footer .brand-mark { display: none; }
.footer-seal {
    width: 108px; height: 108px;
    margin: 0 auto var(--s-4);
    background: url("seal-emblem.ebf4c8a72d89.svg") center / contain no-repeat;
    animation: sealTurn 90s linear infinite;
}
@keyframes sealTurn { to { transform: rotate(360deg); } }

/* Closing call to action — was the dark reverse of the note; now a light
   gradient-field section. The field pools at the two outer edges so the
   centered copy sits on paper. */
.section-reverse { position: relative; overflow: hidden; isolation: isolate; }
.section-reverse > * { position: relative; z-index: 1; }
.section-reverse .seal-stamp { display: block; }
.cta-meta { font-family: var(--ff-label); font-size: 0.9375rem; color: var(--text-2); }
.cta-meta strong { font-family: var(--ff-display); font-weight: 400; font-synthesis: none; color: var(--evergreen); font-variant-numeric: tabular-nums; }

/* Founder-match notice — a soft gradient tint line */
.founder-notice {
    background: linear-gradient(90deg, rgba(125, 199, 162, 0.22), rgba(224, 184, 106, 0.22));
    padding: 8px 0;
}
.founder-notice-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.9rem;
    font-family: var(--ff-label);
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: 0;
    color: var(--bronze-deep);
    text-align: center;
}
.founder-notice-mark {
    width: 14px; height: 14px;
    background: url("rosette-corner.df8c16a75c7b.svg") center / contain no-repeat;
    opacity: 0.85;
    flex-shrink: 0;
}
@media (max-width: 640px) { .founder-notice-mark { display: none; } }

/* Bespoke engraved emblems — intaglio glyph in a guilloché medallion */
.emblem { width: 60px; height: 60px; display: block; }
.emblem--sm { width: 48px; height: 48px; }
.trust-item .emblem, .text-center .emblem { margin-left: auto; margin-right: auto; }

/* Founder signature — copperplate script */
.founder-sig {
    font-family: "Herr Von Muellerhoff", "Snell Roundhand", cursive;
    font-size: 2.5rem;
    line-height: 0.8;
    color: var(--bronze-deep);
}
.founder-sig-label {
    font-family: var(--ff-label);
    font-size: 0.8125rem;
    color: var(--text-3);
    margin-top: 0.35rem;
}

/* Serial number — the one mono label left (hero note serial) */
.serial {
    font-family: var(--ff-mono);
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    color: var(--bronze-deep);
    font-variant-numeric: tabular-nums;
}

/* "The 1st" date-mark — the one reserved underline, in the gradient. */
.the-first {
    font-family: inherit;
    font-weight: inherit;
    color: inherit;
    border-bottom: 0;
    padding-bottom: 0.06em;
    white-space: nowrap;
    background-image: var(--grad-headline);
    background-size: 100% 3px;
    background-position: 0 100%;
    background-repeat: no-repeat;
}
.the-first sup {
    font-size: 0.52em;
    vertical-align: 0.42em;   /* proper raised superscript, no float gap */
    line-height: 0;
    margin-left: 0.5px;
    font-weight: inherit;
    text-transform: lowercase;
}

/* ---------- Utilities ---------- */
.shadow-sm { box-shadow: var(--shadow-sm) !important; }
.rounded-3 { border-radius: var(--r-md) !important; }
.rounded-circle { border-radius: 50% !important; }
.rounded-pill { border-radius: var(--r-pill) !important; }
.rounded { border-radius: var(--r-sm) !important; }

.overflow-hidden { overflow: hidden !important; }

/* Amount buttons (signup/contribute) */
.amount-btn {
    height: 52px;
    font-family: var(--ff-display);
    font-weight: 400;
    font-synthesis: none;
    font-size: 1.0625rem;
    font-variant-numeric: tabular-nums;
    border: 1px solid rgba(19, 36, 28, 0.08) !important;
    background: rgba(255, 255, 255, 0.72) !important;
    color: var(--text) !important;
    border-radius: var(--r-sm) !important;
    box-shadow: none !important;
    transition: background var(--transition-fast), color var(--transition-fast), transform var(--transition-base) !important;
}
.amount-btn:hover { background: #FFFFFF !important; border-color: rgba(14, 107, 82, 0.25) !important; color: var(--evergreen) !important; }
.amount-btn.btn-primary, .amount-btn.active {
    background: var(--grad-btn) !important;
    color: var(--brand-ink) !important;
    border-color: transparent !important;
    box-shadow: var(--shadow-btn) !important;
}

/* Crypto address block */
.crypto-addresses {
    background: var(--surface) !important;
    border: 0 !important;
    border-radius: var(--r-sm) !important;
    font-family: var(--ff-mono);
    padding: 0.9rem !important;
}
.crypto-addresses code { background: transparent; border: 0; color: var(--text-1); padding: 0; }
.crypto-addresses strong { color: var(--text); }

/* Timeline (mobile verify) */
.timeline { border-left: 2px solid var(--mint-tint); padding-left: var(--s-5); }
.timeline-item { position: relative; padding-bottom: var(--s-5); }
.timeline-item::before {
    content: "";
    position: absolute;
    left: calc(var(--s-5) * -1 - 6px);
    top: 6px;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: var(--teal);
    box-shadow: 0 0 0 3px var(--paper);
}
.timeline-icon { color: var(--evergreen) !important; }

canvas { max-width: 100%; }

.card .text-muted { color: var(--text-2) !important; }
.card a:not(.btn) { color: var(--evergreen); }

.social-links a, .social-media-links a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    transition: color var(--transition-fast);
    color: var(--text-1);
}
.social-links a:hover { color: var(--evergreen); }

/* Home hero headline: balanced lines, sized so "We pay it — on the 1st."
   holds one line in the half-width column. */
.hero-main h1.hero-headline { text-wrap: balance; letter-spacing: 0; }
@media (min-width: 992px) {
    .hero-main h1.hero-headline { font-size: clamp(2.25rem, 3.55vw, 3.2rem); line-height: 1.08; }
}

/* ---------- Responsive ---------- */
@media (max-width: 991.98px) {
    .section { padding: var(--s-7) 0; }
    .hero-main { padding: var(--s-7) 0 var(--s-6); }
    .hero-main h1 { font-size: clamp(2.125rem, 7.5vw, 3rem); }
    .navbar-collapse { margin-top: 0.7rem; padding: 0.5rem 0; }
    .navbar .btn { margin-top: 0.35rem; }
}

@media (max-width: 576px) {
    .container { padding-left: var(--s-4); padding-right: var(--s-4); }
    h1 { font-size: clamp(1.625rem, 8vw, 2.375rem); letter-spacing: 0; }
    .hero-main h1 { font-size: clamp(1.625rem, 8vw, 2.375rem); line-height: 1.04; }
    h2 { font-size: clamp(1.4375rem, 6vw, 1.875rem); }
    .metric-value { font-size: 1.625rem; }
    .formula-display { font-size: 0.8125rem; padding: var(--s-4); gap: 0.3rem; }
    .eyebrow { font-size: 0.8125rem; padding: 0.4rem 0.8rem 0.4rem 0.65rem; }
    .section { padding: var(--s-6) 0; }
    .hero-main { padding: var(--s-6) 0 var(--s-5); }
    .hero-main .lead, .lead { font-size: 1rem; line-height: 1.55; }
    p { font-size: 0.9375rem; }
    /* Stacked pill buttons: one column, equal widths */
    .ctas, .hero-main .d-flex.flex-wrap:has(> .btn), .section-reverse .d-flex.flex-wrap:has(> .btn) {
        flex-direction: column;
        align-items: stretch;
    }
    .ctas > .btn, .hero-main .d-flex.flex-wrap:has(> .btn) > .btn, .section-reverse .d-flex.flex-wrap:has(> .btn) > .btn {
        width: 100%;
        justify-content: center;
    }
}

/* ---------- Motion preferences ---------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
    [data-reveal] { opacity: 1; transform: none; }
    .btn:hover { transform: none; }
}

/* ---------- Print ---------- */
@media print {
    .navbar, footer, .ticker, .bn-field { display: none; }
    body { background: white; color: black; }
}
