@font-face { font-family: 'Forum'; src: url('fonts/forum-latin-400-normal.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Crimson Pro'; src: url('fonts/crimson-pro-latin-wght-normal.woff2') format('woff2'); font-weight: 200 900; font-style: normal; font-display: swap; }
@font-face { font-family: 'Crimson Pro'; src: url('fonts/crimson-pro-latin-wght-italic.woff2') format('woff2'); font-weight: 200 900; font-style: italic; font-display: swap; }
:root {
  color-scheme: dark;
  --bg: #0c1420; --surface: #efe8d4; --ink: #1a1d26; --text: #e9e6da;
  --accent: #a99be0; --gold: #f0b43a; --muted: #bdbaca; --paper-link: #514279;
  --line: rgb(169 155 224 / 28%); --heading: 'Forum', Georgia, serif;
  --body: 'Crimson Pro', Georgia, serif; --gutter: clamp(20px, 5vw, 80px);
}
* { box-sizing: border-box; }
html { scroll-padding-top: 88px; }
body { margin: 0; background: var(--bg); color: var(--text); font: 400 clamp(18px, 1.3vw, 21px)/1.65 var(--body); -webkit-font-smoothing: antialiased; }
.page { min-width: 0; }
.page-home { isolation: isolate; }
main { counter-reset: chapter; }
::selection { color: var(--bg); background: var(--accent); }
a { color: var(--accent); text-underline-offset: .22em; text-decoration-thickness: 1px; overflow-wrap: anywhere; transition: color .25s, background .25s, border-color .25s; }
a:hover { color: var(--text); }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 5px; }
h1, h2, h3, h4 { font-family: var(--heading); font-weight: 400; line-height: 1.1; text-wrap: balance; overflow-wrap: anywhere; }
h1, h2, h3, p, figure, ul, ol, dl { margin: 0; }
p + p { margin-top: 1.1em; }
img { display: block; max-width: 100%; height: auto; object-fit: cover; }
button, input, textarea { font: inherit; }
.display { font-family: var(--heading); font-weight: 400; }
.wrap { width: min(1240px, calc(100% - var(--gutter) * 2)); margin-inline: auto; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip-link { position: fixed; top: 10px; left: 12px; z-index: 120; padding: 10px 18px; background: var(--surface); color: var(--ink); transform: translateY(-150%); }
.skip-link:focus { transform: none; color: var(--ink); }
.site-header { position: fixed; inset: 0 0 auto; z-index: 50; border-bottom: 1px solid var(--line); background: linear-gradient(rgb(12 20 32 / 60%), transparent); transition: transform .35s, background .35s; }
.site-header.is-scrolled, .page-sub .site-header { background: rgb(12 20 32 / 88%); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
.site-header.is-hidden:not(:focus-within) { transform: translateY(-100%); }
.header-inner { height: 72px; display: flex; align-items: center; justify-content: space-between; gap: 32px; width: calc(100% - var(--gutter) * 2); }
.brand { display: flex; flex: none; align-items: center; gap: 12px; color: var(--text); text-decoration: none; }
.brand-mark { font: 18px/1 var(--heading); text-transform: uppercase; letter-spacing: .16em; white-space: nowrap; }
.brand-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 16px 3px rgb(240 180 58 / 25%); }
.site-nav { min-width: 0; overflow-x: auto; overscroll-behavior-inline: contain; scrollbar-width: none; }
.site-nav::-webkit-scrollbar { display: none; }
.site-nav ul { display: flex; width: max-content; gap: clamp(16px, 1.7vw, 28px); padding: 8px 4px; list-style: none; }
.site-nav a { display: block; padding-block: 8px; font-size: 14px; color: var(--text); text-decoration: none; white-space: nowrap; }
.site-nav a:hover, .site-nav a[aria-current='page'] { color: var(--accent); text-decoration: underline; }
.site-nav a:focus-visible { outline-offset: 2px; }
.hero { position: relative; isolation: isolate; min-height: 640px; min-height: max(640px, 100svh); display: grid; place-items: center; padding: 120px 0 110px; text-align: center; overflow: hidden; }
.hero::before { content: ''; position: absolute; inset: 92px 24px 25px; border: 1px solid var(--line); pointer-events: none; z-index: 3; }
.hero::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgb(12 20 32 / 12%), transparent 40%, var(--bg)), radial-gradient(ellipse, transparent 20%, rgb(12 20 32 / 50%)); pointer-events: none; z-index: 1; }
.hero-media { position: absolute; inset: 0; z-index: -2; }
.hero-media img { width: 100%; height: 100%; object-position: center 55%; filter: saturate(.65) brightness(.65); }
.hero-canvas { display: none; position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.lantern-ready .hero-canvas { display: block; }
.no-webgl .hero-canvas, html:not(.js) .hero-canvas { display: none; }
.hero-inner { position: relative; z-index: 2; max-width: 1160px; }
.hero-text { text-shadow: 0 2px 30px var(--bg); }
.eyebrow { color: var(--accent); font-size: 12px; line-height: 1.5; letter-spacing: .2em; text-transform: uppercase; text-align: center; }
.hero-title { max-width: 23ch; margin: 26px auto; font-size: clamp(42px, 5.5vw, 88px); line-height: 1.04; letter-spacing: .025em; }
.hero h1 { font-family: 'Forum', Georgia, serif; text-transform: uppercase; letter-spacing: .08em; font-size: clamp(2rem, 4vw, 4rem); line-height: 1.15; }
.hero-eyebrow, .page-eyebrow, .scroll-cue { color: #a99be0; }
.lead { max-width: 54ch; margin-inline: auto; color: var(--muted); font-size: clamp(19px, 1.6vw, 24px); line-height: 1.5; text-wrap: pretty; }
.hero .lead { color: var(--text); max-width: 51ch; }
.hero-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 10px 27px; border: 1px solid var(--line); font-size: 15px; letter-spacing: .06em; text-decoration: none; }
.btn-primary { background: var(--surface); color: var(--ink); border-color: var(--surface); text-shadow: none; }
.btn-primary:hover { background: var(--accent); color: var(--ink); border-color: var(--accent); }
.btn-ghost { background: rgb(12 20 32 / 40%); color: var(--text); }
.btn-ghost:hover { border-color: var(--accent); background: var(--bg); }
.hero-tag { position: absolute; left: 50%; top: calc(100% + 28px); width: max-content; max-width: 100%; transform: translateX(-50%); font-size: 13px; font-style: italic; color: var(--muted); }
.scroll-cue { position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%); z-index: 2; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; }
.scroll-cue::after { content: ''; display: block; width: 1px; height: 24px; margin: 8px auto 0; background: var(--gold); }
.section { position: relative; padding: clamp(52px, 5.5vw, 88px) 0; counter-increment: chapter; }
.section::before { content: ''; position: absolute; top: 0; left: 50%; width: min(480px, 70%); height: 1px; transform: translateX(-50%); background: linear-gradient(90deg, transparent, var(--line), transparent); }
.section::after { content: ''; position: absolute; top: -2px; left: calc(50% - 2px); width: 5px; height: 5px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 18px rgb(240 180 58 / 40%); }
.section .eyebrow::before { content: counter(chapter, upper-roman); display: block; margin-bottom: 12px; font: 16px/1 var(--heading); }
.section-title { font-size: clamp(36px, 4.4vw, 68px); letter-spacing: .015em; text-align: center; max-width: 23ch; margin: 16px auto 24px; }
.section-intro { max-width: 52ch; margin: 0 auto; text-align: center; color: var(--muted); line-height: 1.5; }
.section-prologue { background: radial-gradient(ellipse at 50% 0, rgb(169 155 224 / 4%), transparent 70%); }
.section-deck { isolation: isolate; }
.intro-wrap { max-width: 1000px; }
.intro-copy { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 4vw, 64px); margin-top: 36px; }
.intro-copy p { margin: 0; color: var(--muted); }
.intro-copy p:first-child::first-letter { float: left; font: 64px/.9 var(--heading); color: var(--accent); padding: 8px 8px 0 0; }
.section-pilgrimage { padding-top: 0; }
.pilgrimage-pin { padding-top: 56px; min-width: 0; background: radial-gradient(ellipse at 50% 65%, #192135, var(--bg) 70%); }
.pilgrimage-head { max-width: 850px; }
.pilgrimage-viewport { width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--accent) var(--bg); margin-top: 26px; }
.pilgrimage-track { display: flex; gap: clamp(20px, 3vw, 48px); width: max-content; padding: 8px max(var(--gutter), calc((100vw - 1240px) / 2)) 16px; list-style: none; }
.stop { flex: 0 0 auto; width: clamp(280px, 27vw, 370px); scroll-snap-align: center; }
.card { position: relative; min-width: 0; border: 1px solid var(--line); }
.card::after { content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: radial-gradient(280px circle at var(--mx, 50%) var(--my, 50%), rgb(240 180 58 / 9%), transparent 75%); opacity: 0; transition: opacity .3s; }
.card:hover::after { opacity: 1; }
.stop-card { min-height: 380px; height: 100%; display: flex; flex-direction: column; align-items: center; padding: 98px 30px 28px; border-radius: 999px 999px 5px 5px; background: radial-gradient(ellipse at 50% 0, rgb(169 155 224 / 10%), transparent 65%), #101b2b; text-align: center; overflow: hidden; }
.stop-card::before { content: ''; position: absolute; inset: 9px; border: 1px solid rgb(169 155 224 / 12%); border-radius: inherit; pointer-events: none; }
.stop-no { position: absolute; top: 12px; left: 0; right: 0; font: 74px/1 var(--heading); text-transform: uppercase; color: rgb(169 155 224 / 24%); }
.card-title { font-size: clamp(28px, 2.8vw, 42px); margin-bottom: 18px; }
.card-text { color: var(--muted); font-size: 18px; line-height: 1.5; }
.card-link { display: inline-block; padding: 10px 0; font-size: 16px; }
.card-link::after { content: ' ↗'; font-family: Georgia, serif; font-size: .8em; }
.stop-card .card-link { margin-top: auto; padding-top: 24px; }
.pilgrimage-hint { margin: 10px auto 0; text-align: center; font-size: 16px; font-style: italic; color: var(--muted); }
.reel-ready .pilgrimage-viewport { overflow: hidden; scroll-snap-type: none; }
.reel-ready .pilgrimage-track { will-change: transform; }
.deck-wrap { max-width: 940px; }
.deck-head { margin-bottom: 36px; }
.deck-list { list-style: none; padding: 0; }
.deck-card { position: sticky; top: 88px; margin-bottom: 28px; transform-origin: center top; }
.deck-card:nth-child(2) { top: 102px; }
.deck-card:nth-child(3) { top: 116px; }
.deck-card:nth-child(4) { top: 130px; }
.deck-card:nth-child(5) { top: 144px; margin-bottom: 0; }
.deck-card .card { min-height: 290px; padding: 64px clamp(30px, 7vw, 110px) 44px; background: var(--surface); color: var(--ink); border: 1px solid #c5bfae; border-top: 2px solid var(--gold); box-shadow: 0 -12px 40px rgb(0 0 0 / 22%); text-align: center; isolation: isolate; }
.deck-card .card::before { content: ''; position: absolute; inset: 12px; border: 1px solid rgb(81 66 121 / 20%); pointer-events: none; }
.deck-no { position: absolute; inset: 12px 24px auto auto; font: 96px/1 var(--heading); color: rgb(26 29 38 / 15%); z-index: -1; }
.deck-card .card-title { font-size: clamp(32px, 3.6vw, 54px); }
.deck-card .card-text { max-width: 44ch; margin: 0 auto 18px; color: var(--ink); }
.deck-card a, .prose a { color: var(--paper-link); }
.deck-card a:hover, .prose a:hover { color: var(--ink); }
.deck-card :focus-visible, .prose :focus-visible { outline-color: var(--paper-link); }
.section-guides > .wrap, .section-faq > .wrap { max-width: 1040px; }
.guide-list { list-style: none; padding: 0; margin-top: 36px; counter-reset: guide; }
.guide-list li { position: relative; display: grid; grid-template-columns: 1.1fr 1fr; gap: 32px; align-items: center; padding: 26px 20px 26px 64px; border-top: 1px solid var(--line); counter-increment: guide; transition: background .3s; }
.guide-list li:last-child { border-bottom: 1px solid var(--line); }
.guide-list li::before { content: counter(guide, upper-roman); position: absolute; left: 12px; color: var(--accent); font: 16px/1 var(--heading); }
.guide-list li:hover { background: rgb(169 155 224 / 4%); }
.guide-list a { font: clamp(25px, 2.5vw, 36px)/1.2 var(--heading); color: var(--text); text-decoration: none; }
.guide-list a:hover { color: var(--accent); }
.guide-list span { color: var(--muted); font-size: 18px; line-height: 1.5; }
.faq { display: grid; grid-template-columns: 1fr 1fr; gap: 0 48px; margin: 36px auto 0; }
.faq > div { padding: 26px 0; border-top: 1px solid var(--line); }
.faq dt { font: 27px/1.25 var(--heading); margin-bottom: 12px; }
.faq dd { margin: 0; color: var(--muted); font-size: 19px; }
.partners-slot:empty { display: none; height: 0; padding: 0; margin: 0; }
.section-partners { text-align: center; }
.partner-list { width: min(1240px, calc(100% - var(--gutter) * 2)); margin: 32px auto 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 20px; }
.partner { min-width: 0; border: 1px solid var(--line); padding: 28px; }
.partner-link, .partner-phrase, .partner-desc { overflow-wrap: anywhere; }
.partner-link { font-size: 17px; }
.partner-phrase { font: 29px/1.2 var(--heading); margin: 14px 0; }
.partner-desc { color: var(--muted); font-size: 18px; }
.article { padding: 108px 0 64px; }
.article > .wrap { max-width: 1120px; }
.breadcrumb { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; color: var(--muted); font-size: 14px; }
.page-header { padding: 40px 0; text-align: center; }
.dateline { color: var(--accent); font-variant: small-caps; letter-spacing: .16em; font-size: 15px; }
.dateline span { margin-inline: 8px; }
.page-header h1 { max-width: 23ch; font-size: clamp(38px, 5vw, 76px); letter-spacing: .045em; margin: 22px auto 28px; }
.page-header .lead { font-style: italic; }
.page-figure { position: relative; width: calc(100vw - 16px); max-width: none; margin: 0 0 40px; left: 50%; transform: translateX(-50%); overflow: hidden; border-block: 1px solid var(--line); }
.page-figure img { width: 100%; height: clamp(260px, 42vw, 580px); }
.page-figure::after { content: ''; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 0 100px 20px rgb(12 20 32 / 45%); background: linear-gradient(0deg, rgb(12 20 32 / 25%), transparent 50%); }
.prose { position: relative; max-width: 800px; margin: 0 auto; background: var(--surface); color: var(--ink); color-scheme: light; border-top: 2px solid var(--gold); padding: clamp(28px, 5vw, 72px); font-size: clamp(19px, 1.5vw, 22px); line-height: 1.75; overflow-wrap: anywhere; box-shadow: 0 20px 80px rgb(0 0 0 / 15%); }
.prose h2 { font-size: clamp(28px, 2.5vw, 38px); margin: 1.6em 0 .7em; }
.prose h2:first-child { margin-top: 0; }
.prose > p:first-of-type::first-letter { float: left; font: 4em/.8 var(--heading); color: var(--paper-link); padding: .12em .12em 0 0; }
.prose ul, .prose ol { padding-left: 1.3em; margin-block: 1em; }
.prose li + li { margin-top: .5em; }
.note { margin-top: 32px; border-block: 1px solid rgb(81 66 121 / 30%); padding: 20px 0; color: #44404d; font-style: italic; font-size: .95em; }
.related { text-align: center; margin: 44px auto 0; max-width: 900px; }
.related h2 { font-size: 36px; margin-bottom: 20px; }
.related-list { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px 28px; list-style: none; padding: 0; }
.site-footer { padding: 42px 0 28px; border-top: 1px solid var(--line); text-align: center; background: radial-gradient(ellipse at 50% 100%, #1b2236, transparent 70%); }
.footer-inner { max-width: 1240px; }
.footer-word { font: clamp(56px, 14vw, 210px)/1 var(--heading); letter-spacing: .07em; color: rgb(169 155 224 / 22%); margin-bottom: 24px; }
.footer-note { max-width: 64ch; margin: 0 auto 24px; color: var(--muted); font-size: 16px; }
.footer-nav ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 24px; list-style: none; padding: 0; }
.footer-nav a { display: inline-block; padding: 8px 0; color: var(--muted); font-size: 14px; }
.site-footer p, .site-footer a { color: #b9b4ca; }
.footer-nav a:hover { color: var(--accent); }
.grain { position: fixed; inset: 0; z-index: 80; pointer-events: none; opacity: .055; background-image: repeating-radial-gradient(circle at 17% 32%, #fff 0 .5px, transparent 1px 3px); background-size: 7px 9px; mix-blend-mode: soft-light; }
.scroll-progress { position: fixed; inset: 0 0 auto; height: 2px; z-index: 90; background: var(--gold); transform: scaleX(0); transform-origin: left; pointer-events: none; }
.cursor { display: none; }
.cursor.cursor-ready { display: block; position: fixed; left: 0; top: 0; width: 28px; height: 28px; border: 1px solid rgb(240 180 58 / 45%); border-radius: 50%; z-index: 100; pointer-events: none; opacity: 0; box-shadow: 0 0 65px 20px rgb(240 180 58 / 9%); transition: width .25s, height .25s, opacity .2s; }
.cursor::after { content: ''; position: absolute; top: 50%; left: 50%; width: 4px; height: 4px; transform: translate(-50%, -50%); background: var(--gold); border-radius: 50%; box-shadow: 0 0 12px var(--gold); }
.cursor.is-active { width: 46px; height: 46px; background: rgb(240 180 58 / 5%); }
.word, .word-inner { display: inline-block; }
.word { max-width: 100%; vertical-align: top; }
.hero-title .word:nth-child(4), .hero-title .word:nth-child(9), .section-title .word:last-child { font-family: var(--body); font-style: italic; font-weight: 350; color: #d3c9ef; }
.js .reveal-pending { opacity: 0; }
.parallax-ready { overflow: hidden; }
@media (min-width: 900px) and (min-height: 740px) {
  .reel-ready .pilgrimage-pin { min-height: 100svh; padding-top: 76px; padding-bottom: 16px; display: flex; flex-direction: column; justify-content: center; }
  .reel-ready .eyebrow::before { display: inline; margin-right: 14px; }
  .reel-ready .section-title { font-size: clamp(38px, 3.5vw, 54px); margin: 10px auto; }
  .reel-ready .section-intro { font-size: 18px; max-width: 70ch; }
  .reel-ready .pilgrimage-viewport { margin-top: 20px; }
  .reel-ready .stop-card { min-height: clamp(340px, 42vh, 460px); }
}
@media (max-width: 899px) {
  .header-inner { height: 64px; gap: 20px; width: calc(100% - 32px); }
  .brand-mark { font-size: 15px; letter-spacing: .1em; }
  .brand { gap: 8px; }
  .site-nav { flex: 1; }
  .hero::before { inset: 80px 12px 18px; }
  .hero-title { font-size: clamp(40px, 7.5vw, 66px); }
  .hero-tag { display: none; }
  .hero .eyebrow { max-width: 34ch; margin-inline: auto; }
  .intro-copy { grid-template-columns: 1fr; gap: 22px; max-width: 62ch; margin-inline: auto; }
  .stop { width: min(80vw, 340px); }
  .pilgrimage-pin { padding-top: 48px; }
  .guide-list li { grid-template-columns: 1fr; gap: 12px; padding-left: 44px; padding-right: 0; }
  .guide-list li::before { left: 0; top: 32px; }
  .faq { grid-template-columns: 1fr; }
  .deck-card .card { min-height: 330px; padding: 48px 28px 32px; }
  .page-header h1 { letter-spacing: .025em; }
  .page-sub .article > .wrap { width: calc(100% - 32px); }
}
@media (max-height: 739px) {
  .reel-ready .pilgrimage-pin { padding-top: 76px; padding-bottom: 12px; }
  .reel-ready .section-title { font-size: 38px; margin: 8px auto; }
  .reel-ready .eyebrow::before, .reel-ready .section-intro { display: none; }
  .reel-ready .stop-card { min-height: 340px; padding-top: 70px; }
  .reel-ready .stop-no { font-size: 52px; top: 16px; }
  .reel-ready .card-title { font-size: 28px; margin-bottom: 12px; }
  .reel-ready .pilgrimage-viewport { margin-top: 16px; }
  .deck-card { position: relative; top: auto !important; }
}
@media (hover: none) { .hero-tag, .cursor.cursor-ready { display: none; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .hero-canvas, .cursor.cursor-ready { display: none; }
  .js .reveal-pending, .word-inner { opacity: 1 !important; transform: none !important; filter: none !important; }
  .deck-card { position: relative; top: auto !important; }
}
@media print {
  body { color: #111; background: #fff; }
  .site-header, .site-footer, .grain, .cursor, .scroll-progress, .hero-canvas, .hero-actions, .scroll-cue, .hero-tag { display: none !important; }
  .article { padding: 0; }
  .prose { box-shadow: none; background: #fff; padding: 20px; }
  .deck-card { position: static; transform: none !important; }
  .pilgrimage-viewport { overflow: visible; }
  .pilgrimage-track { width: 100%; flex-wrap: wrap; transform: none !important; padding: 0; }
  .js .reveal-pending, .word-inner { opacity: 1 !important; transform: none !important; filter: none !important; }
}

@media (max-width: 899px) { .deck-no { font-size: 56px; inset: 12px 18px auto auto; } .deck-card .card { min-height: 250px; } }
