/* site-v2.css — design system for the v2 landing assessment.
 *
 * Token palette is the same family already in use by bahamas-shell.css
 * (warm-paper background, slate text, slate-blue accent), promoted here
 * to apply site-wide rather than per-section. If v2 ships as the standard,
 * bahamas-shell.css collapses into this file in a later pass.
 *
 * Constraints honored:
 *   - System fonts only (no webfont request)
 *   - No JavaScript dependency (nav uses CSS-only details/summary on phone)
 *   - Mobile-first via clamp() and a single 720px grid breakpoint
 *   - One palette, no brand-blue drift
 */


/* --------------------------------------------------------------------
 * Tokens
 * ------------------------------------------------------------------ */

:root {
    /* color */
    --bg:        #f6f3ec;
    --paper:     #fffdf9;
    --paper-2:   #fbf7f0;
    --text:      #1f2937;
    --muted:     #5f6b7a;
    --line:      #e5ddd0;
    --accent:    #244b63;        /* slate blue — links */
    --accent-2:  #2f6b73;        /* teal — link hover */
    --shadow:    0 10px 30px rgba(22, 30, 38, .07);

    /* type */
    --serif:        Georgia, "Iowan Old Style", "Times New Roman", serif;
    --sans:         -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
    --kicker-size:  0.78rem;

    /* space */
    --measure: 60ch;
    --max:     1080px;
    --gap:     clamp(1rem, 2.5vw, 2rem);
    --radius:  18px;
}


/* --------------------------------------------------------------------
 * Reset (minimal — only where defaults fight us)
 * ------------------------------------------------------------------ */

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

html {
    font-size: 100%;
    line-height: 1.6;
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font-family: var(--serif);
    color: var(--text);
    background: var(--bg);
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

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

a {
    color: var(--accent);
    text-decoration: none;
    border-bottom: 1px solid rgba(36, 75, 99, .25);
    transition: color 0.2s ease, border-color 0.2s ease;
}

    a:hover {
        color: var(--accent-2);
        border-bottom-color: rgba(47, 107, 115, .55);
    }


/* --------------------------------------------------------------------
 * Type
 * ------------------------------------------------------------------ */

h1,
h2,
h3 {
    font-family: var(--serif);
    letter-spacing: -0.015em;
    line-height: 1.15;
    margin: 0;
    color: var(--text);
}

.kicker {
    display: inline-block;
    font-family: var(--sans);
    font-size: var(--kicker-size);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--accent);
    margin: 0 0 0.6rem;
}

.muted {
    color: var(--muted);
}


/* --------------------------------------------------------------------
 * Layout primitives
 * ------------------------------------------------------------------ */

.shell {
    max-width: var(--max);
    margin: 0 auto;
    padding-inline: clamp(1rem, 4vw, 2rem);
}

.section {
    padding: clamp(3rem, 8vw, 5.5rem) 0;
}

    .hero + .section,
    .section + .section {
        border-top: 1px solid var(--line);
    }

