/* ============================================================================
   EFA www — base styles (affiliate.eyefactory.co.jp).

   Pixel-faithful build of the 2026-09 Illustrator artboards (design/*.svg,
   1440px wide; design/mobile/*.svg, 716px wide). Every length is written in
   DESIGN PIXELS through the --u unit: --u is exactly 1px when the page frame
   is 1440px wide and shrinks proportionally below that, so the layout matches
   the artboard 1:1 at the design width and stays responsive underneath. Pages
   wider than 1440px show the frame centred with a soft shadow on both edges.

   Vertical positions are derived from the artboards' text baselines. For
   IBM Plex Sans JP in Chrome a line box of height L holds the baseline at
   L/2 + 0.31 × font-size from its top; margins below were computed with that.
   ========================================================================== */

:root {
    /* Palette (sampled from the design files) */
    --cyan: #00b2e4;
    --cyan-tint: #e3f6fc;
    --cyan-2: #009fcc;             /* step-card shadow ramp */
    --cyan-3: #008bb3;
    --cyan-4: #007799;
    --teal: #005f7a;               /* strokes, diagram ink, "35" numerals */
    --navy: #003e4f;               /* footer */
    --ink: #2b3438;                /* headings and body */
    --ink-black: #000103;          /* nav and small labels */
    --ink-soft: #55636b;           /* secondary notes only */
    --wheat: #ffeaa2;
    --wheat-hover: #ffe27f;
    --paper: #fffcf2;              /* statement card */
    --rule-red: #c22800;           /* statement rules */
    --ticker: #2b3438;
    --white: #ffffff;
    --ok-bg: #eaf7f0;
    --ok-ink: #14603f;
    --warn-bg: #fdeeec;
    --warn-ink: #96301f;
    --gain: #187a48;
    --loss: #b93a2c;

    --font: "IBM Plex Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", Meiryo, sans-serif;
    --frame: 1440px;

    /* Legacy fluid tokens still used by the signup and legal sheets. */
    --fs-body: max(14px, calc(21 * var(--u)));
    --fs-small: max(12px, calc(16 * var(--u)));
    --fs-tiny: max(11px, calc(12 * var(--u)));
    --fs-h1: max(30px, calc(72 * var(--u)));
    --fs-h2: max(26px, calc(48 * var(--u)));
    --fs-h3: max(15px, calc(21 * var(--u)));
    --fs-q: max(16px, calc(24 * var(--u)));
    --fs-big: max(26px, calc(48 * var(--u)));
    --gutter: calc(49 * var(--u));

    --z-head: 40;
    --z-backdrop: 39;
}

* { box-sizing: border-box; }

html { height: 100%; scroll-behavior: smooth; }
.section-title[id] { scroll-margin-top: calc(150 * var(--u)); } /* pinned bar (84) + label + air */

/* <body> is the size container the design unit is measured against (its
   inline size excludes the scrollbar, unlike 100vw). */
body {
    margin: 0;
    min-height: 100%;
    background: var(--white);
    color: var(--ink);
    font-family: var(--font);
    font-size: 16px;
    line-height: 1.6;
    -webkit-text-size-adjust: 100%;
    overflow-x: clip;
    container-type: inline-size;
}

/* The page frame: the 1440px artboard, centred, with the design unit. */
.site-frame {
    --u: calc(min(100cqw, 1440px) / 1440);
    position: relative;
    max-width: var(--frame);
    margin: 0 auto;
    background: var(--white);
    box-shadow: 0 0 40px rgba(0, 0, 0, 0.16);
}

h1, h2, h3, h4 { margin: 0; line-height: 1.35; font-weight: 700; }
p { margin: 0; }
img { max-width: 100%; }
a { color: var(--teal); text-underline-offset: 3px; }
strong { font-weight: 700; }
.num { font-variant-numeric: tabular-nums; }

/* Illustrator set the Japanese copy with optical kerning (kana run 8-12%
   narrower than in the browser); a small negative tracking splits the
   difference without squeezing the kanji noticeably. */
html:lang(ja) .site-frame { letter-spacing: -0.02em; }

.phrase { display: inline-block; white-space: pre-wrap; }
.t-strong { color: var(--cyan); font-weight: 700; }

:focus-visible { outline: 3px solid var(--teal); outline-offset: 3px; border-radius: 2px; }

.visually-hidden {
    position: absolute;
    width: 1px; height: 1px;
    margin: -1px; padding: 0; border: 0;
    clip-path: inset(50%);
    overflow: hidden;
    white-space: nowrap;
}

.skip-link {
    position: absolute;
    left: 16px; top: -64px;
    background: var(--white);
    padding: 8px 16px;
    border-radius: 8px;
    z-index: calc(var(--z-head) + 1);
    transition: top 150ms ease-out;
}
.skip-link:focus { top: 16px; }

/* ── Layout helpers ──────────────────────────────────────────────────────── */

.wrap { position: relative; width: 100%; margin: 0 auto; padding: 0 calc(140 * var(--u)); }
.wrap-narrow { padding: 0 calc(264 * var(--u)); }
.wrap-wide { padding: 0 calc(49 * var(--u)); }
.section { position: relative; }

/* On the program, site and FAQ pages a raised section casts a soft shadow
   onto the one below it; .shadow-top paints that shadow along the top edge. */
.shadow-top::before {
    content: "";
    position: absolute;
    left: 0; right: 0; top: 0;
    height: calc(15 * var(--u));
    background: linear-gradient(rgba(0, 0, 0, 0.09), rgba(0, 0, 0, 0));
    pointer-events: none;
    z-index: 2;
}
.band-tint { background: var(--cyan-tint); }

/* The program and site pages centre their heading blocks 20px left of the
   frame centre (as drawn); this keeps that offset. */
.section-head-offset { margin-right: calc(40 * var(--u)); }

/* ── Section heading: slanted label + title + light lead ─────────────────── */

.section-head { text-align: center; }
.section-label { display: flex; justify-content: center; margin: 0; }
.section-label > span {
    display: inline-block;
    min-width: calc(209.3 * var(--u));
    height: calc(29.2 * var(--u));
    padding: 0 calc(36 * var(--u));
    text-align: center;
    background: var(--cyan);
    color: var(--white);
    font-size: calc(21 * var(--u));
    font-weight: 400;
    line-height: calc(29.2 * var(--u));
    letter-spacing: 0.02em;
    white-space: nowrap;
    clip-path: polygon(calc(29.2 * var(--u)) 0, 100% 0, calc(100% - 29.2 * var(--u)) 100%, 0 100%);
}
.section-label-s > span { min-width: calc(148 * var(--u)); }
.section-label-l > span { min-width: calc(226.3 * var(--u)); }
.section-label-xl > span { min-width: calc(288.6 * var(--u)); }
.section-title {
    margin: calc(9.9 * var(--u)) 0 0;
    font-size: calc(48 * var(--u));
    font-weight: 700;
    line-height: calc(48 * var(--u));
    color: var(--ink);
}
.section-title-h1 { font-size: calc(72 * var(--u)); line-height: calc(72 * var(--u)); margin-top: calc(11.7 * var(--u)); }
.section-lead {
    margin: calc(13.4 * var(--u)) auto 0;
    font-size: max(12px, calc(16 * var(--u)));
    font-weight: 400;
    line-height: calc(28 * var(--u));
    color: var(--ink-black);
}

/* ── Buttons: 65.2px pills, teal hairline, arrow glyph on the right ──────── */

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: calc(13 * var(--u));
    height: calc(65.2 * var(--u));
    padding: 0 calc(25 * var(--u));
    background: var(--white);
    border: 3px solid var(--teal);
    border-radius: calc(32.6 * var(--u));
    font: inherit;
    font-size: max(13px, calc(21 * var(--u)));
    line-height: 1;
    color: var(--ink-black);
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: background 150ms ease-out;
}
.button:hover { background: var(--cyan-tint); }
.button-cta { background: var(--wheat); }
.button-cta:hover { background: var(--wheat-hover); }
.button-arrow { padding-right: calc(17 * var(--u)); }
.button-arrow::after {
    content: "";
    flex: none;
    width: calc(21 * var(--u));
    height: calc(22.4 * var(--u));
    background: url("/img/svg/marks/arrow-right.svg") center / contain no-repeat;
    transition: transform 150ms ease-out;
}
.button-arrow:hover::after { transform: translateX(4px); }
.button-block { display: flex; width: 100%; }
.button[disabled], .button[aria-disabled="true"] { opacity: 0.5; cursor: not-allowed; }

/* ── Brand: wordmark + translated band (band is 80.5% wide, 5.26% tall) ──── */

.brand { display: block; width: calc(281.6 * var(--u)); text-decoration: none; color: var(--ink); flex: none; }
.brand-logo { display: block; width: 100%; height: auto; }
.brand-band {
    display: block;
    width: 80.5%;
    height: 0.0526em;
    margin: 0.0179em 0 0 6.96%;
    background: var(--cyan);
    color: var(--white);
    font-weight: 700;
    text-align: center;
    clip-path: polygon(6.55% 0, 100% 0, 93.45% 100%, 0 100%);
}
.brand { font-size: calc(281.6 * var(--u)); } /* em-relative band geometry follows the logo width */
.brand-band > span {
    display: block;
    position: relative;
    top: 0.07em;                  /* the design sets the band text ~1px low */
    font-size: 0.0471em;          /* 13.25px on the 281.6px header wordmark */
    line-height: 1.117;           /* 14.8px band */
    letter-spacing: 0.03em;
}
:lang(en) .brand-band > span { letter-spacing: 0.2em; }

