/* Ceremonial chapters share the invitation's wine, ivory and aged-gold palette. */
.invitation:not([data-state="open"]) .invitation-chapters { display: none; }
.name-wreath { width: min(54vw, 650px, 66svh); container-type: inline-size; }
.names { font-size: clamp(1.15rem, 6.4cqw, 2.8rem); }
.hero-details { position: absolute; top: calc(100% + .8rem); width: 100%; opacity: 0; text-shadow: 0 2px 12px #190c08, 0 1px 3px #190c08; }
.hero-date { margin: 0; font: 400 clamp(1.2rem, 2.2vw, 1.65rem)/1.2 "Invite Display", Georgia, serif; color: #fff1d7; }
.hero-place { margin: .5rem 0 0; font-size: clamp(.7rem, 1.1vw, .85rem); letter-spacing: .07em; color: #f0dfc3; }
.hero-place span { display: inline-block; margin: 0 .5rem; color: #f3ce83; font-size: .8em; text-shadow: 0 0 8px #efc97688; vertical-align: .08em; }
.invitation:is([data-state="opening"], [data-state="open"]) .hero-details { animation: details-arrive 1100ms 3350ms both; }
.scroll-ornament { position: absolute; z-index: 7; left: 50%; bottom: .8rem; width: 94px; height: 126px; opacity: 0; visibility: hidden; transform: translateX(-50%); text-decoration: none; -webkit-tap-highlight-color: transparent; }
.scroll-ornament img { display: block; width: 100%; height: 100%; object-fit: contain; transform-origin: 50% 0; filter: drop-shadow(0 4px 5px #180b08); animation: bell-sway 4.6s -1.2s ease-in-out infinite; }
.invitation:is([data-state="opening"], [data-state="open"]) .scroll-ornament { visibility: visible; animation: ornament-arrive 1000ms 4100ms both; }
.scroll-ornament:focus-visible { outline: 1px solid var(--gold); outline-offset: 5px; border-radius: 40px; }
.ornament-caption { position: absolute; bottom: 42%; left: 100%; width: 150px; font: italic .85rem/1.4 "Invite Display", Georgia, serif; color: #f7e7c8; opacity: 0; transform: translateX(-5px); transition: opacity 250ms, transform 250ms; pointer-events: none; }
.scroll-ornament:is(:hover, :focus-visible) .ornament-caption { opacity: 1; transform: none; }
@keyframes ornament-arrive { from { opacity: 0; transform: translate(-50%, -8px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes bell-sway { 0%,100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
.invitation-chapters { background: #251016; }
.chapter { position: relative; isolation: isolate; padding: clamp(5rem, 9vw, 8rem) max(1.5rem, calc((100% - 1120px) / 2)); overflow: clip; }
.chapter h2, .welcome-content h2 { font: 400 clamp(2.8rem, 5vw, 4.8rem)/1.02 "Invite Display", Georgia, serif; letter-spacing: -.045em; margin: 0; color: #fff1db; }
.chapter h2 em, .welcome-content h2 em { font-weight: 400; color: #dfb779; }
.tamil-note { margin: 0 0 1.5rem; color: #c9a774; font: 400 .94rem/1.8 "Noto Serif Tamil", "Nirmala UI", "Latha", serif; }
.text-link { position: relative; display: inline-flex; align-items: center; gap: 0; padding: .2rem .12rem; color: #e6c78a; text-decoration: none; font-size: 1.02rem; line-height: 1.25; letter-spacing: .035em; transition: color 200ms, transform 250ms ease; }
.text-link:hover { color: #fff5df; transform: translateY(-1px); }
.button-label { display: inline-block; padding: .48rem 1rem; border: 1px solid #b38c4980; border-radius: 999px; background-color: #e5c7890d; transition: border-color 200ms ease, background-color 200ms ease; }
.text-link:hover .button-label { border-color: #e6c78a; background-color: #d9b36b20; }
.button-flower { display: inline-flex; position: absolute; z-index: 1; top: -.62rem; right: -.66rem; align-items: center; justify-content: center; width: 38px; height: 38px; margin: 0; padding: 0; overflow: visible; opacity: .98; transition: transform 300ms ease, opacity 300ms ease; }
.button-flower img { display: block; width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 1px 2px #28120f55); }
.text-link:hover .button-flower { transform: translate(1px, -1px) rotate(8deg); opacity: 1; }
a:focus-visible { outline: 2px solid #bc8a4c; outline-offset: 6px; }
.reveal { opacity: 0; transform: translateY(22px); filter: blur(2px); transition: opacity 800ms cubic-bezier(.2,.75,.2,1), transform 1050ms cubic-bezier(.2,.75,.2,1), filter 950ms ease; transition-delay: var(--reveal-delay, 0ms); }
.reveal.is-visible { opacity: 1; transform: none; filter: none; }
.reveal--visual { transform: none; transition: opacity 1400ms ease; }
.chapter-next { display: flex; width: fit-content; margin: 3rem auto 0; --reveal-delay: 220ms; }
.welcome-content > .reveal:nth-child(2) { --reveal-delay: 90ms; }
.welcome-content > .reveal:nth-child(3) { --reveal-delay: 190ms; }
.welcome-content > .reveal:nth-child(4) { --reveal-delay: 290ms; }
.welcome-content > .reveal:nth-child(5) { --reveal-delay: 390ms; }
.welcome-content > .reveal:nth-child(6) { --reveal-delay: 500ms; }
.welcome-content > .reveal:nth-child(7) { --reveal-delay: 610ms; }
.ceremony-heading > .reveal:nth-child(2) { --reveal-delay: 110ms; }
.ceremony-heading > .reveal:nth-child(3) { --reveal-delay: 230ms; }
.ceremony-heading > .reveal:nth-child(4) { --reveal-delay: 350ms; }
.ceremony-heading > .reveal:nth-child(5) { --reveal-delay: 470ms; }
.ceremony-order li:nth-child(2) { --reveal-delay: 170ms; }
.ceremony-order li:nth-child(3) { --reveal-delay: 340ms; }
.family-heading > .reveal:nth-child(2) { --reveal-delay: 120ms; }
.family-heading > .reveal:nth-child(3) { --reveal-delay: 240ms; }
.family-person > .reveal:nth-child(2) { --reveal-delay: 100ms; }
.family-person > .reveal:nth-child(3) { --reveal-delay: 200ms; }
.family-person > .reveal:nth-child(4) { --reveal-delay: 300ms; }
.family-pair > .family-joining { --reveal-delay: 250ms; }
.venue-content > .reveal:nth-child(2) { --reveal-delay: 110ms; }
.venue-content > .reveal:nth-child(3) { --reveal-delay: 230ms; }
.venue-content > .reveal:nth-child(4) { --reveal-delay: 340ms; }
.venue-content > .reveal:nth-child(5) { --reveal-delay: 450ms; }
.venue-content > .reveal:nth-child(6) { --reveal-delay: 570ms; }
.invitation-footer > .reveal:nth-child(2) { --reveal-delay: 120ms; }
.invitation-footer > .reveal:nth-child(3) { --reveal-delay: 240ms; }
.invitation-footer > .reveal:nth-child(4) { --reveal-delay: 360ms; }

/* Complete image silhouettes. No narrow background boxes crop the flowers. */
.celebration-section { min-height: 850px; display: grid; place-items: center; padding: clamp(11rem, 17vw, 15rem) 2rem 6rem; background: radial-gradient(ellipse at 50% 0, #fff9ed 10%, #f0e1c9 80%); color: #471b24; overflow: clip; }
.entrance-frame { inset: 0; overflow: visible; }
.entrance-frame::before { display: none; }
.entrance-toran { z-index: 3; top: -1.1rem; width: min(96%, 1100px); filter: drop-shadow(0 6px 5px #50290e25); }
.entrance-frame .floral-edge { z-index: 2; top: 0; bottom: auto; width: clamp(180px, 21vw, 268px); height: auto; background: none; opacity: .96; overflow: visible; filter: none; }
.entrance-frame .floral-edge img { display: block; width: 100%; height: auto; filter: drop-shadow(3px 8px 8px #48220e28); }
.entrance-frame .floral-edge--left img,
.entrance-frame .floral-edge--right img { transform: none; }
.entrance-frame .floral-edge--left { left: max(-42px, calc((100% - 1360px) / 2)); }
.entrance-frame .floral-edge--right { right: max(-42px, calc((100% - 1360px) / 2)); transform: scaleX(-1); }
.welcome-content { position: relative; z-index: 4; width: min(100%, 610px); text-align: center; }
.welcome-content .tamil-note { margin: 0 0 1.65rem; color: #976332; font-size: clamp(1.4rem, 2.1vw, 1.72rem); line-height: 1.55; letter-spacing: .045em; }
.welcome-content h2 { display: flex; flex-direction: column; align-items: center; gap: .08em; font-family: "Constantia", "Palatino Linotype", Georgia, serif; font-size: clamp(2.55rem, 4.6vw, 4.15rem); line-height: 1.02; letter-spacing: -.04em; }
.welcome-title-line { display: block; }
.title-interlude { display: block; width: clamp(78px, 9vw, 94px); height: 28px; margin: .12rem 0; }
.title-interlude img { display: block; width: 100%; height: 100%; object-fit: contain; }
.welcome-content h2 { color: #481d29; }
.welcome-content h2 em { color: #9b533e; }
.welcome-prose { max-width: 37ch; margin: 2rem auto 0; color: #735744; font: 400 1.15rem/1.75 "Invite Display", Georgia, serif; }
.welcome-couple { display: flex; align-items: center; justify-content: center; gap: clamp(.3rem, 1vw, .75rem); width: max-content; max-width: 100%; margin: 1.8rem auto 1.1rem; color: #702b36; font: italic 400 clamp(1.5rem, 3.2vw, 2.7rem)/1.5 "Segoe Script", "Brush Script MT", cursive; }
.couple-name { white-space: nowrap; }
.welcome-couple .welcome-and { margin-inline: .12em; font: italic .7em "Invite Display", Georgia, serif; color: #ad7c40; }
.couple-ornament { display: block; flex: 0 0 auto; width: clamp(52px, 6vw, 68px); height: auto; object-fit: contain; filter: drop-shadow(0 2px 3px #40162022); }
.couple-ornament--left { transform: rotate(-8deg); }
.couple-ornament--right { transform: scaleX(-1) rotate(-8deg); }
.welcome-signature { max-width: 34ch; margin: 0 auto 1.6rem; font: 1.02rem/1.7 "Invite Display", Georgia, serif; color: #846650; }
.welcome-content .text-link { color: #753c32; }
.welcome-content .text-link:hover { color: #35171d; }
.welcome-content .button-label { border-color: #a17a4b99; background-color: #fff9ed85; }
.welcome-content .text-link:hover .button-label { border-color: #8a6039; background-color: #fff9ed; }
.welcome-content .button-flower { width: 40px; height: 40px; }
.welcome-content .button-flower img { filter: brightness(1.42) saturate(.86) drop-shadow(0 2px 4px #40162030); }

@media (min-width: 701px) {
  .celebration-section { padding-top: clamp(17rem, 34vw, 25rem); }
}

/* The wedding morning: the ritual is the visual centre of the date. */
.ceremony-section { background: radial-gradient(ellipse at 12% 50%, #71312455, transparent 58%), #251016; }
.ceremony-layout { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(3rem, 8vw, 7rem); align-items: center; }
.ceremony-heading { text-align: center; }
.ceremony-heading h2 { font-size: clamp(2.6rem, 4vw, 4rem); }
.ritual-art { margin: 1.5rem auto -.5rem; width: min(100%, 400px); }
.ritual-art img { display: block; width: 100%; height: auto; filter: drop-shadow(0 22px 20px #10050a80); transform: rotate(-5deg) scale(.94); transition: transform 1800ms cubic-bezier(.2,.7,.2,1); }
.is-visible .ritual-art img { transform: rotate(-1deg) scale(1); }
.ceremony-date { display: flex; justify-content: center; gap: 1.2rem; align-items: center; margin: 1rem 0 .5rem; }
.ceremony-date > span { font: 400 5.3rem/.9 "Invite Display", Georgia, serif; color: #e6c48c; letter-spacing: -.08em; }
.ceremony-date p { text-align: left; font: 1.2rem/1.5 "Invite Display", Georgia, serif; margin: 0; }
.ceremony-date small { color: #bda593; font: .75rem/1.5 "Segoe UI", sans-serif; letter-spacing: .08em; }
.ceremony-order { list-style: none; padding: 0 0 0 3.15rem; margin: 0; position: relative; }
.ceremony-order::before { position: absolute; content: ""; width: 1px; top: 2.8rem; bottom: 4.5rem; left: .75rem; background: linear-gradient(#b58a4640, #dfb978 18%, #dfb978 82%, #b58a4620); }
.ceremony-order li { display: grid; grid-template-columns: 6.1rem minmax(0, 1fr); column-gap: 1.25rem; align-items: start; position: relative; padding: 1.8rem 0 2rem; }
.ceremony-order li + li { border-top: 0; }
.ceremony-order li::before { content: ""; position: absolute; left: -3.2rem; top: 2.15rem; width: 26px; height: 26px; background: url("assets/jasmine-rosette.webp") center / contain no-repeat; filter: drop-shadow(0 1px 2px #16090d); }
.ceremony-order time { display: inline-flex; align-items: baseline; gap: .4rem; padding-top: .08rem; white-space: nowrap; font: italic 1.45rem/1.2 "Invite Display", Georgia, serif; color: #e8bf80; }
.ceremony-order time small { font: .65rem "Segoe UI", sans-serif; letter-spacing: .12em; }
.ceremony-order h3 { font: 400 clamp(1.65rem, 2.3vw, 2.15rem)/1.15 "Invite Display", Georgia, serif; margin: 0 0 .65rem; letter-spacing: -.02em; color: #f9e6cb; }
.ceremony-order p { font: 1rem/1.75 "Invite Display", Georgia, serif; color: #c6ad9a; max-width: 33ch; margin: 0; }
.ceremony-main div > span { display: block; margin: -.1rem 0 .35rem; color: #d2ac69; font: .8rem/1.5 "Nirmala UI", serif; }
.ceremony-order .ceremony-main { margin: 0; padding: 2rem 1rem; }
.ceremony-main::after { content: ""; position: absolute; inset: 8% -1rem 3% -1rem; z-index: -1; background: radial-gradient(ellipse, #b46b2f19, transparent 74%); }

/* An intimate photographic scene, then the two families who share it. */
.family-section { text-align: center; padding-inline: 0; background: #390e19; }
.family-heading { padding: 0 1.5rem; position: relative; z-index: 2; }
.family-heading h2 { font-size: clamp(3.3rem, 6vw, 5.8rem); }
.family-heading h2 br { display: none; }
.family-heading h2 em { margin-left: .2em; }
.family-heading > p:last-child { margin: 1.4rem 0 0; font: 1.15rem/1.65 "Invite Display", Georgia, serif; color: #d6b4a0; }
.family-portrait { width: min(100%, 1200px); margin: 1.7rem auto -1.5rem; overflow: clip; mask-image: linear-gradient(transparent, #000 12%, #000 75%, transparent); }
.family-portrait img { display: block; width: 100%; height: auto; aspect-ratio: 2.2; object-fit: cover; object-position: 50% 62%; transform: scale(1.035); transition: transform 1800ms ease; }
.family-portrait.is-visible img { transform: scale(1); }
.family-pair { display: grid; grid-template-columns: 1fr 104px 1fr; align-items: center; gap: 1.2rem; position: relative; margin: 1rem auto 2.7rem; padding: 0 2rem; max-width: 900px; }
.family-role { display: block; font: .8rem/1.5 "Nirmala UI", serif; color: #c49a6c; margin-bottom: .8rem; }
.family-person h3 { margin: 0 0 1.25rem; font: italic 400 clamp(2.2rem, 3.7vw, 3.5rem)/1.35 "Segoe Script", "Brush Script MT", cursive; color: #f8dfb2; }
.family-person p { font: italic 1rem/1.5 "Invite Display", Georgia, serif; color: #bb9481; margin: 0 0 .75rem; }
.family-person strong { font: 400 1.3rem/1.6 "Invite Display", Georgia, serif; color: #f2ddc4; }
.family-joining { display: grid; place-items: center; font-size: 0; }
.family-heart { display: block; width: clamp(48px, 5vw, 60px); height: auto; object-fit: contain; transform-origin: center; filter: drop-shadow(0 0 7px #e2b96e44); animation: family-heart-pulse 1.8s ease-in-out infinite; }
.family-blessing { max-width: 55ch; padding: 0 1.5rem; margin: 0 auto; font: italic 1.1rem/1.75 "Invite Display", Georgia, serif; color: #caa48f; }

/* Arriving: full-bleed architecture carries the final invitation. */
.venue-section { min-height: 820px; display: grid; align-items: center; padding: 8rem max(2rem, calc((100% - 1200px) / 2)); background: #210c10; }
.venue-picture { position: absolute; inset: 0; z-index: -2; overflow: clip; }
.venue-picture img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 40% center; transform: scale(1.04); transition: transform 2200ms cubic-bezier(.2,.7,.2,1); }
.venue-picture.is-visible img { transform: scale(1); }
.venue-picture::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #1b071000 30%, #230a1170 53%, #230a11e8 100%), linear-gradient(0deg, #210c10 0%, transparent 20%, transparent 90%, #390e1933); }
.venue-content { width: 43%; justify-self: end; text-align: left; }
.venue-content h2 { font-size: clamp(3rem, 4.3vw, 4.5rem); }
.venue-name { margin: 2.3rem 0 .7rem; font: 1.8rem/1.2 "Invite Display", Georgia, serif; color: #f9e7c7; }
.venue-city { color: #d4b58b; margin: 0 0 1.7rem; font-size: .78rem; letter-spacing: .08em; }
.venue-note { color: #cfb9a5; font: 1.05rem/1.8 "Invite Display", Georgia, serif; margin: 0 0 2rem; }
.venue-link { position: relative; display: flex; align-items: center; gap: 1rem; width: min(100%, 390px); min-height: 106px; padding: .85rem 1.15rem; overflow: visible; color: #f9e9cb; text-decoration: none; background: linear-gradient(115deg, #491720ed, #301018f2 68%, #481a20); border: 1px solid #c59b5c; box-shadow: inset 0 0 0 4px #491720, inset 0 0 0 5px #c59b5c77, 0 12px 32px #12050966; transition: transform 300ms ease, box-shadow 300ms ease, border-color 300ms ease; }
.venue-link::before, .venue-link::after { content: ""; position: absolute; left: 15px; right: 15px; height: 1px; background: linear-gradient(90deg, transparent, #d5b27499 18%, #d5b27499 82%, transparent); }
.venue-link::before { top: 8px; }
.venue-link::after { bottom: 8px; }
.venue-link-art { flex: 0 0 66px; width: 66px; height: 78px; object-fit: contain; filter: drop-shadow(0 3px 4px #0d0506aa); transition: transform 400ms ease; }
.venue-link-copy { display: flex; flex-direction: column; align-items: flex-start; gap: .22rem; }
.venue-link-kicker { color: #d7b66f; font-size: .5rem; font-weight: 600; letter-spacing: .17em; }
.venue-link-copy strong { font: 400 1.45rem/1.15 "Invite Display", Georgia, serif; }
.venue-link-subline { color: #d3b99a; font-size: .69rem; letter-spacing: .025em; }
.venue-link-flourish { margin-left: auto; color: #d9b875; font-size: 1.25rem; opacity: .8; transition: transform 350ms ease; }
.venue-link:hover { border-color: #f0d69c; transform: translateY(-3px); box-shadow: inset 0 0 0 4px #491720, inset 0 0 0 5px #e2bf7d, 0 17px 38px #12050988; }
.venue-link:hover .venue-link-art { transform: translateY(-3px) scale(1.035); }
.venue-link:hover .venue-link-flourish { transform: rotate(45deg); }
.invitation-footer { padding: 4rem 1.5rem 2rem; text-align: center; background: #210c10; }
.invitation-footer > p:first-child { margin: 0 0 .9rem; color: #bca074; font: .9rem/1.6 "Nirmala UI", serif; }
.footer-names { width: max-content; max-width: 100%; white-space: nowrap; font: italic 2rem/1.5 "Segoe Script", "Brush Script MT", cursive; color: #f0dcc0; margin: 0 auto 1.5rem; }
.footer-signature-text { position: relative; display: inline-block; clip-path: inset(0 100% 0 0); }
.footer-names.is-visible .footer-signature-text { animation: names-write 2.35s steps(17, end) 180ms forwards; }
.footer-signature-text::after { content: ""; position: absolute; top: 58%; left: 0; width: 5px; height: 5px; border-radius: 50%; background: #edcc91; box-shadow: 0 0 10px 3px #edcc9166; opacity: 0; pointer-events: none; }
.footer-names.is-visible .footer-signature-text::after { animation: writing-glint 2.35s ease-in-out 180ms forwards; }
.invitation-footer small { display: block; margin-top: 3.5rem; color: #b49784; font-size: .67rem; line-height: 1.7; }
@keyframes family-heart-pulse { 0%,100% { transform: scale(.97); filter: drop-shadow(0 0 5px #e2b96e33); } 25% { transform: scale(1.1); filter: drop-shadow(0 0 10px #e2b96e77); } 50% { transform: scale(.97); filter: drop-shadow(0 0 5px #e2b96e33); } 75% { transform: scale(1.1); filter: drop-shadow(0 0 10px #e2b96e77); } }
@keyframes names-write { to { clip-path: inset(0 0 0 0); } }
@keyframes writing-glint { 0% { left: 0; opacity: 0; } 12% { opacity: .9; } 86% { opacity: .8; } 100% { left: 100%; opacity: 0; } }

@media (max-width: 700px) {
  .name-wreath { width: min(94vw, 600px, 70svh); }
  .name-lockup { width: 56%; }
  .names { font-size: clamp(1.25rem, 7.2cqw, 2.3rem); }
  .hero-details { top: calc(100% + .5rem); }
  .scroll-ornament { bottom: .5rem; height: 116px; width: 82px; }
  .ornament-caption { width: 110px; font-size: .75rem; }
  .celebration-section { min-height: 760px; padding: 10rem 2.7rem 4.5rem; }
  .entrance-toran { width: 96%; top: -.3rem; }
  .entrance-frame .floral-edge { top: 0; width: clamp(118px, 36vw, 164px); height: auto; opacity: .96; background: none; }
  .entrance-frame .floral-edge--left { left: clamp(-16px, -3vw, -8px); }
  .entrance-frame .floral-edge--right { right: clamp(-16px, -3vw, -8px); }
  .welcome-content .tamil-note { margin-bottom: 1.45rem; font-size: clamp(1.55rem, 7vw, 1.9rem); }
  .welcome-content h2 { gap: .1em; font-size: clamp(2.15rem, 7.2vw, 3rem); }
  .title-interlude { width: 82px; height: 24px; }
  .welcome-prose { font-size: 1.08rem; margin-top: 1.5rem; }
  .welcome-prose br { display: none; }
  .welcome-couple { gap: .3rem; font-size: clamp(1.4rem, 5.7vw, 2rem); margin-top: 1.4rem; }
  .couple-ornament { width: clamp(46px, 12vw, 56px); }
  .welcome-couple .welcome-and { margin-inline: .05em; }
  .welcome-signature { font-size: 1rem; }
  .welcome-content .button-flower { width: 40px; height: 40px; }
  .chapter { padding: 5rem 1.8rem; }
  .ceremony-layout { grid-template-columns: 1fr; gap: 2.5rem; }
  .ceremony-heading h2 { font-size: clamp(2.5rem, 8.6vw, 3.6rem); }
  .ritual-art { width: min(94%, 320px); margin: 1.2rem auto 0; }
  .ceremony-date { margin: .5rem 0; }
  .ceremony-date > span { font-size: 4.7rem; }
  .ceremony-order { margin-top: 1.4rem; padding-left: 2.7rem; }
  .ceremony-order li { grid-template-columns: 5rem minmax(0, 1fr); column-gap: .8rem; padding-block: 1.55rem; }
  .ceremony-order li::before { left: -2.7rem; top: 1.95rem; }
  .ceremony-order::before { left: .8rem; top: 2.3rem; bottom: 3rem; }
  .ceremony-order time { font-size: 1.22rem; gap: .3rem; }
  .ceremony-order time small { font-size: .57rem; }
  .ceremony-order h3 { font-size: 1.65rem; }
  .ceremony-order p { font-size: 1rem; }
  .ceremony-order .ceremony-main { margin-left: 0; padding-inline: .6rem; }
  .family-section { padding-inline: 0; padding-bottom: 4.5rem; }
  .family-heading h2 { font-size: 3.6rem; }
  .family-heading h2 br { display: block; }
  .family-heading h2 em { margin: 0; }
  .family-portrait { margin: 1.8rem 0 -.5rem; }
  .family-portrait img { aspect-ratio: 1.25; object-position: 50% 60%; }
  .family-pair { grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-top: .5rem; padding: 0 1.5rem; }
  .family-joining { position: absolute; top: 1.25rem; left: 50%; z-index: 2; transform: translateX(-50%); }
  .family-heart { width: 48px; }
  .family-joining.reveal.is-visible { transform: translateX(-50%); }
  .family-person h3 { font-size: clamp(1.75rem, 5.5vw, 2.3rem); }
  .family-person strong { font-size: 1.08rem; }
  .family-person p { font-size: .9rem; }
  .family-blessing { max-width: 33ch; font-size: 1.04rem; }
  .desktop-break { display: none; }
  .venue-section { display: block; min-height: auto; padding: 0 0 4rem; }
  .venue-picture { position: relative; height: 450px; z-index: 0; }
  .venue-picture img { object-position: 22% center; }
  .venue-picture::after { background: linear-gradient(0deg, #210c10 0%, #210c1000 40%), linear-gradient(180deg, #390e19 0%, #390e1900 18%); }
  .venue-content { position: relative; z-index: 1; width: auto; margin: -2.5rem 0 0; padding: 0 2rem; text-align: center; }
  .venue-content h2 { font-size: clamp(3rem, 10vw, 4rem); }
  .venue-name { font-size: 1.6rem; margin-top: 2rem; }
  .venue-note { font-size: 1.05rem; }
  .venue-link { width: min(100%, 390px); min-height: 100px; margin-inline: auto; text-align: left; }
  .venue-link-art { flex-basis: 58px; width: 58px; height: 72px; }
  .venue-link-copy strong { font-size: 1.32rem; }
  .venue-link-kicker { font-size: .45rem; letter-spacing: .13em; }
  .venue-link-subline { font-size: .62rem; }
  .venue-link-flourish { font-size: 1.05rem; }
}
@media (max-width: 370px) {
  .celebration-section { padding-inline: 1.8rem; }
  .chapter { padding-inline: 1.3rem; }
  .family-section, .venue-section { padding-inline: 0; }
  .family-pair { gap: .9rem; padding-inline: 1rem; }
  .family-heart { width: 40px; }
  .family-person h3 { font-size: 1.45rem; }
  .family-person strong { font-size: 1rem; }
}
@media (max-height: 620px) {
  .wedding-card { top: 44%; }
  .name-wreath { width: min(76vw, 56svh); }
  .hero-date { font-size: 1.1rem; }
  .hero-place { font-size: .65rem; }
  .scroll-ornament { height: 75px; bottom: .2rem; }
}
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; filter: none; transition: none; }
  .open-bloom { animation: none !important; }
  .family-heart, .footer-names.is-visible .footer-signature-text, .footer-names.is-visible .footer-signature-text::after { animation: none !important; }
  .footer-signature-text { clip-path: none; }
  .footer-signature-text::after { display: none; }
  .scroll-ornament img { animation: none !important; }
  .ritual-art img, .family-portrait img { transform: none; transition: none; }
}
