/* style.css — Cut: 2026-10-13 00:09 PT — fix: lazy-loaded images were display:none until loaded, so they never loaded. Unloaded images now sit as an invisible 1px box so lazy loading still fires. */
:root {
    --ink: #172d39;
    --muted: #566872;
    --paper: #f8f5ed;
    --white: #fffdf8;
    --line: #d8d8cc;
    --sea: #184d58;
    --gold: #9b712d;
    --soft: #e8eee9;
    --shadow: 0 12px 36px #172d3909;
    color-scheme: light;
    font-family: Georgia,'Times New Roman',serif
}

* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 100px
}

body {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    line-height: 1.7
}

button, input, summary, .ui {
    font-family: system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif
}

a {
    color: var(--sea);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px
}

    a:hover {
        color: var(--gold)
    }

button {
    cursor: pointer
}

    button:disabled {
        cursor: default
    }

:focus-visible {
    outline: 3px solid #a8782b;
    outline-offset: 4px
}

.skip {
    position: fixed;
    z-index: 20;
    top: -70px;
    left: 20px;
    background: var(--ink);
    color: white;
    padding: 12px
}

    .skip:focus {
        top: 10px
    }

.masthead {
    height: 86px;
    padding: 0 38px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--ink);
    color: var(--paper);
    border-bottom: 3px solid #a9864b;
    position: sticky;
    top: 0;
    z-index: 10;
    gap: 20px
}

.brand {
    color: var(--paper);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 14px
}

    .brand:hover {
        color: white
    }

.brand-symbol {
    height: 39px;
    width: 39px;
    border: 1px solid #b49a65;
    display: grid;
    place-items: center;
    color: #d9b973;
    font-size: 28px
}

.brand-title {
    font-size: 21px;
    letter-spacing: .02em;
    line-height: 1.2
}

.brand-sub {
    font: 10px/1.6 system-ui,sans-serif;
    text-transform: uppercase;
    letter-spacing: .25em;
    color: #b8c5c7
}

.header-tools {
    display: flex;
    gap: 12px;
    align-items: center
}

.search-button, .menu-button {
    background: #ffffff0c;
    color: var(--paper);
    border: 1px solid #607580;
    border-radius: 4px;
    padding: 9px 13px;
    font-size: 13px;
    display: flex;
    gap: 22px;
    align-items: center
}

    .search-button:hover, .menu-button:hover {
        background: #ffffff1b
    }

    .search-button kbd {
        font: 11px system-ui;
        border: 1px solid #607580;
        border-radius: 3px;
        padding: 0 5px;
        color: #b8c5c7
    }

.menu-button {
    display: none
}

.edition-tag {
    font: 10px system-ui;
    letter-spacing: .17em;
    text-transform: uppercase;
    color: #b8c5c7
}

.shell {
    display: grid;
    grid-template-columns: 244px minmax(0,1fr);
    max-width: 1580px;
    margin: auto
}

.sidebar {
    border-right: 1px solid var(--line);
    padding: 30px 22px 55px 30px;
    align-self: start;
    position: sticky;
    top: 86px;
    max-height: calc(100vh - 86px);
    overflow: auto;
    scrollbar-width: thin
}

.sidebar-home {
    display: block;
    font: 600 13px system-ui;
    text-decoration: none;
    margin-bottom: 24px
}

.sidebar .nav-label {
    font: 10px system-ui;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--muted);
    margin: 0 0 10px
}

.sidebar details {
    border-top: 1px solid var(--line);
    padding: 12px 0
}

.sidebar summary {
    font-size: 12px;
    font-weight: 650;
    cursor: pointer;
    list-style: none;
    display: flex;
    justify-content: space-between;
    gap: 10px
}

    .sidebar summary::after {
        content: '+';
        font-weight: 400
    }

.sidebar details[open] summary::after {
    content: '−'
}

.sidebar ul {
    list-style: none;
    margin: 10px 0 0;
    padding: 0
}

.sidebar li a {
    font: 12px/1.5 system-ui;
    display: block;
    padding: 6px 8px;
    text-decoration: none;
    border-radius: 3px;
    color: var(--muted)
}

    .sidebar li a:hover {
        background: var(--soft);
        color: var(--ink)
    }

    .sidebar li a[aria-current=page] {
        background: #dce8e6;
        color: var(--sea);
        font-weight: 650;
        border-left: 2px solid var(--sea)
    }

.sidebar-note {
    font: 11px/1.6 system-ui;
    color: var(--muted);
    margin-top: 25px;
    border-top: 1px solid var(--line);
    padding-top: 17px
}