.section__head {
    margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.measure {
    max-width: var(--measure);
}


/* --------------------------------------------------------------------
 * Sticky nav (CSS-only, no JS)
 * ------------------------------------------------------------------ */

.site-nav {
    position: sticky;
    top: 0;
    z-index: 10;
    background: color-mix(in srgb, var(--paper) 88%, transparent);
    backdrop-filter: saturate(140%) blur(10px);
    -webkit-backdrop-filter: saturate(140%) blur(10px);
    border-bottom: 1px solid var(--line);
}

.site-nav__inner {
    display: flex;
    align-items: center;
    gap: var(--gap);
    max-width: var(--max);
    margin: 0 auto;
    padding: 0.9rem clamp(1rem, 4vw, 2rem);
}

.site-nav__brand {
    border: none;
    display: inline-flex;
    align-items: center;
    line-height: 0;
}

    .site-nav__brand img {
        width: 100px;
        height: auto;
    }

.site-nav__links {
    margin-left: auto;
    display: flex;
    gap: clamp(1rem, 2.4vw, 2rem);
    font-family: var(--sans);
    font-size: 0.78rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

    .site-nav__links a {
        position: relative;
        color: var(--text);
        border: none;
        padding: 0.45rem 0;
        font-weight: 600;
        transition: color 0.2s ease;
    }

        /* Animated underline drawn from left on hover */
        .site-nav__links a::after {
            content: "";
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            height: 1.5px;
            background: var(--accent);
            transform: scaleX(0);
            transform-origin: left center;
            transition: transform 0.25s ease;
        }

        .site-nav__links a:hover {
            color: var(--accent);
        }

            .site-nav__links a:hover::after {
                transform: scaleX(1);
            }

        /* Subtle separator between menu items — soft dot, not a heavy pipe */
        .site-nav__links a:not(:last-child)::before {
            content: "";
            position: absolute;
            right: calc(clamp(1rem, 2.4vw, 2rem) / -2);
            top: 50%;
            transform: translate(50%, -50%);
            width: 3px;
            height: 3px;
            border-radius: 50%;
            background: var(--line);
            pointer-events: none;
        }

/* Phone nav: details/summary, no JS */
.site-nav__menu {
    display: none;
    margin-left: auto;
}

    .site-nav__menu summary {
        list-style: none;
        cursor: pointer;
        font-family: var(--sans);
        font-size: 0.92rem;
        color: var(--muted);
        padding: 0.25rem 0.5rem;
    }

        .site-nav__menu summary::-webkit-details-marker {
            display: none;
        }

    .site-nav__menu[open] .site-nav__menu-list {
        position: absolute;
        right: clamp(1rem, 4vw, 2rem);
        top: calc(100% + 0.4rem);
        background: var(--paper);
        border: 1px solid var(--line);
        border-radius: 10px;
        padding: 0.75rem 1.1rem;
        display: flex;
        flex-direction: column;
        gap: 0.7rem;
        box-shadow: var(--shadow);
        font-family: var(--sans);
        font-size: 0.92rem;
    }

        .site-nav__menu[open] .site-nav__menu-list a {
            color: var(--text);
            border: none;
        }

@media (max-width: 640px) {
    .site-nav__links {
        display: none;
    }

    .site-nav__menu {
        display: block;
    }
}


/* --------------------------------------------------------------------
 * Hero
 * ------------------------------------------------------------------ */

.hero {
    position: relative;
    overflow: hidden;
    max-width: var(--max);
    margin: 0 auto;
    padding: clamp(2rem, 6vw, 4.5rem) clamp(1rem, 4vw, 2rem) clamp(3.5rem, 8vw, 6rem);
}

    .hero h1 {
        font-size: clamp(2.5rem, 7vw, 4.5rem);
        margin: 0.5rem 0 1.5rem;
    }

    .hero .subhead {
        font-size: clamp(1.05rem, 1.4vw, 1.2rem);
        color: var(--muted);
        max-width: 60ch;
        line-height: 1.55;
    }

    .hero-cta {
        margin: clamp(1.5rem, 3vw, 2.25rem) 0 0;
        font-family: var(--sans);
        font-size: 0.88rem;
        letter-spacing: 0.06em;
    }

        .hero-cta a {
            color: var(--accent);
            border-bottom: 1px solid rgba(36, 75, 99, 0.4);
            padding-bottom: 0.18rem;
            font-weight: 600;
        }

            .hero-cta a:hover {
                color: var(--accent-2);
                border-bottom-color: rgba(47, 107, 115, 0.65);
            }

    .hero-chart {
        position: absolute;
        top: 50%;
        right: clamp(0.5rem, 2vw, 1.5rem);
        transform: translateY(-50%);
        width: clamp(220px, 32vw, 340px);
        height: auto;
        color: var(--accent);
        opacity: 0.2;
        pointer-events: none;
    }

    @media (max-width: 720px) {
        .hero-chart {
            right: 50%;
            transform: translate(50%, -50%);
            width: 70%;
            opacity: 0.12;
        }
    }

    .hero__content {
        position: relative;
        z-index: 1;
    }


/* --------------------------------------------------------------------
 * Card grids (used by series, books, projects)
 * ------------------------------------------------------------------ */

.grid {
    display: grid;
    gap: clamp(1rem, 2.5vw, 1.5rem);
}

.grid--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 720px) {
    .grid--2,
    .grid--3 {
        grid-template-columns: 1fr;
    }
}

.card {
    display: block;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: clamp(1.25rem, 2.5vw, 1.75rem);
    color: var(--text);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    text-decoration: none;
}

    .card:hover {
        transform: translateY(-2px);
        box-shadow: var(--shadow);
        color: var(--text);
        border-color: rgba(36, 75, 99, 0.18);
    }

    .card h3 {
        font-size: 1.3rem;
        margin: 0 0 0.6rem;
    }

    .card p {
        margin: 0 0 0.85rem;
        line-height: 1.65;
        color: var(--text);
    }

    .card .meta {
        font-family: var(--sans);
        font-size: 0.8rem;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        color: var(--accent);
    }


/* --------------------------------------------------------------------
 * Long-form prose (hub introductions, future essay bodies)
 * ------------------------------------------------------------------ */

.prose {
    max-width: 60ch;
    margin: 0 auto;
    font-size: clamp(1.05rem, 1.3vw, 1.14rem);
    line-height: 1.78;
}

    .prose > p {
        margin: 0 0 1.35em;
    }

    .prose strong {
        color: var(--text);
        font-weight: 700;
    }

    .prose blockquote {
        margin: 1.6em 0;
        padding: 0.2em 0 0.2em 1.1em;
        border-left: 2px solid rgba(36, 75, 99, 0.3);
        font-style: italic;
        color: var(--text);
    }

        .prose blockquote p {
            margin: 0;
        }

    .prose h2 {
        font-family: var(--serif);
        font-size: 1.5rem;
        line-height: 1.25;
        letter-spacing: -0.01em;
        margin: 2em 0 0.6em;
    }

    .prose h3 {
        font-family: var(--serif);
        font-size: 1.2rem;
        line-height: 1.3;
        margin: 1.8em 0 0.5em;
    }

    .prose h4 {
        font-family: var(--sans);
        font-size: 0.85rem;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        color: var(--accent);
        margin: 1.6em 0 0.5em;
    }

    .prose ul,
    .prose ol {
        margin: 0 0 1.4em 0;
        padding-left: 1.4em;
    }

    .prose li {
        margin: 0 0 0.45em;
    }

    .prose .subtitle {
        font-style: italic;
        color: var(--muted);
        margin: -0.5em 0 1.6em;
    }


/* --------------------------------------------------------------------
 * Essay list — ordered series of articles, each one a card
 * ------------------------------------------------------------------ */

.essay-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
}

