/* Local fonts and the original music are retained; the visual theme suits sunnat and jubilee celebrations. */
@font-face{font-family:Wedding;src:url('assets/fonts/cormorant-garamond-500.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:Wedding;src:url('assets/fonts/cormorant-garamond-600.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:Wedding;src:url('assets/fonts/cormorant-garamond-italic-500.ttf') format('truetype');font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:Label;src:url('assets/fonts/montserrat-600.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:Label;src:url('assets/fonts/montserrat-700.ttf') format('truetype');font-weight:700;font-display:swap}
:root{--green:#183f35;--deep:#102d26;--sage:#6b8271;--paper:#f8f3e8;--ivory:#fffdf7;--gold:#a38147;--gold-light:#dec894;--ink:#2c4136;--sans:Label,Arial,sans-serif;--serif:Wedding,Georgia,serif;--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--serif);font-weight:500;font-kerning:normal;overflow-x:hidden}body.locked,body.modal-open{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;cursor:pointer}button:disabled{cursor:default}a{color:inherit}img{display:block;max-width:100%}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:5px}h1:focus{outline:0}[hidden]{display:none!important}h1,h2,h3,p{margin:0}button:active,a.primary-button:active{scale:.98}.noscript-note{position:fixed;z-index:200;inset:auto 12px 12px;padding:12px;background:var(--ivory);text-align:center;font:600 11px/1.6 var(--sans)}
.story{position:relative;overflow:clip;opacity:0;visibility:hidden;transition:opacity .7s var(--ease)}body.invitation-open .story{opacity:1;visibility:visible}.scene{position:relative;isolation:isolate;min-height:100svh;padding:100px 24px 90px;display:grid;place-items:center;overflow:hidden;scroll-margin-top:0}.content{position:relative;z-index:4;display:flex;flex-direction:column;align-items:center;text-align:center;width:min(760px,100%);margin-inline:auto;min-width:0}.content.narrow{width:min(590px,100%)}h2{font-size:clamp(37px,5.3vw,61px);font-weight:600;line-height:1.1;color:var(--green)}.eyebrow{margin-bottom:17px;color:var(--green);font:600 10px/1.8 var(--sans);letter-spacing:.16em}.script-heading{font:italic 500 clamp(38px,5.5vw,60px)/1.09 var(--serif);color:var(--green)}.script-heading.small{font-size:32px}.section-note{margin-top:14px;color:#667360;font-size:23px;font-style:italic;line-height:1.4}.ornament{display:flex;align-items:center;justify-content:center;gap:15px;width:min(230px,78%);margin:23px auto;color:var(--gold)}.ornament i{height:1px;flex:1;background:linear-gradient(90deg,transparent,var(--gold))}.ornament i:last-child{transform:rotate(180deg)}.ornament b{font-size:16px;font-weight:500}.down-arrow{display:grid;place-items:center;flex:none;width:44px;height:44px;margin-top:26px;border:1px solid #a3814770;border-radius:50%;background:#fffdf780;color:var(--green);font-size:26px;text-decoration:none;animation:arrowFloat 3s ease-in-out infinite;transition:background .3s}.down-arrow:hover{background:var(--ivory)}.content.reveal{opacity:0;transform:translateY(24px);filter:blur(2px);transition:opacity .9s var(--ease),transform 1.1s var(--ease),filter .9s var(--ease)}.content.reveal.visible{opacity:1;transform:none;filter:none}
/* The portrait artwork is sized to the whole card so its decorative border is retained on phones. */
.hero-scene,.final-scene{width:min(760px,100%);margin-inline:auto;background:#f8f0df url('assets/celebration-background.webp') center/100% 100% no-repeat;box-shadow:0 0 70px #183f3510}.hero-scene{min-height:max(930px,100svh);padding:105px 60px 170px}.bismillah{font-size:23px;font-style:italic;color:#846a3e;margin-bottom:24px}.hero-content>.eyebrow{font-size:10px;letter-spacing:.11em;margin-bottom:22px}.names{display:flex;flex-direction:column;gap:3px;color:var(--green);font-size:clamp(35px,5.3vw,58px);font-weight:600;line-height:1.14;letter-spacing:-.025em;width:100%}.names>span{display:block;white-space:nowrap}.occasion-note{margin-top:10px;color:#80704f;font-size:23px;font-style:italic}.hero-content .ornament{margin:24px auto}.elders{font-size:clamp(32px,4.6vw,48px);font-weight:500;display:flex;flex-direction:column;align-items:center;gap:2px}.elders i{font-size:22px;line-height:1.4;color:var(--gold);font-weight:500}.date-card{width:min(350px,100%);margin-top:26px;padding:15px 20px;display:flex;flex-direction:column;gap:7px;border:1px solid #a3814770;border-radius:22px 5px;background:#fffdf7c9;box-shadow:inset 0 0 0 5px #fff8,0 12px 25px #183f3509}.date-card strong{font:600 12px/1.8 var(--sans);letter-spacing:.09em}.date-card>span{font:600 9px/1.5 var(--sans);letter-spacing:.08em}.date-card b{font:600 26px/1 var(--serif);padding-left:3px}.silk-light{position:absolute;z-index:1;inset:-20%;pointer-events:none;background:conic-gradient(from 0deg at 50% 10%,transparent 5%,#fffbe028 10%,transparent 18%,transparent 82%,#fffce830 89%,transparent 94%);animation:silkDrift 18s ease-in-out infinite alternate;opacity:.55}
.paper-scene,.blush-scene,.symbols-scene{background:radial-gradient(ellipse at 50% 0,#fffdf8,transparent 70%),var(--paper)}.paper-scene::before,.blush-scene::before,.symbols-scene::before{content:'';position:absolute;inset:22px;border:1px solid #a3814740;border-radius:38px 6px;pointer-events:none;box-shadow:inset 0 0 0 6px #fff6}.paper-scene::after,.blush-scene::after,.symbols-scene::after{content:'✦';position:absolute;top:13px;left:50%;padding:0 14px;color:var(--gold);background:var(--paper);transform:translateX(-50%);font-size:17px}.wedding-scene{min-height:0;padding-top:95px;padding-bottom:85px}.invitation-card{position:relative;width:100%;padding:35px 31px 31px;border:1px solid #a3814770;border-radius:28px 6px;background:var(--ivory);box-shadow:0 20px 60px #183f350b,inset 0 0 0 6px #a3814705;font-size:25px;line-height:1.5}.invitation-card::after{content:'';position:absolute;inset:8px;border:1px solid #a3814722;border-radius:21px 4px;pointer-events:none}.invitation-card .salaam{margin-bottom:19px;font:700 13px/1.6 var(--sans);letter-spacing:.02em;color:var(--green)}.children-inline{margin:17px 0;color:var(--green);font-size:25px;line-height:1.4;letter-spacing:-.01em}.children-inline>strong{display:block;font-weight:600}.name-suffix{font-size:.86em;font-weight:500;white-space:nowrap}.invitation-card b{font-weight:600;color:var(--green)}.invitation-card .honoree{font-size:28px;font-weight:600;margin:6px 0;color:var(--green)}.invite-date{margin:20px 0 16px!important;padding:16px 0;border-block:1px solid #a3814733;font-size:26px;line-height:1.4;color:var(--green)}.invite-date strong{font-weight:600}.family-sign{margin-top:28px;font-size:22px;line-height:1.5;color:#667360}.family-sign strong{display:inline-block;margin-top:8px;font-size:28px;font-weight:600;color:var(--green);line-height:1.3}
.blush-scene{background:radial-gradient(ellipse at 20% 0,#fffdf8,transparent 70%),linear-gradient(145deg,#eef1e8,#e6ebdf)}.calendar-card{width:min(450px,100%);margin-top:28px;padding:25px 23px;border:1px solid #a3814765;border-radius:27px 6px;background:#fffdf7ed;box-shadow:0 17px 35px #183f350c,inset 0 0 0 5px #fff6}.calendar-title{display:flex;justify-content:center;align-items:baseline;gap:14px;margin-bottom:21px}.calendar-title span{font:600 15px var(--sans);letter-spacing:.14em}.calendar-title strong{font-size:27px;font-weight:500;color:var(--gold)}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:center;gap:6px}.weekdays{font:600 9px/1.4 var(--sans);color:#75816b;margin-bottom:9px}.days time,.days>span{height:40px;display:grid;place-items:center;position:relative;font-size:22px;border-radius:50%;font-variant-numeric:tabular-nums}.days .event-day{background:var(--green);color:var(--ivory);font-weight:600;box-shadow:0 0 0 4px #a3814720;animation:dateHeartbeat 4s ease-in-out infinite}.event-day small{position:absolute;right:-2px;bottom:-1px;display:grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--gold-light);color:var(--green);font-size:11px}.countdown{width:min(450px,100%);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:24px;padding:15px 0;border:1px solid #a3814750;border-radius:23px 5px;background:#fffdf7b8}.countdown>div{padding:5px;border-right:1px solid #a3814730}.countdown>div:last-child{border:0}.countdown strong{display:block;font-size:43px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1.1;color:var(--green)}.countdown span{display:block;margin-top:7px;color:#667360;font:600 9px var(--sans);letter-spacing:.05em}.countdown .tick{animation:digitTick .42s var(--ease)}.event-card{width:min(450px,100%);margin-top:24px;padding:24px;border:1px solid #a3814760;border-radius:5px 26px;background:#fffdf7b0}.event-line{display:grid;grid-template-columns:85px 25px 1fr;align-items:center;gap:5px;margin-top:18px;text-align:left}.event-line time{font-size:36px;font-weight:600;color:var(--green)}.event-line>span{width:7px;height:7px;background:var(--gold);transform:rotate(45deg);justify-self:center}.event-line strong{font-size:26px;font-weight:600;line-height:1.05;color:var(--green)}.event-line small{display:block;margin-top:9px;font-size:17px;font-weight:500;line-height:1.2;color:#667360}.calendar-link{display:inline-flex;align-items:center;gap:12px;min-height:44px;margin-top:15px;font:600 11px/1.6 var(--sans);text-decoration:none;border-bottom:1px solid #a3814755}.calendar-link span{font-size:20px}
.symbols-scene{min-height:0;padding-block:100px;background:var(--green);color:var(--ivory)}.symbols-scene h2,.symbols-scene .eyebrow{color:var(--ivory)}.symbols-scene::before{border-color:#dec89455;box-shadow:none}.symbols-scene::after{background:var(--green);color:var(--gold-light)}.wish-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;width:100%;margin-top:35px}.wish-card{padding:30px 20px;border:1px solid #dec89460;border-radius:27px 5px;background:#fffdf707;box-shadow:inset 0 0 0 5px #fffdf703}.wish-motif{display:block;font-size:36px;color:var(--gold-light);margin-bottom:18px}.wish-card h3{font-size:31px;font-weight:500;color:#f7e6bd;line-height:1.1}.wish-card p{margin-top:17px;font-size:23px;line-height:1.5;color:#e1e7d8}.wishes-note{font-size:22px;margin-top:26px;color:#d8dfcd}.symbols-scene .down-arrow{background:#fffdf709;color:var(--gold-light);border-color:#dec89480}
.location-scene .content{width:min(800px,100%)}.location-scene h2{font-size:58px}.location-scene h2 span{font-size:.65em;font-style:italic;font-weight:500}.address{margin:14px 0 28px;font-size:26px;color:#667360}.venue-visual{position:relative;isolation:isolate;margin:0;width:100%;aspect-ratio:16/9;overflow:hidden;border:1px solid var(--gold-light);border-radius:32px 6px;box-shadow:0 22px 45px #183f3517,0 0 0 5px #fffdf7}.gallery-open{display:block;border:0;padding:0;background:none;width:100%;height:100%;text-align:inherit;color:inherit}.gallery-open img{width:100%;height:100%;object-fit:cover;pointer-events:none}.venue-visual img{animation:venueCinema 20s ease-in-out infinite alternate}.gallery-open:focus-visible{outline:3px solid var(--gold-light);outline-offset:-8px}.venue-visual::after{content:'';position:absolute;inset:11px;border:1px solid #fff5dc85;border-radius:22px 3px;pointer-events:none}.zoom-mark{position:absolute;z-index:3;right:17px;top:17px;display:grid;place-items:center;width:36px;height:36px;border:1px solid #fff8;border-radius:50%;background:#183f3550;color:var(--ivory);font-size:25px;backdrop-filter:blur(5px)}.venue-glint{position:absolute;z-index:2;inset:-80% auto -80% -60%;width:30%;background:linear-gradient(90deg,transparent,#fff5df38,transparent);transform:rotate(22deg);animation:goldSweep 12s ease-in-out infinite;pointer-events:none}.visual-note{margin:14px 0 22px;font:600 9px/1.7 var(--sans);color:#838675}.landmark{font-size:25px;font-style:italic;color:#667360}.primary-button{display:inline-flex;justify-content:center;align-items:center;gap:13px;position:relative;overflow:hidden;min-height:54px;max-width:100%;margin-top:23px;padding:14px 23px;color:var(--ivory);background:linear-gradient(120deg,#315849,var(--green) 55%,var(--deep));border:1px solid #dec894b0;border-radius:999px;box-shadow:0 12px 28px #183f3520,inset 0 1px #fff3;text-decoration:none;font:600 10px/1.7 var(--sans);letter-spacing:.03em;transition:transform .3s,box-shadow .3s}.primary-button span{font-size:22px;line-height:1}.primary-button:hover{transform:translateY(-2px);box-shadow:0 17px 34px #183f3530}.primary-button::before{content:'';position:absolute;inset:-60% auto -60% -60%;width:35%;background:linear-gradient(90deg,transparent,#fff5,transparent);transform:rotate(20deg);animation:goldSweep 9s ease-in-out infinite;pointer-events:none}.qr-card{margin-top:25px;padding:15px 18px 12px;border:1px solid #a3814760;border-radius:22px 5px;background:#fff;box-shadow:0 12px 28px #183f3509}.qr-card img{width:190px;height:190px;margin:auto;image-rendering:pixelated}.qr-card p{margin-top:8px;font:600 9px/1.6 var(--sans);color:#667360}
.final-scene{min-height:max(800px,100svh);padding:120px 65px 160px}.final-scene h2{font-size:clamp(33px,4vw,46px);font-weight:500;line-height:1.2}.final-date{margin-top:25px;font:600 11px/1.8 var(--sans);letter-spacing:.05em}.final-date span{display:block;margin-top:5px;font-size:9px;letter-spacing:.01em}.family-closing{margin-top:29px;font-size:29px;line-height:1.25;color:var(--green)}.text-button{min-height:44px;margin-top:18px;padding:8px 5px;border:0;border-bottom:1px solid #a3814760;background:none;font:600 10px var(--sans);color:var(--green)}.text-button span{margin-left:8px;font-size:18px}
/* Reversible envelope opening, with a neutral gold seal instead of wedding rings. */
.gate{position:fixed;z-index:100;inset:0;display:grid;place-items:center;overflow:hidden;perspective:1600px;background:#e6e4d9;transition:opacity .45s ease}.gate.fading{opacity:0;pointer-events:none}.envelope-shell{position:absolute;inset:0;width:min(590px,100%);margin:auto;perspective:1600px;box-shadow:0 0 110px #183f3530}.envelope-panel{position:absolute;z-index:3;top:0;bottom:0;width:50.15%;background-image:url('assets/celebration-background.webp');background-size:200% 100%;background-repeat:no-repeat;backface-visibility:hidden;will-change:transform;transition:transform 1.95s cubic-bezier(.7,.02,.18,1),filter 1.9s ease}.envelope-left{left:0;background-position:left center;transform-origin:left}.envelope-right{right:0;background-position:right center;transform-origin:right}.gate.opening .envelope-left{transform:rotateY(-100deg) translateX(-18%);filter:drop-shadow(20px 0 30px #183f3530)}.gate.opening .envelope-right{transform:rotateY(100deg) translateX(18%);filter:drop-shadow(-20px 0 30px #183f3530)}.gate.closing .envelope-panel{transition-duration:1.55s}
.gate-layout{position:relative;z-index:7;width:min(500px,100%);height:100%;padding:max(82px,13svh) 36px max(110px,18svh);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(20px,4svh,44px);text-align:center;pointer-events:none}.gate-layout>*{pointer-events:auto;flex-shrink:0}.gate-intro{width:100%;transition:opacity .6s,transform .9s var(--ease)}.gate-intro .eyebrow{font-size:10px;letter-spacing:.11em;margin-bottom:22px}.gate-title{font-size:clamp(42px,6.8vw,64px);font-weight:500;line-height:.99;letter-spacing:-.02em;color:var(--green)}.gate-title i{font-size:.52em;font-weight:500;color:var(--gold)}.gate-intro .ornament{width:160px;margin:23px auto 14px}.gate-welcome{font-size:24px;font-style:italic;color:#766440}.ring-button{position:relative;display:flex;flex-direction:column;align-items:center;gap:18px;width:100%;padding:0;background:none;border:0;transition:opacity .55s,transform .95s var(--ease),filter .8s}.ring-stage{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:102px;height:102px;border-radius:50%;border:1px solid #9f7d43;background:radial-gradient(circle at 30% 20%,#f9e4af,#c4a15d 65%,#a98545);box-shadow:inset 0 0 0 5px #efd5a0,inset 0 0 0 6px #ae8c4d,0 10px 23px #57432230;color:#5b482a;animation:sealFloat 4.5s ease-in-out infinite}.seal-star{font-size:35px;line-height:1.1}.seal-word{font:600 8px/1.4 var(--sans);letter-spacing:.13em;margin-top:2px}.open-label{display:flex;justify-content:center;align-items:center;gap:10px;width:max-content;max-width:100%;min-height:50px;padding:13px 20px;border:1px solid #dec89499;border-radius:99px;background:var(--green);box-shadow:0 10px 24px #183f3525;color:var(--ivory);font:600 10px/1.6 var(--sans);letter-spacing:.02em}.open-label>span{font-size:18px}.gate-hint{color:var(--green);transition:opacity .45s,transform .7s}.gate-hint p{font:600 12px/1.8 var(--sans);letter-spacing:.1em}.gate-hint>span{display:block;margin-top:8px;font:600 9px/1.7 var(--sans);letter-spacing:.08em}.gate-hint i{display:inline-block;width:1px;height:11px;margin:0 9px -2px;background:#a3814760}.gate.unsealed .ring-stage{animation:sealCommit .8s var(--ease) forwards}.gate.unsealed .gate-intro,.gate.unsealed .gate-hint{opacity:0;transform:translateY(-10px);pointer-events:none}.gate.opening .ring-button{opacity:0;transform:translateY(-15px) scale(.8);filter:blur(2px);pointer-events:none}.gate.closing .ring-button{opacity:0;pointer-events:none}.gate-reveal{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:var(--paper);color:var(--green);text-align:center}.gate-reveal>*{opacity:0;transform:translateY(20px);transition:opacity 1s .65s,transform 1.3s .65s var(--ease)}.gate.opening .gate-reveal>*{opacity:1;transform:none}.gate-reveal>span,.gate-reveal>small{font:600 10px var(--sans);letter-spacing:.13em}.gate-reveal strong{font:italic 500 clamp(55px,10vw,85px)/1 var(--serif)}
.toolbar{position:fixed;z-index:30;top:max(12px,env(safe-area-inset-top));left:12px;right:12px;display:flex;justify-content:space-between;align-items:center;pointer-events:none;animation:toolbarIn .8s var(--ease)}.toolbar-right{display:flex;gap:6px}.tool-button{pointer-events:auto;display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:9px 12px;border:1px solid #dec89490;border-radius:99px;background:#183f35ed;box-shadow:0 6px 20px #183f3518;color:var(--ivory);transition:background .3s}.tool-button b{font:600 9px var(--sans)}.tool-button>span{font-size:18px;line-height:1}.tool-button:hover{background:#2d5546}.music-button.playing>span{animation:note 2.5s ease-in-out infinite}.section-nav{position:fixed;z-index:25;top:50%;right:9px;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px}.section-nav a{width:27px;height:28px;display:grid;place-items:center}.section-nav a::before{content:'';width:6px;height:6px;border-radius:50%;background:#183f3544;box-shadow:0 0 0 1px #fff8;transition:transform .5s,background .5s}.section-nav a[aria-current]::before{background:var(--gold);transform:scale(1.65)}
.petals{display:none}.light-specks{position:fixed;z-index:10;inset:0;pointer-events:none;overflow:hidden;opacity:.4;visibility:hidden}.invitation-open .light-specks{visibility:visible}.light-speck{position:absolute;bottom:-4vh;width:3px;height:3px;border-radius:50%;background:var(--gold-light);box-shadow:0 0 8px #ffdf94;animation:speckRise linear infinite}
.lightbox{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;border:0;padding:24px;background:transparent;color:var(--ivory);overflow:auto;opacity:0;transition:opacity .4s}.lightbox[open]{display:grid;place-items:center}.lightbox::backdrop{background:#0b211de8;backdrop-filter:blur(8px);opacity:0;transition:opacity .4s}.lightbox.is-open,.lightbox.is-open::backdrop{opacity:1}.lightbox-frame{position:relative;width:min(1050px,100%);padding:10px;border:1px solid #dec89475;border-radius:22px 5px;background:var(--deep);box-shadow:0 35px 100px #0005;transform:translateY(20px) scale(.98);transition:transform .5s var(--ease)}.lightbox.is-open .lightbox-frame{transform:none}.lightbox-picture{height:min(70dvh,650px);display:grid;place-items:center;overflow:hidden;border-radius:13px 3px;background:var(--deep)}.lightbox-picture img{width:100%;height:100%;object-fit:contain;transition:opacity .22s,transform .45s var(--ease)}.lightbox-picture.changing img{opacity:0;transform:scale(.98)}.lightbox-close{position:absolute;z-index:3;right:18px;top:18px;width:44px;height:44px;border:1px solid #dec89480;border-radius:50%;background:#183f35ed;color:var(--ivory);font:500 29px var(--sans)}.lightbox-footer{display:flex;justify-content:center;align-items:center;gap:12px;padding:16px 7px 6px;text-align:center}.lightbox-footer p{font-size:26px;font-style:italic;line-height:1.1}.lightbox-footer span{display:block;margin-top:8px;font:600 9px var(--sans);color:var(--gold-light)}.lightbox-footer button{width:44px;height:44px;border:1px solid #dec89470;border-radius:50%;background:#fff1;color:var(--ivory);font-size:24px}.toast{position:fixed;z-index:150;left:50%;bottom:max(24px,env(safe-area-inset-bottom));width:max-content;max-width:88vw;padding:13px 20px;border:1px solid #dec89480;border-radius:24px;background:#183f35f2;color:var(--ivory);font:600 11px/1.6 var(--sans);text-align:center;opacity:0;transform:translate(-50%,22px);transition:opacity .4s,transform .5s var(--ease);pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}.copy-buffer{position:fixed;top:-1000px;left:0;width:1px;height:1px;opacity:0}
@keyframes arrowFloat{50%{transform:translateY(5px)}}@keyframes digitTick{from{opacity:.35;transform:translateY(-5px)}to{opacity:1;transform:none}}@keyframes dateHeartbeat{50%{box-shadow:0 0 0 6px #a3814712}}@keyframes goldSweep{0%,20%{transform:translateX(0) rotate(20deg);opacity:0}35%{opacity:.65}65%,100%{transform:translateX(620%) rotate(20deg);opacity:0}}@keyframes silkDrift{to{transform:rotate(5deg) scale(1.08);opacity:.3}}@keyframes venueCinema{to{transform:scale(1.05) translateY(-.5%)}}@keyframes sealFloat{50%{transform:translateY(-5px)}}@keyframes sealCommit{45%{transform:translateY(-10px) scale(1.07)}to{transform:scale(.96);filter:brightness(1.12)}}@keyframes toolbarIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}@keyframes note{50%{transform:rotate(10deg);color:var(--gold-light)}}@keyframes speckRise{0%{opacity:0;transform:translate3d(0,5vh,0)}20%{opacity:.65}100%{opacity:0;transform:translate3d(var(--drift),-105vh,0)}}
@media(min-width:1000px){.toolbar{left:max(16px,calc((100vw - 1000px)/2));right:max(16px,calc((100vw - 1000px)/2))}.hero-content{width:100%}.hero-scene{padding-inline:70px}.names{font-size:53px}}
@media(max-width:720px){.scene{padding:85px 24px 75px}.hero-scene{min-height:max(850px,100svh);padding:99px 38px 135px}.names{font-size:clamp(31px,8.3vw,48px)}.bismillah{font-size:21px;margin-bottom:24px}.hero-content>.eyebrow{font-size:9px;letter-spacing:.06em}.elders{font-size:35px}.occasion-note{font-size:21px}.hero-content .ornament{margin:21px auto}.hero-scene .down-arrow{margin-top:23px}.paper-scene::before,.blush-scene::before,.symbols-scene::before{inset:14px;border-radius:29px 5px}.paper-scene::after,.blush-scene::after,.symbols-scene::after{top:5px}.wedding-scene{padding-inline:24px}.invitation-card{padding:30px 20px 27px;font-size:23px}.children-inline{font-size:22px}.invitation-card .honoree{font-size:26px}.invite-date{font-size:24px}.family-sign strong{font-size:26px}.date-scene h2{font-size:38px}.calendar-card{padding:23px 18px}.calendar-grid{gap:5px}.days time,.days>span{height:36px}.event-card{padding:24px 20px}.wish-grid{grid-template-columns:1fr;width:min(400px,100%);gap:18px}.wish-card{padding:25px 20px}.wish-motif{margin-bottom:12px;font-size:31px}.wish-card h3{font-size:30px}.wish-card p{font-size:23px}.symbols-scene h2{font-size:41px}.venue-visual{border-radius:26px 5px}.venue-visual::after{inset:8px;border-radius:18px 3px}.location-scene{padding-inline:24px}.location-scene h2{font-size:55px}.address{font-size:25px}.visual-note{font-size:8px;letter-spacing:0}.landmark{font-size:24px}.final-scene{min-height:max(830px,100svh);padding:110px 44px 155px}.final-scene .eyebrow{font-size:9px;letter-spacing:.06em}.final-scene .script-heading{font-size:39px}.final-scene h2{font-size:35px}.family-closing{font-size:27px}.section-nav{display:none}.lightbox{padding:14px}.lightbox-picture{height:auto;aspect-ratio:16/10}.lightbox-footer p{font-size:23px}.toolbar{left:8px;right:8px}.tool-button{padding:9px 10px}.tool-button b{font-size:8px}.gate-layout{padding-inline:36px}.gate-title{font-size:52px}}
@media(max-width:375px){.scene{padding-inline:21px}.hero-scene{padding-inline:32px}.names{font-size:8.4vw}.hero-content>.eyebrow{font-size:8px}.bismillah{font-size:19px}.elders{font-size:32px}.invitation-card{padding:28px 17px 24px;font-size:22px}.invitation-card .salaam{font-size:11px}.children-inline{font-size:20px}.invitation-card .honoree{font-size:23px}.invite-date{font-size:23px}.script-heading{font-size:36px}.calendar-card{padding:20px 12px}.calendar-grid{gap:3px}.days time,.days>span{height:33px;font-size:20px}.countdown strong{font-size:36px}.countdown span{font-size:8px}.event-card{padding:22px 14px}.event-line{grid-template-columns:72px 18px 1fr;gap:4px}.event-line time{font-size:31px}.event-line strong{font-size:23px}.event-line small{font-size:16px}.date-scene h2{font-size:34px}.final-scene{padding-inline:34px}.final-scene .script-heading{font-size:35px}.final-scene h2{font-size:32px}.primary-button{font-size:9px;padding-inline:17px;gap:9px}.motion-button b{display:none}.gate-layout{padding-inline:30px}.gate-title{font-size:48px}.gate-intro .eyebrow{font-size:8px}.gate-welcome{font-size:22px}}
@media(max-height:720px){.gate-layout{gap:20px;padding-top:12svh;padding-bottom:17svh}.gate-title{font-size:46px}.gate-intro .eyebrow{margin-bottom:18px;font-size:8px}.gate-intro .ornament{margin:17px auto 12px}.gate-welcome{font-size:22px}.ring-stage{width:84px;height:84px}.ring-button{gap:14px}.seal-star{font-size:30px}.gate-hint p{font-size:10px}}
@media(max-height:580px){.gate-layout{gap:15px;padding-top:12svh;padding-bottom:16svh}.gate-title{font-size:37px}.gate-intro .eyebrow{margin-bottom:13px}.gate-intro .ornament{margin:12px auto 9px}.gate-welcome{font-size:20px}.ring-stage{display:none}.gate-hint>span{margin-top:5px}.gate-hint p{font-size:10px}.open-label{min-height:46px}}
@media(max-height:450px) and (min-width:600px){.gate-layout{width:min(700px,100%);display:grid;grid-template-columns:1.1fr 1fr;gap:16px;padding:45px 70px}.gate-intro{grid-row:1/3}.gate-title{font-size:36px}.ring-button{align-self:end}.gate-hint{align-self:start}.envelope-shell{width:min(760px,100%)}}
.scene:not(.in-view) .silk-light,.scene:not(.in-view) .venue-visual img,.scene:not(.in-view) .venue-glint{animation-play-state:paused}body:not(.invitation-open) .light-specks *,body.page-hidden *,body.page-hidden *::before,body.page-hidden *::after,body.motion-paused *,body.motion-paused *::before,body.motion-paused *::after{animation-play-state:paused!important}.motion-paused .content.reveal{transition-duration:.15s;filter:none}.motion-paused .gate *,.motion-paused .lightbox *{transition-duration:.15s!important}.motion-paused .toolbar,.motion-paused .tick{animation:none!important;opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.1s!important;scroll-behavior:auto!important}.light-specks{display:none}.content.reveal{filter:none;transform:none}.gate.opening .envelope-left{transform:translateX(-110%)}.gate.opening .envelope-right{transform:translateX(110%)}}

.tool-button>span{font-family:Arial,sans-serif}

/* Ceremony edition: embossed ivory, zardozi textiles and emerald silk. */
body{background-color:#eae3d5;background-image:radial-gradient(ellipse at 50% 0,#fffaf0b0,transparent 70%),url('assets/girih-tile.svg');background-size:auto,160px 160px}
.story{width:min(820px,100%);margin-inline:auto;box-shadow:0 0 95px #173c3124;background:#faf5e9}
.scene{width:100%;margin:0;scroll-margin-top:0}
.hero-scene{min-height:1150px;padding:145px 72px 260px;background:#f6e9ce url('assets/sunnat-ivory-stage.webp') center/100% 100% no-repeat;box-shadow:none}
.hero-content{width:100%}.hero-crest,.section-crest,.final-crest{display:grid;place-items:center;flex:none;width:46px;height:46px;margin-bottom:22px;border:1px solid #ad8b4c70;outline:1px solid #ad8b4c27;outline-offset:5px;transform:rotate(45deg);border-radius:12px;color:#9b7738;font:500 29px/1 Georgia,serif;background:#fff8e777;box-shadow:0 6px 16px #80612810}
.hero-crest{width:35px;height:35px;font-size:23px;margin-bottom:25px}.bismillah{font-size:25px;color:#806332;margin-bottom:23px}.hero-content>.eyebrow{font-size:10px;letter-spacing:.12em;margin-bottom:26px;color:#775f37}.names{font-size:52px;line-height:1.14;letter-spacing:-.02em;gap:6px;text-shadow:0 2px 0 #fff8}.occasion-note{font-size:24px;color:#8c6a36;margin-top:12px}.hero-content>.ornament{margin:23px auto;width:185px}
.jubilee-block{position:relative;width:min(390px,100%);padding:21px 24px 18px;border-block:1px solid #ab884b60;background:linear-gradient(90deg,#fff9e300,#fffaf075 24%,#fffaf075 76%,#fff9e300)}.jubilee-block::before,.jubilee-block::after{content:'◆';position:absolute;left:50%;font-size:7px;line-height:1;color:#a38147;transform:translateX(-50%);padding:0 8px;background:#f9efdc}.jubilee-block::before{top:-4px}.jubilee-block::after{bottom:-4px}.elders{font-size:42px;line-height:1.08;gap:2px}.elders i{font-size:22px;line-height:1.25}.jubilee-block .occasion-note{font-size:22px;margin-top:10px}.date-card{margin-top:28px;background:linear-gradient(115deg,#fffdf6,#fff8e4);border-color:#a8854680;border-radius:4px;box-shadow:0 12px 30px #9b763916,inset 0 0 0 4px #fff8}.date-card strong{font-size:12px;letter-spacing:.11em}.date-card>span{font-size:9px}.hero-scene .down-arrow{background:#fff9e6c9;border-color:#a3814770}
.wedding-scene,.location-scene{background-color:#fbf7ed;background-image:radial-gradient(ellipse at 50% 45%,#fffdf8 8%,#fffaf3ec 40%,#f6edda99 85%),url('assets/girih-tile.svg');background-size:auto,145px 145px}
.paper-scene::before,.symbols-scene::before{inset:24px;border:1px solid #b08d4a75;border-radius:3px;box-shadow:inset 0 0 0 7px #fff8,inset 0 0 0 8px #b08d4a20}.paper-scene::after,.symbols-scene::after{top:15px;background:#fbf7ed;color:#a07c3f;padding-inline:17px}
.wedding-scene{padding:105px 48px 90px}.wedding-scene .content{width:min(590px,100%)}.wedding-scene .eyebrow,.location-scene .eyebrow{color:#8d6d36;letter-spacing:.16em}.wedding-scene .script-heading{font-size:57px;line-height:1.02;font-style:normal;font-weight:500}.wedding-scene .ornament{width:200px;margin:27px auto}
.invitation-card{padding:40px 32px 36px;border-radius:60px 60px 5px 5px;border-color:#b08d4a88;background:linear-gradient(135deg,#fffefb,#fff9ec 85%);box-shadow:0 24px 50px #6e542712,inset 0 0 0 6px #fff7;line-height:1.5}.invitation-card::after{inset:9px;border-color:#b08d4a35;border-radius:52px 52px 2px 2px}.invitation-card .salaam{margin-bottom:22px;color:#745629;font-size:13px;letter-spacing:.04em}.children-inline{font-size:25px;margin:22px 0 20px}.invitation-card .honoree{font-size:29px;color:#23493b}.invite-date{border-block-color:#b08d4a60;background:linear-gradient(90deg,transparent,#eee1c64d,transparent);padding:18px 0}.family-sign{padding:22px 23px 0;margin-top:26px;border-top:1px solid #b08d4a50;font-size:22px}.family-sign strong{font-size:29px}.family-sign::after{content:'✦';display:block;margin-top:17px;font-size:16px;color:var(--gold)}
.date-scene{min-height:0;padding:120px 46px 135px;background:#063d2d url('assets/jubilee-emerald-silk.webp') center/100% 100% no-repeat}.date-scene::before,.date-scene::after{display:none}.date-scene .section-crest{color:#e9d29d;background:#174a3566;border-color:#e9d29d80;outline-color:#e9d29d30}.date-scene>.content>.eyebrow{color:#e3d4ac;letter-spacing:.12em}.date-scene h2{color:#fff5dc;font-size:49px;font-weight:500}.date-scene>.content>.section-note{color:#d7c69f;font-size:24px}.calendar-card{width:min(440px,100%);border-radius:33px 33px 4px 4px;padding:28px 25px;background:linear-gradient(125deg,#fffefa,#f9f0df);border:1px solid #e4c889;box-shadow:0 22px 45px #031e2740,inset 0 0 0 7px #fff8}.calendar-title span{color:#886936;font-size:15px;letter-spacing:.17em}.calendar-title strong{color:#a88242}.calendar-grid{gap:7px}.weekdays{color:#6d7054}.days time{color:#284339}.days .event-day{color:#fff8e9;background:linear-gradient(135deg,#42664d,#173f31);box-shadow:0 0 0 4px #b18d4930,0 7px 12px #123d3120}.event-day small{background:#d6b976;color:#183f35}.countdown{width:min(440px,100%);background:linear-gradient(120deg,#fff9e9,#f4e7cc);border-color:#dbc389;border-radius:4px;box-shadow:0 15px 30px #031e2720}.countdown strong{font-size:45px;color:#1a4535}.countdown span{color:#6a6b50}.event-card{width:min(440px,100%);border-radius:4px 4px 28px 28px;border-color:#dbc389;background:linear-gradient(120deg,#fff9e9,#f4e7cc);box-shadow:0 15px 30px #031e2720}.event-card .script-heading{color:#8b682e;font-size:33px}.event-line strong,.event-line time{color:#254a39}.event-line small{color:#6a6b50}.date-scene .calendar-link{color:#e7d9b5;border-bottom-color:#d0b77c88}.date-scene .down-arrow{color:#e7d9b5;border-color:#d0b77c88;background:#0c3c2d99}
.symbols-scene{background-color:#f8f1e1;background-image:radial-gradient(ellipse at 50% 50%,#fffaf0ed 25%,#fff9ea66),url('assets/girih-tile.svg');background-size:auto,155px 155px;color:#294638;padding:105px 42px 95px}.symbols-scene .eyebrow{color:#8e703c}.symbols-scene h2{color:#234838;font-size:47px;font-weight:500}.symbols-scene::before{border-color:#b08d4a65;box-shadow:inset 0 0 0 7px #fff5,inset 0 0 0 8px #b08d4a20}.symbols-scene::after{background:#f8f1e1;color:#a07c3f}.wish-grid{gap:22px;margin-top:36px}.wish-card{position:relative;overflow:hidden;padding:35px 22px 31px;border:1px solid #b7955680;border-radius:90px 90px 4px 4px;background:linear-gradient(125deg,#fffdf6,#f0e4cb);box-shadow:0 15px 35px #765c2712,inset 0 0 0 6px #fff7}.wish-card::after{content:'';position:absolute;inset:9px;border:1px solid #b7955638;border-radius:82px 82px 1px 1px;pointer-events:none}.wish-card:nth-child(2){background:#174d38 url('assets/jubilee-emerald-silk.webp') center/cover;border-color:#ba9b5f}.wish-motif{display:grid;place-items:center;width:67px;height:67px;margin:0 auto 25px;border:1px solid #b08d4a99;outline:1px solid #b08d4a30;outline-offset:5px;border-radius:50%;font-size:34px;color:#9f7c3c;background:#f9edce;box-shadow:inset 0 0 0 4px #fff6}.wish-card h3{font-size:30px;color:#284c3b;font-weight:600}.wish-card p{font-size:23px;color:#6a6b50;line-height:1.5}.wish-card:nth-child(2) .wish-motif{background:linear-gradient(135deg,#efdcad,#b6934e);color:#274d39}.wish-card:nth-child(2) h3{color:#f2dfb2}.wish-card:nth-child(2) p{color:#e7e3cf}.wishes-note{font-size:23px;color:#8e7340;margin-top:30px}.symbols-scene .down-arrow{color:#254a39;border-color:#a3814780;background:#fff8e899}
.location-scene{padding:105px 48px 100px}.location-scene .content{width:100%}.location-scene h2{font-size:69px;color:#254a39;letter-spacing:.015em}.location-scene h2 span{font-size:.55em;letter-spacing:0}.address{color:#8b7044;font-size:27px;margin-bottom:30px}.venue-visual{border-radius:55px 55px 4px 4px;border:1px solid #bc9b5c;box-shadow:0 22px 50px #80612825,0 0 0 6px #fffaf0,0 0 0 7px #bc9b5c60}.venue-visual::after{border-radius:46px 46px 1px 1px;border-color:#fff3d999}.visual-note{color:#82785e}.landmark{color:#8b7044;font-size:26px}.location-scene .primary-button{width:min(330px,100%);margin-top:23px;min-height:56px}.qr-card{border-radius:4px;border-color:#b08d4a70;padding:16px 18px 13px;box-shadow:0 13px 30px #80612810,inset 0 0 0 4px #fcf6e8}.qr-card img{width:180px;height:180px}
.final-scene{min-height:max(890px,100svh);padding:125px 65px 175px;background:#063d2d url('assets/jubilee-emerald-silk.webp') center/100% 100% no-repeat;box-shadow:none}.final-crest{width:65px;height:65px;margin-bottom:36px;border-color:#dfc98e;outline-color:#dfc98e45;background:linear-gradient(135deg,#f0e0b6,#bd9956);color:#1b4b35;font-size:39px;box-shadow:0 12px 25px #001f2066}.final-scene .eyebrow{color:#d7c496;letter-spacing:.12em}.final-scene .script-heading{font-size:55px;color:#fff4d8;font-weight:500}.final-scene .ornament{color:#dcc58d}.final-scene .ornament i{background:linear-gradient(90deg,transparent,#dcc58d)}.final-scene h2{font-size:41px;color:#f7f0dc;line-height:1.25}.final-date{color:#e9d7aa;font-size:13px;letter-spacing:.06em}.final-date span{font-size:10px;margin-top:8px}.final-scene .primary-button{min-height:56px;background:linear-gradient(115deg,#f1dfb4,#d4b676 60%,#b9934d);color:#143d2b;border-color:#f1dfb4;box-shadow:0 15px 30px #001e1840;font-weight:700}.family-closing{font-size:31px;color:#f2dfb5;margin-top:31px}.final-scene .text-button{color:#dac99f;border-color:#c2a56a90;margin-top:25px}.primary-button{letter-spacing:.035em}
@media(min-width:1000px){.toolbar{left:max(16px,calc((100vw - 770px)/2));right:max(16px,calc((100vw - 770px)/2))}.section-nav{right:max(10px,calc((100vw - 810px)/2))}}
@media(max-width:720px){.story{box-shadow:none}.hero-scene{min-height:1080px;padding:123px 40px 235px}.hero-crest{width:28px;height:28px;font-size:20px;margin-bottom:21px;border-radius:8px}.bismillah{font-size:21px;margin-bottom:21px}.hero-content>.eyebrow{font-size:9px;letter-spacing:.06em;margin-bottom:22px}.names{font-size:clamp(29px,8.1vw,46px);line-height:1.15;gap:5px}.occasion-note{font-size:21px;margin-top:10px}.hero-content>.ornament{margin:22px auto;width:165px}.jubilee-block{padding:17px 11px 15px;width:min(315px,100%)}.elders{font-size:35px}.elders i{font-size:20px}.jubilee-block .occasion-note{font-size:20px;margin-top:8px}.date-card{margin-top:24px;padding:15px 16px}.date-card strong{font-size:11px}.date-card>span{font-size:8px}.hero-scene .down-arrow{margin-top:23px}.paper-scene::before,.symbols-scene::before{inset:13px;box-shadow:inset 0 0 0 5px #fff6,inset 0 0 0 6px #b08d4a20}.paper-scene::after,.symbols-scene::after{top:5px;font-size:15px}.section-crest{width:34px;height:34px;font-size:23px;margin-bottom:23px;border-radius:9px}.wedding-scene{padding:85px 25px 75px}.wedding-scene .script-heading{font-size:42px;line-height:1.03}.wedding-scene .eyebrow{font-size:9px;letter-spacing:.11em}.wedding-scene .ornament{margin:24px auto;width:175px}.invitation-card{padding:34px 20px 28px;font-size:23px;border-radius:42px 42px 4px 4px}.invitation-card::after{inset:8px;border-radius:35px 35px 1px 1px}.invitation-card .salaam{font-size:11px;letter-spacing:0}.children-inline{font-size:22px;line-height:1.38;margin:19px 0}.invitation-card .honoree{font-size:26px}.invite-date{font-size:24px;padding:16px 0}.family-sign{font-size:21px;padding:21px 12px 0}.family-sign strong{font-size:27px}.date-scene{padding:100px 28px 125px}.date-scene h2{font-size:36px}.date-scene>.content>.eyebrow{font-size:9px;letter-spacing:.08em}.date-scene>.content>.section-note{font-size:22px}.calendar-card{padding:24px 16px;border-radius:27px 27px 4px 4px}.calendar-grid{gap:5px}.days time,.days>span{height:35px;font-size:22px}.calendar-title span{font-size:13px}.calendar-title strong{font-size:25px}.countdown strong{font-size:40px}.countdown span{font-size:8px}.event-card{padding:24px 18px;border-radius:4px 4px 23px 23px}.event-line{grid-template-columns:78px 21px 1fr;gap:3px}.event-line time{font-size:34px}.event-line strong{font-size:25px}.event-line small{font-size:16px}.symbols-scene{padding:90px 26px 85px}.symbols-scene h2{font-size:39px}.symbols-scene .eyebrow{font-size:9px}.wish-grid{gap:21px;width:min(360px,100%);margin-top:32px}.wish-card{padding:30px 22px 27px;border-radius:70px 70px 4px 4px}.wish-card::after{border-radius:62px 62px 1px 1px}.wish-card h3{font-size:30px}.wish-card p{font-size:23px;line-height:1.4}.wish-motif{width:57px;height:57px;font-size:29px;margin-bottom:22px}.wishes-note{font-size:22px;max-width:260px}.location-scene{padding:90px 27px 85px}.location-scene h2{font-size:57px}.address{font-size:25px;margin-bottom:28px}.venue-visual{border-radius:34px 34px 3px 3px}.venue-visual::after{border-radius:27px 27px 1px 1px}.landmark{font-size:24px}.location-scene .primary-button{min-height:54px}.qr-card img{width:180px;height:180px}.final-scene{min-height:max(920px,100svh);padding:115px 40px 155px}.final-crest{width:51px;height:51px;font-size:31px;margin-bottom:32px}.final-scene .script-heading{font-size:40px}.final-scene .eyebrow{font-size:8px;letter-spacing:.08em}.final-scene h2{font-size:34px}.final-date{font-size:11px;letter-spacing:.02em}.final-date span{font-size:8px;letter-spacing:0}.family-closing{font-size:28px}.final-scene .primary-button{font-size:9px;padding-inline:20px;gap:10px}.final-scene .text-button{font-size:9px}}
@media(max-width:375px){.hero-scene{padding-inline:31px;min-height:1020px;padding-top:115px;padding-bottom:215px}.names{font-size:8.1vw;letter-spacing:-.025em}.bismillah{font-size:19px}.hero-content>.eyebrow{font-size:8px}.elders{font-size:31px}.jubilee-block{padding-inline:8px}.date-card strong{font-size:10px}.date-card>span{font-size:7px}.date-card b{font-size:24px}.wedding-scene{padding-inline:22px}.wedding-scene .script-heading{font-size:38px}.invitation-card{padding-inline:16px;font-size:21px}.invitation-card .salaam{font-size:10px}.children-inline{font-size:19px}.invitation-card .honoree{font-size:23px}.invite-date{font-size:22px}.family-sign strong{font-size:25px}.date-scene{padding-inline:23px}.date-scene h2{font-size:32px}.calendar-card{padding-inline:11px}.calendar-grid{gap:3px}.days time,.days>span{font-size:20px;height:32px}.calendar-title span{font-size:12px}.weekdays{font-size:8px}.countdown strong{font-size:34px}.countdown span{font-size:7px}.event-card{padding-inline:14px}.event-line{grid-template-columns:66px 17px 1fr;gap:3px}.event-line time{font-size:30px}.event-line strong{font-size:22px}.event-line small{font-size:15px}.symbols-scene{padding-inline:23px}.symbols-scene h2{font-size:35px}.wish-card{padding-inline:15px}.wish-card h3{font-size:28px}.wish-card p{font-size:21px}.location-scene{padding-inline:23px}.location-scene h2{font-size:52px}.final-scene{padding-inline:31px}.final-scene .script-heading{font-size:36px}.final-scene h2{font-size:30px}.final-scene .primary-button{padding-inline:14px;font-size:8px;gap:8px}.family-closing{font-size:26px}}