.main {
    padding: 42px 54px 70px;
    min-width: 0
}

.breadcrumb {
    font: 11px system-ui;
    letter-spacing: .04em;
    color: var(--muted);
    margin-bottom: 22px
}

    .breadcrumb a {
        text-decoration: none
    }

.article-layout {
    display: grid;
    grid-template-columns: minmax(0,770px) 170px;
    gap: 42px;
    align-items: start
}

.article {
    min-width: 0
}

    .article h1 {
        font-size: clamp(30px,3.4vw,46px);
        line-height: 1.12;
        letter-spacing: -.03em;
        font-weight: normal;
        margin: 0 0 30px
    }

    .article h2 {
        font-weight: normal;
        font-size: 26px;
        line-height: 1.25;
        margin: 42px 0 16px;
        border-bottom: 1px solid var(--line);
        padding-bottom: 10px
    }

    .article h3 {
        font-size: 19px;
        margin: 30px 0 10px
    }

    .article h4 {
        font: 650 15px system-ui;
        margin: 25px 0 10px
    }

    .article p {
        margin: 0 0 20px;
        font-size: 17px
    }

    .article li {
        font-size: 16px;
        margin: 6px 0
    }

    .article ul, .article ol {
        padding-left: 24px
    }

    .article blockquote {
        margin: 26px 0;
        padding: 8px 0 8px 22px;
        border-left: 3px solid #aa874c;
        color: #32515a
    }

        .article blockquote p {
            font-size: 18px;
            font-style: italic;
            margin: 10px 0
        }

    .article strong {
        color: var(--ink)
    }

    .article hr {
        border: 0;
        border-top: 1px solid var(--line);
        margin: 32px 0
    }

    .article code {
        font: 12px ui-monospace,monospace;
        background: #e9e9df;
        padding: 2px 5px;
        border-radius: 3px;
        overflow-wrap: anywhere
    }

    .article pre {
        overflow: auto;
        padding: 16px;
        background: #e9e9df;
        border-radius: 4px
    }

.table-wrap {
    overflow-x: auto;
    margin: 20px 0 30px;
    border: 1px solid var(--line);
    border-radius: 4px
}

.article table {
    width: 100%;
    border-collapse: collapse;
    font: 13px/1.55 system-ui;
    min-width: 440px
}

.article th {
    background: #e7e9df;
    text-align: left
}

.article th, .article td {
    padding: 11px 13px;
    border-bottom: 1px solid var(--line);
    vertical-align: top
}

.article tr:last-child td {
    border-bottom: none
}

.article td a {
    color: var(--sea)
}

.media {
    margin: 26px 0;
    background: #eeeee3;
    border: 1px solid var(--line);
    border-radius: 5px;
    overflow: hidden
}

    .media img {
        display: block;
        width: 100%;
        height: auto;
        max-height: 680px;
        object-fit: contain
    }

.media {
    position: relative
}

    .media:not(.loaded) img {
        position: absolute;
        top: 0;
        left: 0;
        width: 1px;
        height: 1px;
        opacity: 0;
        pointer-events: none
    }