/* ── Site header ─────────────────────────────────────────────────────────────
   A 152px bar that is sticky with a negative offset: once the page has
   scrolled 68px the bar's lower 84px stay pinned. www.js adds
   body.is-scrolled on the first scroll so the contents re-lay into that
   compact strip (the bar itself never changes height, so nothing jumps). */

.site-head {
    position: sticky;
    top: calc(-68 * var(--u));
    z-index: var(--z-head);
    height: calc(152 * var(--u));
    background: var(--white);
    box-shadow: 0 calc(10 * var(--u)) calc(28 * var(--u)) calc(-10 * var(--u)) rgba(0, 0, 0, 0.16);
}
.site-head-inner {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: calc(152 * var(--u));
    transition: height 200ms ease-out;
}
body.is-scrolled .site-head-inner { height: calc(84 * var(--u)); }
.site-head .brand {
    position: absolute;
    left: calc(49 * var(--u));
    top: calc(36.4 * var(--u));
    transition: opacity 300ms ease-out, top 200ms ease-out, font-size 200ms ease-out, width 200ms ease-out;
}
body.is-scrolled .site-head .brand { top: calc(19.5 * var(--u)); width: calc(176 * var(--u)); font-size: calc(176 * var(--u)); }

/* Nav row: centred on the signup button (75.5px from the top, 65.2px tall). */
.site-nav {
    position: absolute;
    right: calc(38 * var(--u));
    top: calc(75.5 * var(--u));
    height: calc(65.2 * var(--u));
    display: flex;
    align-items: center;
    gap: calc(70 * var(--u));
    transition: top 200ms ease-out;
}
body.is-scrolled .site-nav { top: calc(9.4 * var(--u)); }
.site-nav-list { display: flex; gap: calc(38 * var(--u)); list-style: none; margin: 0; padding: 0; height: 100%; }
.site-nav-list a {
    position: relative;
    display: flex;
    align-items: center;
    height: 100%;
    padding-top: calc(1.8 * var(--u));
    color: var(--ink-black);
    font-size: max(13px, calc(21 * var(--u)));
    line-height: calc(21 * var(--u));
    text-decoration: none;
    white-space: nowrap;
}
html:lang(ja) .site-nav-list a { letter-spacing: -0.05em; } /* matches the artboard's kerned nav widths */
html:lang(ja) .site-nav-list li:nth-child(3) a { margin-left: calc(-4 * var(--u)); } /* equalises the visible gaps (ト has little right-side ink) */
.site-nav-list a.active::after,
.site-nav-list a:hover::after,
.site-nav-list a:focus-visible::after {
    content: "";
    position: absolute;
    left: calc(1.7 * var(--u)); right: 0;
    bottom: 0;
    height: calc(12.7 * var(--u));
    background: var(--cyan);
    clip-path: polygon(calc(12.7 * var(--u)) 0, 100% 0, calc(100% - 12.7 * var(--u)) 100%, 0 100%);
}
.site-nav-actions { display: flex; align-items: center; gap: calc(38 * var(--u)); }
.head-login, .lang-toggle { color: var(--ink-black); font-size: max(13px, calc(21 * var(--u))); text-decoration: none; white-space: nowrap; padding-top: calc(1.8 * var(--u)); }
.head-login:hover, .lang-toggle:hover { color: var(--cyan); }
.head-signup { padding-left: calc(27.4 * var(--u)); padding-right: calc(16.8 * var(--u)); gap: calc(15.6 * var(--u)); transition: height 200ms ease-out, background 150ms ease-out; }
body.is-scrolled .head-signup { height: calc(50 * var(--u)); }

.site-nav-toggle {
    display: none;
    position: absolute;
    right: calc(44 * var(--u));
    top: 50%;
    transform: translateY(-50%);
    width: 48px; height: 48px;
    padding: 6px;
    background: none;
    border: 0;
    color: var(--ink);
    cursor: pointer;
}
.menu-icon { width: 100%; height: 100%; display: block; }
.menu-icon-close { display: none; }
.site-nav-toggle[aria-expanded="true"] .menu-icon-open { display: none; }
.site-nav-toggle[aria-expanded="true"] .menu-icon-close { display: block; }

/* ── Ticker band (59.5px dark strip; rolls with cyan diamonds) ───────────── */

