/* Easy Wedding (easywedding.in) — original design & code © 2026 Chandan Kumar Mahato. All rights reserved. Origin fingerprint: EW-ORIGIN-2026-369eafc22a98. Unauthorised copying is prohibited. */
@font-face{font-family:GardenScript;src:url('assets/GardenScript.otf') format('opentype');font-display:swap}
@font-face{font-family:GardenSerif;src:url('assets/GardenSerif.otf') format('opentype');font-display:swap}
:root{--paper:#faf5e9;--ink:#514938;--gold:#917244;--wine:#701d2c;--line:#b8a48066;--serif:'Cormorant Garamond',GardenSerif,Georgia,serif;--script:'Great Vibes',GardenScript,cursive;--sans:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:#f1eadf;color:var(--ink);font-family:var(--serif);font-size:19px;line-height:1.55;-webkit-font-smoothing:antialiased}body.sealed{overflow:hidden}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.6}button,a,input,textarea,select{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #9d7239;outline-offset:5px}a{color:inherit}button{color:inherit}img{max-width:100%;display:block}[hidden]{display:none!important}p,h1,h2,h3{margin:0}button{border:0}h1,h2,h3{font-weight:400}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.opening{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;background:var(--paper);overflow:hidden;transition:opacity .9s ease,visibility .9s;perspective:1600px}.opening.done{opacity:0;visibility:hidden;pointer-events:none}.opening-eyebrow,.opening-footer{position:absolute;left:12px;right:12px;text-align:center;font:10px/1.6 var(--sans);letter-spacing:.23em;text-transform:uppercase;color:#796d59;z-index:2}.opening-eyebrow{top:max(17px,env(safe-area-inset-top))}.opening-footer{bottom:max(17px,env(safe-area-inset-bottom));font-size:9px;letter-spacing:.17em}.envelope-scene{position:relative;width:min(94vw,calc(85svh * .5628),470px);aspect-ratio:941/1672;perspective:1300px;transform-style:preserve-3d;box-shadow:0 20px 70px #654d2920;transition:transform 2.8s cubic-bezier(.18,.7,.2,1) .6s}.paper-panel{position:absolute;inset:0;background:url('assets/envelope.webp') center/100% 100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-style:preserve-3d;will-change:transform;transition:transform 2.2s cubic-bezier(.2,.72,.24,1),filter 1.8s;pointer-events:none}.panel-top{clip-path:polygon(0 0,100% 0,50% 47.25%);transform-origin:50% 0;z-index:5;transition-delay:.35s}.panel-left{clip-path:polygon(0 0,50.1% 47.25%,0 90.7%);transform-origin:0 50%;z-index:4;transition-delay:1.0s}.panel-right{clip-path:polygon(100% 0,100% 90.7%,49.9% 47.25%);transform-origin:100% 50%;z-index:4;transition-delay:1.15s}.panel-bottom{clip-path:polygon(0 90.4%,50% 47.1%,100% 90.4%,100% 100%,0 100%);transform-origin:50% 100%;z-index:3;transition-delay:1.5s}.envelope-inner{position:absolute;inset:0;background:var(--paper) url('assets/garden.webp') center/cover;display:flex;align-items:center;flex-direction:column;justify-content:flex-start;padding:25% 12% 0;text-align:center;opacity:0;transform:scale(.93);transition:opacity 1s .3s,transform 3s .5s}.inner-label{font:8px var(--sans);text-transform:uppercase;letter-spacing:.15em;color:var(--gold)}.inner-names{font:clamp(30px,7vw,52px)/1.6 var(--script);color:var(--gold);margin-top:25px}.wax-seal{padding:0;background:transparent;position:relative;isolation:isolate;filter:drop-shadow(0 7px 6px #3b15082c)}.wax-seal img{width:100%;height:100%;object-fit:contain}.wax-seal span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#e9ca87;text-shadow:0 1px #41110d;font-family:var(--script)}.opening-seal{position:absolute;z-index:8;width:25%;aspect-ratio:1;left:50%;top:47.2%;transform:translate(-50%,-50%) rotate(-7deg);transition:transform .7s ease,opacity .6s ease,filter .25s}.opening-seal:hover{filter:drop-shadow(0 9px 8px #3b15084c) brightness(1.08);transform:translate(-50%,-50%) rotate(-3deg) scale(1.045)}.opening-seal .monogram{font-size:clamp(22px,5.5vw,39px);padding:5px 4px 0 0}.opening-prompt{position:absolute;z-index:7;left:0;right:0;top:calc(47.2% + 9.3%);text-align:center;color:#72604a;transition:opacity .4s}.opening-prompt span{display:block;font:clamp(22px,4.5vw,28px)/1.3 var(--script)}.opening-prompt small{font:8px var(--sans);letter-spacing:.2em;text-transform:uppercase}.envelope-address{position:absolute;left:12%;right:12%;bottom:11%;text-align:center;color:#8a7861;font-size:11px;letter-spacing:.035em;z-index:5;transition:opacity .3s}.envelope-address span{display:block;font:26px/1.4 var(--script);margin-top:4px}.is-opening .opening-seal{transform:translate(-50%,-90%) translateZ(150px) rotate(10deg) scale(1.25);opacity:0;pointer-events:none}.is-opening .opening-prompt,.is-opening .envelope-address,.is-opening .opening-eyebrow,.is-opening .opening-footer{opacity:0}.is-opening .panel-top{transform:rotateX(162deg);filter:brightness(.9)}.is-opening .panel-left{transform:rotateY(-150deg);filter:brightness(.8)}.is-opening .panel-right{transform:rotateY(150deg);filter:brightness(.8)}.is-opening .panel-bottom{transform:rotateX(-140deg);filter:brightness(.8)}.is-opening .envelope-inner{opacity:1;transform:scale(1)}.is-opening .envelope-scene{transform:scale(1.12)}
.invitation{max-width:560px;margin:0 auto;background:var(--paper);overflow:hidden;min-height:100vh;box-shadow:0 0 70px #7c644414}.hero{position:relative;aspect-ratio:941/1672;width:100%;isolation:isolate}.hero-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1}.hero-copy{text-align:center;position:absolute;top:15%;left:16%;right:16%;color:var(--gold)}.eyebrow{font:9px/1.7 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:#776a55}.hero .eyebrow{font-size:clamp(7px,1.8vw,10px);letter-spacing:.2em}.hero h1{font-family:var(--script);font-size:clamp(64px,15vw,104px);line-height:1.05;margin:24px -8% 14px;overflow-wrap:anywhere}.hero h1 span{display:block}.hero h1 i{display:block;font:italic 31px/1.5 var(--serif);color:#9c835a;margin:4px 0 6px}.hero h1:focus{outline:none}.hero-labels{display:flex;justify-content:center;align-items:stretch;margin:24px auto 0;max-width:360px}.hero-label{flex:1;display:flex;flex-direction:column;gap:5px;padding:2px 20px}.hero-label+.hero-label{border-left:1px solid #b8a48088}.hero-label span{font:14px/1.5 var(--serif);letter-spacing:.18em;color:var(--gold);white-space:nowrap}.hero-label small{font:8px/1.5 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:#776a55}.hero-tagline{font:italic 20px/1.65 var(--serif);color:#8a6f45;white-space:pre-line;margin:22px auto 0;max-width:320px}.hero-tagline:empty{display:none}.scroll-cue{text-decoration:none;display:inline-flex;flex-direction:column;align-items:center;margin-top:27px;gap:5px;font:21px/1.3 var(--script)}.arrow-down{font:20px/1.2 var(--serif);animation:float-arrow 2.5s ease-in-out infinite}.section{position:relative;padding:65px 45px;text-align:center;scroll-margin-top:10px}.script-heading{font-family:var(--script);font-size:clamp(38px,8vw,51px);line-height:1.24;color:var(--gold);margin:16px 0 22px;text-wrap:balance;white-space:pre-line}.body-copy{font-size:19px;line-height:1.7;white-space:pre-line;text-wrap:pretty}.small-copy{font-size:15px;line-height:1.6;white-space:pre-line}.family-line{font-size:16px;line-height:1.7;margin-top:27px;white-space:pre-line;color:#776a55}.fine-divider{display:flex;align-items:center;gap:15px;justify-content:center;color:var(--gold);margin:24px auto;width:130px;font-size:19px}.fine-divider:before,.fine-divider:after{content:'';height:1px;background:var(--line);flex:1}.welcome{padding-top:56px;padding-bottom:50px}.welcome .script-heading{font-size:49px;max-width:340px;margin:20px auto}.welcome:after{content:'';position:absolute;inset:auto 25% 0;height:1px;background:var(--line)}
.date-section{padding-top:59px}.date-section .script-heading{margin-bottom:10px}.scratch-row{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin:27px auto 8px;max-width:350px}.scratch-tile{position:relative;aspect-ratio:.94;border:1px solid #b29c7766;background:#f7edd9;overflow:hidden;border-radius:48% 48% 5px 5px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:inset 0 0 0 4px var(--paper),inset 0 0 0 5px #b29c7740}.scratch-tile canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;transition:opacity .65s ease;cursor:crosshair}.scratch-tile.revealed canvas{opacity:0;pointer-events:none}.scratch-tile .date-value{font-size:38px;line-height:1.2;color:var(--wine);padding-top:9px}.scratch-tile small{font:8px/2 var(--sans);letter-spacing:.19em;text-transform:uppercase;color:#796e5d}.text-button{background:none;padding:13px 5px;min-height:44px;font:11px/1.5 var(--sans);letter-spacing:.04em;color:#796747;text-decoration:underline;text-underline-offset:5px}.text-button:hover{color:var(--wine)}.text-button span{margin-left:6px}.countdown-block{margin-top:45px;padding-top:25px;border-top:1px solid var(--line)}.script-subheading{font:34px/1.3 var(--script);color:var(--gold);margin:13px 0 26px}.countdown{display:flex;align-items:flex-start;justify-content:center;gap:13px}.countdown div{min-width:40px}.countdown span{font:36px/1.1 var(--serif);font-variant-numeric:tabular-nums;color:var(--wine)}.countdown small{display:block;font:7px/2 var(--sans);letter-spacing:.15em;text-transform:uppercase;margin-top:7px}.countdown b{font-weight:400;font-size:25px;line-height:1.1;opacity:.5}.event-datetime{margin:26px 0 18px}.outline-button{background:transparent;display:inline-flex;gap:22px;align-items:center;justify-content:center;border:1px solid #ad967166;padding:13px 20px;font:10px/1.5 var(--sans);text-transform:uppercase;letter-spacing:.13em;text-decoration:none;min-height:44px;transition:background .2s,color .2s}.outline-button:hover{background:#eadfc9;color:#4b261c}.outline-button span{font-size:16px;line-height:1}.schedule-section{padding:12px 25px 55px}.paper-card{position:relative;padding:49px 27px 45px;background:#fffaf0;box-shadow:0 8px 30px #836b4310;filter:drop-shadow(0 2px 2px #7e674312);clip-path:polygon(0 .5%,3% 0,7% .7%,10% .2%,14% .7%,19% 0,25% .5%,31% .2%,37% .7%,43% 0,49% .5%,55% .1%,63% .6%,68% 0,75% .7%,81% .2%,89% .7%,94% 0,100% .5%,99.5% 10%,100% 25%,99.6% 43%,100% 62%,99.5% 79%,100% 99.4%,95% 100%,89% 99.4%,83% 99.9%,74% 99.3%,68% 100%,60% 99.5%,53% 100%,46% 99.4%,37% 99.9%,29% 99.4%,22% 100%,15% 99.5%,9% 100%,3% 99.4%,0 100%,.5% 81%,0 59%,.4% 38%,0 19%)}.paper-card:before{content:'';position:absolute;inset:15px;border:1px solid #bea78135;pointer-events:none}.timeline{text-align:left;list-style:none;margin:37px 0 27px;padding:0;position:relative}.timeline li{display:grid;grid-template-columns:65px 27px 1fr;gap:13px;min-height:85px;position:relative;align-items:start}.timeline li:before{content:'';position:absolute;left:91px;top:10px;bottom:-10px;width:1px;background:#b69b756b}.timeline li:last-child{min-height:50px}.timeline li:last-child:before{display:none}.timeline time{font:12px/24px var(--serif);white-space:nowrap;text-align:right;color:#887045}.timeline .timeline-marker{background:var(--gold);width:7px;height:7px;transform:rotate(45deg);justify-self:center;margin-top:8px;outline:5px solid #fffaf0}.timeline h3{font-size:21px;line-height:1.2}.timeline p{font-size:13px;line-height:1.5;margin:7px 0 22px;color:#817563}.card-footnote{font-size:13px;font-style:italic;color:#86765e;margin:24px 0 0}.venue-section{padding-top:15px}.venue-section .script-heading{font-size:43px}.venue-illustration{height:200px;width:100%;background:url('assets/garden.webp') center 87%/100% auto;border-radius:48% 48% 0 0;margin:24px auto;box-shadow:inset 0 0 25px 13px var(--paper);max-width:300px}.venue-image-wrap{margin:28px auto;max-width:350px;aspect-ratio:1.5;overflow:hidden;border-radius:45% 45% 0 0}.venue-image-wrap img{width:100%;height:100%;object-fit:cover}.venue-name{font-size:29px;line-height:1.3;color:var(--gold);margin:18px 0 8px}.venue-address{font-size:17px;line-height:1.6;white-space:pre-line}.venue-section .small-copy{margin:14px auto 23px;max-width:350px}.venue-section .text-button{display:block;margin:8px auto 0}.map-area{margin-top:20px}.map-area iframe{width:100%;height:260px;border:1px solid var(--line);background:#efe7d6}.map-area .small-copy{font-size:12px;margin:12px 0}.notes-section{padding:0 25px 50px}.notes-card{padding:47px 38px}.notes-card h3{font-size:22px;color:var(--gold);margin:23px 0 10px}.notes-card p:not(.eyebrow){font-size:17px;line-height:1.6;white-space:pre-line}.notes-card #extra-note p{border-top:1px solid var(--line);margin-top:25px;padding-top:22px;font-size:15px}.rsvp-section{padding:35px 37px 64px}.rsvp-section .body-copy{font-size:18px}.rsvp-section #rsvp-deadline{margin:18px 0;color:#8b795c}.rsvp-seal{width:110px;height:110px;margin:10px auto 4px;transition:transform .3s}.rsvp-seal span{font:20px var(--serif);letter-spacing:.12em;padding-left:3px}.rsvp-seal:hover{transform:rotate(-7deg) scale(1.06)}.rsvp-section>p:last-child{font-size:12px;color:#8b795c}.closing{padding:25px 40px 20px;text-align:center;background:linear-gradient(var(--paper) 5%,#faf5e9c7 100%),url('assets/garden.webp') center bottom/cover;min-height:430px}.couple-photo-wrap{aspect-ratio:4/5;max-width:270px;margin:0 auto 40px;border-radius:48% 48% 0 0;overflow:hidden;padding:7px;border:1px solid var(--line)}.couple-photo-wrap img{width:100%;height:100%;object-fit:cover;border-radius:48% 48% 0 0}.closing-script{font:37px/1.4 var(--script);color:var(--gold);margin-top:20px}.closing-names{font:47px/1.4 var(--script);color:var(--wine);margin:15px 0;overflow-wrap:anywhere}.closing .text-button{display:block;margin:18px auto 25px}.signature{font:7px/1.5 var(--sans);letter-spacing:.22em;margin:50px 0 15px;color:#98876e}.guest-controls{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));right:18px;z-index:20}.music-toggle{border:1px solid #e8d2bb66;border-radius:50%;background:var(--wine);color:#f7ead0;display:flex;align-items:center;justify-content:center;width:56px;height:56px;min-height:0;padding:0;box-shadow:0 6px 22px #4e2e3845;font:9px/1 var(--sans);letter-spacing:.05em;transition:transform .25s ease,background .25s ease}.music-toggle:hover{transform:scale(1.07)}.music-toggle #music-label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.music-bars{display:flex;align-items:center;gap:2px;width:17px;height:15px}.music-bars i{display:block;width:2px;height:4px;background:#e7c997}.music-bars i:nth-child(2){height:13px}.music-bars i:nth-child(3){height:8px}.music-bars i:nth-child(4){height:11px}.music-toggle[aria-pressed=true] i{animation:music-bars .9s ease-in-out infinite alternate}.music-toggle[aria-pressed=true] i:nth-child(2){animation-delay:-.3s}.music-toggle[aria-pressed=true] i:nth-child(3){animation-delay:-.6s}.guest-notice,.link-warning{font:12px/1.5 var(--sans);background:#fff9ea;border:1px solid var(--line);box-shadow:0 4px 25px #55331b20;padding:14px 20px;position:fixed;bottom:75px;left:50%;transform:translateX(-50%);max-width:calc(100% - 35px);width:max-content;z-index:60}.link-warning{top:15px;bottom:auto;background:#701d2c;color:white;text-align:center}.reveal{opacity:1;transform:none}.motion-ready .reveal{opacity:0;transform:translateY(28px);transition:opacity 1s cubic-bezier(.19,1,.22,1),transform 1s cubic-bezier(.19,1,.22,1)}.motion-ready .reveal.visible{opacity:1;transform:none}
.motion-ready .reveal .timeline li,.motion-ready .reveal .countdown>div,.motion-ready .reveal .scratch-tile{opacity:0;transform:translateY(18px);transition:opacity .85s cubic-bezier(.19,1,.22,1),transform .85s cubic-bezier(.19,1,.22,1)}
.motion-ready .reveal.visible .timeline li,.motion-ready .reveal.visible .countdown>div,.motion-ready .reveal.visible .scratch-tile{opacity:1;transform:none}
.motion-ready .reveal.visible .timeline li:nth-child(2),.motion-ready .reveal.visible .countdown>div:nth-child(3),.motion-ready .reveal.visible .scratch-tile:nth-child(2){transition-delay:.09s}
.motion-ready .reveal.visible .timeline li:nth-child(3),.motion-ready .reveal.visible .countdown>div:nth-child(5),.motion-ready .reveal.visible .scratch-tile:nth-child(3){transition-delay:.18s}
.motion-ready .reveal.visible .timeline li:nth-child(4),.motion-ready .reveal.visible .countdown>div:nth-child(7){transition-delay:.27s}
.motion-ready .reveal.visible .timeline li:nth-child(5){transition-delay:.36s}
.motion-ready .reveal.visible .timeline li:nth-child(n+6){transition-delay:.45s}
.hero-sparkles{position:absolute;inset:0;z-index:1;pointer-events:none;background-image:radial-gradient(circle,#e9cf8f 0 1.2px,transparent 3px);background-size:120px 170px;opacity:.3;-webkit-mask-image:linear-gradient(180deg,#000 15%,transparent 85%);mask-image:linear-gradient(180deg,#000 15%,transparent 85%)}
.arrived .hero-sparkles{animation:sparkle-sway 6s ease-in-out infinite alternate}
@keyframes sparkle-sway{from{transform:translate(0,0)}to{transform:translate(-10px,-14px)}}
dialog{border:1px solid #cab38d;background:var(--paper);color:var(--ink);padding:42px 34px 32px;width:min(440px,calc(100% - 28px));max-height:90svh;overflow:auto;box-shadow:0 20px 100px #27170b60}dialog::backdrop{background:#30251db3;backdrop-filter:blur(5px)}dialog .script-heading{text-align:center;font-size:43px;margin-bottom:22px}dialog .eyebrow{text-align:center}.dialog-close{position:absolute;top:8px;right:9px;width:38px;height:38px;background:transparent;font:26px var(--serif)}#rsvp-form{font:12px/1.5 var(--sans)}#rsvp-form>label{display:block;margin-top:18px}#rsvp-form input:not([type=radio]),#rsvp-form select,#rsvp-form textarea{display:block;width:100%;border:1px solid #b7a58788;background:#fffaf1;color:var(--ink);padding:11px;margin-top:7px;border-radius:2px;font:14px/1.5 var(--sans)}#rsvp-form fieldset{border:0;margin:20px 0 0;padding:0}#rsvp-form legend{margin-bottom:10px}.radio-label{display:flex;align-items:center;gap:8px;padding:5px 0}.radio-label input{accent-color:var(--wine);width:16px;height:16px}.optional{color:#857860}.form-note{font:11px/1.6 var(--sans);color:#87775f;margin:17px 0}.solid-button{display:block;text-align:center;width:100%;background:var(--wine);color:#fff4de;font:11px/1.6 var(--sans);letter-spacing:.06em;padding:15px 18px;text-decoration:none;margin-top:14px;border:0}.solid-button:hover{background:#541324}#rsvp-result{padding-top:16px}#rsvp-result>p:first-child{color:var(--wine)}
@keyframes float-arrow{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes music-bars{to{height:3px;opacity:.6}}
@media(min-width:700px){.opening{background:#f5eee1}.opening-eyebrow{top:22px}.opening-footer{bottom:20px}.guest-controls{right:calc((100% - 560px)/2 + 18px)}.hero-copy{top:15.5%}.hero h1{margin-top:29px}.scroll-cue{margin-top:30px}.hero-date{font-size:18px}}
@media(max-width:380px){.section{padding-left:28px;padding-right:28px}.schedule-section,.notes-section{padding-left:16px;padding-right:16px}.paper-card{padding-left:22px;padding-right:22px}.hero h1{font-size:59px}.hero-copy{top:14%}.hero-date{margin-top:10px}.scroll-cue{margin-top:14px;font-size:19px}.hero h1 i{font-size:24px;line-height:1.2}.hero h1{margin-top:20px;margin-bottom:10px}.timeline li{grid-template-columns:54px 22px 1fr;gap:10px}.timeline li:before{left:75px}.timeline h3{font-size:19px}.countdown{gap:9px}.scratch-row{gap:9px}.opening-footer{font-size:7px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition-duration:.01ms!important;transition-delay:0s!important}.motion-ready .reveal,.motion-ready .reveal .timeline li,.motion-ready .reveal .countdown>div,.motion-ready .reveal .scratch-tile{opacity:1;transform:none}}

/* ---- premium interaction layer: touch ripple, living photos, film grain ---- */
.outline-button,.text-button,.music-toggle,.gallery-controls button{position:relative;overflow:hidden}
.ripple{position:absolute;border-radius:50%;background:currentColor;opacity:.28;transform:scale(0);pointer-events:none;animation:ripple .65s ease-out forwards}
@keyframes ripple{to{transform:scale(1);opacity:0}}
/* living photos: slow cinematic drift on all invitation photography */
#invitation>.couple-photo-wrap img,.venue-image-wrap img,.gallery-frame img{animation:kenburns 24s ease-in-out infinite alternate;will-change:transform}
@keyframes kenburns{from{transform:scale(1) translate(0,0)}to{transform:scale(1.14) translate(-1.5%,1%)}}
/* film grain overlay: subtle cinematic texture over the whole invitation */
.grain{position:fixed;inset:0;z-index:200;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='160' height='160' filter='url(%23n)' opacity='0.6'/></svg>")}