.media-placeholder {
    min-height: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    text-align: center;
    padding: 28px;
    color: var(--muted);
    background: repeating-linear-gradient(-45deg,#eeeeE3,#eeeeE3 10px,#e9eadf 10px,#e9eadf 11px)
}

    .media-placeholder .media-label {
        font: 10px system-ui;
        letter-spacing: .2em;
        text-transform: uppercase;
        margin-bottom: 10px;
        color: var(--sea)
    }

    .media-placeholder p {
        font: 15px system-ui;
        margin: 0
    }

    .media-placeholder small {
        font: 11px system-ui;
        margin-top: 6px
    }

.media.loaded .media-placeholder {
    display: none
}

.media figcaption {
    font: 12px system-ui;
    padding: 10px 16px;
    color: var(--muted);
    background: var(--white);
    border-top: 1px solid var(--line)
}

.toc {
    position: sticky;
    top: 120px;
    font: 11px/1.5 system-ui;
    border-left: 1px solid var(--line);
    padding-left: 17px
}

.toc-title {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: .18em;
    color: var(--muted);
    margin-bottom: 13px
}

.toc a {
    display: block;
    margin: 11px 0;
    color: var(--muted);
    text-decoration: none
}

    .toc a:hover {
        color: var(--sea)
    }

.article-footer {
    margin-top: 50px;
    border-top: 1px solid var(--line);
    padding-top: 20px;
    display: flex;
    justify-content: space-between;
    gap: 15px;
    font: 12px system-ui;
    color: var(--muted)
}

.hero {
    background: var(--ink);
    color: var(--paper);
    padding: 40px 42px;
    border: 1px solid #b5a175;
    position: relative;
    overflow: hidden;
    box-shadow: var(--shadow);
    margin-bottom: 30px
}

    .hero::after {
        content: '✦';
        position: absolute;
        right: 28px;
        top: 40px;
        font-size: 220px;
        line-height: 1;
        color: #ffffff07;
        pointer-events: none
    }

.eyebrow {
    font: 10px system-ui;
    letter-spacing: .23em;
    text-transform: uppercase;
    color: #c5aa70;
    margin-bottom: 16px
}

.hero h1 {
    font-weight: normal;
    max-width: 580px;
    font-size: clamp(34px,4vw,52px);
    line-height: 1.12;
    letter-spacing: -.025em;
    margin: 0 0 22px;
    position: relative;
    z-index: 1
}

.hero p {
    font-size: 17px;
    line-height: 1.7;
    max-width: 570px;
    color: #d5dddd;
    position: relative;
    z-index: 1
}

.hero .current {
    border-top: 1px solid #5a6d71;
    margin: 24px 0;
    padding-top: 19px;
    font: 12px/1.8 system-ui;
    color: #b9c8c9;
    max-width: 570px
}

    .hero .current strong {
        color: #f6e2ae;
        font-weight: 500
    }

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    position: relative;
    z-index: 1
}

.button-primary, .button-secondary {
    font: 600 12px system-ui;
    text-decoration: none;
    padding: 12px 18px;
    border: 1px solid #bfa76d;
    border-radius: 3px
}

.button-primary {
    background: #d3b575;
    color: var(--ink)
}

.button-secondary {
    color: #ebede1;
    background: transparent
}

.button-primary:hover {
    background: #e3c98c;
    color: var(--ink)
}

.button-secondary:hover {
    color: white;
    background: #ffffff0c
}

.section-head {
    font: 11px system-ui;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--muted);
    margin: 32px 0 15px;
    display: flex;
    align-items: center;
    gap: 14px
}

    .section-head::after {
        content: '';
        height: 1px;
        flex: 1;
        background: var(--line)
    }

.reference-cards {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 14px
}

.reference-card {
    border: 1px solid var(--line);
    padding: 21px 20px;
    background: var(--white);
    display: block;
    text-decoration: none;
    box-shadow: var(--shadow)
}

    .reference-card:hover {
        border-color: #9f976c;
        background: #fffefb;
        color: var(--ink)
    }

    .reference-card .card-number {
        font: 10px system-ui;
        color: var(--gold);
        letter-spacing: .12em
    }

    .reference-card h2 {
        font-size: 22px;
        font-weight: normal;
        line-height: 1.2;
        margin: 14px 0 10px;
        border: 0;
        padding: 0
    }

    .reference-card p {
        font: 12px/1.7 system-ui;
        color: var(--muted);
        margin: 0
    }

.journal-strip {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    border: 1px solid var(--line);
    background: #eeefe6;
    margin-bottom: 34px
}

    .journal-strip a {
        padding: 19px 16px;
        text-decoration: none;
        border-right: 1px solid var(--line);
        color: var(--ink);
        font-size: 15px;
        line-height: 1.4
    }

        .journal-strip a:last-child {
            border: 0
        }

    .journal-strip span {
        display: block;
        font: 9px system-ui;
        letter-spacing: .12em;
        text-transform: uppercase;
        color: var(--muted);
        margin-bottom: 9px
    }

    .journal-strip a:last-child {
        background: #dfe9e6
    }

    .journal-strip a:hover {
        background: #e2e7dc
    }

.home-meta {
    font: 11px system-ui;
    color: var(--muted);
    margin-top: 30px
}

.search-dialog {
    padding: 0;
    border: 1px solid var(--line);
    border-radius: 8px;
    width: min(720px,calc(100vw - 28px));
    max-height: 80vh;
    background: var(--white);
    color: var(--ink);
    box-shadow: 0 30px 90px #0005
}

    .search-dialog::backdrop {
        background: #10232ac9;
        backdrop-filter: blur(2px)
    }

    .search-dialog header {
        padding: 21px 24px 18px;
        border-bottom: 1px solid var(--line)
    }

.search-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px
}

    .search-top label {
        font: 600 14px system-ui
    }

