:root {
    /* ==================
     * font-family
     * ================== */
    --font-family: "Geologica", sans-serif;

    /* ==================
     * Fluid typography (mockup: 375 -> 1440)
     * clamp(mobile, fluid, desktop)
     * ================== */
    --fs-h1: clamp(40px, calc(29.79px + 2.72vw), 69px);  /* accordion number 40 -> 69 */
    --fs-h2: clamp(32px, calc(23.9px + 2.16vw), 55px);   /* section heading  32 -> 55 */
    --fs-h3: clamp(29px, calc(23.72px + 1.41vw), 44px);  /* article h3       29 -> 44 */
    --fs-h4: clamp(26px, calc(22.83px + 0.85vw), 35px);  /* accordion title  26 -> 35 */
    --fs-h5: clamp(23px, calc(21.24px + 0.47vw), 28px);  /* card/item title  23 -> 28 */
    --fs-h6: clamp(20px, calc(19.3px + 0.19vw), 22px);   /* article h6       20 -> 22 */
    --fs-text: clamp(16px, calc(15.3px + 0.19vw), 18px); /* body text        16 -> 18 */

    /* ==================
     * Colors
     * ================== */
    --white-true: #ffffff;
    --white: #ebf5ff;
    --black: #000d1a;
    --second: #003972;
    --accent: #e4002b;
    --light: #d1e8ff;
    --black-60: rgba(0, 13, 26, 0.6);
    --red20: rgba(228, 0, 43, 0.25);

    --radius-5: 5px;
    --radius-15: 15px;
    --radius-30: 30px;
    --radius-45: 45px;

    --transition-02: all 0.2s ease-in-out;
    --transition-025: all 0.25s ease-in-out;
    --transition-03: all 0.3s ease-in-out;
    --transition-08: all 0.8s cubic-bezier(0.22, 1, 0.36, 1);

    /* ==================
     * Motion
     * ================== */
    /* Scroll-driven reveals are scrubbed by the scroll position, not played on
       a clock, so their easing has to be monotonic: any overshoot reads as a
       wobble the moment the visitor scrolls back up. easeOutQuint — the curve
       the news card already uses for its hover zoom. */
    --ease-reveal: cubic-bezier(0.22, 1, 0.36, 1);
    /* Time-based interactions can overshoot, and this is where `linear()`
       earns its place: a real spring in one declaration, no keyframes. */
    --ease-spring: linear(
        0, 0.006 1.9%, 0.024 3.9%, 0.096 8%, 0.216 12.3%, 0.377 16.7%,
        0.717 25.4%, 0.864 30%, 0.98 34.9%, 1.062 40.1%, 1.096 45.7%,
        1.092 51.7%, 1.061 58.4%, 1.018 66.2%, 0.995 75.8%, 0.998 90%, 1
    );
}