/* DADI MEMORIAL — smooth scroll, no act numerals. Harleen atoms + Apple deblur. */
:root{
  --bg:#0a0908;
  --text:#ede8e0;
  --muted:rgba(237,232,224,.52);
  --gold:#c9a96e;
  --gold-soft:#e2cfa0;
  --ruby:#a33d48;
  --saffron:#e0a84a;
  --pad:clamp(1rem,4vw,2.5rem);
  --gap:clamp(.5rem,1.6vw,.875rem);
  --ff-d:'Cormorant Garamond','Times New Roman',Times,serif;
  --ff-v:'Outfit',system-ui,-apple-system,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.23,1,.32,1);
  --r:3px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased;scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--ff-v);overflow-x:hidden}
body.is-preloading,body.lb-open{overflow:hidden}
body.is-preloading{height:100%}
img{display:block;width:100%;height:100%;object-fit:cover}
button{background:none;border:none;color:inherit;cursor:pointer;font:inherit}

#preloader{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center}
.pre-dadi{font-family:var(--ff-d);font-style:italic;font-weight:400;font-size:2rem;color:var(--text);opacity:0}

/* HERO — youth landscape, faces upper third */
.hero{position:relative;padding-bottom:8vh;background:var(--bg)}
.hero-frame{position:relative;height:100svh;height:100dvh;min-height:600px;overflow:hidden}
.hero-frame img{object-position:50% 28%;transform-origin:50% 28%}
.hero-iris{position:absolute;inset:0;z-index:2;background:var(--bg);--iris:0%;-webkit-mask:radial-gradient(circle at 50% 28%,transparent 0,transparent var(--iris),#000 calc(var(--iris) + .8%));mask:radial-gradient(circle at 50% 28%,transparent 0,transparent var(--iris),#000 calc(var(--iris) + .8%))}
.hero.is-in .hero-iris{display:none}
.hero::before{content:"";position:absolute;inset:0 0 auto 0;height:18%;z-index:1;background:linear-gradient(180deg,rgba(10,9,8,.22),transparent);pointer-events:none}
.hero-fade{position:absolute;top:58svh;bottom:0;left:0;right:0;z-index:1;background:linear-gradient(transparent,rgba(10,9,8,.08),rgba(10,9,8,.22),rgba(10,9,8,.48),rgba(10,9,8,.72),rgba(10,9,8,.9),var(--bg));pointer-events:none}
.hero-title{position:absolute;top:78%;left:var(--pad);z-index:3;opacity:0}
.hero-name{font-family:var(--ff-d);font-weight:500;font-size:clamp(2.55rem,9.5vw,3.35rem);line-height:1.05}
.hero-soft{font-style:italic;font-weight:400;font-size:.68em;opacity:.7}

.beat{height:8vh;min-height:48px;background:var(--bg)}
.beat--long{height:12vh;min-height:72px}

/* COUPLE — wide 16:9, both faces */
.land-frame{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;background:#000}
.land-frame img{object-fit:cover;object-position:50% 42%}

/* PORTRAIT */
.portrait-frame{aspect-ratio:2/3;max-width:560px;margin:0 auto;overflow:hidden;border-radius:var(--r);background:#000}
.portrait-frame img{object-position:50% 30%}

/* WEDDING BLESSING CEREMONY — natural 4:3 tableau, full composition & blessing */
.wedding-frame{position:relative;width:100%;max-width:880px;margin:0 auto;aspect-ratio:4/3;overflow:hidden;border-radius:var(--r);background:#000}
.wedding-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}

/* PAIR */
.pair-frame{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);max-width:720px;margin:0 auto;padding:0 var(--pad)}
.pair-img{aspect-ratio:1/1;overflow:hidden;border-radius:var(--r);background:#000}
.pair-img img{object-fit:cover}
@media(max-width:768px){
  .pair-frame{grid-template-columns:1fr}
  .pair-img{aspect-ratio:3/4}
}

/* REVEAL — Harleen vertical-split */
.reveal-frame{position:relative;max-width:560px;margin:0 auto;aspect-ratio:4/3;overflow:hidden;background:#000;border-radius:var(--r);clip-path:inset(0 50% 0 50%)}
.reveal-frame.revealed{clip-path:inset(0 0 0 0);transition:clip-path 1s var(--ease)}
.reveal-frame img{object-fit:contain;background:#000}

/* ARRIVE — Apple deblur. JS owns filter/scale/opacity. */
.arrive img{will-change:transform,filter,opacity}

/* GOODBYE */
.goodbye-frame{position:relative;width:100%;height:85vh;overflow:hidden;background:#000}
.goodbye-frame img{position:absolute;inset:0;object-position:50% 30%;will-change:transform}
.goodbye-dark{position:absolute;inset:0;background:var(--bg);opacity:0;will-change:opacity}

/* FINALE */
.story-finale{padding:clamp(5.5rem,16vh,10rem) var(--pad) clamp(4.5rem,12vh,8rem);background:radial-gradient(circle at 50% 30%,rgba(26,22,17,.45),rgba(10,9,8,1) 75%);text-align:center}
.finale-stage{max-width:480px;margin:0 auto}
.finale-art{width:min(340px,85vw);height:auto;margin:0 auto 1.5rem;overflow:visible}
.diya-thread{stroke:var(--gold);stroke-width:1.25;stroke-linecap:round}
.diya-echo{stroke:var(--saffron);stroke-width:.8;stroke-linecap:round;opacity:.65}
.diya-arch{stroke:var(--gold-soft);stroke-width:.85;stroke-linecap:round;opacity:.55}
.diya-lotus{stroke:var(--gold);stroke-width:1.1;stroke-linecap:round;fill:none}
.diya-bowl{stroke:var(--gold);stroke-width:1.35;stroke-linejoin:round;fill:rgba(201,169,110,.12)}
.diya-rim{stroke:var(--gold-soft);stroke-width:.9;stroke-linecap:round;fill:none}
.diya-base{stroke:var(--gold);stroke-width:1.2;stroke-linecap:round;fill:none}
.diya-flame{stroke:var(--gold-soft);stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;fill:url(#flameGrad)}
.diya-flame-inner{stroke:#fff9ee;stroke-width:.75;fill:url(#innerFlameGrad);opacity:.92}
.diya-gem-glow{fill:var(--ruby);opacity:.35}
.diya-gem{fill:var(--ruby)}
.diya-jewel{fill:var(--gold)}
.diya-spark{fill:var(--gold-soft)}
.diya-ray{stroke:var(--gold-soft);stroke-width:.75;stroke-linecap:round;opacity:.45}
.finale-names{font-family:var(--ff-d);font-weight:500;font-size:clamp(2rem,7vw,2.8rem);opacity:0}
.finale-kicker{font-family:var(--ff-v);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-top:.55rem;opacity:0}
.finale-colophon{margin-top:1.2rem;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);opacity:0}

/* LIGHTBOX */
.lightbox{position:fixed;inset:0;z-index:600;background:rgba(0,0,0,.96);opacity:0;pointer-events:none;transition:opacity .35s var(--ease)}
.lightbox.open{opacity:1;pointer-events:auto}
.lb-backdrop{position:absolute;inset:0}
#lb-img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-width:94vw;max-height:88vh;width:auto;height:auto;object-fit:contain}
.lb-close{position:absolute;top:12px;right:12px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;font-size:2rem;color:var(--text)}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);min-width:44px;min-height:44px;padding:12px;display:flex;align-items:center;justify-content:center;font-size:2.2rem;color:var(--text)}
.lb-prev{left:4px}.lb-next{right:4px}
.lb-count{position:absolute;bottom:14px;left:0;right:0;text-align:center;font-size:.75rem;letter-spacing:.14em;color:var(--muted)}
main img{cursor:pointer}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .hero-iris{display:none}
  .hero-title,.finale-names,.finale-kicker,.finale-colophon{opacity:1 !important;transform:none !important}
  .pre-dadi{opacity:1 !important}
  .reveal-frame{clip-path:none}
  .arrive img{filter:none !important}
}
