/* ---------- Tokens ---------- */
:root {
    --bg:        #faf9f6;
    --surface:   #ffffff;
    --text:      #1d1f22;
    --muted:     #5b6068;
    --accent:    #2f6f5e;
    --rule:      #e4e1da;

    --font-body:    system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-display: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;

    --measure: 68ch;
    --gutter:  clamp(1rem, 4vw, 2.5rem);
    --hero-h:  clamp(320px, 70vh, 720px);
    --hero-h:  clamp(320px, 70svh, 720px);
}

@media (prefers-color-scheme: dark) {
    :root {
        --bg:      #131517;
        --surface: #1b1e21;
        --text:    #e9e7e2;
        --muted:   #a3a7ad;
        --accent:  #7cc4ad;
        --rule:    #2c3034;
    }
}

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

html { -webkit-text-size-adjust: 100%; }

body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-body);
    font-size: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
    line-height: 1.7;
    text-rendering: optimizeLegibility;
}

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

/* ---------- Hero banner ---------- */
.hero {
    position: relative;
    width: 100%;
    height: var(--hero-h);
    overflow: hidden;
    display: grid;
    align-items: end;
    isolation: isolate;
    background: #2a2d30;
}

.hero__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -2;
}

.hero::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(
        to top,
        rgba(0, 0, 0, 0.72) 0%,
        rgba(0, 0, 0, 0.35) 45%,
        rgba(0, 0, 0, 0.05) 100%
    );
}

.hero__content {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--gutter);
    padding-bottom: clamp(2rem, 6vw, 4.5rem);
    color: #fff;
}

.hero__title {
    margin: 0;
    max-width: 18ch;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: clamp(2rem, 1.2rem + 4.5vw, 4.5rem);
    line-height: 1.08;
    letter-spacing: -0.015em;
    text-wrap: balance;
    text-shadow: 0 1px 12px rgba(0, 0, 0, 0.25);
}

.hero__sub {
    margin: 0.9rem 0 0;
    max-width: 48ch;
    font-size: clamp(1rem, 0.9rem + 0.6vw, 1.3rem);
    line-height: 1.5;
    opacity: 0.92;
}
.hero__logo {
    display: block;
    width: auto;
    height: auto;
    max-width: min(260px, 60vw);
    max-height: clamp(48px, 8vw, 96px);
    margin: 0 0 25px;
}


/* ---------- Text section ---------- */
.content {
    padding: clamp(3rem, 8vw, 6rem) var(--gutter);
}

.prose {
    max-width: var(--measure);
    margin: 0 auto;
}

.prose h2 {
    margin: 0 0 1.25rem;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: