@font-face{font-family:Roundhand;src:url('assets/romantic-copperplate.woff') format('woff');font-display:swap}
@font-face{font-family:Heirloom;src:url('assets/heirloom-serif.woff') format('woff');font-display:swap}
@font-face{font-family:StoryText;src:url('assets/estate-italic.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
:root{--ink:#574631;--gold:#80622f;--foil:#c9ad78;--paper:#fbf5e9;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);color-scheme:light}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;-webkit-text-size-adjust:100%}
body{min-height:100vh;min-height:100svh;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);display:grid;place-items:center;font-family:Heirloom,Georgia,serif;color:var(--ink);background:radial-gradient(ellipse at 20% 12%,#e6e8ef,transparent 68%),radial-gradient(ellipse at 85% 90%,#eaded5,transparent 70%),#eee8df}
button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;touch-action:manipulation}
button:disabled{cursor:default;opacity:.6}
a{color:var(--gold)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #8a6839;outline-offset:3px}
h1:focus,h2:focus{outline:none}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* One proportional stationery sheet. Every frame and its ornament share this registration. */
.invitation{position:relative;width:min(100%,455px,calc((100svh - var(--safe-top) - var(--safe-bottom)) * .5));aspect-ratio:1 / 2;container-type:inline-size;isolation:isolate;overflow:hidden;margin:auto;background:linear-gradient(#fffcf5,#fdf8ee);box-shadow:0 12px 54px #6e5b3d20}
.invitation:before{content:'';position:absolute;inset:0;background-image:url('assets/atelier-paper.svg'),url('assets/celestial-fresco-v1.webp');background-position:0 0,center;background-size:160px 160px,cover;background-repeat:repeat,no-repeat;opacity:.4;pointer-events:none;z-index:0}
.perimeter{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:4;filter:drop-shadow(0 1px 1px #7253281a)}
.invitation:after,.cover:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:4;background:linear-gradient(116deg,transparent 32%,#ffe2a629 43%,#fff4d58c 47%,#f3d39b33 51%,transparent 61%);background-size:330% 100%;-webkit-mask:url('assets/suite-frame.webp') center/contain no-repeat;mask:url('assets/suite-frame.webp') center/contain no-repeat;mix-blend-mode:screen;animation:foil-pass 12s ease-in-out infinite;opacity:.55}
.page{position:absolute;inset:0;animation:page-reveal .65s cubic-bezier(.2,.6,.2,1) both}
.cover{z-index:5;background:var(--paper)}
.cover-art{display:block;width:100%;height:100%;object-fit:contain}
.cover-verse-edit{position:absolute;inset:0;z-index:1;-webkit-mask:url('assets/verse-strip-mask.svg') center/contain no-repeat;mask:url('assets/verse-strip-mask.svg') center/contain no-repeat;pointer-events:none}
.fountain-water{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.cover-enter{position:absolute;left:25%;top:89.8%;width:50%;height:6.5%;min-height:44px;border:0;background:transparent;border-radius:20px;z-index:6}
.cover-enter:focus-visible{outline-offset:-7px}

/* The arch holds the heading; the rectangular aperture holds every card and line of copy. */
.page-content{position:absolute;inset:23% 13% 20%;padding:2px 4px;display:flex;flex-direction:column;gap:8px;min-height:0;justify-content:center}
.page-content>*{min-width:0;flex-shrink:0}
.page-heading{position:absolute;top:-14cqw;left:16%;right:16%;text-align:center;padding:0}
h2,.page-heading h2{font-family:Roundhand,cursive;font-weight:400;font-size:clamp(24px,7.4cqw,30px);line-height:1.2;margin:0;white-space:nowrap}
.suite-eyebrow{font-size:10px;line-height:1.3;letter-spacing:.085em;text-transform:uppercase;color:#94784d;margin:0 0 3px;white-space:nowrap}
.date-line,.deadline{font-size:11px;line-height:1.3;margin:4px 0 0;white-space:nowrap;color:#79613f}
.deadline{font-style:italic;font-size:10.5px;letter-spacing:0}
.greeting{font-size:12px;line-height:1.3;letter-spacing:.04em;text-align:center;margin:0;color:#806743;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.host-line{font-size:12px;line-height:1.35;text-align:center;margin:0}
.countdown,.preview-note,.response-crest{display:none}

/* Wide sculpted celebration panels with softly illuminated paper interiors. */
.event-list{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:auto;gap:8px;flex:none;min-height:0;width:100%;align-self:center}
.event-card,.detail-card,.response-choice{--card-frame:url('assets/rococo-card-square.webp');position:relative;isolation:isolate;border:0;background:transparent;box-shadow:none;border-radius:0}
.event-card .card-ground,.detail-card .card-ground,.response-choice .card-ground{--paper-wash:#e4e8ed;position:absolute;inset:11.5%;z-index:0;pointer-events:none;border-radius:3px;background-image:url('assets/atelier-paper.svg'),url('assets/engraved-damask.svg'),radial-gradient(ellipse at 20% 0,var(--paper-wash),transparent 70%),linear-gradient(140deg,#fffdf7,#f6ecdb);background-size:160px 160px,72px 84px,100% 100%,100% 100%;box-shadow:inset 0 0 14px #bfa4741f,inset 0 0 0 1px #c9ae7c26}
.event-card[data-event='baccarat'] .card-ground{--paper-wash:#f0ded9}
.event-card[data-event='mehndi'] .card-ground{--paper-wash:#eee2c8}
.event-card[data-event='reception'] .card-ground{--paper-wash:#ece8e0}
.event-card[data-event='valima'] .card-ground{--paper-wash:#dae4ed}
.event-card .card-ground{inset:18% 7% 21%}
.event-card:before,.detail-card:before,.response-choice:before,.event-card:after,.detail-card:after,.response-choice:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1}
.event-card:before,.detail-card:before,.response-choice:before{background:var(--card-frame) center/100% 100% no-repeat;filter:drop-shadow(0 1px 1px #70512624);transition:filter .3s}
.event-card:after,.detail-card:after,.response-choice:after{background:linear-gradient(116deg,transparent 32%,#f1ce8729 43%,#fff6dca1 47%,#ffe4ae3d 51%,transparent 61%);background-size:330% 100%;-webkit-mask:var(--card-frame) center/100% 100% no-repeat;mask:var(--card-frame) center/100% 100% no-repeat;mix-blend-mode:screen;opacity:.45;animation:foil-pass 12s ease-in-out infinite}
.event-card:nth-child(2):after,.detail-card:nth-child(2):after{animation-delay:-2.4s}
.event-card:nth-child(3):after,.detail-card:nth-child(3):after{animation-delay:-4.8s}
.event-card:nth-child(4):after,.detail-card:nth-child(4):after{animation-delay:-7.2s}
.event-card:hover:before,.detail-card:hover:before,.response-choice:hover:before{filter:drop-shadow(0 1px 1px #70512624) drop-shadow(0 0 3px #edc67e65)}
.event-card{--card-frame:url('assets/rococo-card-wide.webp');aspect-ratio:2200 / 715;min-width:0;padding:clamp(10px,3cqw,13px) clamp(18px,5.4cqw,25px);display:grid;grid-template-columns:19% minmax(0,1fr) 8px;align-items:center;column-gap:5px;text-align:left;transition:transform .3s}
.event-card:hover,.detail-card:hover{transform:translateY(-2px)}
.event-thumb{position:relative;z-index:2;display:block;width:100%;height:auto;aspect-ratio:1 / 1;object-fit:cover;object-position:center;-webkit-mask:radial-gradient(ellipse,#000 58%,transparent 92%);mask:radial-gradient(ellipse,#000 58%,transparent 92%);filter:saturate(.9)}
.event-copy{position:relative;z-index:2;min-width:0;width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.event-name{font-family:Roundhand,cursive;font-weight:400;font-size:clamp(17px,6cqw,24px);line-height:1.1;white-space:nowrap;color:#654b2b}
.event-date{font-size:clamp(11px,3cqw,12px);line-height:1.25;letter-spacing:.015em;white-space:nowrap;color:#665139}
.chevron{position:relative;z-index:2;display:block;font-family:Georgia,serif;font-size:17px;line-height:1;color:#947545;text-align:right}
#celebrations .page-content{gap:8px}
#celebrations .page-heading{left:12%;right:12%}
.page-footer{flex:none;text-align:center;margin:1px 0 0;color:#826338}
.engraved-star{display:block;font-size:11px;line-height:1;opacity:.65;margin:0 auto 3px}
.page-footer p{margin:0;font-size:11px;line-height:1.3;letter-spacing:.08em;text-transform:uppercase}
.page-footer .script-note{font:clamp(22px,6.2cqw,26px)/1.1 Roundhand,cursive;letter-spacing:0;text-transform:none;text-wrap:balance;max-width:100%;margin:auto}
#celebrations .script-note{font-size:clamp(17px,6cqw,23px);max-width:100%;white-space:nowrap}
#celebrations .engraved-star{display:none}
#celebrations .page-content:has(.greeting:not([hidden])){gap:5px}
#celebrations .page-content:has(.greeting:not([hidden])) .event-list{gap:4px}
#celebrations .greeting{font-size:11px;line-height:1.2}
@container(max-width:279px){.event-name{font-size:clamp(13px,5.6cqw,16px)}.event-copy{gap:2px}.event-date{font-size:clamp(9px,3.3cqw,10.5px)}#celebrations .script-note{font-size:clamp(13px,5.6cqw,16px)}#celebrations .page-heading h2{font-size:clamp(20px,7.4cqw,24px)}}

/* Four matching detail tiles, engraved labels and painted miniatures. */
.details-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,auto);gap:clamp(8px,2.8cqw,12px);flex:none}
.detail-card{aspect-ratio:1 / 1;padding:16%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:0;transition:transform .3s}
.detail-card img{position:relative;z-index:2;display:block;width:100%;height:clamp(34px,11cqw,48px);object-fit:contain;mix-blend-mode:multiply;-webkit-mask:radial-gradient(ellipse,#000 40%,transparent 75%);mask:radial-gradient(ellipse,#000 40%,transparent 75%)}
.detail-card .detail-label{position:relative;z-index:2;font-size:clamp(11px,3.1cqw,13px);line-height:1.2;text-align:center;letter-spacing:.02em;color:#6e5430;text-wrap:balance}
.details-footer .script-note{font-size:clamp(24px,7cqw,31px);margin-bottom:2px}
.details-footer p:not(.script-note){font-size:10px;letter-spacing:.12em}
.calendar-links{display:flex;justify-content:center;gap:3px;flex:none}
.calendar-links button,.calendar-links a{min-height:44px;padding:7px 5px;font-size:12px;letter-spacing:.025em;background:transparent;border:0;text-decoration:underline;text-decoration-color:#c7ad80;text-underline-offset:5px;color:var(--gold)}
.contact-line{font-size:12px;line-height:1.35;text-align:center;margin:0}
.contact-line a{display:inline-flex;align-items:center;min-height:44px}

/* Ceremony details retain full facts with a single, quiet composition. */
.event-page .page-content{gap:7px;justify-content:center}
.event-page .page-heading{top:-12cqw;left:12%;right:12%}
.event-picture{position:relative;margin:0;flex:none;width:100%;height:clamp(75px,24cqw,108px);padding:0;border:0;background:none}
.event-picture:before{content:'';position:absolute;inset:0;z-index:1;border:1px solid #c4a67266;pointer-events:none}
.event-picture img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.84)}
.event-intro{font-size:13px;line-height:1.3;text-align:center;margin:1px 0;font-style:italic;color:#726049}
.facts{display:grid;gap:7px;margin:0;flex:none}
.facts>div{padding-left:9px;border-left:1px solid #bea06c8c;min-width:0}
.facts dt{font-size:10px;line-height:1.2;letter-spacing:.12em;text-transform:uppercase;color:#94764a;margin-bottom:2px}
.facts dd{font-size:14px;line-height:1.2;margin:0;overflow-wrap:break-word}
.facts dd.secondary{font-size:12px;line-height:1.3;margin-top:3px;color:#7b6a55}
.facts>div:has(#event-time),.facts>div:has(#event-attire){display:grid;grid-template-columns:42px minmax(0,1fr);align-items:baseline;gap:5px}
.facts>div:has(#event-time) dt,.facts>div:has(#event-attire) dt{margin:0}
.event-actions{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:7px;margin:0}
.map-link{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:7px 1px;border-bottom:1px solid #c9ae8180;font-size:12px;line-height:1.2;text-decoration:none;font-style:italic;white-space:nowrap}
.invitation[data-event='baccarat'] .event-picture:after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 19% 43%,#fff0bb80,transparent 13%),radial-gradient(ellipse at 75% 38%,#ffda8a6b,transparent 12%);mix-blend-mode:screen;animation:candle-light 5.5s ease-in-out infinite}

/* The menu lives in the clear lower cartouche, with an engraved star indicating position. */
.suite-nav{position:absolute;left:24%;right:24%;bottom:12%;height:44px;z-index:6;display:flex;align-items:center;justify-content:space-between;gap:4px}
.suite-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:0;min-width:44px;min-height:44px;padding:3px 1px;font-size:clamp(11px,3.1cqw,13px);line-height:1.1;color:#846e4d}
.nav-star{font-size:10px;line-height:1;opacity:.25;transition:opacity .25s}
.suite-nav button[aria-current='page']{color:#61441e}
.suite-nav button[aria-current='page'] .nav-star{opacity:1;text-shadow:0 0 5px #efc37d99}

/* Respond feels like the same suite. A protected scroller is available for long answers and keyboards. */
.respond-page .page-content{gap:0;padding-top:10px}
.response-body{display:flex;flex-direction:column;flex:1;min-height:0;gap:7px;text-align:center;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#c6aa7a transparent;padding:2px 3px;scroll-padding-block:14px}
.response-body::before,.response-body::after{content:'';margin:auto;flex:none}
.response-body>*{flex:none;min-width:0}
.response-lead,.confirmation{font-size:14px;line-height:1.35;margin:0}
.response-choice{--card-frame:url('assets/rococo-card-wide.webp');aspect-ratio:2200 / 715;padding:12px 25px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;min-height:70px;font-size:13px;letter-spacing:.04em}
.response-choice .card-ground{inset:18% 7% 21%}
.response-choice strong,.response-choice small{position:relative;z-index:2}
.response-choice strong{font-weight:400;font-family:Roundhand,cursive;font-size:clamp(24px,7cqw,30px);line-height:1.05;letter-spacing:0;text-transform:none;color:#74582e}
.response-choice small{font-size:12px;line-height:1.2;text-transform:none;letter-spacing:.015em}
.step-label{font-size:10px;line-height:1.2;letter-spacing:.12em;text-transform:uppercase;margin:0;color:#92774e}
#invitation[data-response-step='2'] .step-label,#invitation[data-response-step='2'] .response-lead{display:none}
.response-form{display:flex;flex-direction:column;gap:7px;text-align:left;min-width:0}
.response-form label{font-size:11px;line-height:1.25;letter-spacing:.045em}
.response-form input,.response-form select,.response-form textarea{display:block;width:100%;margin-top:3px;padding:8px 10px;min-height:44px;height:44px;border:1px solid #c6b28d;border-radius:3px;background:#fffbf3a8;font-size:16px;line-height:1.2;scroll-margin-block:20px}
.response-form textarea{resize:none}
.response-form .row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.response-form .event-check{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:8px;padding:4px 3px;min-height:44px;border-bottom:1px solid #cabb9e60;text-align:left}
.response-form .event-check input{width:18px;height:18px;min-height:0;margin:0;accent-color:#98794b}
.event-check span{font-size:14px;line-height:1.2}
.event-check small{display:none}
.response-actions{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:8px;margin-top:1px}
.ornate-button:not(.response-choice){position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;max-width:100%;padding:9px 14px;border:1px solid #bea06b;border-radius:18px 3px;background:transparent;color:#76582f;font-size:12px;line-height:1.25;letter-spacing:.025em;text-decoration:none;transition:background .25s}
.ornate-button:not(.response-choice):hover{background:#ead8b333}
.text-button{border:0;background:transparent;color:var(--gold);min-height:44px;padding:8px 4px;font-size:12px;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#c8ac7d}
.form-error{font-size:12px;line-height:1.25;color:#934537;margin:0}
.form-error:empty{display:none}
.review{margin:0;padding:6px 0;border-block:1px solid #c2a77890;text-align:left;font-size:14px;line-height:1.25}
.review dt{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#94764a;line-height:1.2}
.review dd{margin:1px 0 5px;line-height:1.3;overflow-wrap:anywhere}
.review dd:last-child{margin-bottom:0}
.suite-crest{display:block;background:url('assets/selected-cover.webp') 50% 13.4% / 355% auto no-repeat;mix-blend-mode:multiply;clip-path:ellipse(49% 48% at 50% 50%)}
.wax-seal{display:grid;place-items:center;width:54px;height:54px;margin:2px auto;border-radius:49% 45% 48% 46%;border:1px solid #d0b587;background:radial-gradient(circle at 32% 24%,#fffdf6,#f1e6d2 72%,#e1ceb1);box-shadow:inset 0 0 0 4px #fcf7eb,inset 0 0 0 5px #d9c7a5,0 2px 5px #6d4e281c}
.wax-seal .suite-crest{width:41px;height:41px}
.forevermore{font:26px/1.1 Roundhand,cursive;margin:0;color:#79592e}
.response-body h3{font:clamp(29px,8cqw,36px)/1.1 Roundhand,cursive;font-weight:400;margin:0 0 3px}

/* Detail leaves use a fine engraved edge rather than a second competing outer frame. */
dialog{padding:0;width:min(88vw,410px);max-height:calc(100svh - var(--safe-top) - var(--safe-bottom) - 32px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:1px solid #c4aa7c;border-radius:3px;background:#fcf7ed;color:var(--ink);box-shadow:0 15px 70px #42372330}
dialog::backdrop{background:#463c3055;backdrop-filter:blur(7px)}
.dialog-frame{position:relative;text-align:center;margin:9px;padding:37px 20px 21px;border:1px solid #c6ad8273;background:url('assets/atelier-paper.svg') repeat}
.dialog-frame:before,.dialog-frame:after{content:'';position:absolute;width:30px;height:30px;background:url('assets/ornate-corner.svg') center/contain no-repeat;pointer-events:none}
.dialog-frame:before{top:-5px;left:-5px}.dialog-frame:after{bottom:-5px;right:-5px;transform:rotate(180deg)}
.dialog-frame .eyebrow{font-size:10px;line-height:1.3;text-transform:uppercase;letter-spacing:.12em;color:#92764d;margin:0}
.dialog-frame h2{font-size:34px;line-height:1.15;margin:5px 0 17px;white-space:normal}
.dialog-frame h3{font-size:15px;font-weight:400;line-height:1.25;margin:12px 0 3px}
.dialog-frame p,.dialog-frame li{font-size:14px;line-height:1.4;margin:2px 0 8px;overflow-wrap:break-word}
.dialog-close{position:absolute;top:0;right:0;border:0;background:transparent;min-width:44px;min-height:44px;padding:5px;font-size:27px;line-height:1;color:var(--gold)}
.dialog-link{display:inline-flex;align-items:center;min-height:44px;padding:6px 0;font-size:14px;line-height:1.3;text-decoration:none;font-style:italic;border-bottom:1px solid #c5aa7c}
.dialog-done{margin-top:12px}
.toast{position:fixed;left:50%;bottom:calc(16px + var(--safe-bottom));transform:translateX(-50%);z-index:120;width:max-content;max-width:85vw;padding:12px 18px;border:1px solid #bda578;border-radius:3px;background:#fff9ed;box-shadow:0 4px 20px #57462c20;text-align:center;font-size:15px;line-height:1.35}
@keyframes foil-pass{0%,20%{background-position:110% 0}80%,100%{background-position:-10% 0}}
@keyframes page-reveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@keyframes candle-light{0%,100%{opacity:.24}30%{opacity:.4}55%{opacity:.28}75%{opacity:.46}}
@media(max-height:640px){.page-content{gap:6px}.page-footer .script-note{font-size:20px}.engraved-star{display:none}.event-page .page-content{gap:5px}.event-picture{height:65px}.event-intro{font-size:12px}.facts{gap:5px}.facts dd{font-size:13px}.facts dd.secondary{font-size:11px}.response-form{gap:4px}.response-body{gap:5px}}
@media(orientation:landscape) and (max-height:650px){body{display:block}.invitation{width:min(100%,390px)}}
@media(prefers-reduced-motion:reduce){.page,.invitation:after,.cover:after,.event-card:after,.detail-card:after,.response-choice:after,.invitation[data-event='baccarat'] .event-picture:after{animation:none}.invitation:after,.cover:after,.event-card:after,.detail-card:after,.response-choice:after{display:none}button,.event-card,.detail-card,.nav-star{transition:none}}

/* Preserve the latest requested Back control in the clear center beneath the crest. */
.page-heading .eyebrow-back{display:inline-flex;position:absolute;left:50%;top:-13cqw;transform:translateX(-50%);align-items:center;justify-content:center;width:64px;min-width:64px;height:44px;min-height:44px;margin:0;padding:0;border:0;background:transparent;font-size:11px;line-height:1.2;letter-spacing:.045em;color:#79592e;text-decoration:none;touch-action:manipulation}
.page-heading .eyebrow-back:hover{text-decoration:underline;text-underline-offset:3px}
/* A single framed portrait and brief biography, within the same phone canvas. */
.story-page .page-content{gap:10px}
.story-photo{align-self:center;width:min(100%,42cqw);aspect-ratio:390 / 370;margin:0;overflow:hidden;border:1px solid #ba965c;border-radius:48% 48% 2px 2px / 14% 14% 0 0;background:transparent}
.story-photo svg{display:block;width:100%;height:100%}
.story-copy{display:grid;gap:7px;text-align:center}
.story-copy p{margin:0;font-size:12px;line-height:1.3}
.suite-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
.suite-nav button{min-width:0;padding:8px 0;font-size:10.5px;letter-spacing:0}
@media(max-height:640px){.story-page .page-content{gap:7px}.story-photo{width:36cqw}.story-copy{gap:5px}.story-copy p{font-size:11.5px;line-height:1.3}}
.detail-card[data-detail="travel"] img{height:clamp(40px,15cqw,60px);-webkit-mask-image:none;mask-image:none;object-fit:contain}
.dialog-watercolor{display:block;width:100%;height:85px;object-fit:contain;mix-blend-mode:multiply;margin:0 auto 4px}
#dialog-body:has(.dialog-watercolor) h3{font-size:12px;margin:7px 0 1px}
#dialog-body:has(.dialog-watercolor) p{font-size:11.5px;line-height:1.25;margin:1px 0 4px}
#dialog-body:has(.dialog-watercolor) .dialog-link{font-size:12px;min-height:44px;margin:0;padding-block:4px}

/* Keep the complete story scrollable inside the frame, with fixed heading and navigation. */
.story-scroll{flex:1 1 auto!important;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:14px;padding:2px 4px 16px;scrollbar-width:thin;scrollbar-color:#bda275 transparent}
.story-scroll>*{flex-shrink:0}
.story-scroll:focus-visible{outline:1px solid #bda275;outline-offset:1px}
.story-scroll .story-copy{gap:16px;text-align:left}
.story-scroll .story-copy p{font-family:StoryText,'Palatino Linotype',Georgia,serif;font-weight:400;font-size:18px;line-height:1.6;color:#493a2b}
.story-scroll .story-copy p:nth-child(3){text-align:center;font-style:normal;color:#644a2c}

/* Wedding party */
.party-side{font-family:inherit;text-transform:uppercase;letter-spacing:.22em;font-size:11px;color:#8a6a3c;text-align:center;margin:14px 0 4px}
.party-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 2px;width:88%;margin:0 auto}
.party-card{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1/1.08;padding:15% 13% 13%;gap:2px}
.party-card>*{position:relative;z-index:2}
.party-portrait{width:44%;aspect-ratio:4/5;border-radius:50%;background:url('assets/monogram-rococo.webp') center/70% no-repeat,radial-gradient(ellipse at 50% 40%,#fbf3e4,#ead9bd);box-shadow:inset 0 0 0 1.5px #c9a462,0 0 0 3px #fff8ea,0 0 0 4px #d8b979}
.party-name{font-family:Roundhand,cursive;font-size:clamp(17px,5.4cqw,22px);color:#654b2b;line-height:1;margin-top:6px}
.party-role{font-size:8px;letter-spacing:.12em;white-space:nowrap;text-transform:uppercase;color:#8a6a3c}
.party-note{text-align:center;margin:10px 0 4px}
.party-grid>.party-card:last-child:nth-child(odd){grid-column:1 / -1;justify-self:center;width:calc((100% - 2px) / 2);padding:calc((100% - 2px) * .075) calc((100% - 2px) * .065) calc((100% - 2px) * .065)}
.party-portrait{width:33%}
.party-name{text-align:center;line-height:.9;margin-top:4px;font-size:clamp(15px,4.7cqw,19px)}
.party-name>span{display:block;white-space:nowrap}
.party-name.is-long{font-size:clamp(13px,4cqw,16.5px)}

/* Our Families */
.families{text-align:center;margin:0;color:#806743;font-size:10.5px;line-height:1.25;letter-spacing:.05em;font-variant-numeric:oldstyle-nums}
.families p{margin:0;white-space:nowrap}
.families-lead{font-style:italic;letter-spacing:.08em;font-size:10px;color:#8a6a3c}
.families-ornament{font-size:8px;line-height:1.7;color:#b08d4f}
.party-role.is-long{letter-spacing:.06em}

/* Our song */
.music-toggle{position:fixed;right:max(14px,calc(50% - 200px),env(safe-area-inset-right,0px));top:calc(14px + env(safe-area-inset-top,0px));z-index:30;width:40px;height:40px;border-radius:50%;border:1px solid #c9ae7c;background:radial-gradient(circle at 35% 30%,#fffdf7,#f1e4c9);color:#79592e;font-size:18px;line-height:1;box-shadow:0 1px 4px #7051263b}
.music-toggle[aria-pressed="true"]{background:radial-gradient(circle at 35% 30%,#fff6dc,#e9cf98)}

/* ── Golden glow (14 Oct): brighter frame shimmer, gold-foil names, glow on tap ── */
.invitation:after,.cover:after{background:linear-gradient(116deg,transparent 30%,#ffe2a650 41%,#fff8e6d9 47%,#f6d89a66 53%,transparent 64%);background-size:330% 100%;opacity:.9;animation-duration:7s}
.event-card:after,.detail-card:after,.response-choice:after{background:linear-gradient(116deg,transparent 30%,#f4d48f55 41%,#fffaecf0 47%,#ffe4ae70 53%,transparent 64%);background-size:330% 100%;opacity:.85;animation-duration:7s}
h2,.page-heading h2,.event-name,.party-name,.families-name,.response-choice strong,.forevermore,.response-body h3,.page-footer .script-note{background:linear-gradient(100deg,#654216 0%,#7f5820 34%,#a87a31 44%,#d9b062 50%,#a87a31 56%,#7f5820 66%,#654216 100%);background-size:260% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 5px #f0c87a59);animation:gold-sheen 6.5s ease-in-out infinite}
.party-name span,.event-name span{-webkit-text-fill-color:transparent}
@keyframes gold-sheen{0%,12%{background-position:100% 0}62%,100%{background-position:0 0}}
.event-card,.detail-card,.response-choice,.ornate-button,.suite-nav button,.map-link,.music-toggle{-webkit-tap-highlight-color:transparent;transition:filter .35s ease,transform .3s}
.event-card:active,.detail-card:active,.response-choice:active,.event-card:focus-visible,.detail-card:focus-visible{filter:drop-shadow(0 0 10px #f3c97acc) drop-shadow(0 0 22px #f7dca066)}
.ornate-button:active,.suite-nav button:active,.map-link:active,.music-toggle:active,.text-button:active{filter:drop-shadow(0 0 8px #f3c97ae6)}
.event-card.is-glowing,.detail-card.is-glowing,.response-choice.is-glowing{animation:tap-glow .7s ease-out}
@keyframes tap-glow{0%{filter:drop-shadow(0 0 0 #f3c97a00)}35%{filter:drop-shadow(0 0 12px #f3c97aee) drop-shadow(0 0 26px #f7dca088)}100%{filter:drop-shadow(0 0 0 #f3c97a00)}}
@media(prefers-reduced-motion:reduce){
  .invitation:after,.cover:after,.event-card:after,.detail-card:after,.response-choice:after{display:block;animation:none;background-position:50% 0;opacity:.5}
  h2,.page-heading h2,.event-name,.party-name,.families-name,.response-choice strong,.forevermore,.response-body h3,.page-footer .script-note{animation:none;background-position:0 0}
  .event-card.is-glowing,.detail-card.is-glowing,.response-choice.is-glowing{animation:none}
}
