/*
 * Corvane Air — design tokens. Every colour, font, size, duration, easing,
 * offset and breakpoint on the concept site lives here; site.css and site.js
 * only reference them. Prefix: --s- (never collides with the gallery tokens
 * loaded for the ribbon).
 * Palette: the dusk itself — deep plum-navy, platinum, ivory, gold leaf.
 * Contrast (WCAG): text 16.0:1, muted 10.6:1, soft 7.1:1, gold 8.0:1 on --s-bg;
 * gold focus ring 8.0:1 on --s-bg (non-text minimum is 3:1).
 */
@font-face {
    font-family: "Corvane Garamond";
    src: url("fonts/cormorant-garamond-latin.var.woff2") format("woff2");
    font-weight: 300 600; font-style: normal; font-display: swap;
}
@font-face {
    font-family: "Corvane Italic";
    src: url("../../../shared/fonts/cormorant/corm-i400-latin.woff2") format("woff2");
    font-weight: 400; font-style: italic; font-display: swap;
}
@font-face {
    font-family: "Corvane Italic";
    src: url("../../../shared/fonts/cormorant/corm-i500-latin.woff2") format("woff2");
    font-weight: 500; font-style: italic; font-display: swap;
}
@font-face {
    font-family: "Corvane Sans";
    src: url("../../../shared/fonts/inter/Inter-latin.var.woff2") format("woff2");
    font-weight: 100 900; font-style: normal; font-display: swap;
}

