/* ============================================================
   Aube — Base reset + typography defaults
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

html {
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
    text-size-adjust: 100%;
    scroll-behavior: smooth;
}

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

body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--font-sans);
    font-size: var(--text-body-lg-size);
    line-height: var(--text-body-lg-line);
    font-weight: var(--text-body-lg-weight);
    color: var(--color-text-primary);
    background: var(--color-background);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: "kern" 1, "liga" 1;
    text-rendering: optimizeLegibility;
}

/* Headings — Newsreader serif */
h1, h2, h3, h4, h5, h6 {
    margin: 0;
    font-family: var(--font-serif);
    color: var(--color-text-primary);
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: -0.012em;
}

h1 { font-size: clamp(2rem, 5vw, 3rem); line-height: 1.05; letter-spacing: -0.02em; }
h2 { font-size: clamp(1.625rem, 3.5vw, 2.25rem); line-height: 1.1; letter-spacing: -0.018em; }
h3 { font-size: clamp(1.375rem, 2.5vw, 1.625rem); line-height: 1.2; }
h4 { font-size: var(--text-title-lg-size); line-height: var(--text-title-lg-line); }
h5 { font-size: var(--text-title-md-size); line-height: var(--text-title-md-line); }
h6 { font-size: var(--text-title-sm-size); line-height: var(--text-title-sm-line); font-family: var(--font-sans); font-weight: 600; }

p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }

/* Links */
a {
    color: var(--color-link);
    text-decoration: none;
    transition: color var(--motion-fast) var(--ease-standard);
}
a:hover { color: var(--color-link-hover); }
a:focus-visible {
    outline: var(--focus-ring);
    outline-offset: var(--focus-ring-offset);
    border-radius: var(--radius-xs);
}

/* Lists */
ul, ol { margin: 0 0 1em; padding-inline-start: 1.25em; }
li { margin: 0.25em 0; }

ul.unstyled, ol.unstyled {
    list-style: none;
    padding-inline-start: 0;
}

/* Quotes */
blockquote {
    margin: 1.5em 0;
    padding: 1em 1.5em;
    border-inline-start: 3px solid var(--color-accent);
    background: var(--color-surface-muted);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    font-family: var(--font-serif);
    font-size: var(--text-quote-lg-size);
    line-height: var(--text-quote-lg-line);
    color: var(--color-text-primary);
}

cite { font-style: italic; color: var(--color-text-muted); }

/* Code */
code, kbd, samp, pre {
    font-family: var(--font-mono);
    font-size: 0.9em;
}
code {
    padding: 0.15em 0.35em;
    background: var(--color-surface-muted);
    border-radius: var(--radius-xs);
}
pre {
    margin: 1em 0;
    padding: 1em;
    overflow-x: auto;
    background: var(--color-surface-muted);
    border-radius: var(--radius-md);
}
pre code { padding: 0; background: transparent; }

/* Images */
img, picture, svg, video {
    max-width: 100%;
    height: auto;
    display: block;
}

/* Forms — minimal reset */
button, input, select, textarea {
    font: inherit;
    color: inherit;
}
button {
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
}

/* HR */
hr {
    border: 0;
    border-top: 1px solid var(--color-border);
    margin: 2em 0;
}

/* Selection */
::selection {
    background: var(--color-accent);
    color: var(--color-text-on-accent);
}

/* Skip link */
.skip-link {
    position: absolute;
    top: -100px;
    left: var(--space-lg);
    z-index: var(--z-toast);
    padding: 0.625rem 1rem;
    background: var(--color-text-primary);
    color: var(--color-background);
    border-radius: var(--radius-md);
    font-weight: 600;
    transition: top var(--motion-fast) var(--ease-standard);
}
.skip-link:focus {
    top: var(--space-lg);
    color: var(--color-background);
}

/* Visually hidden but accessible */
.sr-only {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Focus visible globally */
:focus-visible {
    outline: var(--focus-ring);
    outline-offset: var(--focus-ring-offset);
}
:focus:not(:focus-visible) { outline: none; }

/* Reduce decorative SVG hover scale on touch */
@media (hover: none) {
    .hover-scale:hover { transform: none !important; }
}
