/* The Doctrine — a long-form reading page. * * Deliberately quieter than the séance chrome: this is the one page meant to * be *read*, so it optimises for line length, contrast and scanning rather * than atmosphere. The occult register lives in the words; the layout stays * out of the way. * * Layout: single column at 390px, with the plain-language margin note sitting * beneath its article. On wide screens the numeral moves into the gutter so * the articles read as a numbered codex rather than a list of cards. */ .doctrine-page { min-height: 100vh; min-height: 100dvh; /* iOS: 100vh ignores the collapsing toolbar */ padding: 1.5rem 1rem 4rem; color: #d9d4c8; background: #07070a; font-size: 1rem; line-height: 1.7; } .doctrine-header { max-width: 40rem; margin: 0 auto 2.5rem; } .doctrine-back { display: inline-flex; align-items: center; min-height: 44px; color: #8b8577; text-decoration: none; letter-spacing: 0.08em; font-size: 0.85rem; } .doctrine-back:hover, .doctrine-back:focus-visible { color: #cfc7b2; } .doctrine-kicker { margin: 0.75rem 0 0; color: #6f6a5e; font-size: 0.8rem; font-style: italic; letter-spacing: 0.04em; } .doctrine-title { margin: 0.35rem 0 0.75rem; font-size: clamp(2rem, 9vw, 3.25rem); letter-spacing: 0.14em; line-height: 1.1; color: #efe8d6; } .doctrine-subtitle { margin: 0 0 1.25rem; color: #a49d8c; font-size: 1.05rem; } .doctrine-creed { margin: 0; padding: 0.9rem 1rem; border-left: 2px solid #3a4a3e; background: rgba(255, 255, 255, 0.02); color: #b7b0a0; font-size: 0.92rem; } .doctrine-articles { max-width: 40rem; margin: 0 auto; padding: 0; list-style: none; counter-reset: doctrine; } .doctrine-article { position: relative; margin: 0 0 3rem; padding-top: 1.75rem; border-top: 1px solid #1d1d24; } .doctrine-numeral { font-size: 0.9rem; letter-spacing: 0.3em; color: #5d7a63; } /* The visible numeral is decorative (aria-hidden); this carries it to * screen readers inside the heading instead, where it belongs. */ .doctrine-numeral-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; } .doctrine-article-title { margin: 0.4rem 0 0.9rem; font-size: clamp(1.25rem, 5vw, 1.6rem); line-height: 1.25; color: #e7dfc9; } .doctrine-body { margin: 0 0 1.1rem; color: #cdc6b6; } .doctrine-margin { margin: 0 0 0.9rem; padding: 0.85rem 1rem; border-left: 2px solid #4a5f7a; background: rgba(74, 95, 122, 0.08); } .doctrine-margin-label { display: block; margin-bottom: 0.35rem; color: #8fa8c4; font-size: 0.75rem; letter-spacing: 0.14em; text-transform: uppercase; } .doctrine-margin-text { margin: 0; color: #c3cbd6; font-size: 0.94rem; line-height: 1.65; } .doctrine-source { margin: 0; color: #6b665b; font-size: 0.78rem; /* Paths are long and must not push the page sideways at 390px. */ overflow-wrap: anywhere; } .doctrine-source-label { letter-spacing: 0.1em; text-transform: uppercase; } .doctrine-source code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; color: #7f8f7c; } .doctrine-footer { max-width: 40rem; margin: 0 auto; padding-top: 1.5rem; border-top: 1px solid #1d1d24; text-align: center; } .doctrine-footer p { margin: 0 0 1.25rem; color: #9a9384; font-style: italic; } .doctrine-cta { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 1.5rem; border: 1px solid #4d6b52; color: #cfe3cf; text-decoration: none; letter-spacing: 0.16em; font-size: 0.9rem; transition: background-color 160ms ease, border-color 160ms ease; } .doctrine-cta:hover, .doctrine-cta:focus-visible { background: rgba(77, 107, 82, 0.18); border-color: #7fa886; } @media (min-width: 56rem) { .doctrine-articles, .doctrine-header, .doctrine-footer { max-width: 46rem; } .doctrine-article { padding-left: 4.5rem; } .doctrine-numeral { position: absolute; top: 1.75rem; left: 0; width: 3.5rem; text-align: right; } } @media (prefers-reduced-motion: reduce) { .doctrine-cta { transition: none; } }