/* Cathedral Chapters — the selected heading family, with editable typography. */
.people-section { --people-role-size: 22px; --people-name-size: 31px; --people-name-leading: 1.4; }
.cathedral-parents { position: relative; padding: 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; overflow: visible; color: #23467f; }
.cathedral-parents::before { display: none; }
.cathedral-parent-hero { position: relative; width: min(100%, 920px); margin: 0 auto; aspect-ratio: 2.5; isolation: isolate; }
.cathedral-parent-picture { display: block; width: 100%; height: 100%; }
.cathedral-arch-art { width: 100%; height: 100%; object-fit: contain; animation: cathedral-light 9s ease-in-out infinite; }
.cathedral-parents .parents-dedication { position: absolute; left: 12%; right: 12%; top: 43%; z-index: 2; text-align: center; }
.cathedral-parents .parents-dedication .eyebrow { font: 400 clamp(24px, 3vw, 40px)/1.2 var(--serif); letter-spacing: .015em; color: #edf4ff; text-shadow: 0 2px 8px #102b5655; margin: 0 0 13px; }
.cathedral-parents .parents-dedication h3 { font: italic 500 clamp(50px, 6.8vw, 90px)/1.08 var(--serif); color: #fff; margin: 0; letter-spacing: -.025em; }
.cathedral-parents-details { max-width: 920px; margin: 0 auto; padding: 30px 24px 38px; border-bottom: 1px solid #b5c9e4; }
.parents-intro { font: italic 23px/1.35 var(--serif); color: #5d79a6; text-align: center; margin: 0 0 27px; }
.cathedral-parents .parents { margin: 0; gap: 36px; }
.cathedral-parents .parents p, .cathedral-honor .honor-name, .celebrant-tribute p { font: 500 var(--people-name-size)/var(--people-name-leading) var(--serif); color: #23467f; text-shadow: none; letter-spacing: normal; }
.cathedral-parents .parents small, .cathedral-honor .honor-role, .celebrant-tribute h3 { font: 400 var(--people-role-size)/normal var(--serif); color: #637fa6; letter-spacing: normal; }
.cathedral-parents .parents small { margin-bottom: 13px; }
.cathedral-parents .parents > div + div { border-color: #cad8ea; }
.cathedral-parents .parents-blessing { color: #5c79a6; margin-top: 28px; }

.cathedral-honor { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 920px; margin-inline: auto; background: transparent; border: 0; border-radius: 0; padding: 28px 24px 38px; gap: 36px; box-shadow: none; }
.cathedral-honor .honor-attendant { min-width: 0; padding: 0; border: 0; }
.cathedral-honor .honor-attendant + .honor-attendant { border-left: 0; }
.honor-heading { display: flex; flex-direction: column; align-items: center; gap: 18px; }
.honor-divider { display: flex; align-items: center; justify-content: center; width: 150px; height: 8px; gap: 10px; }
.honor-divider::before, .honor-divider::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, #93abc8); }
.honor-divider::after { rotate: 180deg; }
.honor-divider > i { width: 6px; height: 6px; border: 1px solid #809cbe; rotate: 45deg; background: #f2f7ff; }
.cathedral-honor .honor-role { position: static; width: 100%; transform: none; margin: 0; text-align: center; animation: none; }
.cathedral-honor .honor-name { margin: 14px 0 0; text-align: center; }

.celebrant-tribute { position: relative; width: 100%; max-width: 920px; margin: 0 auto 12px; padding: clamp(28px, 5vw, 46px) 24px; text-align: center; background: transparent; border: 0; }
.celebrant-ornament { display: flex; align-items: center; justify-content: center; gap: 20px; margin-bottom: 16px; color: #6f8fb9; }
.celebrant-ornament i { width: 64px; height: 1px; background: linear-gradient(90deg, transparent, #a9bfdc); }
.celebrant-ornament i:last-child { rotate: 180deg; }
.celebrant-ornament svg { width: 20px; height: 26px; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; }
.celebrant-tribute h3 { margin: 0 0 13px; }
.celebrant-tribute p { margin: 0; overflow-wrap: anywhere; text-wrap: balance; }

.cathedral-group { padding: 38px 36px 28px; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
.cathedral-heading { position: relative; margin: 0 0 30px; }
.cathedral-heading h3 { font: italic 500 clamp(48px, 5.5vw, 76px)/1.15 var(--serif); letter-spacing: -.025em; color: #173b81; margin: 0; }
.sponsors-heading-layout { display: grid; grid-template-columns: 210px minmax(0, 1fr); align-items: center; gap: 35px; text-align: left; padding: 0 14px; min-height: 206px; }
.sponsor-crest-art { width: 100%; height: auto; max-height: 210px; object-fit: contain; animation: sponsor-crest-sway 10s ease-in-out infinite; }
.sponsors-title { border-left: 1px solid #b1c3db; padding: 16px 0 18px 30px; }
.sponsors-title h3 { font-size: clamp(48px, 6.4vw, 84px); padding-bottom: 18px; border-bottom: 1px solid #bfcee2; }
.cathedral-party-heading { display: grid; place-items: center; min-height: 300px; margin: -5px -20px 22px; isolation: isolate; }
.party-ribbon-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; z-index: -1; pointer-events: none; animation: cathedral-ribbon-drift 8s ease-in-out infinite; }
.cathedral-party-heading h3 { display: flex; align-items: baseline; justify-content: center; flex-wrap: wrap; gap: 0 .18em; padding: 15px 50px; text-align: center; font-size: clamp(50px, 5.4vw, 76px); }
.cathedral-party-heading .party-title-and { font-size: .66em; color: #6b88bd; }
.party-rosters { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 40px; max-width: 640px; margin: 0 auto; }
.party-roster { min-width: 0; padding: 8px 20px 26px; text-align: center; }
.party-roster + .party-roster { border-top: 1px solid #b7cbe6; padding-top: 40px; }
.party-roster h3 { margin: 0; font: 700 38px/1.2 var(--serif); color: #1b4084; }
.party-roster ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.party-roster li { font: 400 30px/1.45 var(--serif); color: #23467f; overflow-wrap: anywhere; text-wrap: balance; }
.bridesmaids-ornament { display: block; width: 250px; max-width: 85%; height: auto; margin: 8px auto 24px; pointer-events: none; }
.party-roster--groomsmen { background: radial-gradient(ellipse at 50% 30%, #eff6ff80, transparent 72%); }
.groomsmen-ornament { display: block; width: 240px; max-width: 85%; height: auto; margin: 12px auto 27px; color: #7698c5; pointer-events: none; }
.cathedral-group .pairing-labels { font: 500 clamp(26px, 2.5vw, 32px)/1.2 var(--serif); color: #24467e; letter-spacing: 0; }
.cathedral-ceremony-heading { text-align: center; padding-top: 12px; margin-bottom: 15px; }
.cathedral-ceremony-heading h3 { position: relative; z-index: 2; }
.ceremony-veil-art { display: block; width: calc(100% + 52px); max-width: none; height: auto; object-fit: contain; margin: -96px -26px -25px; animation: cathedral-veil-float 11s ease-in-out infinite; }
.cathedral-group .ceremony-people { position: relative; z-index: 2; }
.people-section:not(.scene-active) .cathedral-art { animation-play-state: paused; }
@keyframes cathedral-light { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.09); } }
@keyframes sponsor-crest-sway { 0%, 100% { transform: translateY(1px) rotate(-1deg); } 50% { transform: translateY(-3px) rotate(1deg); } }
@keyframes cathedral-ribbon-drift { 0%, 100% { transform: translateY(2px) rotate(-.4deg); } 50% { transform: translateY(-4px) rotate(.4deg); } }
@keyframes cathedral-veil-float { 0%, 100% { transform: translateY(1px); opacity: .9; } 50% { transform: translateY(-4px); opacity: 1; } }

@media (max-width: 900px) and (min-width: 651px) {
  .people-section { --people-name-size: clamp(24px, 3.4vw, 30px); }
  .cathedral-parents .parents-dedication h3 { font-size: 58px; }
  .cathedral-parents .parents-dedication .eyebrow { font-size: 25px; }
  .cathedral-parents-details { padding-left: 24px; padding-right: 24px; }
  .cathedral-parents .parents { gap: 26px; }
  .sponsors-heading-layout { grid-template-columns: 165px minmax(0, 1fr); gap: 20px; padding: 0; }
  .sponsors-title { padding-left: 22px; }.sponsors-title h3 { font-size: 51px; }
  .cathedral-honor { gap: 26px; }
  .cathedral-party-heading h3 { font-size: 47px; padding-left: 20px; padding-right: 20px; }
  .cathedral-party-heading { min-height: 245px; }
  .ceremony-veil-art { margin-top: -52px; }
}
@media (max-width: 650px) {
  .people-section { --people-role-size: 21px; --people-name-size: 26px; --people-name-leading: 1.35; }
  .party-rosters { gap: 30px; }
  .party-roster { padding: 8px 12px 10px; }
  .party-roster + .party-roster { padding-top: 32px; }
  .party-roster h3 { font-size: 32px; }
  .party-roster li { font-size: 27px; }
  .party-roster ul { gap: 13px; }
  .bridesmaids-ornament { width: 220px; margin: 8px auto 22px; }
  .groomsmen-ornament { width: 210px; margin: 10px auto 24px; }
  .cathedral-parents { padding: 0; margin-top: 31px; }
  .cathedral-parent-hero { aspect-ratio: .955; }
  .cathedral-parents .parents-dedication { left: 12%; right: 12%; top: 44%; }
  .cathedral-parents .parents-dedication .eyebrow { font-size: clamp(22px, 6vw, 25px); line-height: 1.2; margin-bottom: 12px; }
  .cathedral-parents .parents-dedication h3 { font-size: clamp(38px, 11vw, 48px); line-height: 1.04; }
  .cathedral-parents-details { padding: 23px 20px 29px; }
  .parents-intro { font-size: 21px; margin-bottom: 25px; }
  .cathedral-parents .parents { gap: 24px; }
  .cathedral-parents .parents small { margin-bottom: 14px; }
  .cathedral-parents .parents > div + div { border-left: 0; border-top: 1px solid #cad8ea; padding-top: 23px; }
  .cathedral-parents .parents-blessing { font-size: 21px; line-height: 1.3; margin-top: 25px; }
  .cathedral-honor { grid-template-columns: 1fr; padding: 23px 20px 29px; gap: 24px; }
  .honor-heading { gap: 16px; }
  .honor-divider { width: 130px; }
  .cathedral-honor .honor-attendant + .honor-attendant { padding-top: 0; border-top: 0; }
  .celebrant-tribute { padding-inline: 20px; }
  .celebrant-tribute h3 { margin-bottom: 14px; }
  .cathedral-group { padding: 29px 15px 24px; }
  .cathedral-heading h3 { font-size: 39px; }
  .sponsors-heading-layout { grid-template-columns: 1fr; gap: 12px; padding: 0; text-align: center; margin-bottom: 26px; }
  .sponsor-crest-art { width: 120px; max-height: 120px; margin: 0 auto; }
  .sponsors-title { border-left: 0; padding: 0 5px; }.sponsors-title h3 { font-size: 38px; padding-bottom: 22px; }
  .cathedral-party-heading { min-height: 240px; margin: -8px -11px 20px; }
  .cathedral-party-heading h3 { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 30px 0; font-size: 39px; line-height: 1.06; }
  .cathedral-party-heading .party-title-and { font-size: 24px; }
  .party-ribbon-art { width: 100%; height: 100%; object-fit: contain; }
  .cathedral-group .pairing-labels { font-size: 25px; }
  .cathedral-ceremony-heading { padding-top: 8px; }
  .cathedral-ceremony-heading h3 { font-size: 38px; max-width: 300px; margin: auto; }
  .ceremony-veil-art { width: calc(100% + 24px); margin: 6px -12px 0; max-height: 150px; }
}
@media (max-width: 380px) {
  .people-section { --people-name-size: 24px; }
  .party-roster { padding-inline: 6px; }
  .party-roster li { font-size: 26px; }
  .cathedral-parents .parents-dedication { left: 10%; right: 10%; top: 42%; }
  .cathedral-parents .parents-dedication .eyebrow { font-size: 21px; }
  .cathedral-parents .parents-dedication h3 { font-size: 38px; }
  .cathedral-parents-details { padding-left: 16px; padding-right: 16px; }
  .cathedral-honor, .celebrant-tribute { padding-left: 16px; padding-right: 16px; }
  .cathedral-group { padding-left: 10px; padding-right: 10px; }
  .cathedral-party-heading h3 { font-size: 35px; }.cathedral-group .pairing-labels { font-size: 23px; }
  .sponsors-title h3, .cathedral-ceremony-heading h3 { font-size: 35px; }
}
@media (prefers-reduced-motion: reduce) {
  .cathedral-art { animation: none !important; transform: none; }
}
