:root{--ink:#2a0820;--cream:#fff2f2;--pink:#ff70aa;--hot:#f53380;--wine:#650d3e;--lav:#d8b7ff}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:#fff7f9;background:#22071b;font-family:'Hind Siliguri',sans-serif;overflow-x:hidden}button,a{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}img{display:block;width:100%;height:100%;object-fit:cover}::selection{background:#ff84ad;color:#320b22}.noise{pointer-events:none;position:fixed;inset:0;z-index:80;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.3' filter='url(%23n)'/%3E%3C/svg%3E")}.reading{position:fixed;top:0;left:0;width:0;height:3px;z-index:101;background:linear-gradient(90deg,#ffc0dd,#ff4c93,#ad76ff)}#cursorGlow{pointer-events:none;position:fixed;z-index:70;width:280px;height:280px;transform:translate(-50%,-50%);background:radial-gradient(circle,#ff78ac22,transparent 65%);opacity:.65}.nav{height:74px;position:absolute;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:0 5.5vw}.brand{font:800 29px 'Playfair Display',serif;letter-spacing:-1.5px}.brand span{color:#ff77b5}.nav-note{font-size:12px;letter-spacing:2px;color:#fbd1e5}.nav-btn{border:1px solid #ffffff44;background:#ffffff15;border-radius:99px;padding:9px 15px;color:white;font-size:12px;backdrop-filter:blur(10px)}.scene{position:relative;isolation:isolate}.hero{min-height:830px;height:100svh;max-height:1100px;background:radial-gradient(ellipse at 70% 30%,#a42a65 0%,transparent 39%),radial-gradient(ellipse at 15% 85%,#74216a 0%,transparent 50%),linear-gradient(145deg,#25051d,#3b082b 52%,#1d071f);display:grid;grid-template-columns:1.05fr .95fr;align-items:center;padding:100px 9vw 65px;overflow:hidden}.aurora{position:absolute;border-radius:50%;filter:blur(80px);opacity:.45;animation:drift 12s ease-in-out infinite alternate}.a1{background:#f43f89;width:35vw;height:35vw;top:-12%;left:-10%}.a2{background:#8d46ee;width:30vw;height:30vw;bottom:-15%;right:-8%;animation-delay:-5s}.hero-copy{position:relative;z-index:6}.kicker,.eyebrow,.chapter-number,.break-top{letter-spacing:3px;text-transform:uppercase;font-size:12px;font-weight:700;color:#ffd1e4}.intro{font-size:clamp(17px,2vw,24px);margin:27px 0 6px}.hero h1{font-size:clamp(70px,8.2vw,145px);font-weight:700;line-height:1.06;letter-spacing:-3px;margin:0;white-space:nowrap;text-shadow:0 10px 45px #26031655}.hero h1 em{font-style:normal;color:#ff8cbb}.hero h1 span{background:linear-gradient(120deg,#fff1f5,#ff77ae,#e8a7ff);-webkit-background-clip:text;background-clip:text;color:transparent}.hero h1 b{font-size:.4em;vertical-align:top;color:#ffa4cf;font-weight:400}.hero-description{font-size:18px;line-height:1.9;color:#ffe4ef;max-width:450px;margin:28px 0}.cta{display:inline-flex;align-items:center;justify-content:center;gap:28px;padding:17px 27px;background:linear-gradient(110deg,#ff4c8c,#fa84a5);color:#31091d;border:0;border-radius:99px;font-size:16px;font-weight:700;box-shadow:0 15px 50px #f53a7755;transition:transform .3s,box-shadow .3s}.cta:hover{transform:translateY(-5px);box-shadow:0 20px 60px #ff4a8c88}.tinyline{font-size:12px;letter-spacing:1px;margin-top:40px;color:#e9b9d0}.hero-stage{position:relative;width:100%;height:min(650px,65vw);z-index:2}.orbit-ring{position:absolute;inset:12%;border:1px dashed #ffb3d363;border-radius:50%;animation:spin 30s linear infinite}.r2{inset:0%;border-style:solid;border-color:#fbb8d32b;animation-direction:reverse}.hero-photo{position:absolute;inset:10% 17% 11% 15%;margin:0;border:10px solid #fff1e9;background:#fff1e9;transform:rotate(5deg);box-shadow:0 35px 80px #170412aa;border-radius:180px 180px 20px 20px;overflow:hidden;animation:float 6s ease-in-out infinite}.hero-photo img{border-radius:170px 170px 7px 7px}.hero-photo figcaption{position:absolute;bottom:4px;left:0;right:0;text-align:center;color:#59133c;font:italic 15px 'Playfair Display',serif}.hero-mini{position:absolute;margin:0;width:30%;height:34%;border:7px solid #fff0e9;border-bottom-width:22px;box-shadow:0 20px 40px #22071a99}.mini1{top:2%;right:-6%;transform:rotate(12deg);animation:float 7s ease-in-out infinite -2s}.mini2{bottom:0;left:-7%;transform:rotate(-12deg);animation:float 6s ease-in-out infinite -3s}.float-symbol{position:absolute;font-size:55px;color:#ffabd2;animation:float 5s ease-in-out infinite}.fs1{top:0;left:5%}.fs2{bottom:13%;right:1%}.fs3{top:27%;right:-10%}.vertical-mark{position:absolute;right:14px;bottom:110px;writing-mode:vertical-rl;letter-spacing:4px;font-size:10px;color:#f3aacd}.marquee{background:#fa79ad;color:#3d0b29;overflow:hidden;white-space:nowrap;padding:15px 0;font-size:13px;font-weight:700;letter-spacing:3px}.marquee>div{width:max-content;animation:marquee 30s linear infinite}.chapter{padding:110px 8vw 130px;overflow:hidden}.chapter-rose{background:linear-gradient(135deg,#ffb6cb,#f37c9d 45%,#c64b88);color:#481027}.chapter-plum{background:radial-gradient(circle at 75% 50%,#84356c,transparent 40%),linear-gradient(135deg,#330b32,#4b1146)}.chapter-tea{background:linear-gradient(135deg,#fff0e6,#f6c2ca 60%,#e9a0ba);color:#57253d}.chapter-red{background:linear-gradient(130deg,#4e0828,#9e173f 60%,#ec4265)}.chapter-lilac{background:linear-gradient(130deg,#8d5fbb,#c59dd7 50%,#f6b4d0);color:#39153e}.chapter-number{opacity:.7;border-bottom:1px solid currentColor;padding-bottom:18px;margin-bottom:60px}.split{display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:7vw;min-height:570px}.split.reverse .visual-side{grid-column:1;grid-row:1}.split.reverse .text-side{grid-column:2;grid-row:1}.text-side{max-width:580px}.text-side h2,.interlude h2,.gallery-break h2,.letter-section h2,.last-memories h2,.finale h2{font-size:clamp(43px,5.2vw,82px);line-height:1.2;letter-spacing:-1px;margin:22px 0 27px}.text-side h2 i,.interlude h2 i,.gallery-break h2 em,.letter-section h2 i,.last-memories h2 i,.finale h2 em{font-family:'Playfair Display','Hind Siliguri',serif;color:#ff6da8;font-weight:700}.chapter-rose h2 i,.chapter-tea h2 i,.chapter-lilac h2 i{color:#8e1655}.text-side p{font-size:clamp(16px,1.5vw,20px);line-height:2;opacity:.94}.pill{display:inline-block;padding:10px 22px;border:1px solid currentColor;border-radius:50px;margin-top:20px}.visual-side{position:relative;min-height:590px}.scatter .photo-card{position:absolute;display:block;background:#fff7ee;padding:8px 8px 27px;box-shadow:0 24px 45px #22051d44;transition:transform .5s,box-shadow .5s;cursor:zoom-in;border-radius:3px}.scatter .photo-card:hover{transform:translateY(-15px) rotate(0deg)!important;box-shadow:0 30px 55px #26051b77;z-index:12!important}.scatter .photo-card img{object-fit:cover}.scatter .photo-card:nth-child(1){width:48%;height:54%;top:3%;left:23%;transform:rotate(-11deg);z-index:3}.scatter .photo-card:nth-child(2){width:37%;height:43%;top:0;right:-2%;transform:rotate(11deg);z-index:4}.scatter .photo-card:nth-child(3){width:39%;height:44%;bottom:2%;left:0;transform:rotate(8deg);z-index:5}.scatter .photo-card:nth-child(4){width:42%;height:48%;bottom:1%;right:4%;transform:rotate(-8deg);z-index:2}.scatter .photo-card:nth-child(5){width:31%;height:33%;top:32%;left:3%;transform:rotate(16deg);z-index:6}.scribble{position:absolute;bottom:0;left:45%;font:italic 22px 'Playfair Display',serif;white-space:nowrap}.interlude{padding:115px 0 120px;text-align:center;background:radial-gradient(ellipse at 50% 20%,#9b3d7d,#360d35 60%,#21071e)}.interlude h2{margin:25px 0 65px}.interlude h2 i{color:#ffa0c9}.ribbon-photos{display:flex;gap:18px;align-items:center;justify-content:center;width:max-content;position:relative;left:50%;transform:translateX(-50%)}.ribbon-photos .photo-card{width:200px;height:270px;border:7px solid #fff0ec;border-bottom-width:27px;transform:rotate(var(--rot));box-shadow:0 15px 35px #14061766;cursor:zoom-in;transition:transform .3s}.ribbon-photos .photo-card:hover{transform:rotate(0) translateY(-20px);z-index:5}.quote{border-left:4px solid #d73578;padding:22px 25px;margin:28px 0;background:#ffffff5c;border-radius:0 24px 24px 0;font-size:clamp(23px,2.6vw,38px);font-weight:700;line-height:1.55}.quote span{font-size:22px}.handwritten{font:italic 25px 'Playfair Display',serif;color:#ffc2df;margin-top:30px}.gallery-break{text-align:center;background:linear-gradient(145deg,#280923,#4c164e 50%,#251027);padding:100px 6vw 140px}.gallery-break h2 em{color:#ffa6d2}.mosaic{margin:60px auto 0;display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:150px;gap:16px;max-width:1250px}.mosaic .photo-card{overflow:hidden;border-radius:15px;cursor:zoom-in;transition:transform .4s,filter .4s}.mosaic .photo-card:nth-child(6n+1){grid-column:span 2;grid-row:span 2}.mosaic .photo-card:nth-child(6n+4){grid-column:span 2}.mosaic .photo-card:hover{transform:scale(1.04);filter:saturate(1.2);z-index:2}.letter-section{padding:125px 8vw 145px;text-align:center;background:radial-gradient(ellipse at 50% 40%,#a82b6a 0%,#5c134a 48%,#280922 100%);overflow:hidden}.letter-ornament{color:#ffb7d3;font-size:30px;letter-spacing:18px}.letter-section h2 i{color:#ffc1db}.letter-shell{position:relative;max-width:650px;margin:40px auto;z-index:4}.envelope{width:100%;height:320px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;border:1px solid #ffd0e1;background:linear-gradient(145deg,#f9c1d4,#e783a9);color:#6b1741;box-shadow:0 30px 70px #13031799;border-radius:15px;position:relative;overflow:hidden;font-size:26px;font-weight:700}.envelope:before,.envelope:after{content:'';position:absolute;inset:0;clip-path:polygon(0 0,50% 54%,100% 0);background:#ffffff55;pointer-events:none}.envelope:after{clip-path:polygon(0 100%,50% 48%,100% 100%);background:#ba3d7c33}.envelope-heart{font-size:65px;z-index:2;animation:beat 2s infinite}.envelope span,.envelope small{z-index:2}.envelope small{font-size:12px;letter-spacing:2px}.letter-body{text-align:left;color:#64213e;background:#fff9f0;padding:clamp(25px,5vw,65px);border-radius:14px;box-shadow:0 30px 80px #1d031a99;font-size:19px;line-height:2.15;animation:openLetter .8s both}.letter-head{font-size:30px;font-weight:700}.letter-end{font-weight:700}.signature{text-align:right;color:#9e356a;font-style:italic}.letter-side-photo{position:absolute;width:190px;height:245px;padding:7px 7px 24px;background:white;box-shadow:0 15px 35px #1c031d66;top:42%;transform:rotate(-14deg);left:2%;opacity:.8}.lp2{left:auto;right:2%;top:48%;transform:rotate(12deg)}.last-memories{text-align:center;padding:120px 6vw;background:linear-gradient(145deg,#f6b2c9,#e68fbf,#ab6dba);color:#49123a}.last-memories h2 i{color:#8c1a67}.final-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;max-width:1150px;margin:70px auto 0}.final-gallery .photo-card{height:310px;padding:8px 8px 28px;background:#fff9f2;box-shadow:0 15px 30px #5e194344;transform:rotate(var(--rot));transition:transform .3s;cursor:zoom-in}.final-gallery .photo-card:hover{transform:rotate(0) translateY(-15px);z-index:4}.finale{text-align:center;padding:140px 20px 90px;min-height:920px;background:radial-gradient(ellipse at 50% 45%,#8c2868 0%,#440b37 50%,#21051b 95%);overflow:hidden}.finale h2{font:800 clamp(60px,8vw,120px)/1.05 'Playfair Display',serif;letter-spacing:-3px}.finale h2 em{color:#ff9cc5}.finale p{font-size:20px}.cake-wrap{position:relative;width:320px;height:320px;margin:40px auto 20px;filter:drop-shadow(0 25px 35px #1e061eaa)}.cake-glow{position:absolute;inset:30px;background:#ff5eae66;filter:blur(65px);border-radius:50%}.candle{position:absolute;width:15px;height:65px;background:repeating-linear-gradient(45deg,#fff 0 8px,#ff6a9d 8px 15px);left:calc(50% - 7px);top:36px;z-index:4;border-radius:3px}.wick{position:absolute;top:-7px;left:6px;width:2px;height:9px;background:#30232a}.flame{position:absolute;width:20px;height:32px;left:-2px;top:-38px;background:radial-gradient(circle at 50% 70%,#fff9a3 5%,#ffbd39 40%,#ff6084 75%);border-radius:65% 0 65% 65%;transform:rotate(-45deg);box-shadow:0 0 35px #ffd77c;animation:flicker .25s infinite alternate}.flame.out{opacity:0;animation:none}.cake-top{position:absolute;left:45px;right:45px;top:100px;height:90px;background:linear-gradient(#ffd6e5 0 20%,#f7a5c8 20% 100%);border-radius:50% 50% 14px 14px/30% 30% 10px 10px;z-index:3;box-shadow:inset 0 -15px 0 #db639c}.cake-base{position:absolute;left:20px;right:20px;top:170px;height:95px;border-radius:25px 25px 15px 15px;background:linear-gradient(#f7b0cf,#de649b);box-shadow:inset 0 -19px 0 #bb377f;z-index:2}.icing{padding-top:34px;font-size:27px;letter-spacing:22px;color:#fff1ee}.plate{position:absolute;bottom:44px;left:0;right:0;height:24px;border-radius:50%;background:#ffe6ed;z-index:3}.final-note{font:italic 15px 'Playfair Display',serif;margin-top:90px;color:#ffc9e0;letter-spacing:1px}footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:28px 7vw;background:#19051a;color:#e8bfd2;font-size:13px}footer span{font:800 27px 'Playfair Display',serif;color:#ff83b3}footer a{text-decoration:underline}.photo-card{display:block;overflow:hidden}.photo-card img{transition:transform .7s}.photo-card:hover img{transform:scale(1.06)}.reveal{opacity:0;transform:translateY(45px);transition:opacity .85s ease,transform .85s cubic-bezier(.2,.7,.2,1)}.reveal.visible{opacity:1;transform:translateY(0)}.lightbox{position:fixed;inset:0;background:#10030def;z-index:110;display:none;align-items:center;justify-content:center;flex-direction:column;gap:14px;padding:50px 20px 30px}.lightbox.open{display:flex}.lightbox img{object-fit:contain;max-width:90vw;max-height:78vh;width:auto;height:auto;border:7px solid #fff3eb;box-shadow:0 20px 70px #0008}.lightbox button{position:absolute;top:14px;right:24px;font-size:44px;color:#fff;background:transparent;border:0}.lightbox span{font-size:14px;color:#ffc4dc}@keyframes float{0%,100%{translate:0 0}50%{translate:0 -19px}}@keyframes drift{to{transform:translate(90px,70px) scale(1.25)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes marquee{to{transform:translateX(-50%)}}@keyframes flicker{to{transform:rotate(-39deg) scale(1.12)}}@keyframes beat{50%{transform:scale(1.17)}}@keyframes openLetter{from{opacity:0;transform:translateY(25px) scale(.94)}to{opacity:1;transform:none}}@media(max-width:900px){.nav{padding:0 22px}.nav-note{display:none}.hero{grid-template-columns:1fr;height:auto;min-height:100svh;padding:115px 25px 65px;text-align:center}.hero h1{font-size:clamp(55px,12vw,95px)}.hero-description{margin:25px auto}.hero-stage{height:510px;max-width:470px;width:100%;margin:15px auto 0}.vertical-mark{display:none}.split,.split.reverse{display:flex;flex-direction:column;gap:30px}.split.reverse .visual-side,.split.reverse .text-side{grid-column:auto;grid-row:auto}.text-side{max-width:100%}.visual-side{width:100%;max-width:620px;min-height:540px}.chapter{padding:85px 7vw}.chapter-number{margin-bottom:35px}.letter-side-photo{display:none}.mosaic{grid-template-columns:repeat(4,1fr);grid-auto-rows:130px}.final-gallery{grid-template-columns:repeat(2,1fr)}.final-gallery .photo-card{height:290px}}@media(max-width:550px){.hero{padding:105px 18px 45px}.hero h1{font-size:clamp(51px,12vw,70px);letter-spacing:-2px}.hero-stage{height:390px}.hero-photo{inset:9% 15% 10%}.hero-mini{border-width:5px;border-bottom-width:14px}.kicker,.eyebrow{font-size:10px;letter-spacing:2px}.hero-description{font-size:16px}.chapter{padding:72px 6vw 90px}.chapter-number{font-size:10px}.text-side h2,.interlude h2,.gallery-break h2,.letter-section h2,.last-memories h2{font-size:clamp(39px,10vw,55px)}.text-side p{font-size:16px}.visual-side{min-height:410px}.scatter .photo-card{padding:5px 5px 17px}.interlude{padding:80px 0}.ribbon-photos .photo-card{width:130px;height:190px}.mosaic{grid-template-columns:repeat(3,1fr);grid-auto-rows:100px;gap:8px}.gallery-break{padding:80px 4vw}.gallery-break h2{margin-bottom:20px}.final-gallery{gap:12px;margin-top:40px}.final-gallery .photo-card{height:200px;padding:5px 5px 18px}.letter-section{padding:90px 5vw}.envelope{height:250px}.letter-body{font-size:16px}.finale{min-height:820px;padding-top:110px}.finale h2{font-size:clamp(52px,12vw,80px)}.cake-wrap{transform:scale(.85);margin:0 auto}.finale p{font-size:16px}footer{flex-direction:column;text-align:center}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
[hidden]{display:none!important}

/* Gift dedication and continuous left-to-right photo ribbon */
.gift-credit{margin-top:23px;max-width:480px;padding:14px 19px;border:1px solid #ffc7e46e;border-radius:18px;background:linear-gradient(110deg,#ffffff1a,#fa6ca321);box-shadow:0 12px 40px #1d031b45;color:#ffe7f1;font-size:15px;line-height:1.8;backdrop-filter:blur(10px)}
.gift-credit strong{color:#ffd18e;font-size:1.15em}
.ribbon-viewport{width:100%;overflow:hidden;padding:24px 0 38px;mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.ribbon-photos{left:auto;transform:none;justify-content:flex-start;gap:18px;animation:photoRibbonLTR 38s linear infinite;will-change:transform}
.ribbon-photos:hover{animation-play-state:paused}
.ribbon-photos .photo-card{flex:0 0 200px}
@keyframes photoRibbonLTR{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.footer-gift{text-align:center;line-height:1.8}
.footer-gift p{margin:0 0 8px}
.footer-gift strong{color:#ffb3d7}
.fb-credit{display:inline-flex;align-items:center;justify-content:center;padding:8px 15px;border:1px solid #ff83b380;border-radius:999px;background:#ff6da819;color:#ffe5f0;text-decoration:none;font-weight:700;transition:background .2s,transform .2s}
.fb-credit:hover{background:#ff6da84a;transform:translateY(-2px)}
@media(max-width:900px){.gift-credit{margin-left:auto;margin-right:auto}}
@media(max-width:550px){.ribbon-photos .photo-card{flex-basis:130px}.gift-credit{font-size:13px;padding:12px 14px}footer{gap:18px}}
@media(prefers-reduced-motion:reduce){.ribbon-photos{animation:none;transform:none}.ribbon-viewport{overflow-x:auto;mask-image:none}}

/* Discreet footer corner attribution */
footer{position:relative}
.footer-corner-credit{position:absolute;right:18px;bottom:8px;font-size:12px;font-weight:500;opacity:.7;color:inherit;text-decoration:none;white-space:nowrap}
.footer-corner-credit:hover{opacity:1;text-decoration:underline}
@media(max-width:650px){footer{padding-bottom:48px!important}.footer-corner-credit{right:12px;bottom:9px;font-size:11px}}