.ticker {
    position: relative;
    z-index: 2;
    height: calc(59.5 * var(--u));
    display: flex;
    align-items: center;
    background: var(--ticker);
    color: var(--white);
    overflow: hidden;
}
.ticker-track { display: flex; width: max-content; animation: ticker-roll 32s linear infinite; }
.ticker-list { display: flex; gap: calc(56 * var(--u)); list-style: none; margin: 0; padding: 0 calc(28 * var(--u)); }
.ticker-list li {
    display: flex;
    align-items: center;
    gap: calc(14 * var(--u));
    white-space: nowrap;
    font-size: calc(16 * var(--u));
    font-weight: 700;
    letter-spacing: 0.02em;
}
.ticker-list li::before {
    content: "";
    flex: none;
    width: calc(9 * var(--u));
    height: calc(9 * var(--u));
    background: var(--cyan);
    transform: rotate(45deg);
}
@keyframes ticker-roll { to { transform: translateX(-50%); } }

/* ── Slanted cyan bullets (portal feature list, referral points) ─────────── */

.slash-list { list-style: none; margin: 0; padding: 0; }
.slash-list > li { position: relative; padding-left: calc(66.5 * var(--u)); }
.slash-list > li::before {
    content: "";
    position: absolute;
    left: 0;
    top: calc(1 * var(--u));
    width: calc(69.9 * var(--u));
    height: calc(29.2 * var(--u));
    background: var(--cyan);
    clip-path: polygon(calc(29.2 * var(--u)) 0, 100% 0, calc(100% - 29.2 * var(--u)) 100%, 0 100%);
}
.slash-list h3 { font-size: calc(21 * var(--u)); font-weight: 700; line-height: calc(31 * var(--u)); color: var(--ink); }
.slash-list p { margin: 0; font-size: calc(16 * var(--u)); line-height: calc(28 * var(--u)); color: var(--ink); }

/* ── FAQ accordion (question 24px bold, cyan rule, 69.9×29.2 slanted toggle) */

.faq-list { margin: 0; }
.faq-item { position: relative; margin: 0; }
.faq-item + .faq-item { margin-top: calc(17.7 * var(--u)); }
.faq-item summary {
    list-style: none;
    display: block;
    position: relative;
    padding: 0 calc(90 * var(--u)) calc(11.1 * var(--u)) calc(2.1 * var(--u));
    border-bottom: calc(1 * var(--u)) solid var(--cyan);
    cursor: pointer;
    font-size: calc(24 * var(--u));
    font-weight: 700;
    line-height: calc(36 * var(--u));
    color: var(--ink-black);
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary:hover .faq-q { color: var(--teal); }
.faq-q { display: block; }
.faq-toggle {
    position: absolute;
    right: calc(-31.1 * var(--u));
    top: calc(9.2 * var(--u));
    width: calc(69.9 * var(--u));
    height: calc(29.2 * var(--u));
    background: var(--cyan);
    opacity: 0.5;
    clip-path: polygon(calc(29.2 * var(--u)) 0, 100% 0, calc(100% - 29.2 * var(--u)) 100%, 0 100%);
    transition: opacity 150ms ease-out;
}
.faq-toggle::before,
.faq-toggle::after {
    content: "";
    position: absolute;
    left: 50%; top: 50%;
    background: var(--white);
    transform: translate(-50%, -50%);
}
.faq-toggle::before { width: calc(11 * var(--u)); height: calc(1.5 * var(--u)); }
.faq-toggle::after { width: calc(1.5 * var(--u)); height: calc(11 * var(--u)); }
.faq-item[open] .faq-toggle { opacity: 1; }
.faq-item[open] .faq-toggle::after { display: none; }
.faq-a {
    padding: calc(14.2 * var(--u)) 0 calc(56 * var(--u)) calc(26.8 * var(--u));
    font-size: calc(21 * var(--u));
    line-height: calc(33.9 * var(--u));
    color: var(--ink-black);
}
.faq-a p { margin: 0; }
.faq-boxed .faq-a { background: var(--cyan-tint); }

/* ── Statement paper (cream ledger card) ─────────────────────────────────── */

.paper {
    background: var(--paper);
    border: 1px solid var(--ink);
    box-shadow: calc(10 * var(--u)) calc(12 * var(--u)) calc(18 * var(--u)) calc(-8 * var(--u)) rgba(0, 0, 0, 0.35);
    padding: calc(30 * var(--u)) calc(42 * var(--u));
}
.paper-title { font-size: calc(21 * var(--u)); font-weight: 700; line-height: calc(31 * var(--u)); margin: 0; color: var(--ink); }
.paper-caption { font-size: calc(16 * var(--u)); font-weight: 400; line-height: calc(28 * var(--u)); margin: 0 0 calc(8 * var(--u)); color: var(--ink); }
.ledger { margin: 0; }
.ledger-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: calc(16 * var(--u));
    padding: calc(12 * var(--u)) 0 calc(10 * var(--u));
    border-top: 1px dashed var(--ink);
}
.ledger-row:first-of-type { border-top: 1px solid var(--rule-red); }
.ledger-row dt { font-size: calc(21 * var(--u)); font-weight: 700; color: var(--ink); }
.ledger-row dd { margin: 0; font-size: calc(48 * var(--u)); font-weight: 700; line-height: 1.1; color: var(--ink); letter-spacing: 0.02em; }
.ledger-row-sub { border-top-color: var(--rule-red); border-top-style: solid; }
.ledger-row-total { border-top: calc(5 * var(--u)) solid var(--rule-red); }

