/* base.css — reset, typography, and layout primitives for /info. Reads only var(--info-*). */

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

html {
    color-scheme: light dark;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    background: var(--info-bg);
    color: var(--info-text);
    font-family: var(--info-font-body);
    font-size: var(--info-size-md);
    line-height: var(--info-line-normal);
    transition: background var(--info-duration) var(--info-easing), color var(--info-duration) var(--info-easing);
}

img, svg { max-width: 100%; display: block; }

a {
    color: var(--info-link);
    text-decoration-thickness: 1px;
    text-underline-offset: 0.15em;
}
a:hover { text-decoration-thickness: 2px; }

h1, h2, h3, h4 {
    font-family: var(--info-font-ui);
    font-weight: 700;
    line-height: var(--info-line-tight);
    letter-spacing: -0.01em;
    margin: 0 0 var(--info-space-sm);
}

h1 { font-size: var(--info-size-display); }
h2 { font-size: var(--info-size-xl); margin-top: var(--info-space-xl); }
h3 { font-size: var(--info-size-lg); margin-top: var(--info-space-lg); }

p { margin: 0 0 var(--info-space-sm); }
p:last-child { margin-bottom: 0; }

.info-eyebrow {
    font-family: var(--info-font-ui);
    font-size: var(--info-size-xs);
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--info-accent);
}

.info-lede {
    font-size: var(--info-size-lg);
    color: var(--info-text-muted);
    max-width: 38rem;
}

/* ---- Layout shell ---- */

.info-shell {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.info-main { flex: 1 0 auto; }

.info-container {
    width: 100%;
    max-width: var(--info-content-width);
    margin-inline: auto;
    padding-inline: var(--info-space-md);
}

.info-container--wide { max-width: var(--info-wide-width); }

section.info-section {
    padding-block: var(--info-space-xl);
}

/* Adjacent sections would otherwise stack a bottom + top padding into one
   oversized gap (was ~2x --info-space-xl between hero and the next section) —
   let the top section's own bottom padding be the sole gap. */
section.info-section + section.info-section { padding-top: 0; }

section.info-section:first-of-type { padding-top: var(--info-space-lg); }

@media (max-width: 640px) {
    section.info-section { padding-block: var(--info-space-lg); }
    :root { --info-size-display: clamp(2.1rem, 9vw, 2.9rem); }
}

/* ---- Utility ---- */

.info-visually-hidden {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.info-skip-link {
    position: absolute;
    left: var(--info-space-sm);
    top: -3rem;
    background: var(--info-accent);
    color: var(--info-accent-contrast);
    padding: var(--info-space-xs) var(--info-space-sm);
    border-radius: var(--info-radius-sm);
    z-index: 100;
    transition: top var(--info-duration) var(--info-easing);
}
.info-skip-link:focus { top: var(--info-space-sm); }
