/* ============================================================================
   reset.css — GLOBAL RESET & DOCUMENT BASE
   ----------------------------------------------------------------------------
   Extracted verbatim from the original `<style>` block's "BASE STYLES" section.
   Load order matters: reset.css comes AFTER variables.css / typography.css so it
   can consume the tokens, and BEFORE utilities/animation/main.
   ========================================================================== */

/* Zero out browser defaults and switch to border-box sizing everywhere. */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* IMPORTANT (kept from the original source — do not "fix" this):
   Never add `overflow-x: hidden` to <html>. Doing so forces html's overflow-y to
   `auto`, which turns <html> into a nested scroll container alongside <body> and
   kills page scrolling entirely. `overflow-x: hidden` on <body> is enough — the
   navbar is already constrained with vw units so it cannot overflow. */
body {
    font-family: var(--font-sans);
    color: var(--text-light);
    background-color: var(--primary-bg);
    overflow-x: hidden;
    overscroll-behavior: none;
    min-height: 100vh;
}

/* The site intentionally hides native scrollbars on every scrollable surface. */
::-webkit-scrollbar {
    display: none;
}

/* Links inherit colour; every link is styled by its own component. */
a {
    text-decoration: none;
    color: inherit;
}

/* ----------------------------------------------------------------------------
   FOUC GUARD
   index.html ships with <html class="js-loading">. app.js removes that class once
   every component has been mounted, so the visitor never sees half-assembled
   markup. If JavaScript is disabled, the <noscript> stylesheet in index.html
   cancels this rule (see assets/css/noscript.css).
   -------------------------------------------------------------------------- */
html.js-loading body {
    visibility: hidden;
}
