:root {
    /* Golden-ratio type ladder: 1 → 1.618 → 2.618 → 4.236. */
    --type-caption: 0.75rem;
    --type-small: 0.875rem;
    --type-body: 1rem;
    --type-supporting: 1.272rem;
    --type-subheading: 1.618rem;
    --type-heading: 2.618rem;
    --type-display: 4.236rem;
    --measure-reading: 70ch;
    --tracking-display: -0.035em;
    --tracking-label: 0.08em;
}

.site-public {
    font-size: var(--type-body);
    line-height: 1.618;
}

.site-public main h1,
.site-public main h2,
.site-public main h3,
.site-public main h4,
.site-public main h5 {
    font-family: 'Onest', system-ui, sans-serif;
    text-transform: none;
    text-wrap: balance;
}

.site-public main h1 {
    max-width: 18ch;
    font-size: clamp(var(--type-heading), 6vw, var(--type-display)) !important;
    font-weight: 500;
    line-height: 1.05 !important;
    letter-spacing: var(--tracking-display) !important;
}

.site-public main h2 {
    max-width: 24ch;
    font-size: clamp(2rem, 4vw, var(--type-heading)) !important;
    font-weight: 500;
    line-height: 1.12 !important;
    letter-spacing: -0.025em !important;
}

.site-public main h3 {
    font-size: clamp(1.375rem, 2.4vw, var(--type-subheading)) !important;
    line-height: 1.22 !important;
    letter-spacing: -0.015em !important;
}

.site-public main h4 {
    font-size: var(--type-supporting) !important;
    line-height: 1.3 !important;
    letter-spacing: -0.01em !important;
}

.site-public main h5 {
    font-size: var(--type-body) !important;
    line-height: 1.4 !important;
}

.site-public main p,
.site-public main li {
    line-height: 1.618;
}

.site-public main p {
    max-width: var(--measure-reading);
}

.site-public .font-mono {
    font-family: 'Onest', system-ui, sans-serif;
    font-variant-numeric: tabular-nums;
}

.site-public main p.font-mono.uppercase,
.site-public main span.font-mono.uppercase {
    font-size: var(--type-caption) !important;
    font-weight: 700;
    line-height: 1.35;
    letter-spacing: var(--tracking-label) !important;
    text-transform: uppercase;
}

.site-public header nav,
.site-public header nav a,
.site-public header nav button,
.site-public main a.uppercase,
.site-public main button.uppercase,
.site-public footer button,
.site-public footer a {
    text-transform: none;
}

.site-public a,
.site-public button {
    text-underline-offset: 0.18em;
}

.site-public :focus-visible,
.site-admin :focus-visible {
    outline: 2px solid #b0512f;
    outline-offset: 3px;
}

.skip-link {
    position: fixed;
    top: 0.75rem;
    left: 0.75rem;
    z-index: 100;
    transform: translateY(-180%);
    padding: 0.75rem 1rem;
    background: #111112;
    color: #fff;
    font-size: var(--type-small);
    font-weight: 700;
    transition: transform 150ms ease-out;
}

.skip-link:focus {
    transform: translateY(0);
}

.site-admin {
    font-size: var(--type-small);
    line-height: 1.5;
}

.site-admin h1 {
    font-size: var(--type-subheading) !important;
    line-height: 1.2 !important;
}

.site-admin h2 {
    font-size: var(--type-supporting) !important;
    line-height: 1.3 !important;
}

.site-admin h3,
.site-admin h4 {
    font-size: var(--type-body) !important;
    line-height: 1.4 !important;
}

.site-admin h1,
.site-admin h2,
.site-admin h3,
.site-admin h4,
.site-admin button,
.site-admin a {
    text-transform: none;
}

@media (max-width: 639px) {
    .site-public main h1 {
        font-size: var(--type-heading) !important;
        line-height: 1.08 !important;
    }

    .site-public main h2 {
        font-size: var(--type-subheading) !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .skip-link {
        transition: none;
    }
}
