@font-face { font-family: "IM Fell English SC"; src: url("../fonts/cathedral/fellsc-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Sorts Mill Goudy"; src: url("../fonts/cathedral/goudy-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }

/* CATHEDRAL (theme key "cathedral", round 36): the church wedding at full scale; our own design. Intro: a dark nave under
   an unlit stained-glass rose window (core/themes/cathedral/_parts.php); tap and light pours through the glass and falls
   down the aisle in beams. Cover: the lit window with its beams, names in cathedral capitals, the photo in a pointed
   gothic arch with a gold line, pools of coloured light, the day carved large. Sections: a small rose window over every
   heading, roman numerals (core/dress.php), arched cards, a dark-nave closing. Palette: --g1..--g4 the glass, --lead the
   leading, --gold the stone and lines, --nave the dark church, --glow how strong the light is.
   Ivory & Gold (original), Midnight Mass, Rose Window. Type: IM Fell English SC (names, headings), Sorts Mill Goudy (text). */
:root {
  --bg: #f4efe4; --paper: #fbf8f1; --tone: #ece4d4; --ink: #2b2420; --muted: #6f6458; --line: rgba(43, 36, 32, .16);
  --accent: #8a6a22; --accent-ink: #fbf8f1; --gold: #a8842f; --lead: #231d19; --nave: #15110e; --glow: .38;
  --g1: #2a5199; --g2: #a82b3b; --g3: #d39d30; --g4: #33704f;
  --display: "IM Fell English SC", "Trajan Pro", Georgia, serif; --text: "Sorts Mill Goudy", Georgia, serif; --script: var(--display);
  --radius: 4px; --maxw: 540px;
  --lancet: polygon(0 100%, 0 61.9%, .4% 55.6%, 1.5% 49.5%, 3.4% 43.4%, 6% 37.4%, 9.4% 31.7%, 13.4% 26.1%, 18.1% 20.9%, 23.4% 15.9%, 29.3% 11.3%, 35.7% 7.1%, 42.6% 3.3%, 50% 0,
    57.4% 3.3%, 64.3% 7.1%, 70.7% 11.3%, 76.6% 15.9%, 81.9% 20.9%, 86.6% 26.1%, 90.6% 31.7%, 94% 37.4%, 96.6% 43.4%, 98.5% 49.5%, 99.6% 55.6%, 100% 61.9%, 100% 100%);
}
body { font-family: var(--text); font-size: 1.06rem; line-height: 1.7; color: var(--ink); background: var(--bg); }

/* the rose window */
.cd-rose { display: block; overflow: visible; }
.cd-rose .cd-rim { fill: none; stroke: var(--gold); stroke-width: 3.5; }
.cd-rose .cd-bg, .cd-rose .cd-c { fill: var(--lead); }
.cd-rose .cd-p { stroke: var(--lead); stroke-width: 1.8; fill-opacity: .92; }
.cd-rose .g1 { fill: var(--g1); } .cd-rose .g2 { fill: var(--g2); } .cd-rose .g3 { fill: var(--g3); } .cd-rose .g4 { fill: var(--g4); }
.cd-rose .cd-tr { stroke: var(--lead); stroke-width: 1.6; }
.cd-rose .cd-m { font: 400 17px var(--display); fill: var(--gold); letter-spacing: 1px; }
.cd-beams { position: absolute; left: 50%; top: 0; width: 180vw; height: 120vh; transform: translateX(-50%); pointer-events: none;
  background: conic-gradient(from 152deg at 50% 0, transparent 0 9deg, color-mix(in srgb, var(--g3) 55%, transparent) 11deg 15deg, transparent 18deg 24deg, color-mix(in srgb, var(--g1) 50%, transparent) 26deg 29deg,
    transparent 31deg 33deg, color-mix(in srgb, #fff 35%, transparent) 35deg 37deg, transparent 39deg 42deg, color-mix(in srgb, var(--g2) 50%, transparent) 44deg 48deg, transparent 51deg 56deg);
  -webkit-mask: linear-gradient(#000 10%, transparent 85%); mask: linear-gradient(#000 10%, transparent 85%); }

/* ---------- intro: let the light in ---------- */
.cd-intro { --intro-ms: 2500; background: radial-gradient(70% 50% at 50% 28%, color-mix(in srgb, var(--nave) 90%, #fff), var(--nave) 70%); overflow: hidden; transition: opacity .7s ease 1.8s, visibility 0s linear 2.5s; }
.cd-start { position: relative; display: grid; justify-items: center; align-content: start; gap: 28px; width: 100%; height: 100%; padding: 13vh 24px 24px; border: 0; background: none; color: #efe6d2; cursor: pointer; overflow: hidden; }
.cd-intro .cd-beams { top: calc(13vh + min(36vw, 150px)); opacity: 0; transition: opacity 1.2s ease .35s; }
.cd-rose.is-intro { position: relative; width: min(72vw, 300px); height: auto; filter: saturate(.15) brightness(.42); transition: filter 1.1s ease, transform 2.2s cubic-bezier(.4, 0, .2, 1); }
.cd-for { font: 400 1.3rem/1.3 var(--display); letter-spacing: .04em; } .cd-for b { font-weight: 400; }
.cd-tap { margin-top: auto; margin-bottom: 9vh; font: 400 .74rem var(--text); letter-spacing: .3em; text-transform: uppercase; color: #c9bfa9; animation: cd-pulse 3s ease-in-out infinite; }
@keyframes cd-pulse { 50% { opacity: .35; } }
.is-opening .cd-rose.is-intro { filter: saturate(1.15) brightness(1.08) drop-shadow(0 0 22px color-mix(in srgb, var(--g3) 70%, transparent)); transform: scale(1.18) translateY(4vh); }
.is-opening .cd-intro .cd-beams { opacity: 1; }
.is-opening .cd-tap, .is-opening .cd-for { opacity: 0; animation: none; transition: opacity .3s; }
@media (prefers-reduced-motion: reduce) { .cd-tap { animation: none; } .cd-rose.is-intro { transition-duration: .01s; } }

/* ---------- cover ---------- */
.t-cathedral .cd-hero { position: relative; display: block; justify-items: normal; align-items: normal; min-height: 100svh; padding: 34px var(--gutter) 80px; text-align: center; overflow: hidden; }
.t-cathedral .cd-hero > * { position: relative; z-index: 1; }
.t-cathedral .cd-hero > .cd-pools { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; max-width: none; margin: 0; }
.cd-pools i { position: absolute; width: 72vw; height: 72vw; max-width: 420px; max-height: 420px; border-radius: 50%; opacity: var(--glow); animation: cd-drift 14s ease-in-out infinite alternate; }
.cd-pools i:nth-child(1) { left: 0; top: 42%; background: radial-gradient(closest-side, color-mix(in srgb, var(--g1) 55%, transparent), transparent); }
.cd-pools i:nth-child(2) { right: 0; top: 56%; background: radial-gradient(closest-side, color-mix(in srgb, var(--g2) 45%, transparent), transparent); animation-delay: -5s; }
.cd-pools i:nth-child(3) { left: 14%; top: 76%; background: radial-gradient(closest-side, color-mix(in srgb, var(--g3) 55%, transparent), transparent); animation-delay: -9s; }
@keyframes cd-drift { to { transform: translate(-3vw, -4vh) scale(.94); } }
.cd-top { position: relative; width: min(44vw, 180px); margin: 0 auto 22px; }
.cd-top .cd-beams { top: 70%; width: 100vw; height: 80vh; opacity: var(--glow); z-index: -1; }
.cd-rose.is-top { position: relative; width: 100%; height: auto; filter: drop-shadow(0 0 14px color-mix(in srgb, var(--g3) 45%, transparent)); animation: cd-shine 6s ease-in-out infinite; }
@keyframes cd-shine { 50% { filter: drop-shadow(0 0 22px color-mix(in srgb, var(--g3) 65%, transparent)) brightness(1.08); } }
.cd-hero .hero-guest { margin: 0 0 10px; font: 400 1.25rem/1.3 var(--display); } .cd-hero .hero-guest b { font-weight: 400; }
.cd-hero .hero-k, .t-cathedral .sh-k { margin: 0; font: 400 .74rem/1.6 var(--text); letter-spacing: .3em; text-transform: uppercase; color: var(--accent); text-wrap: balance; }
.t-cathedral .hero-t { margin: 18px 0 0; font: 400 clamp(2.3rem, min(12.5vw, calc(118vw / var(--nl, 7))), 4.4rem)/1.04 var(--display); color: var(--ink); letter-spacing: .02em; }
.t-cathedral .hero-t span { display: block; }
.t-cathedral .hero-t i { display: block; margin: 6px 0 4px; font: 400 .7em/1 var(--text); color: var(--gold); font-style: normal; }
.cd-hero .hero-line { margin: 18px auto 0; max-width: 21em; color: var(--muted); font-style: normal; text-wrap: balance; }
.cd-arch { position: relative; width: min(70vw, 290px); aspect-ratio: 5 / 7; margin: 34px auto 0; padding: 7px; background: var(--gold); clip-path: var(--lancet); }
.cd-arch::before { content: ""; position: absolute; inset: 2.5px; background: var(--bg); clip-path: var(--lancet); }
.cd-ph { position: relative; z-index: 1; width: 100%; height: 100%; background: var(--gold); clip-path: var(--lancet); }
.cd-ph .cd-img { position: absolute; inset: 1.5px; width: calc(100% - 3px); height: calc(100% - 3px); object-fit: cover; clip-path: var(--lancet); }
.cd-ph .hero-media-tag { bottom: 10px; font-size: .5rem; z-index: 2; }
.cd-date { display: grid; justify-items: center; gap: 4px; margin: 30px 0 0; }
.cd-date small { font: 400 .78rem var(--text); letter-spacing: .3em; text-transform: uppercase; color: var(--muted); }
.cd-date b { font: 400 clamp(4.4rem, 22vw, 6rem)/.95 var(--display); color: var(--accent); }
.cd-where { margin: 10px auto 0; font-size: 1.02rem; }
.t-cathedral .hero-cta { display: inline-flex; align-items: center; justify-content: center; min-height: 50px; margin-top: 24px; padding: 12px 34px; border: 0; border-radius: 0;
  background: var(--accent); color: var(--accent-ink); font: 400 1rem var(--display); letter-spacing: .18em; text-decoration: none; outline: 1px solid var(--gold); outline-offset: 4px; }

/* ---------- sections: a small rose window over every heading ---------- */
.t-cathedral .s:not(.s-hero) { padding-top: 84px; padding-bottom: 84px; }
.t-cathedral .s:nth-of-type(odd):not(.s-hero):not(.s-closing) { background: radial-gradient(70% 45% at 85% 0, color-mix(in srgb, var(--g1) 9%, transparent), transparent), radial-gradient(60% 40% at 10% 100%, color-mix(in srgb, var(--g2) 7%, transparent), transparent), var(--tone); }
.t-cathedral .sh { margin-bottom: 36px; }
.t-cathedral .sh::before { content: ""; display: block; width: 38px; height: 38px; margin: 0 auto 14px; border-radius: 50%; border: 2px solid var(--gold);
  background: radial-gradient(circle, var(--lead) 0 24%, transparent 25%), repeating-conic-gradient(var(--g1) 0 22deg, var(--lead) 22deg 24deg, var(--g2) 24deg 46deg, var(--lead) 46deg 48deg, var(--g3) 48deg 70deg, var(--lead) 70deg 72deg, var(--g4) 72deg 94deg, var(--lead) 94deg 96deg); }
.t-cathedral .sh-t { font: 400 clamp(2rem, 9.5vw, 2.8rem)/1.1 var(--display); color: var(--ink); letter-spacing: .02em; }
.t-cathedral .sh-n { font: 400 .95rem var(--display); color: var(--accent); letter-spacing: .14em; }
.t-cathedral .cd-u b { font: 400 clamp(2.4rem, 11vw, 3rem)/1 var(--display); color: var(--accent); }
.t-cathedral .cd-u span { font: 400 .62rem var(--text); letter-spacing: .24em; text-transform: uppercase; }
.t-cathedral .vn-c, .t-cathedral .dr-roles > div, .t-cathedral .rs, .t-cathedral .rs-done, .t-cathedral .gl-c, .t-cathedral .gl-it {
  border: 1px solid color-mix(in srgb, var(--gold) 60%, transparent); border-radius: var(--radius); background: var(--paper); box-shadow: 0 0 0 4px var(--paper), 0 0 0 5px color-mix(in srgb, var(--gold) 30%, transparent); }
.t-cathedral .vn-c { border-radius: 999px 999px var(--radius) var(--radius) / 70px 70px var(--radius) var(--radius); padding-top: 34px; }
.t-cathedral .vn-l, .t-cathedral .dr-roles dt, .t-cathedral .bio-r, .t-cathedral .tml-d { font: 400 .66rem var(--text); letter-spacing: .24em; text-transform: uppercase; color: var(--accent); }
.t-cathedral .vn-n, .t-cathedral .pp-h, .t-cathedral .tml-t { font: 400 1.4rem/1.2 var(--display); color: var(--ink); }
.t-cathedral .tl-time { color: var(--accent); font: 400 .85rem var(--text); letter-spacing: .1em; }
.t-cathedral .tl-title { font: 400 1.12rem var(--display); }
.t-cathedral .f-in, .t-cathedral .ch span { border-radius: var(--radius); background: var(--bg); border-color: var(--line); }
.t-cathedral .rs-btn, .t-cathedral .gl-btn { border-radius: 0; background: var(--accent); color: var(--accent-ink); font: 400 .95rem var(--display); letter-spacing: .16em; }
.t-cathedral .btn-line { min-height: 46px; border-radius: 0; border-color: var(--gold); color: var(--ink); font: 400 .9rem var(--display); letter-spacing: .14em; }
.t-cathedral .btn-line:hover { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.t-cathedral .faq summary { font: 400 1.12rem var(--display); }
.t-cathedral .gal-i img, .t-cathedral .gal-ph { border-radius: 999px 999px var(--radius) var(--radius) / 50px 50px var(--radius) var(--radius); }
.t-cathedral .tml::before { background: var(--gold); width: 1px; }
.t-cathedral .tml-dot { background: var(--paper); border: 2px solid var(--gold); }

/* ---------- closing: the dark nave, the window lit ---------- */
.t-cathedral .cd-end { --ink: #f1e9d6; --muted: #bdb39f; padding: 90px var(--gutter) 110px; text-align: center; color: var(--ink);
  background: radial-gradient(70% 40% at 50% 12%, color-mix(in srgb, var(--g3) 22%, transparent), transparent), var(--nave); }
.t-cathedral .cd-end > * { margin-left: auto; margin-right: auto; }
.cd-rose.is-end { width: min(52vw, 210px); height: auto; margin-bottom: 30px; filter: drop-shadow(0 0 24px color-mix(in srgb, var(--g3) 55%, transparent)); }
.t-cathedral .cd-end .cl-line { font: 400 1.3rem/1.55 var(--text); max-width: 19em; text-wrap: balance; }
.t-cathedral .cd-end .cl-sign { margin-top: 14px; font: 400 2rem/1.15 var(--display); color: var(--gold); }
.t-cathedral .cd-end .cl-tag { font: 400 .7rem var(--text); letter-spacing: .24em; color: var(--muted); }
.t-cathedral .cd-end .btn-line { color: var(--ink); }
.t-cathedral body.is-demo .cd-end { padding-bottom: 140px; }
@media (prefers-reduced-motion: reduce) { .cd-pools i, .cd-rose.is-top { animation: none; } }
