*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scrollbar-gutter: stable; }
html[data-ground="light"] { scrollbar-color: #8C8577 #F2EEE6; }
html[data-ground="dark"], html[data-ground="film"] { scrollbar-color: #5A554C #121110; }
body { min-height: 100svh; line-height: 1.55; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; }
img, picture, video, canvas, svg { display: block; max-width: 100%; }
img, video { height: auto; }
input, button, textarea, select { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
p, h1, h2, h3, h4, h5, h6 { overflow-wrap: break-word; }
h1, h2, h3, h4, h5, h6 { font-weight: inherit; line-height: 1.05; text-wrap: balance; }
p { text-wrap: pretty; }
ul[role="list"], ol { list-style: none; padding: 0; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .22em; }
[hidden] { display: none !important; }
.pf-line a.pf-tel, .pf-line a.pf-sms { display: inline; min-height: 0; border: 0; white-space: nowrap; -webkit-user-select: text; user-select: text; -webkit-user-drag: none; -webkit-touch-callout: default; }
.pf-line a.pf-tel { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em; text-decoration-color: color-mix(in oklab, currentColor 40%, transparent); font-variant-numeric: lining-nums; }
.pf-line a.pf-tel:hover { text-decoration-color: currentColor; }
.pf-line a.pf-sms { text-decoration: none; }
@media (hover: hover) and (pointer: fine) { .pf-line a.pf-sms { pointer-events: none; cursor: text; } }
@media (pointer: coarse) {
  .pf-line a.pf-tel, .pf-line a.pf-sms { padding-block: .7em; }
  .pf-line a.pf-sms { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em; text-decoration-color: color-mix(in oklab, currentColor 40%, transparent); }
}
figure { margin: 0; }
html, body { overflow-x: clip; }
main { overflow-x: clip; }
:root {
  --_paper: var(--pf-paper, #F2EEE6);
  --_ink: var(--pf-ink, #1A1916);
  --_ink-muted: var(--pf-ink-2, #5A554C);
  --_night: var(--pf-night, #121110);
  --_night-2: var(--pf-night-2, #1C1A17);
  --_on-night: var(--pf-on-night, #ECE6DB);
  --_on-night-2: var(--pf-on-night-2, #A59E91);
  --_rule: var(--pf-hairline, #CFC8BA);
  --_rule-strong: var(--pf-rule-strong, #8C8577);
  --_ribbon: var(--pf-ribbon, #7B2D20);
  --_focus: var(--pf-focus, #7B2D20);
  --_f-display: var(--pf-font-display, "Cormorant", "Times New Roman", serif);
  --_f-body: var(--pf-font-body, "Switzer", system-ui, sans-serif);
  --_f-mono: var(--pf-font-mono, "DM Mono", ui-monospace, monospace);
  --_gutter: var(--pf-margin, clamp(20px, 3.2vw, 64px));
  --grid-gap: var(--pf-gutter, 24px);
  --_max: var(--pf-max-width, 1680px);
  --_header-h: 72px;
  --_radius: var(--pf-radius-frame, 16px);
  --_ease: var(--pf-ease-out, cubic-bezier(.16, 1, .3, 1));
  --_ease-io: var(--pf-ease-inout, cubic-bezier(.65, 0, .35, 1));
  --_dur: 300ms;
  --chapter-pad: var(--pf-section-y, clamp(96px, 14vh, 200px));
  --z-veil: var(--pf-z-veil, 95); --z-menu: var(--pf-z-menu, 90); --z-header: var(--pf-z-header, 80);
  --z-sticky: var(--pf-z-sticky, 70); --z-rail: var(--pf-z-rail, 50); --z-grain: var(--pf-z-grain, 40);
  --grain-opacity: var(--pf-grain-opacity-light, .05);
  --grain-opacity-film: var(--pf-grain-opacity-film, .10);
  color-scheme: light;
  scroll-padding-top: 96px;
}
body {
  background: var(--_night);
  color: var(--_ink);
  font-family: var(--_f-body);
  font-size: var(--pf-fs-body, clamp(16px, .97rem + .13vw, 17px));
  font-weight: 400;
}
.display, .h2, .h3 { font-family: var(--_f-display); font-weight: 300; letter-spacing: var(--pf-track-display, -.01em); }
.display { font-size: var(--pf-fs-display-xl, clamp(44px, 7vw, 120px)); line-height: var(--pf-lh-display-xl, .94); }
.h2 { font-size: var(--pf-fs-display-l, clamp(36px, 5vw, 80px)); line-height: var(--pf-lh-display-l, .98); }
.h3 { font-size: var(--pf-fs-display-m, clamp(26px, 2.6vw, 44px)); line-height: var(--pf-lh-display-m, 1.04); font-weight: 400; }
.h2 em, .h3 em, .display em { font-style: italic; font-size: var(--pf-italic-scale, 1.06em); letter-spacing: var(--pf-track-italic, -.015em); }
.lede { font-size: var(--pf-fs-lede, clamp(18px, 1.1rem + .38vw, 22px)); line-height: var(--pf-lh-lede, 1.45); font-weight: var(--pf-fw-lede, 300); max-width: 34em; }
.mono, .label { font-family: var(--_f-mono); font-size: var(--pf-fs-mono, 12px); line-height: var(--pf-lh-mono, 1.4); letter-spacing: var(--pf-track-mono, .12em); text-transform: uppercase; font-weight: 400; }
.numeral { font-family: var(--_f-mono); font-variant-numeric: tabular-nums; }
.note { color: var(--_ink-muted); }
.pf-light, .pf-light-2, .pf-dark, [class*="pf-ground-"] { background: var(--bg); color: var(--fg); }
.pf-light, .pf-light-2 { --_ink: var(--pf-ink, #1A1916); --_paper: var(--bg); }
.pf-dark { --_ink: var(--pf-on-night, #ECE6DB); --_paper: var(--pf-night, #121110); --_ink-muted: var(--pf-on-night-2, #A59E91); --_rule: var(--pf-hairline-night, #34302A); --_rule-strong: var(--pf-rule-night, #6F6A60); --_focus: var(--pf-ribbon-night, #C98A74); }
html.lenis, html.lenis body { height: auto; }
.lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
.lenis [data-lenis-prevent], .lenis [data-lenis-prevent-wheel], .lenis [data-lenis-prevent-touch],
.lenis [data-lenis-prevent-vertical], .lenis [data-lenis-prevent-horizontal] { overscroll-behavior: contain; }
.lenis.lenis-smooth iframe { pointer-events: none; }
.lenis.lenis-autoToggle { transition-property: overflow; transition-duration: 1ms; transition-behavior: allow-discrete; }
.container { width: 100%; max-width: var(--_max); margin-inline: auto; padding-inline: var(--_gutter); }
.grid-12 { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--grid-gap); }
.chapter { position: relative; padding-block: var(--chapter-pad); }
.chapter:focus, #main:focus, [tabindex="-1"]:focus { outline: none; }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}
.anchor-alias { position: absolute; top: 0; }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .6em;
  min-height: 48px; padding: 0 1.6em; border-radius: var(--pf-radius-pill, 999px);
  border: 1px solid currentColor; text-decoration: none; white-space: nowrap;
  font-family: var(--_f-body); font-weight: 500; font-size: 15px; line-height: 1; letter-spacing: 0; text-transform: none;
  transition: background-color var(--_dur) var(--_ease), color var(--_dur) var(--_ease), border-color var(--_dur) var(--_ease), transform 150ms var(--_ease);
}
.btn:active { transform: scale(.98); }
.btn--primary { background: var(--_ink); color: var(--_paper); border-color: var(--_ink); }
.btn--primary:hover { background: color-mix(in oklab, var(--_ink) 88%, var(--_paper)); }
.btn--light { background: var(--_on-night); color: var(--_night); border-color: var(--_on-night); }
.btn--light:hover { background: color-mix(in oklab, var(--_on-night) 88%, var(--_night)); }
.btn-text { display: inline-flex; align-items: center; min-height: 44px; text-decoration: underline; text-underline-offset: .3em; }
.link-arrow {
  display: inline-flex; align-items: center; gap: .6em; min-height: 44px; text-decoration: none;
  background: linear-gradient(currentColor, currentColor) 0 calc(50% + .85em) / 100% 1px no-repeat;
  transition: background-size var(--_dur) var(--_ease);
}
.link-arrow::after { content: "→"; font-family: var(--_f-mono); transition: transform var(--_dur) var(--_ease); }
.link-arrow:hover::after { transform: translateX(4px); }
.link-arrow:hover { background-size: 0 1px; background-position: 100% calc(50% + .85em); }
.btn-icon {
  width: 44px; height: 44px; display: inline-grid; place-items: center; border-radius: 50%;
  border: 1px solid color-mix(in oklab, currentColor 45%, transparent); font-family: var(--_f-mono);
  transition: background-color var(--_dur) var(--_ease), opacity var(--_dur);
}
.btn-icon:hover:not(:disabled) { background: color-mix(in oklab, currentColor 12%, transparent); }
.btn-icon:disabled { opacity: .35; cursor: default; }
.cta-pair { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; }
:focus-visible { outline: 2px solid var(--pf-focus, var(--_focus)); outline-offset: 3px; border-radius: 2px; box-shadow: 0 0 0 7px var(--pf-focus-halo, transparent); }
.btn:focus-visible, .btn-icon:focus-visible { outline-offset: 4px; border-radius: 999px; }
.skip-links { position: fixed; left: 16px; top: 16px; z-index: calc(var(--z-veil) + 10); display: grid; gap: 8px; }
.skip-link { padding: 12px 16px; background: var(--_night); color: var(--_on-night); transform: translateY(-200%); position: absolute; white-space: nowrap; }
.skip-link:focus { transform: none; position: static; }
.motion-switch { display: grid; gap: 6px; justify-items: start; }
.motion-switch__btn { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; }
.motion-switch__track { position: relative; width: 36px; height: 20px; border-radius: 999px; border: 1px solid currentColor; }
.motion-switch__track::after { content: ""; position: absolute; top: 3px; left: 3px; width: 12px; height: 12px; border-radius: 50%; background: currentColor; transition: transform var(--_dur) var(--_ease); }
.motion-switch__btn[aria-checked="true"] .motion-switch__track::after { transform: translateX(16px); }
.motion-switch__state { min-width: 3ch; }
.motion-switch__help { font-size: .8125rem; color: var(--_ink-muted); }
.grain {
  pointer-events: none; position: fixed; inset: -50%; z-index: var(--z-grain);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: var(--pf-grain-size, 180px);
  opacity: var(--grain-opacity); mix-blend-mode: multiply;
}
html[data-ground="film"] .grain--page, html[data-ground="dark"] .grain--page {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode: screen; opacity: var(--pf-grain-opacity-night, .07);
}
.grain--local { position: absolute; inset: 0; z-index: 2; mix-blend-mode: soft-light; opacity: var(--grain-opacity-film); }
html[data-motion="full"] .chapter--hero:not(.hero--settled) .grain--local { inset: -20%; animation: pf-grain 1.2s steps(6) 3; }
@keyframes pf-grain {
  0% { transform: translate(0, 0); } 20% { transform: translate(-3%, 2%); } 40% { transform: translate(2%, -3%); }
  60% { transform: translate(-2%, -1%); } 80% { transform: translate(3%, 3%); } 100% { transform: translate(0, 0); }
}
::selection { background: var(--pf-ribbon, #7B2D20); color: var(--pf-paper, #F2EEE6); }
.cut-veil { position: fixed; inset: 0; z-index: var(--z-veil); background: var(--_night); opacity: 0; pointer-events: none; transition: opacity 300ms var(--_ease); }
.cut-veil.is-on { opacity: 1; transition-duration: 200ms; }
@media (prefers-reduced-motion: reduce) {
  html:not([data-motion="full"]) *, html:not([data-motion="full"]) *::before, html:not([data-motion="full"]) *::after {
    animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important;
  }
}
html[data-motion="reduced"] *, html[data-motion="reduced"] *::before, html[data-motion="reduced"] *::after {
  animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important;
}
@media (max-width: 767.98px) { :root { scroll-padding-top: 72px; scroll-padding-bottom: 72px; --chapter-pad: 72px; } }
@media (forced-colors: active) { .grain, .hero__scrim, .hero__sweep, .cut-veil, .ceremony__scrim { display: none; } }
.pf-debug { position: fixed; left: 8px; bottom: 8px; z-index: 2000; padding: 8px 10px; max-width: 320px; font: 11px/1.4 var(--_f-mono); background: rgba(0, 0, 0, .78); color: #9cf59c; pointer-events: none; white-space: pre; }
.pf-grid-overlay { position: fixed; inset: 0; z-index: 1999; pointer-events: none; display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--grid-gap); max-width: var(--_max); margin-inline: auto; padding-inline: var(--_gutter); }
.pf-grid-overlay > span { background: rgba(255, 0, 80, .07); outline: 1px solid rgba(255, 0, 80, .18); }
html.pf-arriving main, html.pf-arriving .site-footer { opacity: 0; }
html.pf-arrived main { animation: pf-arrive 320ms ease-out both; }
html[data-motion="reduced"].pf-arrived main { animation: none; }
@keyframes pf-arrive { from { opacity: 0; } to { opacity: 1; } }