.essay-num {
    display: inline-block;
    font-family: var(--sans);
    font-size: 0.72rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--accent);
    margin: 0 0 0.55rem;
}

.essay-card {
    padding: clamp(1.1rem, 2vw, 1.5rem) clamp(1.25rem, 2.5vw, 1.75rem);
}

    .essay-card h3 {
        font-size: 1.2rem;
        margin: 0 0 0.5rem;
    }

    .essay-card p {
        font-size: 0.96rem;
        color: var(--muted);
        margin: 0;
        line-height: 1.6;
    }


/* --------------------------------------------------------------------
 * Essay reading template — header, body, prev/next nav
 * ------------------------------------------------------------------ */

.essay-header {
    max-width: 62ch;
    margin: 0 auto;
    padding: clamp(2rem, 6vw, 4rem) clamp(1rem, 4vw, 2rem) clamp(1.75rem, 4vw, 2.5rem);
    border-bottom: 1px solid var(--line);
}

    .essay-header h1 {
        font-family: var(--serif);
        font-size: clamp(2rem, 5vw, 3.25rem);
        line-height: 1.1;
        letter-spacing: -0.02em;
        margin: 0.5rem 0 1.25rem;
    }

.essay-byline {
    font-family: var(--sans);
    font-size: 0.86rem;
    color: var(--muted);
    margin: 0;
}

    .essay-byline a {
        color: var(--text);
        border-bottom-color: rgba(36, 75, 99, 0.22);
    }

        .essay-byline a:hover {
            color: var(--accent);
        }

.essay-back-link {
    margin: 1.25rem 0 0;
    font-family: var(--sans);
    font-size: 0.85rem;
    letter-spacing: 0.04em;
}

    .essay-back-link a {
        color: var(--accent);
        border-bottom-color: rgba(36, 75, 99, 0.3);
    }

.essay-body {
    padding: clamp(2rem, 5vw, 3.5rem) clamp(1rem, 4vw, 2rem);
}

/* Body separators (hr) — small centered hairline, editorial-restrained */
.prose hr {
    border: 0;
    border-top: 1px solid var(--line);
    margin: 2.5em auto;
    width: 80px;
}


.essay-nav {
    max-width: 62ch;
    margin: 0 auto;
    padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1rem, 4vw, 2rem) clamp(2rem, 5vw, 3.5rem);
    border-top: 1px solid var(--line);
}

.essay-nav__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem;
}

@media (max-width: 560px) {
    .essay-nav__grid {
        grid-template-columns: 1fr;
    }
}