/* ── Speech bubbles (cyan cap + light body) ──────────────────────────────── */

.bubble { position: relative; background: #fcfeff; border: calc(3 * var(--u)) solid var(--cyan); border-radius: calc(24 * var(--u)); }
.bubble-cap {
    margin: 0;
    background: var(--cyan);
    color: var(--white);
    font-size: calc(21 * var(--u));
    font-weight: 700;
    line-height: calc(31 * var(--u));
    padding: calc(9 * var(--u)) calc(20 * var(--u)) calc(6 * var(--u));
    border-radius: calc(20 * var(--u)) calc(20 * var(--u)) 0 0;
}
.bubble-body { margin: 0; padding: calc(16 * var(--u)) calc(20 * var(--u)) calc(18 * var(--u)); font-size: calc(16 * var(--u)); font-weight: 400; line-height: calc(28 * var(--u)); color: var(--ink); }
.bubble::before, .bubble::after { content: ""; position: absolute; width: 0; height: 0; border: solid transparent; }
.tail-r::before { right: calc(-34 * var(--u)); bottom: calc(26 * var(--u)); border-width: calc(12 * var(--u)) 0 calc(12 * var(--u)) calc(34 * var(--u)); border-left-color: var(--cyan); }
.tail-r::after { right: calc(-26 * var(--u)); bottom: calc(30 * var(--u)); border-width: calc(8 * var(--u)) 0 calc(8 * var(--u)) calc(26 * var(--u)); border-left-color: #fcfeff; }
.tail-l::before { left: calc(-34 * var(--u)); bottom: calc(26 * var(--u)); border-width: calc(12 * var(--u)) calc(34 * var(--u)) calc(12 * var(--u)) 0; border-right-color: var(--cyan); }
.tail-l::after { left: calc(-26 * var(--u)); bottom: calc(30 * var(--u)); border-width: calc(8 * var(--u)) calc(26 * var(--u)) calc(8 * var(--u)) 0; border-right-color: #fcfeff; }
.tail-b::before { left: 50%; bottom: calc(-30 * var(--u)); margin-left: calc(-14 * var(--u)); border-width: calc(30 * var(--u)) calc(14 * var(--u)) 0 calc(14 * var(--u)); border-top-color: var(--cyan); }
.tail-b::after { left: 50%; bottom: calc(-22 * var(--u)); margin-left: calc(-9 * var(--u)); border-width: calc(22 * var(--u)) calc(9 * var(--u)) 0 calc(9 * var(--u)); border-top-color: #fcfeff; }
.tail-t::before { left: 50%; top: calc(-30 * var(--u)); margin-left: calc(-14 * var(--u)); border-width: 0 calc(14 * var(--u)) calc(30 * var(--u)) calc(14 * var(--u)); border-bottom-color: var(--cyan); }
.tail-t::after { left: 50%; top: calc(-22 * var(--u)); margin-left: calc(-9 * var(--u)); border-width: 0 calc(9 * var(--u)) calc(22 * var(--u)) calc(9 * var(--u)); border-bottom-color: #fcfeff; }

/* ── Data tables (light cyan banded rows) ────────────────────────────────── */

.data-table { width: 100%; border-collapse: collapse; font-size: calc(21 * var(--u)); line-height: calc(31 * var(--u)); }
.data-table th, .data-table td { padding: calc(9 * var(--u)) calc(15 * var(--u)); text-align: left; vertical-align: baseline; font-weight: 400; color: var(--ink); }
.data-table thead th { background: var(--cyan-tint); }
.data-table tbody tr:nth-child(odd) th, .data-table tbody tr:nth-child(odd) td { background: var(--cyan-tint); }
.data-table-plain tbody tr:nth-child(odd) th, .data-table-plain tbody tr:nth-child(odd) td { background: transparent; }
.data-table-plain tbody tr { border-bottom: 1px solid var(--cyan-tint); }
.data-table small { font-size: calc(12 * var(--u)); font-weight: 400; }
.table-scroll { overflow-x: auto; }

/* ── Dashed frame: the design's 2px dashes with 3px gaps, drawn by an inline
   SVG so the pattern and thickness never scale (see WwwDashFrameHtml) ────── */

.dash-frame { position: absolute; left: 1px; top: 1px; width: calc(100% - 2px); height: calc(100% - 2px); overflow: visible; pointer-events: none; }
.dash-frame rect { fill: none; stroke: var(--cyan); stroke-width: 2; stroke-dasharray: 6 3; vector-effect: non-scaling-stroke; }

/* ── Small outlined tags ─────────────────────────────────────────────────── */

.tag-list { display: flex; flex-wrap: wrap; gap: calc(10 * var(--u)) calc(14 * var(--u)); list-style: none; margin: 0; padding: 0; }
.tag-list li { border: 1px solid var(--ink); padding: 0 calc(9 * var(--u)); font-size: calc(16 * var(--u)); font-weight: 400; line-height: calc(25 * var(--u)); color: var(--ink-black); }

/* ── Notices & forms (signup) ────────────────────────────────────────────── */

.notice { border-radius: 12px; padding: 0.8em 1em; margin-bottom: 1em; font-size: var(--fs-small); }
.notice-ok { background: var(--ok-bg); color: var(--ok-ink); }
.notice-warn { background: var(--warn-bg); color: var(--warn-ink); }
.field { margin-bottom: 1.4em; min-width: 0; }
.field label { display: block; font-size: var(--fs-small); font-weight: 700; margin-bottom: 0.4em; color: var(--ink); }
input[type="text"], input[type="password"], input[type="url"], input[type="email"], select, textarea {
    width: 100%;
    padding: 0.7em 0.9em;
    font: inherit;
    font-size: var(--fs-body);
    color: var(--ink);
    background: var(--white);
    border: 1.5px solid var(--teal);
    border-radius: 12px;
    transition: box-shadow 150ms ease-out;
}
textarea { resize: vertical; }
input:focus, select:focus, textarea:focus { outline: none; box-shadow: 0 0 0 3px var(--cyan-tint), 0 0 0 4.5px var(--cyan); }
::placeholder { color: var(--ink-soft); opacity: 1; }
.field-hint { font-size: var(--fs-tiny); color: var(--ink-soft); margin: 0.4em 0 0; font-weight: 400; }
.field-error { font-size: var(--fs-small); color: var(--loss); font-weight: 700; margin: 0.4em 0 0; }
.field-invalid input, .field-invalid textarea { border-color: var(--loss); }

/* ── Footer (452.2px navy band) ──────────────────────────────────────────── */

.site-foot {
    position: relative;
    height: calc(452.2 * var(--u));
    background: var(--navy);
    color: var(--white);
    font-size: calc(16 * var(--u));
}
.site-foot-inner { position: relative; height: 100%; }
.foot-brand { position: absolute; left: calc(106.1 * var(--u)); top: calc(81.2 * var(--u)); width: calc(327.1 * var(--u)); font-size: calc(327.1 * var(--u)); }
.foot-brand .brand-band { margin-top: 0.018em; }
.foot-tagline {
    position: absolute;
    left: calc(108 * var(--u));
    top: calc(206.8 * var(--u));
    width: calc(330 * var(--u));
    margin: 0;
    font-size: calc(16 * var(--u));
    font-weight: 400;
    line-height: calc(24 * var(--u));
    color: var(--white);
}
.foot-headline {
    position: absolute;
    left: calc(510.4 * var(--u));
    top: calc(99.1 * var(--u));
    margin: 0;
    font-size: calc(48 * var(--u));
    font-weight: 700;
    line-height: calc(48 * var(--u));
    white-space: nowrap;
}
html:lang(en) .foot-headline { width: calc(880 * var(--u)); font-size: calc(40 * var(--u)); line-height: calc(46 * var(--u)); white-space: normal; }
.foot-cta { position: absolute; left: calc(106.1 * var(--u)); top: calc(291.1 * var(--u)); margin: 0; }
.foot-cta .button { width: calc(327.1 * var(--u)); padding: 0; }
.foot-cols { position: absolute; left: calc(510.8 * var(--u)); top: calc(206.4 * var(--u)); display: flex; gap: 0; }
.foot-col { width: calc(283 * var(--u)); }
.foot-col a { font-size: calc(16 * var(--u)); font-weight: 400; line-height: calc(28 * var(--u)); color: var(--white); }
.foot-col ul { list-style: none; margin: 0; padding: 0; }
.foot-col li { margin: 0; }
.foot-col a { display: block; text-decoration: none; }
.foot-col a:hover { color: var(--cyan); }
.foot-col a.foot-link-strong { font-weight: 700; }
.copyright {
    position: absolute;
    left: 0; right: 0;
    top: calc(410.7 * var(--u));
    margin: 0;
    text-align: center;
    font-size: calc(12 * var(--u));
    line-height: calc(12 * var(--u));
    color: var(--white);
}

/* ── Motion preferences ──────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}

/* ── Phone-only / desktop-only copy fragments (see WwwEmphasisHtml) ──────── */

.br-mobile, .m-only, .fig-mobile { display: none; }

/* ── Phone (design/mobile/*.svg: 716px artboards; --u is 1px at 716) ─────
   Below 900px the page switches to the phone artboards. Sizes are design
   pixels again, with max() floors so type stays legible on narrow phones. */

/* ── English desktop: the four-line tagline needs the footer button lower ── */
@media (width > 900px) {
    html:lang(en) .foot-cta { top: calc(315.1 * var(--u)); }
}

@media (max-width: 900px) {
    .site-frame { --u: calc(100cqw / 716); box-shadow: none; }
    .br-mobile, .m-only { display: inline; }
    .br-desktop { display: none; } /* {dbr}: line break that only applies above the phone breakpoint */
    .fig-mobile { display: block; }
    .d-only, .fig-desktop { display: none; }

    /* Header: wordmark near the left, hamburger at the right (expanded menu.svg) */
    .site-head { top: calc(-56 * var(--u)); height: calc(152 * var(--u)); }
    .site-head-inner { height: calc(152 * var(--u)); }
    .site-head .brand {
        left: calc(171.6 * var(--u));
        top: calc(35.6 * var(--u));
        width: calc(392.6 * var(--u));
        font-size: calc(392.6 * var(--u));
        opacity: 1;
        visibility: visible;
    }
    body.is-scrolled .site-head-inner { height: calc(96 * var(--u)); }
    body.is-scrolled .site-head .brand { left: calc(228 * var(--u)); top: calc(12 * var(--u)); width: calc(260 * var(--u)); font-size: calc(260 * var(--u)); }
    .site-nav-toggle {
        display: block;
        right: calc(53 * var(--u));
        top: calc(32 * var(--u));
        width: calc(60 * var(--u));
        height: calc(60 * var(--u));
        padding: calc(9.8 * var(--u));
        transform: none;
        color: #575757;
    }
    body.is-scrolled .site-nav-toggle { top: calc(18 * var(--u)); }

    /* Menu panel: bordered card under the wordmark, three rows and the action line */
    .site-nav {
        display: none;
        position: absolute;
        left: calc(43.9 * var(--u));
        right: auto;
        top: calc(125 * var(--u));
        width: calc(629.2 * var(--u));
        height: auto;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: calc(35 * var(--u)) calc(29.1 * var(--u)) calc(48.4 * var(--u));
        background: var(--white);
        border: calc(5 * var(--u)) solid var(--cyan);
        border-radius: calc(23.6 * var(--u));
        box-shadow: 0 calc(24 * var(--u)) calc(48 * var(--u)) calc(-12 * var(--u)) rgba(0, 62, 79, 0.28);
        transition: none;
    }
    body.menu-open .site-nav { display: flex; }
    body.menu-open::before { content: ""; position: fixed; inset: 0; background: rgba(255, 255, 255, 0.5); z-index: var(--z-backdrop); }
    .site-nav-list { flex-direction: column; gap: 0; height: auto; }
    .site-nav-list a {
        display: flex;
        align-items: center;
        justify-content: space-between;
        height: auto;
        padding: calc(24 * var(--u)) calc(4.4 * var(--u)) calc(24 * var(--u)) calc(28.7 * var(--u));
        border-bottom: calc(2 * var(--u)) solid var(--cyan);
        font-size: max(16px, calc(36 * var(--u)));
        line-height: calc(36 * var(--u));
        letter-spacing: 0;
    }
    .site-nav-list a:hover { color: var(--cyan); }
    .site-nav-list a::after,
    .site-nav-list a.active::after,
    .site-nav-list a:hover::after,
    .site-nav-list a:focus-visible::after {
        content: "";
        position: static;
        left: auto; right: auto; bottom: auto;
        flex: none;
        width: calc(12 * var(--u));
        height: calc(12 * var(--u));
        background: none;
        clip-path: none;
        border-right: calc(2 * var(--u)) solid var(--ink-black);
        border-top: calc(2 * var(--u)) solid var(--ink-black);
        transform: rotate(45deg);
    }
    .site-nav-actions { justify-content: center; flex-wrap: wrap; gap: 0; margin-top: calc(56.4 * var(--u)); }
    .site-nav-actions > * { margin: 0; padding: 0; font-size: max(16px, calc(36 * var(--u))); font-weight: 700; line-height: calc(36 * var(--u)); color: var(--ink-black); }
    .site-nav-actions .head-signup { min-width: 0; height: auto; padding: 0; background: none; border: 0; border-radius: 0; font-size: max(16px, calc(36 * var(--u))); }
    .site-nav-actions .head-signup:hover { color: var(--cyan); background: none; }
    body.menu-open .site-head .brand-band { visibility: hidden; }
    .head-signup:hover { background: none; }
    .head-signup::after { display: none; }
    .head-login::before, .lang-toggle::before { content: "\FF5C"; margin: 0 calc(12 * var(--u)); font-weight: 400; }

    /* Section headings */
    .section-title { font-size: max(24px, calc(52 * var(--u))); line-height: calc(52 * var(--u)); }
    .section-lead { font-size: max(12px, calc(24 * var(--u))); line-height: calc(33.9 * var(--u)); }
    .section-label-big > span {
        min-width: calc(208.3 * var(--u));
        height: calc(41.1 * var(--u));
        font-size: max(14px, calc(29.54 * var(--u)));
        line-height: calc(41.1 * var(--u));
        clip-path: polygon(calc(41.1 * var(--u)) 0, 100% 0, calc(100% - 41.1 * var(--u)) 100%, 0 100%);
    }
    .section-head-offset { margin-right: 0; }

    /* Buttons and ticker keep their artboard sizes */
    .button { font-size: max(13px, calc(21 * var(--u))); }
    .ticker-list li { font-size: max(12px, calc(24 * var(--u))); }

    /* FAQ accordion as drawn on the phone home page (the FAQ page refines it) */
    .faq-item + .faq-item { margin-top: calc(10.2 * var(--u)); }
    .faq-item[open] + .faq-item { margin-top: calc(22.5 * var(--u)); }
    .faq-item summary { padding: 0 calc(45 * var(--u)) calc(20.1 * var(--u)) calc(2.1 * var(--u)); font-size: max(13px, calc(24 * var(--u))); line-height: calc(36 * var(--u)); }
    .faq-toggle { top: calc(19.2 * var(--u)); right: calc(-31.1 * var(--u)); }
    .faq-a { padding: calc(16 * var(--u)) calc(6 * var(--u)) 0; font-size: max(13px, calc(24 * var(--u))); line-height: calc(33.9 * var(--u)); }

    /* Footer: stacked and centred, two link columns */
    .site-foot { height: calc(1082 * var(--u)); }
    .foot-brand { left: calc(194.6 * var(--u)); top: calc(56.4 * var(--u)); }
    .foot-tagline { left: 0; right: 0; top: calc(163 * var(--u)); width: auto; padding: 0 calc(180 * var(--u)); text-align: center; font-size: max(11px, calc(16 * var(--u))); line-height: calc(26 * var(--u)); }
    .foot-headline { left: 0; right: 0; top: calc(252.1 * var(--u)); text-align: center; font-size: max(18px, calc(36 * var(--u))); line-height: calc(36 * var(--u)); }
    html:lang(en) .foot-headline { width: auto; padding: 0; font-size: max(15px, calc(28 * var(--u))); line-height: calc(36 * var(--u)); white-space: nowrap; } /* one line: 624px of 716 */
    .foot-cta { left: calc(194.5 * var(--u)); top: calc(309.2 * var(--u)); }
    .foot-cols { left: calc(77.9 * var(--u)); top: calc(413.8 * var(--u)); display: grid; grid-template-columns: calc(300 * var(--u)) auto; }
    .foot-col a { white-space: nowrap; }
    .foot-col { width: auto; }
    .foot-col:nth-child(1) { grid-column: 1; grid-row: 1; }
    .foot-col:nth-child(2) { grid-column: 2; grid-row: 1 / span 2; }
    .foot-col:nth-child(3) { grid-column: 1; grid-row: 2; margin-top: calc(59.2 * var(--u)); }
    .foot-col a { font-size: max(15px, calc(32 * var(--u))); line-height: calc(56 * var(--u)); }
    .copyright { top: calc(1023.2 * var(--u)); font-size: max(10px, calc(18 * var(--u))); line-height: calc(18 * var(--u)); }
}

/* ── English phone: leads keep a 2vw side margin; the longer tagline gets a wider
   column so it stays three lines above the footer headline ─────────────────── */
@media (max-width: 900px) {
    html:lang(en) .section-lead { padding-left: 2vw; padding-right: 2vw; }
    html:lang(en) .foot-tagline { padding: 0 calc(120 * var(--u)); }
}
