:root {
  --ink: #f9f5ef;
  --muted: #bdb6c8;
  --night: #08070d;
  --night-2: #11101a;
  --glass: rgba(255,255,255,.065);
  --glass-strong: rgba(255,255,255,.11);
  --line: rgba(255,255,255,.13);
  --gold: #d9bd83;
  --blush: #e5b6c5;
  --lavender: #a79acb;
  --emerald: #6f9b86;
  --shadow: 0 30px 80px rgba(0,0,0,.35);
  --serif: "Italiana", Georgia, serif;
  --sans: "DM Sans", system-ui, sans-serif;
  --hand: "Caveat", cursive;
  --radius: 28px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--night); }
body {
  margin: 0; color: var(--ink); background: var(--night);
  font-family: var(--sans); font-weight: 300; overflow-x: hidden;
  cursor: none; transition: color .5s ease, background .5s ease;
}
body.is-locked { overflow: hidden; }
body.light {
  --ink: #251f27; --muted: #746b78; --night: #f8f2ea; --night-2: #efe4e7;
  --glass: rgba(255,255,255,.48); --glass-strong: rgba(255,255,255,.72);
  --line: rgba(64,39,54,.12); --shadow: 0 30px 80px rgba(90,64,75,.14);
}
button, a { cursor: none; }
button { font: inherit; }
img { max-width: 100%; display: block; }
[hidden] { display: none !important; }
.skip-link { position: fixed; top: -60px; left: 20px; z-index: 10001; color: #111; background: #fff; padding: 12px 18px; border-radius: 8px; }
.skip-link:focus { top: 20px; }
.noise {
  position: fixed; inset: 0; pointer-events: none; z-index: 9990; opacity: .045;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E");
}
#ambientCanvas, #fireworksCanvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.cursor { position: fixed; left: 0; top: 0; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.65); border-radius: 50%; z-index: 10000; pointer-events: none; mix-blend-mode: difference; transform: translate(-50%,-50%); transition: width .2s, height .2s, background .2s; }
.cursor span { position: absolute; width: 4px; height: 4px; left: 50%; top: 50%; border-radius: 50%; background: #fff; transform: translate(-50%,-50%); }
.cursor.active { width: 58px; height: 58px; background: rgba(255,255,255,.13); }
.preloader { position: fixed; inset: 0; z-index: 12000; display: grid; place-content: center; justify-items: center; gap: 16px; background: #040308; transition: opacity .7s ease, visibility .7s; }
.preloader.done { opacity: 0; visibility: hidden; }
.preloader p { margin: 0; color: #bdb6c8; letter-spacing: .14em; text-transform: uppercase; font-size: .68rem; }
.preloader span { font-family: var(--serif); color: var(--gold); font-size: 1.2rem; }
.preloader-flower, .mini-lily { position: relative; width: 80px; height: 80px; filter: drop-shadow(0 0 18px rgba(255,255,255,.35)); }
.preloader-flower i, .mini-lily i { position: absolute; width: 23px; height: 47px; left: 29px; top: 8px; border-radius: 70% 20% 70% 25%; transform-origin: 50% 85%; background: linear-gradient(135deg,#fff,#d9d1df 70%); }
.preloader-flower i:nth-child(2), .mini-lily i:nth-child(2) { transform: rotate(72deg); }
.preloader-flower i:nth-child(3), .mini-lily i:nth-child(3) { transform: rotate(144deg); }
.preloader-flower i:nth-child(4), .mini-lily i:nth-child(4) { transform: rotate(216deg); }
.preloader-flower i:nth-child(5), .mini-lily i:nth-child(5) { transform: rotate(288deg); }
.preloader-flower b, .mini-lily b { position: absolute; width: 12px; height: 12px; border-radius: 50%; background: var(--gold); left: 34px; top: 34px; box-shadow: 0 0 20px var(--gold); }
.preloader-flower { animation: bloomPulse 2.2s ease-in-out infinite; }
@keyframes bloomPulse { 50% { transform: scale(1.08) rotate(8deg); filter: drop-shadow(0 0 32px rgba(255,255,255,.65)); } }

.site-header { position: fixed; z-index: 9000; top: 0; left: 0; width: 100%; height: 78px; padding: 18px clamp(20px,4vw,64px); display: flex; align-items: center; justify-content: space-between; opacity: 0; pointer-events: none; transition: opacity .5s; }
.site-header.visible { opacity: 1; pointer-events: auto; }
.site-header::before { content:""; position: absolute; inset: 0; backdrop-filter: blur(18px); background: linear-gradient(to bottom,rgba(5,4,9,.64),transparent); z-index: -1; mask: linear-gradient(#000 55%,transparent); }
.monogram { text-decoration: none; color: var(--ink); font-family: var(--serif); font-size: 1.75rem; letter-spacing: -.05em; }
.monogram span { color: var(--blush); font-size: .52rem; vertical-align: top; margin-left: 2px; }
.controls { display: flex; gap: 8px; }
.icon-btn, .round-btn { width: 42px; height: 42px; display: grid; place-items: center; color: var(--ink); background: var(--glass); border: 1px solid var(--line); border-radius: 50%; backdrop-filter: blur(16px); transition: .25s ease; }
.icon-btn:hover, .round-btn:hover { background: var(--glass-strong); transform: translateY(-2px); border-color: rgba(217,189,131,.5); }
.progress-wrap { position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; background: var(--line); }
.progress-wrap span { display: block; height: 100%; width: 0; background: linear-gradient(90deg,var(--blush),var(--gold)); box-shadow: 0 0 12px var(--gold); }

.scene { position: relative; min-height: 100svh; isolation: isolate; overflow: hidden; }
.opening-scene { display: grid; place-items: center; background: #040308; }
.hero-art { position: absolute; inset: 0; background: linear-gradient(90deg,rgba(4,3,8,.8),rgba(4,3,8,.14) 60%,rgba(4,3,8,.5)), url("assets/images/lily-dreamscape.png") center/cover; opacity: .56; transform: scale(1.07); }
.aurora { position: absolute; inset: -30%; background: radial-gradient(ellipse at 50% 42%,rgba(230,182,197,.11),transparent 35%), conic-gradient(from 210deg at 50% 50%,transparent,rgba(167,154,203,.08),transparent 30%); filter: blur(50px); animation: aurora 14s linear infinite; }
@keyframes aurora { to { transform: rotate(360deg); } }
.opening-content { position: relative; z-index: 2; max-width: 880px; text-align: center; padding: 100px 24px 70px; }
.mini-lily { margin: 0 auto 28px; transform: scale(.62); opacity: 0; }
.eyebrow { color: var(--gold); text-transform: uppercase; font-size: .7rem; letter-spacing: .26em; font-weight: 500; margin: 0 0 22px; }
.opening-content h1 { font-family: var(--serif); font-weight: 400; font-size: clamp(3.5rem,9.5vw,8.4rem); line-height: .92; letter-spacing: -.055em; margin: 0 0 28px; text-shadow: 0 10px 60px rgba(0,0,0,.65); }
h1 em, h2 em { font-style: italic; color: #f3dbe4; }
.opening-line { opacity: 0; transform: translateY(20px); }
.opening-content > p:not(.eyebrow,.sound-hint) { font-size: clamp(1rem,2vw,1.25rem); color: #d0cad7; margin: 6px 0; }
.heart-dot { display: inline-block; color: var(--blush); font-family: var(--sans); font-size: .18em; vertical-align: top; margin: .1em 0 0 .25em; filter: drop-shadow(0 0 10px var(--blush)); animation: heartbeat 1.7s ease infinite; }
@keyframes heartbeat { 15%,45% { transform: scale(1.25); } 30%,60% { transform: scale(1); } }
.primary-btn { position: relative; border: 1px solid rgba(255,255,255,.25); border-radius: 100px; padding: 17px 24px 17px 28px; color: #17131a; background: linear-gradient(135deg,#fff,#eee3dd); box-shadow: 0 16px 45px rgba(231,208,215,.2), inset 0 1px #fff; display: inline-flex; gap: 25px; align-items: center; font-weight: 600; overflow: hidden; transition: transform .3s, box-shadow .3s; }
.primary-btn::before { content:""; position:absolute; width:70px; height:200%; top:-50%; left:-90px; transform:rotate(20deg); background:rgba(255,255,255,.75); filter:blur(10px); transition:left .7s; }
.primary-btn:hover { transform: translateY(-4px) scale(1.02); box-shadow: 0 22px 60px rgba(231,208,215,.32); }
.primary-btn:hover::before { left: 110%; }
.primary-btn i { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: rgba(17,13,20,.1); font-size: .78rem; }
.opening-cta { margin-top: 38px; opacity: 0; }
.sound-hint { opacity: 0; margin-top: 20px !important; color: #91899d; font-size: .7rem !important; letter-spacing: .08em; }
.sound-hint i { margin-right: 7px; }
.scroll-whisper { position: absolute; bottom: 22px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 12px; color: #7f7889; text-transform: uppercase; letter-spacing: .18em; font-size: .58rem; white-space: nowrap; }
.scroll-whisper span { width: 42px; height: 1px; background: linear-gradient(90deg,transparent,var(--gold)); }

.door-scene { display: grid; grid-template-columns: 1fr 1fr; align-items: center; padding: 100px clamp(24px,8vw,140px); background: radial-gradient(circle at 70% 48%,rgba(216,176,129,.14),transparent 30%), linear-gradient(135deg,#09070c,#130f15); }
.door-copy { position: relative; z-index: 3; }
.door-copy h2, .section-heading h2, .welcome-scene h2 { font-family: var(--serif); font-weight: 400; font-size: clamp(3.2rem,6.3vw,6.8rem); line-height: .95; letter-spacing: -.045em; margin: 0 0 28px; }
.door-copy p:last-child, .welcome-scene > p:last-of-type { color: var(--muted); font-size: clamp(1rem,1.6vw,1.3rem); }
.door-stage { position: relative; width: min(370px,72vw); height: min(590px,60vh); justify-self: center; perspective: 1300px; }
.door-frame { position: absolute; inset: 0; padding: 18px 18px 0; background: linear-gradient(110deg,#2e1c16,#694738 48%,#261711); box-shadow: 0 30px 90px #000, inset 0 0 0 2px rgba(255,220,175,.12); border-radius: 6px 6px 0 0; }
.door { position: absolute; inset: 20px 20px 0; transform-origin: left center; transform-style: preserve-3d; background: linear-gradient(110deg,#503127,#2e1d19 35%,#765041 65%,#321f19); box-shadow: inset -20px 0 35px rgba(0,0,0,.42), inset 0 0 0 2px rgba(255,220,175,.08); }
.door-panels { position:absolute; inset: 45px 32px; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1.45fr; gap:22px; }
.door-panels i { border: 7px ridge rgba(101,66,51,.9); box-shadow: inset 0 0 25px rgba(0,0,0,.35); }
.door-handle { position:absolute; right:25px; top:51%; width:19px; height:19px; border-radius:50%; background:radial-gradient(circle at 30% 30%,#f6dca5,#9c6828 70%); box-shadow:0 0 0 5px rgba(92,56,24,.6),0 4px 8px #000; }
.door-glow { position:absolute; inset:-15%; background:radial-gradient(ellipse,#ffdcb055,transparent 65%); filter:blur(20px); animation:glowBreath 3s ease infinite; }
@keyframes glowBreath { 50% { opacity:.45; transform:scale(1.08); } }
.door-shadow { position:absolute; bottom:-30px; left:-15%; width:130%; height:60px; background:#000; filter:blur(25px); border-radius:50%; }
.door-btn { position: absolute; bottom: 60px; left: 50%; transform: translateX(-50%); z-index: 4; }
.door-btn:hover { transform: translateX(-50%) translateY(-4px) scale(1.02); }
.welcome-scene { display: grid; place-content: center; justify-items: center; text-align: center; padding: 80px 24px; background: radial-gradient(circle at 50% 40%,rgba(236,196,208,.22),transparent 28%),#09070e; }
.welcome-scene h2 { margin-bottom: 18px; }
.welcome-bloom { width: 100px; height: 100px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.15); border-radius:50%; margin-bottom:30px; box-shadow:0 0 60px rgba(231,190,204,.2); }
.welcome-bloom span { font-size:2rem; color:var(--gold); animation:spin 6s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
.welcome-scene .primary-btn { margin-top:30px; }
.confetti-field { position:absolute; inset:0; pointer-events:none; }
.confetti { position:absolute; width:7px; height:14px; top:-10%; animation:confettiFall var(--d) linear forwards; background:var(--c); transform:rotate(var(--r)); }
@keyframes confettiFall { to { top:110%; transform:translateX(var(--x)) rotate(760deg); } }

.content-section { position:relative; padding: clamp(100px,13vw,190px) clamp(20px,7vw,110px); overflow:hidden; }
.experience { background:var(--night); }
.section-heading { max-width:800px; margin-bottom:80px; }
.section-heading.centered { margin-left:auto; margin-right:auto; text-align:center; }
.section-heading h2 { font-size:clamp(3rem,6vw,6.3rem); }
.section-heading > p:last-child { max-width:590px; color:var(--muted); font-size:1.05rem; line-height:1.8; }
.section-heading.centered > p:last-child { margin-left:auto; margin-right:auto; }
.story-section { background:linear-gradient(180deg,var(--night),var(--night-2)); }
.timeline { position:relative; max-width:1080px; margin:auto; }
.timeline::before { content:""; position:absolute; top:0; bottom:0; left:50%; width:1px; background:linear-gradient(transparent,var(--gold),var(--blush),transparent); opacity:.35; }
.memory-card { width:44%; margin:0 0 -3% auto; position:relative; }
.memory-card:nth-child(even) { margin-left:0; margin-right:auto; }
.memory-card::before { content:""; position:absolute; top:35px; left:-13.7%; width:9px; height:9px; border:1px solid var(--gold); background:var(--night); border-radius:50%; box-shadow:0 0 20px var(--gold); }
.memory-card:nth-child(even)::before { left:auto; right:-13.7%; }
.memory-image, .gallery-image, .lightbox-image { background-size:cover; background-position:center; }
.memory-image { aspect-ratio:4/3; border-radius:var(--radius); position:relative; overflow:hidden; background-color:#211c27; box-shadow:var(--shadow); }
.memory-image::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%,rgba(7,5,10,.75)); }
.placeholder-art { background-image: radial-gradient(circle at 75% 25%,rgba(234,197,211,.75),transparent 8%), radial-gradient(circle at 50% 75%,rgba(141,118,165,.45),transparent 30%), linear-gradient(135deg,#29212e,#0d0b12); }
.placeholder-art::before { content:"✦"; position:absolute; inset:0; display:grid; place-items:center; color:rgba(255,255,255,.42); font-size:2rem; }
.memory-copy { padding:25px 10px 45px; }
.memory-copy span { color:var(--gold); text-transform:uppercase; letter-spacing:.2em; font-size:.65rem; }
.memory-copy h3 { font-family:var(--serif); font-size:2rem; font-weight:400; margin:8px 0 10px; }
.memory-copy p { color:var(--muted); line-height:1.7; margin:0; }
.memory-copy i { position:absolute; top:25px; right:25px; color:var(--blush); animation:heartbeat 2s infinite; }

.reasons-section { background:radial-gradient(circle at 50% 42%,rgba(125,91,129,.16),transparent 34%),var(--night-2); }
.reasons-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:14px; perspective:1200px; max-width:1350px; margin:auto; }
.reason-card { position:relative; aspect-ratio:.82; border:0; padding:0; background:none; color:inherit; perspective:1000px; }
.reason-inner { position:absolute; inset:0; transform-style:preserve-3d; transition:transform .8s cubic-bezier(.2,.75,.25,1); }
.reason-card.flipped .reason-inner { transform:rotateY(180deg); }
.reason-face { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:22px; border:1px solid var(--line); border-radius:24px; background:linear-gradient(145deg,var(--glass-strong),var(--glass)); backdrop-filter:blur(18px); backface-visibility:hidden; overflow:hidden; box-shadow:0 14px 40px rgba(0,0,0,.13); }
.reason-front::before { content:""; position:absolute; inset:0; background:radial-gradient(circle at 50% 15%,rgba(232,190,205,.17),transparent 37%); }
.reason-front i { color:var(--blush); font-size:1.2rem; margin-bottom:30px; }
.reason-front strong { position:relative; font-family:var(--serif); font-size:1.65rem; font-weight:400; }
.reason-front span { color:var(--muted); font-size:.65rem; margin-top:13px; text-transform:uppercase; letter-spacing:.16em; }
.reason-back { transform:rotateY(180deg); background:linear-gradient(145deg,rgba(225,191,201,.2),rgba(117,96,139,.16)); }
.reason-back p { font-family:var(--serif); font-size:1.25rem; line-height:1.45; margin:0; }
.reason-back i { color:var(--gold); margin-top:20px; }

.letter-section { min-height:100svh; background:linear-gradient(180deg,var(--night-2),#131019); }
.envelope-stage { text-align:center; perspective:1200px; }
.envelope { position:relative; display:block; width:min(540px,86vw); aspect-ratio:1.55; margin:0 auto 28px; background:none; border:0; filter:drop-shadow(0 35px 45px rgba(0,0,0,.4)); transition:transform .3s; }
.envelope:hover { transform:translateY(-8px) rotateX(2deg); }
.envelope-back { position:absolute; inset:0; border-radius:5px; background:#ded0c0; }
.envelope-front { position:absolute; inset:0; background:linear-gradient(145deg,#f4e9dd,#cbb8a5); clip-path:polygon(0 28%,50% 78%,100% 28%,100% 100%,0 100%); border-radius:5px; z-index:3; }
.envelope-flap { position:absolute; inset:0; background:linear-gradient(175deg,#f2e7db,#c7b39e); clip-path:polygon(0 0,100% 0,50% 67%); transform-origin:top; z-index:4; transition:transform 1s ease; }
.letter-sheet { position:absolute; left:8%; bottom:7%; width:84%; height:84%; background:#fff9ef; color:#574849; padding:30px; font-family:var(--hand); font-size:1.65rem; z-index:2; transition:transform 1s .4s ease; }
.wax-seal { position:absolute; z-index:5; left:50%; top:48%; width:58px; height:58px; display:grid; place-items:center; transform:translate(-50%,-50%); border-radius:50%; background:radial-gradient(circle at 30% 30%,#be6e79,#6e2735); color:#f8d7d9; font-family:var(--serif); font-size:1.4rem; box-shadow:0 8px 16px rgba(55,13,20,.4),inset 0 0 0 4px rgba(255,255,255,.1); transition:.5s; }
.envelope.open .envelope-flap { transform:rotateX(180deg); z-index:1; }
.envelope.open .letter-sheet { transform:translateY(-65%); }
.envelope.open .wax-seal { opacity:0; transform:translate(-50%,-50%) scale(.5); }
.envelope-stage > p { color:var(--muted); font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; }
dialog { color:var(--ink); }
.letter-dialog { width:min(780px,92vw); max-height:90vh; overflow:auto; border:1px solid rgba(102,69,74,.15); border-radius:8px; padding:clamp(40px,7vw,80px); color:#4a3c3d; background:#f8f0e5; box-shadow:0 40px 100px rgba(0,0,0,.6); }
.letter-dialog::backdrop, .lightbox::backdrop { background:rgba(3,2,6,.82); backdrop-filter:blur(14px); }
.dialog-close { position:absolute; top:18px; right:18px; width:42px; height:42px; border-radius:50%; border:1px solid currentColor; background:transparent; color:inherit; opacity:.6; }
.letter-date { text-transform:uppercase; letter-spacing:.2em; font-size:.66rem; opacity:.5; }
.letter-dialog h3 { font-family:var(--hand); font-size:2.4rem; font-weight:500; margin:25px 0; }
.letter-body { font-family:var(--hand); font-size:clamp(1.45rem,2.5vw,1.85rem); line-height:1.6; white-space:pre-line; min-height:200px; }
.letter-signoff { font-family:var(--hand); font-size:1.5rem; margin-top:35px; }
.letter-signoff span { color:#9e5362; font-size:1.8rem; }

.gallery-section { background:var(--night); }
.gallery-toolbar { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:28px; color:var(--muted); }
.gallery-toolbar b { color:var(--gold); font-family:var(--serif); font-size:2rem; margin-right:7px; }
.gallery-toolbar > div { display:flex; gap:8px; }
.gallery-track { display:flex; gap:18px; overflow:auto; padding:10px 2px 35px; scroll-snap-type:x mandatory; scrollbar-width:none; }
.gallery-track::-webkit-scrollbar { display:none; }
.gallery-item { flex:0 0 clamp(260px,35vw,470px); scroll-snap-align:center; border:0; background:none; color:inherit; padding:0; text-align:left; }
.gallery-image { aspect-ratio:1.2; position:relative; overflow:hidden; border-radius:var(--radius); background-color:#241e2a; box-shadow:var(--shadow); transition:transform .45s; }
.gallery-item:hover .gallery-image { transform:scale(.985); }
.gallery-item .gallery-image::after { content:"View memory"; position:absolute; inset:0; display:grid; place-items:center; color:#fff; text-transform:uppercase; letter-spacing:.18em; font-size:.65rem; background:rgba(10,7,12,.45); backdrop-filter:blur(4px); opacity:0; transition:.35s; }
.gallery-item:hover .gallery-image::after { opacity:1; }
.gallery-item p { margin:14px 5px 0; font-family:var(--serif); font-size:1.2rem; }
.polaroid-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:18px; margin-top:90px; }
.polaroid { border:0; padding:9px 9px 28px; background:#f3eee7; color:#332d32; box-shadow:0 15px 35px rgba(0,0,0,.3); transform:rotate(var(--rot)); transition:.35s; }
.polaroid:hover { transform:rotate(0) translateY(-10px); z-index:2; }
.polaroid .gallery-image { border-radius:0; aspect-ratio:1; box-shadow:none; }
.polaroid span { display:block; font-family:var(--hand); font-size:1.1rem; margin-top:9px; }
.text-btn { display:flex; align-items:center; gap:12px; margin:55px auto 0; padding:12px 3px; color:var(--ink); background:none; border:0; border-bottom:1px solid var(--gold); }

.future-section { min-height:100svh; background:linear-gradient(180deg,#0d0b14,#151125); }
.future-sky { position:absolute; inset:0; opacity:.5; background-image:radial-gradient(circle at 20% 15%,#fff 0 1px,transparent 1.5px),radial-gradient(circle at 85% 30%,#d9bd83 0 1px,transparent 2px),radial-gradient(circle at 60% 70%,#fff 0 1px,transparent 1.5px); background-size:170px 160px,230px 240px,310px 270px; }
.future-grid { position:relative; display:grid; grid-template-columns:repeat(3,1fr); gap:16px; max-width:1180px; margin:auto; }
.future-card { min-height:250px; padding:32px; display:flex; flex-direction:column; justify-content:space-between; border:1px solid rgba(255,255,255,.11); border-radius:var(--radius); background:rgba(255,255,255,.055); backdrop-filter:blur(15px); transition:.4s; overflow:hidden; }
.future-card:hover { transform:translateY(-8px); border-color:rgba(217,189,131,.38); background:rgba(255,255,255,.08); }
.future-card i { width:50px; height:50px; display:grid; place-items:center; border:1px solid rgba(217,189,131,.3); color:var(--gold); border-radius:50%; }
.future-card h3 { font-family:var(--serif); font-size:2rem; font-weight:400; margin:30px 0 8px; }
.future-card p { color:#a9a2b4; line-height:1.6; margin:0; }

.gifts-section { background:radial-gradient(circle at 50% 50%,rgba(177,139,74,.12),transparent 35%),var(--night-2); }
.gifts-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; max-width:1200px; margin:auto; }
.gift-card { position:relative; min-height:520px; border:1px solid var(--line); border-radius:32px; background:linear-gradient(150deg,var(--glass-strong),var(--glass)); backdrop-filter:blur(18px); overflow:hidden; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:30px; text-align:center; }
.gift-box { position:relative; width:170px; height:145px; margin-bottom:50px; transition:.8s cubic-bezier(.2,.8,.2,1); }
.gift-box-base { position:absolute; inset:25px 0 0; border-radius:5px; background:linear-gradient(135deg,var(--gift-a),var(--gift-b)); box-shadow:0 20px 40px rgba(0,0,0,.4); }
.gift-box-lid { position:absolute; top:8px; left:-8px; width:186px; height:38px; border-radius:5px; background:linear-gradient(135deg,var(--gift-a),var(--gift-b)); z-index:2; box-shadow:0 8px 15px rgba(0,0,0,.2); transition:.8s; }
.gift-ribbon-v { position:absolute; z-index:3; width:25px; top:8px; bottom:0; left:73px; background:linear-gradient(90deg,#a98135,#f3d999,#9d7427); }
.gift-ribbon-h { position:absolute; z-index:3; height:22px; top:75px; left:0; right:0; background:linear-gradient(#d8bb73,#9f772d); }
.gift-bow { position:absolute; z-index:4; top:-25px; left:52px; width:68px; height:55px; }
.gift-bow::before,.gift-bow::after { content:""; position:absolute; width:45px; height:35px; border:8px solid #d6b76d; border-radius:50% 50% 20% 50%; }
.gift-bow::after { left:32px; transform:scaleX(-1); }
.gift-card.open .gift-box { transform:translateY(30px); }
.gift-card.open .gift-box-lid { transform:translateY(-75px) rotate(-14deg); opacity:.3; }
.gift-card.open .gift-ribbon-v,.gift-card.open .gift-ribbon-h,.gift-card.open .gift-bow { opacity:0; transform:scale(.3); transition:.5s; }
.gift-glow { position:absolute; left:50%; top:37%; width:10px; height:10px; border-radius:50%; background:#ffe6a4; box-shadow:0 0 80px 55px rgba(255,219,137,.4); opacity:0; transition:.8s; }
.gift-card.open .gift-glow { opacity:1; transform:scale(2.6); }
.gift-content { position:relative; z-index:5; }
.gift-content .brand { display:inline-grid; place-items:center; width:50px; height:50px; border-radius:15px; margin-bottom:12px; background:var(--gift-a); color:#fff; font-size:1.2rem; box-shadow:0 10px 20px rgba(0,0,0,.2); }
.gift-content h3 { font-family:var(--serif); font-weight:400; font-size:2rem; margin:5px 0 10px; }
.gift-content p { color:var(--muted); min-height:46px; }
.gift-reveal { max-height:0; opacity:0; overflow:hidden; transition:.8s; }
.gift-card.open .gift-reveal { max-height:160px; opacity:1; margin-top:16px; }
.gift-code { display:block; padding:13px 17px; border:1px dashed rgba(217,189,131,.5); border-radius:10px; font-family:monospace; letter-spacing:.1em; color:var(--gold); background:rgba(0,0,0,.16); user-select:all; }
.claim-btn { margin-top:15px; border:0; border-radius:50px; padding:12px 18px; background:var(--ink); color:var(--night); font-weight:600; }

.finale-section { min-height:110svh; display:grid; place-items:center; text-align:center; padding-bottom:100px; background:radial-gradient(circle at 50% 50%,rgba(155,113,166,.19),transparent 25%),linear-gradient(#070610,#0c0b1b 65%,#090c11); }
.final-content { position:relative; z-index:2; }
.final-content > p { color:#c0bacb; font-size:clamp(1rem,2vw,1.3rem); margin:8px; }
.final-content h2 { font-family:var(--serif); font-size:clamp(3.5rem,8vw,8rem); font-weight:400; line-height:.95; letter-spacing:-.05em; margin:50px 0; }
.final-content h2 span { color:var(--blush); font-family:var(--sans); font-size:.18em; vertical-align:top; margin-left:10px; }
.forever-heart { position:relative; width:min(330px,80vw); aspect-ratio:1; margin:0 auto; display:grid; place-items:center; filter:drop-shadow(0 0 42px rgba(219,134,158,.38)); }
.forever-heart > i { position:absolute; font-size:min(19rem,73vw); color:#8f4057; animation:finalHeart 2s ease infinite; }
@keyframes finalHeart { 50% { transform:scale(1.04); filter:brightness(1.15); } }
.forever-heart strong { position:relative; z-index:2; font-size:.8rem; text-transform:uppercase; letter-spacing:.22em; line-height:2; color:#fff; }
.forever-heart strong em { font-family:var(--serif); font-size:1.8rem; text-transform:none; letter-spacing:0; font-weight:400; }
.final-note { font-family:var(--hand); font-size:1.6rem !important; color:var(--gold) !important; margin-top:35px !important; }
.final-lilies { position:absolute; inset:auto 0 0; height:45%; background:linear-gradient(transparent,#06080b),url("assets/images/lily-dreamscape.png") center 46%/cover; opacity:.25; mix-blend-mode:screen; mask:linear-gradient(transparent,#000); }

.hidden-heart { position:absolute; z-index:30; width:26px; height:26px; color:rgba(229,182,197,.55); border:0; background:none; filter:drop-shadow(0 0 8px rgba(229,182,197,.35)); animation:floatHeart 3s ease-in-out infinite; }
.hidden-heart:hover { color:var(--blush); transform:scale(1.4); }
@keyframes floatHeart { 50% { translate:0 -7px; } }
.love-toast { position:fixed; z-index:9500; left:50%; bottom:35px; transform:translate(-50%,30px); opacity:0; pointer-events:none; padding:15px 22px; color:#30262c; background:rgba(255,246,239,.94); border:1px solid rgba(255,255,255,.7); border-radius:100px; box-shadow:0 20px 55px rgba(0,0,0,.35); backdrop-filter:blur(18px); font-family:var(--serif); transition:.4s; text-align:center; }
.love-toast.show { opacity:1; transform:translate(-50%,0); }
.back-to-top { position:fixed; z-index:8000; right:24px; bottom:24px; width:48px; height:48px; border-radius:50%; border:1px solid var(--line); background:var(--glass-strong); backdrop-filter:blur(16px); color:var(--ink); transform:translateY(80px); transition:.35s; }
.back-to-top.visible { transform:translateY(0); }
.lightbox { width:100vw; height:100vh; max-width:none; max-height:none; border:0; padding:0; background:rgba(5,4,8,.92); color:#fff; overflow:hidden; }
.lightbox figure { margin:0; height:100%; display:grid; place-content:center; justify-items:center; gap:20px; padding:70px; }
.lightbox-image { width:min(1000px,80vw); height:min(700px,72vh); border-radius:18px; background-color:#1d1821; box-shadow:0 30px 90px #000; }
.lightbox figcaption { font-family:var(--serif); font-size:1.25rem; }
.lightbox-nav { position:absolute; z-index:2; top:50%; transform:translateY(-50%); width:52px; height:52px; border:1px solid rgba(255,255,255,.25); border-radius:50%; background:rgba(255,255,255,.08); color:#fff; }
.lightbox-nav.prev { left:24px; } .lightbox-nav.next { right:24px; }

@media (max-width: 980px) {
  .reasons-grid { grid-template-columns:repeat(2,1fr); }
  .reason-card { aspect-ratio:1.15; }
  .future-grid, .gifts-grid { grid-template-columns:1fr 1fr; }
  .gift-card:last-child { grid-column:1/-1; }
  .polaroid-grid { grid-template-columns:repeat(3,1fr); }
}
@media (max-width: 720px) {
  body,button,a { cursor:auto; }
  .cursor { display:none; }
  .site-header { height:68px; padding:14px 16px; }
  .controls { gap:5px; } .icon-btn { width:38px;height:38px; }
  .door-scene { display:flex; flex-direction:column; justify-content:center; text-align:center; padding:90px 20px 120px; }
  .door-copy h2 { font-size:3.2rem; }
  .door-stage { height:43vh; width:min(250px,68vw); margin-top:20px; }
  .door-btn { bottom:28px; white-space:nowrap; }
  .content-section { padding:100px 20px; }
  .section-heading { margin-bottom:55px; }
  .timeline::before { left:8px; }
  .memory-card,.memory-card:nth-child(even) { width:calc(100% - 35px); margin:0 0 35px 35px; }
  .memory-card::before,.memory-card:nth-child(even)::before { left:-31px; right:auto; top:26px; }
  .reasons-grid { gap:10px; }
  .reason-card { aspect-ratio:.78; }
  .reason-front strong { font-size:1.35rem; }
  .reason-back p { font-size:1.05rem; }
  .reason-face { padding:14px; }
  .future-grid,.gifts-grid { grid-template-columns:1fr; }
  .gift-card:last-child { grid-column:auto; }
  .polaroid-grid { grid-template-columns:repeat(2,1fr); gap:12px; }
  .polaroid-grid .polaroid:nth-child(n+7) { display:none; }
  .gallery-toolbar { align-items:flex-end; }
  .gallery-toolbar span { max-width:180px; }
  .lightbox figure { padding:70px 15px; }
  .lightbox-image { width:90vw; height:65vh; }
  .lightbox-nav { top:auto; bottom:25px; }
  .letter-dialog { padding:55px 28px 35px; }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important; transition-duration:.01ms !important; }
}