.essay-nav__card {
    display: block;
    padding: clamp(0.95rem, 1.8vw, 1.25rem) clamp(1rem, 2vw, 1.4rem);
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

    .essay-nav__card:hover {
        transform: translateY(-2px);
        box-shadow: var(--shadow);
        border-color: rgba(36, 75, 99, 0.18);
        color: var(--text);
    }

    .essay-nav__card .label {
        display: block;
        font-family: var(--sans);
        font-size: 0.7rem;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        color: var(--muted);
        margin-bottom: 0.4rem;
    }

    .essay-nav__card .title {
        display: block;
        font-family: var(--serif);
        font-size: 1.05rem;
        line-height: 1.3;
        color: var(--text);
        margin: 0;
    }

    .essay-nav__card.next .label,
    .essay-nav__card.next .title {
        text-align: right;
    }

.essay-nav__index {
    display: block;
    margin-top: 0.85rem;
    padding: 0.7rem;
    text-align: center;
    font-family: var(--sans);
    font-size: 0.8rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
    border: none;
    border-top: 1px dashed var(--line);
    background: transparent;
}

    .essay-nav__index:hover {
        color: var(--accent);
        border-top-color: rgba(36, 75, 99, 0.4);
    }


/* --------------------------------------------------------------------
 * Books section
 * ------------------------------------------------------------------ */

.book__cover {
    aspect-ratio: 2 / 3;
    object-fit: cover;
    border-radius: 6px;
    margin-bottom: 1rem;
    max-width: 180px;
    box-shadow: 0 6px 20px rgba(22, 30, 38, .12);
}

.book h3 {
    font-style: italic;
}

.book--forthcoming {
    background: var(--paper-2);
    color: var(--muted);
}

    .book--forthcoming h3 {
        color: var(--muted);
    }


/* --------------------------------------------------------------------
 * Boat section — text + image two-column
 * ------------------------------------------------------------------ */

.boat-row {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: center;
}

    .boat-row p {
        font-size: 1.1rem;
        line-height: 1.7;
        margin: 0 0 1rem;
    }

    .boat-row img {
        max-width: 360px;
        margin-inline: auto;
        transform: scaleX(-1);
    }

.boat-cta {
    display: flex;
    gap: 1.6rem;
    flex-wrap: wrap;
    margin-top: 1.4rem;
    font-family: var(--sans);
    font-size: 0.95rem;
}

@media (max-width: 720px) {
    .boat-row {
        grid-template-columns: 1fr;
    }

        .boat-row img {
            order: -1;
            max-width: 240px;
        }
}


/* --------------------------------------------------------------------
 * Footer
 * ------------------------------------------------------------------ */

.site-footer {
    background: var(--text);
    color: var(--paper);
    padding: clamp(2.5rem, 5vw, 4rem) 0;
    margin-top: clamp(3rem, 6vw, 5rem);
}

    .site-footer a {
        color: var(--paper-2);
        border-bottom-color: rgba(255, 255, 255, 0.18);
    }

        .site-footer a:hover {
            color: #ffffff;
            border-bottom-color: rgba(255, 255, 255, 0.5);
        }

.site-footer__cols {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.5rem, 3vw, 3rem);
}

@media (max-width: 720px) {
    .site-footer__cols {
        grid-template-columns: 1fr;
    }
}

.site-footer h4 {
    font-family: var(--sans);
    font-size: 0.82rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--paper-2);
    opacity: 0.62;
    margin: 0 0 1.2rem;
}

.site-footer ul {
    list-style: none;
    padding: 0;
    margin: 0;
    line-height: 2;
    font-size: 0.95rem;
}

.site-footer__bottom {
    margin-top: clamp(2rem, 4vw, 3rem);
    padding-top: 1.25rem;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    font-family: var(--sans);
    font-size: 0.82rem;
    color: var(--paper-2);
    opacity: 0.65;
}


/* --------------------------------------------------------------------
 * Back-to-top button — fades in once scrolled past the hero
 * ------------------------------------------------------------------ */

.back-to-top {
    position: fixed;
    right: clamp(1rem, 3vw, 2rem);
    bottom: clamp(1rem, 3vw, 2rem);
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 50%;
    color: var(--accent);
    box-shadow: var(--shadow);
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 0.25s ease, transform 0.25s ease,
                color 0.2s ease, border-color 0.2s ease;
    pointer-events: none;
    z-index: 20;
}

    .back-to-top.is-visible {
        opacity: 1;
        transform: translateY(0);
        pointer-events: auto;
    }

    .back-to-top:hover {
        color: var(--accent-2);
        border-color: rgba(36, 75, 99, 0.3);
    }

    .back-to-top svg {
        width: 18px;
        height: 18px;
    }


/* --------------------------------------------------------------------
 * Reduced motion
 * ------------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        transition: none !important;
        animation: none !important;
    }
}
