:root{--green:#244d3a;--green-dark:#122e23;--green-light:#3b654c;--pink:#e6c1c3;--pink-pale:#f5e8e5;--gold:#a88143;--cream:#faf7f0;--paper:#fffdf7;--ink:#253e32;--muted:#69756b;--line:#dfd7c4;--serif:"Amiri",Georgia,serif;--sans:"Tajawal",Tahoma,Arial,sans-serif;--red:var(--green);--red-dark:var(--green-dark);--red-light:var(--green-light);--gold-light:#ddc48c}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:#e5ebe3;color:var(--ink);font:18px/1.9 var(--sans);-webkit-font-smoothing:antialiased}body.intro-active{overflow:hidden}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}[hidden]{display:none!important}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:5px}::selection{background:var(--pink);color:var(--green-dark)}#main-content:focus{outline:none}.skip-link{position:fixed;z-index:100;top:8px;right:8px;padding:10px 18px;background:var(--cream);transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.button{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:14px;padding:12px 24px;border:1px solid transparent;border-radius:10px;font-size:19px;font-weight:700;line-height:1.7;transition:background .2s,box-shadow .2s}.primary-button,.burgundy-button{background:var(--green);color:var(--paper);border-color:var(--green)}.primary-button:hover,.burgundy-button:hover{background:var(--green-light)}.outline-button{border-color:var(--line);background:transparent;color:var(--green)}.text-button{border:0;background:none;color:var(--green);padding:10px;min-height:48px;font-size:15px}.eyebrow{font-size:13px;color:var(--gold)}h1,h2,h3,p{margin-top:0}button,input,textarea,select{color:inherit}input,textarea,select{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:13px 15px;display:block;width:100%;font-size:18px;min-height:52px}input::placeholder,textarea::placeholder{color:#7e8377;opacity:1}label{display:block;font-size:17px;margin-bottom:18px}textarea{resize:vertical;min-height:120px}form label{margin-bottom:14px}.form-error{background:#f6e5e3;border:1px solid #dbb5af;color:#853e39;border-radius:8px;padding:12px 16px;font-size:17px;line-height:1.7}.envelope-cover{position:fixed;inset:0;z-index:50;isolation:isolate;display:flex;align-items:center;justify-content:center;background:#10261e;overflow:hidden;transition:opacity .75s ease,visibility .75s}.cover-photo,#envelope-idle,#envelope-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:-3;transition:transform 1.2s,opacity .8s}.cover-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#0a211aaa,transparent 31%,transparent 66%,#0a211ae6)}.cover-heading{position:absolute;top:max(35px,5svh);right:0;left:0;text-align:center;color:#fff7e8;pointer-events:none}.cover-heading>p{font-size:16px;margin:0 0 3px;color:#f1dcc0}.cover-heading>div{font:400 clamp(43px,7vw,64px)/1.5 var(--serif);text-shadow:0 2px 14px #0008}.cover-heading span{color:#ebce96;font-size:.6em;margin:0 8px}.envelope-tap{position:absolute;inset:0;width:100%;height:100%;border:0;background:none;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding:0 20px max(110px,12svh);color:#fff7e8;font-size:20px}.envelope-tap>span{padding:9px 24px;border-radius:30px;background:#173c2bbd;border:1px solid #d9bf8e7a;backdrop-filter:blur(8px)}.envelope-tap i{color:#ead09d;font-style:normal;font-size:24px;line-height:1.3;margin-top:10px}.cover-skip{position:absolute;bottom:max(25px,4svh);font-size:16px;color:#fff2df;background:transparent;border:0;padding:10px 15px;text-decoration:underline;text-underline-offset:7px;min-height:48px}.envelope-cover.opening:not(.playing-video) .cover-photo{transform:scale(1.07);opacity:.25}.envelope-cover.dismissed{opacity:0;visibility:hidden;pointer-events:none}.invitation-card{width:min(100%,680px);margin:35px auto;background:var(--cream);border:1px solid #d0c5aa;box-shadow:0 12px 70px #1b3a2612;position:relative;overflow:hidden}.invitation-card:before,.invitation-card:after{content:"";position:absolute;width:230px;height:230px;border-radius:50%;background:radial-gradient(ellipse,#e4b8bc5c,transparent 69%);pointer-events:none}.invitation-card:before{top:-60px;right:-85px}.invitation-card:after{top:220px;left:-145px}.invitation-header{text-align:center;padding:26px 24px 0}.monogram{display:inline-block;font:25px var(--serif);color:var(--gold);border-bottom:1px solid #c3ad7f;padding:0 12px 7px;margin:0 0 24px}.monogram b{font-size:17px;font-weight:400;padding:0 9px}.invitation-header>p{font:20px var(--serif);color:#64725c;margin:0}.wedding-intro{text-align:center;padding:22px 32px 35px}.small-flower{display:block;font:37px var(--serif);color:var(--gold);margin:0 0 12px;line-height:1.2}.intro-line{font-size:20px;color:var(--green);margin:0 0 2px}#welcome-copy{font-size:18px;color:var(--muted);margin:0 auto 15px;max-width:460px}#couple-names{display:flex;align-items:center;justify-content:center;gap:13px;flex-wrap:wrap;font:400 70px/1.65 var(--serif);margin:0;color:var(--green)}#couple-names em{font-style:normal;color:var(--gold);font-size:37px}.invitation-wish{font:25px var(--serif);color:#987377;margin:0 0 24px}.wedding-intro>.button{min-width:210px}.gold-divider{height:1px;background:linear-gradient(90deg,transparent,#cbb88f,transparent);margin:15px 9% 0;position:relative}.gold-divider>span{position:absolute;right:50%;transform:translateX(50%) translateY(-50%);background:var(--cream);color:var(--gold);padding:0 15px;font-size:17px}.wedding-details{padding:38px 9% 25px}.detail-item{display:flex;align-items:flex-start;gap:18px;padding:15px 0}.detail-icon{display:flex;align-items:center;justify-content:center;background:#e7ece1;border:1px solid #c8d2bb;color:var(--green);width:45px;height:45px;flex-shrink:0;border-radius:50%;font-size:28px;line-height:1.2}.detail-item h2{font-size:18px;font-weight:700;color:var(--green);margin:0 0 3px}.detail-item p{font-size:20px;color:var(--ink);margin:0;line-height:1.8}.detail-item .sub-detail{font-size:17px;color:var(--muted);margin-top:4px}.detail-item .button{font-size:17px;margin-top:12px;min-height:50px;padding:9px 17px}#rsvp{scroll-margin-top:24px}.rsvp-section{background:var(--pink-pale);margin:12px 7% 35px;padding:33px 25px 23px;border-radius:100px 100px 14px 14px / 27px 27px 14px 14px;border:1px solid #e7d0ca;text-align:center}.rsvp-section>.small-flower{font-size:32px}.rsvp-section h2{font:400 37px/1.5 var(--serif);color:var(--green);margin:0 0 4px}.rsvp-intro{font-size:17px;color:#6d7569;margin:0 0 21px}.deadline{font-size:17px;color:var(--green);padding:6px 0;margin:0 0 15px;font-weight:700}.rsvp-section form{text-align:right}.rsvp-section form>label{font-size:18px;font-weight:500;margin:0 0 7px}.rsvp-section label>span{color:#6e756c;font-size:14px;font-weight:400;margin-right:8px}.rsvp-section textarea{border-color:#d8c1b5;background:#fffdf9;padding:14px 16px;font-size:18px;line-height:1.8}.rsvp-actions{display:flex;flex-direction:column;gap:11px;margin-top:20px}.rsvp-actions>.button{width:100%;font-size:20px;min-height:62px}.decline-button{color:var(--green);background:#fcf8f0;border-color:#bac5b1}.decline-button:hover{background:#e5ebdf}.decline-button.is-selected{background:#e2e9dc;box-shadow:0 0 0 2px var(--green)}.primary-button.is-selected{box-shadow:0 0 0 3px #b3985a,0 0 0 6px #f5e8e5}.decision-icon{font-size:23px}.response-message{font-size:18px;line-height:1.8;color:var(--green-dark);background:#e2ecde;border:1px solid #b7c8ae;border-radius:8px;padding:13px 16px;margin:17px 0 0}.response-message.declined{background:#f7f0e9;border-color:#c9bdac}.reply-hint{font-size:15px;color:#63725e;margin:19px 0 0}.invitation-footer{text-align:center;padding:4px 25px 28px;color:var(--green)}.invitation-footer>span{font-size:17px;color:var(--gold)}.invitation-footer>p{font-size:18px;margin:5px 0 0}.invitation-footer>div{font:31px var(--serif);margin-top:4px}.invitation-footer>div span{font-size:20px;color:var(--gold);margin:0 4px}.invitation-footer button{margin-top:15px;color:#61705d;text-decoration:underline;text-underline-offset:5px}.noscript-note{position:fixed;inset:auto 0 0;z-index:80;background:var(--cream);padding:16px;color:var(--green);text-align:center;margin:0}.site-header{height:90px;padding:0 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--cream)}.site-header nav{display:flex;align-items:center;gap:25px;font-size:16px}.wordmark{font:30px var(--serif);color:var(--green)}.wordmark span{color:var(--gold);font-size:20px}.form-row.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.optional{font-size:14px;color:var(--muted)}code{direction:ltr;unicode-bidi:embed}video::-webkit-media-controls-start-playback-button{display:none!important}
@media(min-width:800px){.envelope-cover .cover-photo,.envelope-cover #envelope-idle,.envelope-cover #envelope-video{width:min(100%,620px);left:50%;right:auto;transform:translateX(-50%)}.envelope-cover .cover-heading{top:4svh}.envelope-cover.opening:not(.playing-video) .cover-photo{transform:translateX(-50%) scale(1.07)}}@media(max-width:700px){.invitation-card{margin:0;box-shadow:none;border:0;min-height:100vh}.invitation-header{padding-top:24px}.wedding-intro{padding:23px 24px 30px}#couple-names{font-size:61px;gap:11px}.invitation-wish{font-size:24px}.wedding-details{padding-right:8%;padding-left:8%}.rsvp-section{margin-right:5%;margin-left:5%;padding:30px 20px 22px}.rsvp-section h2{font-size:33px}.rsvp-intro{font-size:17px}.cover-heading{top:5svh}.cover-heading>div{font-size:50px}.cover-photo,#envelope-idle,#envelope-video{object-fit:cover}.cover-heading>p{font-size:17px}.site-header{padding:0 5%}.site-header nav{gap:15px;font-size:14px}}@media(max-width:360px){#couple-names{font-size:53px}.rsvp-section{padding-right:16px;padding-left:16px}.rsvp-actions>.button{font-size:18px}.detail-item{gap:12px}.wedding-intro{padding-right:18px;padding-left:18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Two native video clips: a six-frame closed loop and the four-second reveal. */
#envelope-idle{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:-3}.cover-heading,.cover-shade,.envelope-tap{transition:opacity .35s ease}.playing-video .cover-heading,.playing-video .envelope-tap,.playing-video .cover-shade{opacity:0}.light-transition .cover-skip{opacity:0;pointer-events:none}.envelope-light{position:fixed;inset:0;z-index:70;pointer-events:none;overflow:hidden;isolation:isolate}.light-bloom{position:absolute;left:50%;top:51%;width:36vmax;height:36vmax;border-radius:50%;opacity:0;background:radial-gradient(circle closest-side,#fffaf0 0%,#fae3b9 32%,#fadfb3 52%,#efbd6377 72%,#efbd6300 100%);box-shadow:0 0 90px 45px #fadfb380;transform:translate(-50%,-50%) scale(.015)}.blooming .light-bloom{animation:goldenBloom 620ms cubic-bezier(.2,.55,.3,1) forwards}.envelope-light.fading{animation:goldenDissolve 1050ms ease-out forwards}.reveal-enter .invitation-card{animation:invitationArrival 1100ms ease-out both}
@keyframes goldenBloom{0%{opacity:0;transform:translate(-50%,-50%) scale(.015)}18%{opacity:.78}100%{opacity:1;transform:translate(-50%,-50%) scale(9)}}@keyframes goldenDissolve{from{opacity:1}to{opacity:0}}@keyframes invitationArrival{from{opacity:.2;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.countdown-card{text-align:center;border:1px solid #d8c69f;background:linear-gradient(145deg,#fcf9f0,#f3eee4);border-radius:20px;padding:25px 19px 24px;position:relative;margin-bottom:25px}.countdown-flower{display:block;color:var(--gold);font-size:18px;margin:0 0 6px}.countdown-card>h2{font:400 32px/1.6 var(--serif);color:var(--green);margin:0 0 1px}.countdown-card>#detail-date{font-size:18px;color:var(--green);margin:0 0 1px;line-height:1.8}.countdown-card .sub-detail{font-size:16px;color:var(--muted);margin:0 0 18px}.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;direction:rtl;margin-top:20px}.countdown>div{background:var(--paper);border:1px solid #dfd2b9;border-radius:12px;min-width:0;display:flex;flex-direction:column;align-items:center;padding:13px 3px 10px;box-shadow:0 3px 10px #4d3f2510}.countdown strong{font:400 42px/1.25 var(--serif);font-variant-numeric:tabular-nums;color:var(--green)}.countdown span{font-size:15px;line-height:1.5;color:#7b694c;margin-top:7px}.countdown-note{font-size:17px;color:var(--muted);margin:13px 0 0}.venue-card{display:block;border:1px solid #acbc9e;border-radius:17px;background:linear-gradient(135deg,#e8eee2,#f5f6ec);overflow:hidden;box-shadow:0 5px 18px #2943280a;transition:background .2s,box-shadow .2s,transform .2s;text-align:right}.venue-card:hover{background:#e6eddc;box-shadow:0 8px 25px #29432818;transform:translateY(-2px)}.venue-card-top{display:flex;align-items:flex-start;gap:17px;padding:25px 22px 23px}.venue-marker{width:60px;height:70px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#b39453;background:#234c3a;border:1px solid #ad925e;border-radius:32px 32px 17px 17px;box-shadow:0 3px 10px #1e412b15}.venue-marker svg{width:29px;height:37px}.venue-copy{min-width:0}.venue-eyebrow{font-size:15px;color:#627255;display:block;margin:0 0 6px}.venue-copy h2{font:700 22px/1.7 var(--sans);color:var(--green);margin:0 0 6px}.venue-copy p{font-size:16px;color:#66705e;line-height:1.8;margin:0}.venue-map-action{border-top:1px solid #c4ceb7;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 20px;background:#f9f8ed91;font-size:16px;font-weight:500;color:var(--green);line-height:1.8}.venue-map-action>span:last-child{font-size:24px;color:var(--gold)}.venue-card[aria-disabled=true]{opacity:.6;pointer-events:none}
@media(min-width:800px){#envelope-idle{width:min(100%,620px);left:50%;right:auto;transform:translateX(-50%)}}@media(max-width:700px){#envelope-idle{object-fit:cover}.wedding-details{padding:33px 6% 22px}.countdown-card{padding:24px 15px}.countdown strong{font-size:36px}.countdown span{font-size:14px}.countdown-card>h2{font-size:31px}.venue-card-top{padding:22px 18px;gap:14px}.venue-marker{width:49px;height:63px}.venue-copy h2{font-size:21px}.venue-map-action{font-size:15px;padding:13px 17px}}@media(max-width:360px){.countdown{gap:5px}.countdown strong{font-size:31px}.countdown span{font-size:13px}.countdown-card{padding-right:11px;padding-left:11px}.venue-card-top{gap:12px;padding-right:14px;padding-left:14px}.venue-copy h2{font-size:19px}.venue-map-action{font-size:14px}}
/* The supplied photograph stays at its native ratio, with every edge visible on phones. */
:root{--serif:"Amiri",Georgia,serif;--sans:"Amiri",Georgia,serif}body{font-family:var(--sans);font-size:19px}.invitation-card{border-radius:18px 18px 0 0}.photo-hero.wedding-intro{position:relative;isolation:isolate;padding:0;margin:0;text-align:center;overflow:hidden}.hero-artwork{display:block;width:100%;height:auto;object-fit:contain;max-width:100%;filter:none}.photo-hero:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,#0b201d0d,transparent 75%);z-index:0;pointer-events:none}.photo-hero .hero-copy{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3% 6%;gap:2px;color:#f7ebcf;text-shadow:0 1px 8px #001f1490}.photo-hero .hero-blessing{font:400 20px/1.4 var(--serif);margin:0;color:#e9d1a1}.photo-hero .intro-line{font:400 22px/1.4 var(--serif);color:#f3e1ba;margin:1px 0 0}.photo-hero #couple-names{display:block;width:100%;max-width:580px;margin:0;line-height:0;font:inherit;letter-spacing:0;color:#fff1d6}.names-calligraphy{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 2px 4px #07221780)}.names-calligraphy text{font-family:var(--serif);font-size:112px;font-weight:400;letter-spacing:0}.name-ink{fill:#fff0d4}.name-outline{fill:none;stroke:#e2c38d;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1000;stroke-dashoffset:0;opacity:0}.calligraphy-ready.intro-active .name-ink{opacity:0}.calligraphy-ready.intro-active .name-outline{stroke-dashoffset:1000;opacity:0}.calligraphy-ready:not(.intro-active) .name-outline{animation:calligraphyDraw 2200ms cubic-bezier(.2,.5,.4,1) 450ms both}.calligraphy-ready:not(.intro-active) .name-ink{animation:calligraphyInk 1100ms ease-out 1600ms both}.photo-hero #welcome-copy{font:400 21px/1.45 var(--serif);color:#f6ead1;max-width:100%;margin:0}.photo-hero .invitation-wish{font:400 24px/1.4 var(--serif);color:#f0c7c9;margin:4px 0 0}.hero-line{opacity:1}.intro-active .hero-line{opacity:0}.calligraphy-ready:not(.intro-active) .hero-line{animation:heroLineReveal 1400ms ease-out 300ms both}.calligraphy-ready:not(.intro-active) #welcome-copy{animation-delay:900ms}.calligraphy-ready:not(.intro-active) .invitation-wish{animation-delay:1300ms}.hero-action{text-align:center;padding:23px 24px 15px}.hero-action .button{min-width:210px;font-size:21px;box-shadow:0 5px 18px #244d3a18}.gold-divider{margin-top:8px}.scroll-motion-ready [data-scroll-reveal]{opacity:0;transform:translateY(15px);transition:opacity .75s ease,transform .75s cubic-bezier(.2,.6,.3,1)}.scroll-motion-ready [data-scroll-reveal].is-visible{opacity:1;transform:translateY(0)}.venue-card:hover{transform:translateY(-2px)!important}.rsvp-section form>label,.rsvp-intro,.reply-hint,.venue-copy p,.venue-map-action,.countdown span{font-family:var(--sans)}.rsvp-section textarea{font-family:var(--sans);font-size:20px}.rsvp-actions>.button{font-size:22px}.invitation-footer>p{font-size:20px}
@keyframes calligraphyDraw{0%{opacity:0;stroke-dashoffset:1000;clip-path:inset(0 0 0 100%)}12%{opacity:1}65%{clip-path:inset(0)}80%{opacity:1;stroke-dashoffset:0}100%{opacity:.15;stroke-dashoffset:0;clip-path:inset(0)}}@keyframes calligraphyInk{from{opacity:0}to{opacity:1}}@keyframes heroLineReveal{from{opacity:0;clip-path:inset(0 0 0 100%);transform:translateY(4px)}to{opacity:1;clip-path:inset(0);transform:translateY(0)}}
@media(max-width:700px){.invitation-card{border-radius:0}.photo-hero .hero-copy{padding:2% 5%;gap:0}.photo-hero .hero-blessing{font-size:clamp(13px,3.8vw,17px);line-height:1.35}.photo-hero .intro-line{font-size:clamp(14px,4vw,18px);line-height:1.35;margin:0}.photo-hero #couple-names{max-width:100%;margin:-2px 0 -4px}.photo-hero #welcome-copy{font-size:clamp(14px,4vw,19px);line-height:1.35}.photo-hero .invitation-wish{font-size:clamp(15px,4.2vw,20px);line-height:1.35;margin:1px 0 0}.hero-action{padding:23px 24px 16px}.hero-action .button{font-size:21px}.photo-hero .names-calligraphy{width:100%}}
@media(prefers-reduced-motion:reduce){.name-outline{display:none!important}.name-ink,.hero-line,[data-scroll-reveal]{opacity:1!important;transform:none!important;clip-path:none!important;animation:none!important}.venue-card:hover{transform:none!important}}
/* Full-bleed page: the photograph keeps its intrinsic ratio and every edge. */
body{background:var(--cream)}.invitation-card{width:100%;max-width:none;margin:0;border:0;border-radius:0;box-shadow:none;overflow:clip}.invitation-card:before,.invitation-card:after{display:none}.photo-hero{width:100%;border-radius:0}.hero-artwork{width:100%;height:auto;object-fit:contain}.photo-hero #couple-names{max-width:min(80%,900px)}.wedding-details{width:min(100%,820px);margin:0 auto;padding:38px 30px 25px}.rsvp-section{width:min(calc(100% - 40px),720px);margin:12px auto 35px}.invitation-footer{padding-bottom:35px}.cover-heading>p{font-size:23px;letter-spacing:0;color:#f5dfb6}.countdown-card{position:relative;isolation:isolate;border:0;border-radius:0;background:var(--cream);padding:43px 32px 42px;margin-bottom:30px;box-shadow:none}.countdown-frame{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;pointer-events:none;z-index:0}.countdown-card>:not(.countdown-frame){position:relative;z-index:1}.countdown-card .countdown-flower{margin-bottom:5px}.countdown-card .countdown{margin-top:18px}.name-ha{font-size:.8em;baseline-shift:36px}
@media(max-width:700px){.invitation-card{width:100%;margin:0;border:0;border-radius:0}.photo-hero #couple-names{max-width:100%}.wedding-details{padding:30px 20px 22px}.countdown-card{padding:40px 24px 38px}.rsvp-section{width:calc(100% - 32px);margin:12px auto 35px}.cover-heading>p{font-size:21px}}@media(max-width:360px){.wedding-details{padding-right:14px;padding-left:14px}.countdown-card{padding:37px 20px 35px}.countdown{gap:5px}.countdown strong{font-size:31px}.countdown span{font-size:13px}}
/* Companion counts appear only after accepting and include the host exactly once. */
.companions-panel{border-top:1px solid #d6c6b9;margin-top:25px;padding-top:21px;text-align:center}.companions-panel>label{font:700 23px/1.6 var(--serif);color:var(--green);margin:0 0 3px}.companions-help{font-size:17px;color:var(--muted);margin:0 0 13px}.guest-stepper{display:flex;align-items:center;justify-content:center;gap:12px;direction:ltr}.guest-stepper button{border:1px solid #acba9e;background:#fffdf7;color:var(--green);border-radius:10px;width:52px;height:52px;min-height:52px;font:400 30px/1 var(--sans);display:flex;align-items:center;justify-content:center}.guest-stepper input{width:90px;min-height:56px;height:56px;margin:0;padding:4px 8px;text-align:center;font:400 29px/1.4 var(--serif);border-color:#acba9e;font-variant-numeric:tabular-nums;appearance:textfield}.guest-stepper input::-webkit-inner-spin-button,.guest-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.guest-stepper button:hover{background:#e5ecdd}.guest-stepper button:disabled{opacity:.4;cursor:default}.party-total{color:var(--green);font-size:20px;line-height:1.7;margin:15px 0 5px}.companions-save-note{font-size:15px;color:var(--muted);margin:0}.rsvp-actions button[aria-expanded=true]{border-color:var(--gold)}

/* Confirmed invitation details and the olive-framed wedding program. */
.formal-invitation{max-width:860px;margin:0 auto;padding:52px 34px 15px;text-align:center}
.section-kicker{display:block;color:var(--gold);font-size:16px;margin:0 0 16px;line-height:1.6}
.quran-verse{max-width:670px;margin:0 auto 30px;color:var(--green);font-size:clamp(23px,3.3vw,30px);line-height:2.05;text-wrap:balance}
.invitation-prose{color:#56614e;font-size:21px;line-height:1.95}.invitation-prose>p{margin:0 0 16px}
.family-hosts{display:flex;justify-content:center;align-items:center;gap:15px;flex-wrap:wrap;color:var(--green-dark);margin:28px 0 20px}.family-hosts p{margin:0;font-size:25px;font-weight:700}
.names-join{font-size:24px;font-weight:400;color:var(--gold);line-height:1.5}
.formal-couple{color:var(--green);margin:22px 0 20px}.formal-couple p{font-size:clamp(30px,4.5vw,40px);line-height:1.65;margin:0;text-wrap:balance}.formal-couple .names-join{display:block;font-size:25px;margin:1px 0}
.couple-rings{display:block;width:58px;height:40px;margin:19px auto 0;color:var(--gold);stroke:currentColor;stroke-width:1.25}
.invitation-story{max-width:590px;margin:0 auto;color:#71705a;font-size:21px;line-height:2;text-wrap:pretty}
.venue-copy .venue-english{color:var(--gold);font-size:16px;line-height:1.5;margin:6px 0 3px;text-align:right}
.wedding-program{position:relative;isolation:isolate;max-width:780px;width:calc(100% - 40px);margin:14px auto 42px;padding:46px 46px 95px;background:radial-gradient(ellipse at 15% 12%,#e6d7ba33,transparent 45%),radial-gradient(ellipse at 85% 85%,#d8d5bf26,transparent 50%),#f8f4eb;border:1px solid #9f925c;outline:1px solid #c8bb8a;outline-offset:-7px;overflow:hidden;box-shadow:0 10px 38px #38432709}
.olive-corner{position:absolute;z-index:-1;pointer-events:none;width:225px;height:auto;max-width:43%;opacity:.95}.olive-top{top:-3px;left:-3px}.olive-bottom{bottom:-3px;right:-3px;transform:rotate(180deg)}
.program-header{text-align:center;margin-bottom:24px;padding:10px 20px 0}.program-header .section-kicker{font-size:14px;margin:0 0 4px}.program-header h2{font-size:39px;line-height:1.4;font-weight:700;color:#494822;margin:0;text-wrap:balance}.program-header>p:last-child{font-size:29px;line-height:1.4;color:#57502c;margin:5px 0 0}.program-header>p:last-child span{color:var(--gold);font-size:24px}
.program-flourish{display:block;position:relative;max-width:230px;margin:11px auto 8px;font-size:15px;line-height:1.4;color:#b19453}.program-flourish:before,.program-flourish:after{content:"";position:absolute;width:32%;height:1px;top:50%;background:linear-gradient(90deg,transparent,#b19453)}.program-flourish:before{left:0}.program-flourish:after{right:0;transform:rotate(180deg)}
.program-list{list-style:none;margin:0;padding:0}.program-row{display:grid;grid-template-columns:125px minmax(0,1fr) 65px;align-items:center;column-gap:19px;min-height:87px;padding:13px 0;position:relative}.program-row:not(:last-child):after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#b29c69 18%,#b29c69 82%,transparent);opacity:.8}
.program-time{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px;line-height:1.5;padding:3px 5px;color:#342e1b;position:relative;background:linear-gradient(177deg,transparent 8%,#e9dbc29c 12%,#eadcc59c 86%,transparent 91%);border-left:1px solid #ad8b4b}.program-time time{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.program-time>span{font-size:16px}.program-row:last-child .program-time time{font-size:19px}
.program-event{text-align:center;min-width:0}.program-event h3{font-size:24px;font-weight:700;color:#45431f;line-height:1.45;margin:0 0 2px;text-wrap:balance}.program-event p{font-size:16px;line-height:1.65;color:#5e5747;margin:0;text-wrap:pretty}.program-event [lang=en]{font-family:var(--serif)}
.program-icon{display:block;color:#9b7e3d;width:59px;height:59px;justify-self:center;filter:drop-shadow(0 1px 0 #fff8)}
.program-ending{text-align:center;color:#aa8c4b;max-width:250px;margin:20px auto 0;position:relative;line-height:1.5}.program-ending:before{content:"";position:absolute;height:1px;background:linear-gradient(90deg,transparent,#b19453,transparent);width:100%;top:50%;left:0}.program-ending>span{position:relative;background:#f8f4eb;padding:0 11px}
.scroll-motion-ready .program-row[data-scroll-reveal]{transform:translateX(28px);transition:opacity .75s ease,transform .85s cubic-bezier(.16,.65,.3,1)}.scroll-motion-ready .program-row:nth-child(even)[data-scroll-reveal]{transform:translateX(-28px)}.scroll-motion-ready .program-row[data-scroll-reveal].is-visible{transform:translateX(0);opacity:1}.program-row .program-icon{transition:transform 1s ease}.scroll-motion-ready .program-row:not(.is-visible) .program-icon{transform:rotate(-7deg)}
.electronic-card{width:min(calc(100% - 32px),620px);padding:34px 26px 28px;margin:0 auto 35px;text-align:center;border:1px solid #dcd1ba;border-radius:22px;background:linear-gradient(160deg,#fffdfa 0%,#f7f2e7 100%);box-shadow:0 12px 40px rgba(33,73,55,.07);position:relative}.electronic-card>.section-kicker{margin-bottom:2px;color:var(--gold)}.electronic-card h2{font-size:32px;line-height:1.5;color:var(--green);font-family:var(--serif);font-weight:700;margin:0 0 20px}.virtual-pass{background:#ffffff;border:1.5px solid #d6c6a5;border-radius:16px;padding:22px 20px 20px;margin:0 auto 20px;position:relative;box-shadow:0 4px 20px rgba(36,77,58,.05);overflow:hidden}.virtual-pass::before,.virtual-pass::after{content:"";position:absolute;top:50%;width:18px;height:18px;border-radius:50%;background:#f7f2e7;border:1px solid #d6c6a5;transform:translateY(-50%)}.virtual-pass::before{left:-10px}.virtual-pass::after{right:-10px}.pass-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px dashed #dfd4bf;padding-bottom:12px;margin-bottom:16px}.pass-badge{display:inline-flex;align-items:center;gap:7px;background:#244d3a;color:#fff9ee;font-size:14px;font-weight:700;padding:4px 14px;border-radius:20px;letter-spacing:.3px}.pass-badge .badge-dot{color:#ebce96;font-size:13px}.pass-seal{font-family:var(--serif);font-size:20px;color:var(--gold);font-weight:700;letter-spacing:1px}.pass-event-title{font-family:var(--serif);font-size:26px;font-weight:700;color:var(--green);margin-bottom:10px}.pass-venue-time{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;font-size:16px;color:#556255;margin-bottom:18px}.pass-detail-item{display:inline-flex;align-items:center;gap:6px}.pass-icon{width:17px;height:17px;color:var(--gold)}.pass-detail-divider{color:#c9bea6}.pass-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;background:#fbf8f0;border:1px solid #ece4d4;border-radius:12px;padding:11px 16px;margin-bottom:16px}.pass-status-pill{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#1b4d32}.status-indicator{width:9px;height:9px;border-radius:50%;background:#27ae60;box-shadow:0 0 0 3px rgba(39,174,96,.25);display:inline-block;animation:passPulse 2s infinite ease-in-out}@keyframes passPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.8}}.pass-code{font-size:14px;color:#726c5f}.code-label{margin-left:4px}.code-val{font-weight:700;color:#244d3a;letter-spacing:1px}.pass-barcode{padding-top:10px;border-top:1px dashed #dfd4bf;display:flex;flex-direction:column;align-items:center;gap:6px}.barcode-lines{width:82%;height:38px;background:repeating-linear-gradient(90deg,#2c3d33 0px,#2c3d33 2px,transparent 2px,transparent 4px,#2c3d33 4px,#2c3d33 7px,transparent 7px,transparent 9px,#2c3d33 9px,#2c3d33 10px,transparent 10px,transparent 13px,#2c3d33 13px,#2c3d33 16px,transparent 16px,transparent 17px,#2c3d33 17px,#2c3d33 21px,transparent 21px,transparent 23px);opacity:.85;border-radius:2px}.barcode-label{font-size:11px;letter-spacing:2px;color:#8c826c;font-family:var(--sans);font-weight:600}.ticket-instruction{font-size:19px;font-weight:600;color:var(--green);line-height:1.7;margin:0 auto 10px;max-width:490px}.adults-note{font-size:16px;line-height:1.8;color:#7a6e5b;max-width:500px;margin:0 auto}.invitation-footer>p{max-width:550px;margin:10px auto;font-size:23px;text-wrap:balance}.invitation-footer>p span{color:var(--gold)}
@media(max-width:700px){.formal-invitation{padding:35px 25px 8px}.section-kicker{font-size:15px}.quran-verse{font-size:23px;line-height:2;margin-bottom:24px}.invitation-prose{font-size:20px;line-height:1.9}.family-hosts{flex-direction:column;gap:0;margin:22px 0}.family-hosts p{font-size:24px;line-height:1.6}.family-hosts .names-join{font-size:22px;line-height:1.3}.formal-couple p{font-size:29px;line-height:1.8}.invitation-story{font-size:20px;line-height:1.95}.wedding-program{width:calc(100% - 28px);padding:36px 21px 93px;margin-top:8px;margin-bottom:30px}.program-header{padding:25px 0 0;margin-bottom:18px}.program-header h2{font-size:29px}.program-header>p:last-child{font-size:27px}.program-header .section-kicker{font-size:13px}.olive-corner{width:175px;max-width:46%}.program-flourish{max-width:185px}.program-row{grid-template-columns:86px minmax(0,1fr) 39px;column-gap:9px;min-height:83px;padding:12px 0}.program-time{gap:2px;padding:3px 4px}.program-time time{font-size:20px}.program-time>span{font-size:13px}.program-row:last-child .program-time time{font-size:14px}.program-row:last-child .program-time>span{font-size:12px}.program-event h3{font-size:19px;line-height:1.45}.program-event p{font-size:14px;line-height:1.55}.program-icon{width:39px;height:46px}.program-ending{margin-top:24px;max-width:165px}.electronic-card{width:calc(100% - 32px);padding:28px 22px}.electronic-card h2{font-size:29px}.ticket-instruction{font-size:19px}.adults-note{font-size:17px}}
@media(max-width:360px){.formal-invitation{padding-inline:19px}.formal-couple p{font-size:27px}.wedding-program{padding-inline:16px;width:calc(100% - 22px)}.program-header h2{font-size:26px}.program-row{grid-template-columns:75px minmax(0,1fr) 32px;gap:7px}.program-event h3{font-size:18px}.program-event p{font-size:13px}.program-time time{font-size:19px}.program-icon{width:32px}.program-row:last-child .program-time time{font-size:12px}.quran-verse{font-size:22px}}
@media(prefers-reduced-motion:reduce){.scroll-motion-ready .program-row[data-scroll-reveal],.scroll-motion-ready .program-row:nth-child(even)[data-scroll-reveal],.program-row .program-icon{opacity:1;transform:none!important;transition:none}}

.hero-action{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:15px 26px}.program-jump{font-size:20px;min-height:48px;display:inline-flex;gap:10px;align-items:center;color:var(--green);text-decoration:underline;text-underline-offset:6px;text-decoration-color:#bb9a5b78}#program{scroll-margin-top:20px}

/* Keep a closed poster until the fully buffered phone clip is actually playing. */
#envelope-video{opacity:0;transition:opacity .16s linear}.playing-video #envelope-video{opacity:1}.envelope-cover.opening:not(.playing-video) .cover-photo{opacity:1;transform:none}
.cover-loading .envelope-tap>span:after{content:"";display:inline-block;width:13px;height:13px;border:1.5px solid #f1ddb755;border-top-color:#f1ddb7;border-radius:50%;margin-right:10px;vertical-align:middle;animation:envelopeBuffer 1s linear infinite}
@keyframes envelopeBuffer{to{transform:rotate(360deg)}}
.light-bloom{background:radial-gradient(circle closest-side,#fae3b9 0%,#fadfb3 40%,#fadfb3d9 60%,#efbd6355 78%,#efbd6300 100%);box-shadow:0 0 70px 35px #fadfb350}.blooming .light-bloom{animation-duration:700ms}.envelope-light.fading{animation-duration:1000ms}
@media(min-width:800px){.envelope-cover.opening:not(.playing-video) .cover-photo{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.cover-loading .envelope-tap>span:after{animation:none}}

.playing-video .envelope-tap>span{backdrop-filter:none}
.music-toggle{position:fixed;top:max(20px,env(safe-area-inset-top,20px));left:max(20px,env(safe-area-inset-left,20px));z-index:90;display:inline-flex;align-items:center;gap:8px;padding:8px 15px 8px 12px;background:rgba(18,46,35,.85);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(212,194,154,.45);border-radius:30px;color:#fff6e5;font-family:var(--sans);font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 4px 18px rgba(0,0,0,.25);transition:all .3s cubic-bezier(.2,.8,.2,1);direction:rtl}.music-toggle:hover{background:rgba(28,68,52,.95);border-color:rgba(226,207,166,.8);transform:translateY(-1px);box-shadow:0 6px 22px rgba(0,0,0,.3)}.music-toggle:active{transform:scale(.96)}.music-icon-wrap{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:#edd39f}.music-icon{width:19px;height:19px}.music-toggle.is-muted{background:rgba(30,35,32,.8);border-color:rgba(180,180,180,.3);color:#c9ceca}.music-toggle.is-muted .music-icon-wrap{color:#a4aca6}.music-label{font-size:13px;letter-spacing:.2px}@keyframes soundWave{0%,100%{opacity:.35;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}.music-toggle:not(.is-muted) .wave-1{animation:soundWave 1.4s infinite ease-in-out;transform-origin:center}.music-toggle:not(.is-muted) .wave-2{animation:soundWave 1.4s infinite ease-in-out .35s;transform-origin:center}@media(max-width:480px){.music-toggle{top:max(14px,env(safe-area-inset-top,14px));left:max(14px,env(safe-area-inset-left,14px));width:40px;height:40px;padding:0;justify-content:center}.music-label{display:none}}