:root {
    /* Ground colours */
    --s-bg: #16132a;            /* plum-navy dusk */
    --s-bg-deep: #0f0d1f;
    --s-bg-glass: #16132ad9;    /* header once scrolled */
    --s-surface: #1d1934;
    --s-text: #f5f1e8;          /* ivory: all body copy */
    --s-muted: #c6c4d6;         /* platinum: secondary copy (10.6:1) */
    --s-soft: #a39fba;          /* tertiary labels (7.1:1) */
    --s-gold: #c8a96a;          /* gold leaf: hairlines, arcs, display accents */
    --s-gold-line: #c8a96a73;
    --s-gold-faint: #c8a96a2e;
    --s-gold-wash: #c8a96a14;
    --s-text-line: #f5f1e8b3;   /* outlined buttons */
    --s-rule: #c6c4d624;
    --s-rule-strong: #c6c4d64d;
    --s-mask-solid: #000;

    /* Cabin wall + window */
    --s-panel: #1c1832;
    --s-panel-high: #2a2443;
    --s-panel-seam: #0c0a19;
    --s-panel-sheen: #c6c4d612;
    --s-surround: #241f3b;
    --s-surround-edge: #c6c4d61f;
    --s-frame: #b5b8cc;
    --s-frame-deep: #615e7c;
    --s-frame-edge: #eceaf2;
    --s-frame-shadow: #05040dcc;
    --s-glass-sheen: #f5f1e814;
    --s-blind: #ebe4d4;
    --s-blind-shade: #bcb09a;

    /* Dusk sky */
    --s-sky-zenith: #0d0b1f;
    --s-sky-high: #1d1a3b;
    --s-sky-mid: #362a52;
    --s-sky-low: #5f3f5d;
    --s-sky-horizon: #b47c5a;
    --s-sky-glow: #d9a46a59;
    --s-sea: #120f24;
    --s-cloud-far: #a9a6c4;
    --s-cloud-near: #e3c8b8;
    --s-cloud-underside: #c9886a;  /* warm dusk light under the cloud bases */
    --s-cloud-far-alpha: 0.32;
    --s-cloud-near-alpha: 0.34;
    --s-star: #f5f1e8;
    --s-horizon: 63%;              /* horizon height in every dusk scene */

    /* Map */
    --s-land: #c6c4d6;
    --s-land-alpha: 0.35;
    --s-graticule: #c6c4d614;
    --s-arc-w: 0.2;          /* map user units (~1.7px at 1440) */
    --s-arc-w-mobile: 0.3;   /* map user units (~1.4px at 390) */

    /* Aircraft drawings */
    --s-hull-fill: #221d3c;
    --s-hull-stroke: #c6c4d6;
    --s-cheatline: #c8a96a;
    --s-cabin-light: #f1c983;

    /* Apron band (experience) */
    --s-band-ground: #100d20;
    --s-band-ground-near: #0a0816;
    --s-band-hills: #1a1530;
    --s-band-runway: #1f1a33;
    --s-band-marking: #f5f1e859;
    --s-band-edge-light: #f2c27a;
    --s-band-town: #e8b06e;
    --s-band-silhouette: #0b0917;
    --s-band-beam: #fff2d6;
    --s-band-beam-alpha: 0.5;
    --s-band-pool: #fff2d633;
    --s-band-shade: #0f0d1fcc;
    --s-map-w-phone: 220vw;      /* the route map on a phone: drawn wide and panned to Europe */
    --s-map-focus-phone: 0.46;   /* fraction of the map's width kept at the centre of the screen */
    --s-band-h: clamp(320px, 42vw, 600px);
    --s-band-art-top: -2%;                          /* the scene runs past the band's foot: the empty near ground is cropped */
    --s-band-art-h: 116%;
    --s-band-art-w: calc(var(--s-band-h) * 2.9);   /* viewBox 1600x640 at 116% of the band's height */
    --s-band-focus: 0.66;                           /* the point of the scene kept in view (fraction of its width) */

    /* The hangar sheet (fleet): ivory drawing paper lit by warm cabin light.
       Contrast on --s-paper: ink 14.2:1, ink-soft 7.4:1, ink-gold 5.1:1. */
    --s-paper: #f1e9da;
    --s-paper-deep: #e6dbc6;
    --s-paper-lit: #fbf3e2;
    --s-paper-rule: #1b17331f;
    --s-paper-rule-strong: #1b173347;
    --s-paper-grid: #1b17330d;
    --s-ink: #1b1733;
    --s-ink-soft: #4a4462;
    --s-ink-gold: #7a5a20;
    --s-hull-paper: #fbf6ec;
    --s-seat-paper: #c8a96a59;
    --s-glow-warm: #f1c98340;     /* the cabin reading light, as a pool of colour */
    --s-glow-warm-soft: #f1c9831f;
    --s-scrim: #120f24d9;         /* under the hero copy, over the open sky */
    --s-scrim-clear: #120f2400;
    --s-sheet-shadow: #1b173326;

    /* Ticket button: a boarding-pass stub, notched at both ends */
    --s-ticket: #e3c27c;
    --s-ticket-hover: #f6dca2;
    --s-ticket-ink: #16132a;      /* 9.6:1 on --s-ticket */
    --s-notch: 7px;
    --s-ticket-pad: 34px;

    /* Departures board */
    --s-board: #0c0a19;
    --s-board-row: #f5f1e80a;

    /* Form */
    --s-field: #f5f1e805;
    --s-error: #e7b4a4;

    /* Type */
    --s-font-display: "Corvane Garamond", "Cormorant Garamond", Georgia, "Times New Roman", serif;
    --s-font-italic: "Corvane Italic", "Cormorant Garamond", Georgia, serif;
    --s-font-body: "Corvane Sans", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
    --s-weight-display: 400;
    --s-weight-body: 300;
    --s-weight-ui: 400;
    --s-weight-button: 500;
    --s-step-hero: clamp(2.6rem, 5.6vw, 5.6rem);
    --s-step-h2: clamp(2.1rem, 4.4vw, 4rem);
    --s-step-h3: clamp(1.6rem, 2.4vw, 2.2rem);
    --s-step-numeral: clamp(2.4rem, 4vw, 3.6rem);
    --s-step-time: clamp(1.5rem, 2.2vw, 2rem);
    --s-step-lede: clamp(1.06rem, 1.35vw, 1.25rem);
    --s-step-body: clamp(1rem, 1.05vw, 1.0625rem);
    --s-step-small: 0.875rem;
    --s-step-micro: 0.6875rem;
    --s-step-button: 0.75rem;
    --s-step-input: 1.0625rem;  /* never below 16px: iOS zooms */
    --s-step-mark: 1rem;
    --s-step-mark-suffix: 1.15rem;
    --s-step-spec: 1.5rem;
    --s-step-route: 1.45rem;
    --s-step-route-time: 1.3rem;
    --s-step-label: 0.8125rem;
    --s-step-label-time: 1.05rem;
    --s-step-sent: 1.6rem;
    --s-step-menu: 2.4rem;
    --s-step-pass: 1.35rem;
    --s-step-pass-city: clamp(1.7rem, 2.8vw, 2.6rem);
    --s-pass-notch: 12px;           /* the half-moons where the stub tears off */
    --s-step-band-line: clamp(1.6rem, 3vw, 2.8rem);
    --s-lead-tight: 1.04;
    --s-lead-body: 1.7;
    --s-track-display: 0.005em;
    --s-track-settle-from: 0.07em;
    --s-track-body: 0.02em;
    --s-track-ui: 0.08em;
    --s-track-label: 0.16em;
    --s-track-micro: 0.24em;
    --s-measure: 34ch;

    /* Space */
    --s-gutter: clamp(20px, 5vw, 72px);
    --s-section: clamp(68px, 7.8vw, 125px);
    --s-section-tight: clamp(44px, 4.6vw, 72px);  /* where one section flows straight into the next */
    --s-gap: clamp(28px, 4vw, 64px);
    --s-max: 1440px;
    --s-hair: 1px;
    --s-focus-w: 2px;
    --s-focus-offset: 2px;
    --s-nav-h: 76px;
    --s-button-h: 52px;
    --s-button-h-nav: 44px;
    --s-radius-pill: 999px;
    --s-hero-copy-top: clamp(40px, 9svh, 96px);
    --s-hero-copy-top-fallback: clamp(40px, 9vh, 96px);

    /* The Window */
    --s-win-w: min(52vw, 29svh, 300px);
    --s-win-w-desk: clamp(240px, min(27vw, 47svh), 440px);
    --s-win-w-fallback: min(52vw, 29vh, 300px);
    --s-win-w-desk-fallback: clamp(240px, min(27vw, 47vh), 440px);
    --s-win-ratio: 0.68;
    --s-win-radius: 50% / 41%;
    --s-win-frame: clamp(9px, 1.1vw, 15px);
    --s-surround-w: 1.36;      /* surround size relative to the window */
    --s-surround-h: 1.18;
    --s-blind-h: 15%;
    --s-sky-lift: -0.06;       /* fraction of sky height: places the horizon in a small window */
    --s-sky-lift-desk: -0.02;

    /* Breakpoints (CSS @media cannot read custom properties; these mirror site.css) */
    --s-bp-desktop: "(min-width: 1024px)";

    /* Header glass (scrolled nav backdrop) */
    --s-blur-nav: 14px;
    --s-saturate-nav: 1.2;

    /* Sky sizing before site.js measures the hero (first paint / no-JS) */
    --ca-sky-w-default: 100vw;
    --ca-sky-h-default: 100vh;
    --ca-sky-h-default-svh: 100svh;

    /* Motion — CSS */
    --s-ease: cubic-bezier(0.16, 1, 0.3, 1);
    --s-ease-soft: cubic-bezier(0.45, 0, 0.2, 1);
    --s-dur: 1.2s;
    --s-dur-slow: 1.7s;
    --s-dur-quick: 0.5s;
    --s-dur-spine: 0.6s;       /* fleet spine name crossfade */
    --s-drift-far: 260s;
    --s-drift-near: 150s;
    --s-twinkle: 3.6s;
    --s-twinkle-step: -0.41s;

    --s-step-sheet-name: clamp(2.2rem, 4vw, 3.6rem);
    --s-step-sheet-numeral: clamp(5rem, 11vw, 10rem);
    --s-step-fact: clamp(1.7rem, 2.3vw, 2.2rem);
    --s-step-board-city: clamp(1.4rem, 2vw, 1.9rem);
    --s-step-access-num: clamp(4rem, 8vw, 7.5rem);
    --s-step-note: clamp(1rem, 1.2vw, 1.125rem);
    --s-scale-ratio: 0.42;          /* scale strip height relative to its width share */
    --s-sheet-min: clamp(560px, 70svh, 760px);
    --s-dur-sheet: 0.9s;
    --s-sheet-rise: 18px;

    /* Motion — read by site.js (unitless seconds / fractions of a timeline) */
    --s-js-dur: 1.4;
    --s-js-stagger: 0.12;
    --s-js-rise: 12;
    --s-js-scrub: 1.2;
    --s-js-ease: "expo.out";
    --s-js-h2-settle: 1.2;           /* h2 letter-spacing duration multiplier */
    --s-js-reveal-start: "top 90%";
    /* The Window — pinned scroll, positions are fractions of the pin */
    --s-js-pin-desk: 1.4;            /* viewport heights */
    --s-js-pin-mobile: 1.1;
    --s-js-win-start: 0.1;
    --s-js-win-span: 0.68;
    --s-js-win-margin: 1.14;         /* extra scale so the frame clears every corner */
    --s-js-sky-approach: 0.14;       /* the sky closes in this much as the window opens */
    --s-js-win-ease-in: "power2.in";
    --s-js-win-ease-out: "power1.out";
    --s-js-blind-lift: -104;         /* yPercent */
    --s-js-blind-dur: 0.18;
    --s-js-blind-ease: "power1.inOut";
    --s-js-leave-at: 0.02;
    --s-js-leave-dur: 0.14;
    --s-js-copy-out-at: 0.1;
    --s-js-copy-out-dur: 0.14;
    --s-js-glass-at: 0.22;
    --s-js-glass-dur: 0.3;
    --s-js-scrim-at: 0.3;
    --s-js-scrim-dur: 0.34;
    --s-js-copy-settle: 0.6;       /* phone: where the copy's centre comes to rest (fraction of the hero) */
    --s-js-copy-drop-at: 0.28;
    --s-js-copy-drop-dur: 0.5;
    --s-js-arrive-at: 0.74;
    --s-js-arrive-dur: 0.18;
    --s-js-arrive-stagger: 0.05;
    --s-js-arrive-ease: "power2.out";
    --s-js-settle-dur: 0.26;
    --s-js-tail: 0.1;
    /* Route map */
    --s-js-pass-flash: 0.9;         /* seconds a freshly written pass field stays warm */
    --s-js-map-start: "top 72%";
    --s-js-arc-dur: 2.2;
    --s-js-arc-gap: 0.22;
    --s-js-arc-ease: "power2.inOut";
    --s-js-dot-in: 0.3;
    --s-js-dot-out: 0.6;
    --s-js-label-at: 0.75;           /* fraction of an arc's draw */
    --s-js-label-dur: 0.8;
    --s-js-label-ease: "power1.out";
    /* Timeline rail + apron band */
    --s-js-rail-start: "top 70%";
    --s-js-rail-end: "bottom 70%";
    --s-js-band-drift: 6;            /* yPercent of parallax across the band */

    /* Layers */
    --s-z-sky: 0;
    --s-z-wall: 1;
    --s-z-window: 2;
    --s-z-scrim: 3;            /* the shade under the hero copy once the sky fills the screen */
    --s-z-copy: 4;
    --s-z-top: 50;
    --s-z-menu: 60;

    /* -- added: type scale + length tokens collected from site.css literals -- */
    --s-leading-160: 1.6;
    --s-weight-500: 500;
    --s-weight-400: 400;
    --s-weight-300: 300;
    --s-leading-140: 1.4;
    --s-leading-100: 1;
    --s-leading-110: 1.1;
    --s-leading-145: 1.45;
    --s-leading-125: 1.25;
    --s-leading-120: 1.2;
    --s-leading-115: 1.15;
    --s-leading-105: 1.05;
    --s-track-0p02: 0.02em;
    --s-space-0p8: 0.8em;
}