/* ===== Reset & base ===== */
* {
    box-sizing: border-box;
}

body {
    margin: 0;
    background: var(--surface-page);
    font: var(--text-body);
    color: var(--text-body);
    -webkit-font-smoothing: antialiased;
}

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

a {
    color: var(--link);
    text-decoration: none;
}

a:hover {
    color: var(--link-hover);
}

::selection {
    background: var(--selection-bg);
}

:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
    border-radius: var(--radius-sm);
}

/* ===== Typography ===== */
.h1, .h2, .h3, .quote {
    margin: 0;
    color: var(--text-heading);
}

.h1 {
    font: var(--text-h1);
    font-size: clamp(32px, 6vw, 54px);
    letter-spacing: var(--tracking-tight);
}

.h2 {
    font: var(--text-h2);
    font-size: clamp(26px, 4.5vw, 36px);
    letter-spacing: var(--tracking-tight);
}

.h3 {
    font: var(--text-h3);
    font-size: clamp(19px, 3vw, 24px);
}

.quote {
    font: var(--text-quote);
    color: var(--cream);
}

.overline {
    display: inline-block;
    font: var(--text-overline);
    letter-spacing: var(--tracking-overline);
    text-transform: uppercase;
    color: var(--accent);
}

.body-lg {
    font: var(--text-body-lg);
    color: var(--text-secondary);
}

.body {
    font: var(--text-body);
    color: var(--text-secondary);
}

.body-sm {
    font: var(--text-body-sm);
    color: var(--text-secondary);
}

.mono-label {
    font: var(--text-mono);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
}

/* ===== Lists ===== */
.list-dash {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: var(--list-gap);
}

.list-dash > li {
    position: relative;
    padding-left: var(--list-indent);
    font: var(--text-body-sm);
    color: var(--text-body);
}

.list-dash > li::before {
    content: "\2014";
    position: absolute;
    left: 0;
    color: var(--list-marker-color);
    font-weight: 600;
}

.list-numbered {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: var(--list-gap);
    counter-reset: step;
}

.list-numbered > li {
    position: relative;
    padding-left: var(--list-indent);
    font: var(--text-body-sm);
    color: var(--text-body);
    counter-increment: step;
}

.list-numbered > li::before {
    content: counter(step, decimal-leading-zero);
    position: absolute;
    left: 0;
    font: var(--text-mono);
    color: var(--accent);
}