.close-button {
    border: 1px solid var(--line);
    background: transparent;
    border-radius: 3px;
    padding: 5px 10px;
    font-size: 12px;
    color: var(--muted)
}

.search-input {
    width: 100%;
    font: 17px system-ui;
    padding: 12px 14px;
    border: 1px solid #bdc7c4;
    border-radius: 4px;
    color: var(--ink);
    background: var(--paper)
}

.search-status {
    font: 11px system-ui;
    color: var(--muted);
    margin: 13px 0 0
}

.search-results {
    padding: 10px 14px 20px;
    max-height: calc(80vh - 190px);
    overflow: auto
}

.search-result {
    display: block;
    padding: 15px 12px;
    border-bottom: 1px solid var(--line);
    text-decoration: none;
    color: var(--ink)
}

    .search-result:hover, .search-result:focus {
        background: var(--soft);
        color: var(--ink)
    }

.result-category {
    font: 9px system-ui;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--gold);
    display: block
}

.result-title {
    font-size: 21px;
    display: block;
    margin: 5px 0
}

.result-excerpt {
    display: block;
    font: 12px/1.65 system-ui;
    color: var(--muted)
}

    .result-excerpt mark {
        background: #ecd898;
        color: var(--ink)
    }

.no-results {
    font: 14px system-ui;
    color: var(--muted);
    padding: 24px 12px
}

@media(min-width:1580px) {
    .main {
        padding-left: 70px
    }
}

@media(max-width:1300px) {
    .toc {
        display: none
    }

    .article-layout {
        grid-template-columns: minmax(0,1fr)
    }

    .article {
        max-width: 800px
    }

    .main {
        padding: 36px 38px 60px
    }

    .edition-tag {
        display: none
    }
}

@media(max-width:980px) {
    .shell {
        grid-template-columns: 1fr
    }

    .masthead {
        padding: 0 22px;
        height: 76px
    }

    .menu-button {
        display: block
    }

    .js .sidebar {
        display: none
    }

    .sidebar {
        position: static;
        border-right: 0;
        border-bottom: 1px solid var(--line);
        max-height: none;
        padding: 20px 24px
    }

    .js .nav-open .sidebar {
        display: block
    }

    .main {
        padding: 32px 24px 55px
    }

    .brand-title {
        font-size: 18px
    }

    .brand-symbol {
        width: 33px;
        height: 33px;
        font-size: 24px
    }

    .search-button {
        gap: 10px
    }

        .search-button kbd {
            display: none
        }

    .article {
        max-width: none
    }

    .hero {
        padding: 32px
    }

        .hero::after {
            right: 10px
        }

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

@media(max-width:620px) {
    .masthead {
        padding: 0 14px;
        gap: 8px
    }

    .brand {
        gap: 8px
    }

    .brand-title {
        font-size: 16px
    }

    .brand-sub {
        font-size: 8px
    }

    .header-tools {
        gap: 6px
    }

    .search-button, .menu-button {
        font-size: 11px;
        padding: 8px
    }

    .main {
        padding: 25px 17px 45px
    }

    .hero {
        padding: 27px 23px
    }

        .hero h1 {
            font-size: 37px
        }

        .hero p {
            font-size: 16px
        }

    .reference-cards {
        grid-template-columns: repeat(2,minmax(0,1fr));
        gap: 10px
    }

    .reference-card {
        padding: 17px 15px
    }

        .reference-card h2 {
            font-size: 20px
        }

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

        .journal-strip a:nth-child(2) {
            border-right: 0
        }

        .journal-strip a:nth-child(-n+2) {
            border-bottom: 1px solid var(--line)
        }

    .article p {
        font-size: 16px
    }

    .article h1 {
        font-size: 34px
    }

    .article h2 {
        font-size: 24px
    }

    .article-footer {
        flex-direction: column
    }

    .hero::after {
        font-size: 160px
    }

    .search-dialog header {
        padding: 17px
    }
}

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

@media print {
    .masthead, .sidebar, .toc, .breadcrumb, .article-footer, .search-dialog, .home-meta {
        display: none
    }

    .shell, .article-layout {
        display: block
    }

    .main {
        padding: 0
    }

    .article {
        max-width: none
    }

    body {
        background: white;
        color: black;
        font-size: 12pt
    }

    .hero {
        background: white;
        color: black;
        box-shadow: none
    }

        .hero p, .hero .current {
            color: black
        }

    .article a {
        color: black
    }

    .article h2 {
        break-after: avoid
    }

    .media, .table-wrap {
        break-inside: avoid
    }

        .media:not(.loaded) {
            display: none
        }
}
