:root{
  --accent:#ff5d8f;--accent2:#7c5cff;--bg:#0f0b1a;--text:#fff4f8;
  --font-head:'Playfair Display',Georgia,serif;
  --font-body:'Inter',system-ui,-apple-system,sans-serif;
  --glass:color-mix(in srgb,var(--text) 8%,transparent);
  --line:color-mix(in srgb,var(--text) 16%,transparent);
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--font-body);line-height:1.6;overflow-x:hidden;transition:background .4s,color .4s}

.aurora{position:fixed;inset:-25%;z-index:0;pointer-events:none;filter:blur(90px);opacity:var(--aurora-op,.5);
  background:
   radial-gradient(40% 40% at 20% 30%,var(--accent) 0,transparent 70%),
   radial-gradient(40% 40% at 80% 20%,var(--accent2) 0,transparent 70%),
   radial-gradient(45% 45% at 60% 85%,var(--accent) 0,transparent 70%);
  animation:drift var(--aurora-dur,26s) ease-in-out infinite alternate}
.aurora.off{display:none}
@keyframes drift{to{transform:translate(5%,-4%) rotate(8deg) scale(1.12)}}
#fx{position:fixed;inset:0;z-index:1;pointer-events:none}
main{position:relative;z-index:2}

section{padding:96px 20px;max-width:1000px;margin:0 auto}
h2{font-family:var(--font-head);font-size:clamp(2rem,6vw,3.2rem);text-align:center;margin-bottom:56px;
  background:linear-gradient(120deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}

/* hero */
.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;max-width:none}
.photo{width:170px;height:170px;border-radius:50%;padding:5px;margin-bottom:28px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  box-shadow:0 0 70px color-mix(in srgb,var(--accent) 55%,transparent);animation:rise 1s both}
.photo img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.pulse{font-size:3rem;color:var(--accent);margin-bottom:10px;animation:beat 1.6s infinite}
h1.names{font-family:var(--font-head);font-size:clamp(3rem,13vw,8rem);line-height:1.05;display:flex;gap:.18em;align-items:center;justify-content:center;flex-wrap:wrap}
h1.names span{display:inline-block;background:linear-gradient(120deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent;animation:rise 1s both}
h1.names span:nth-child(3){animation-delay:.25s}
h1.names i{font-style:normal;color:var(--accent);animation:beat 1.6s infinite}
.tag{margin-top:18px;font-size:clamp(1rem,2.6vw,1.3rem);opacity:.85;max-width:34ch;animation:rise 1s .4s both}
.counter-wrap{margin-top:44px;animation:rise 1s .6s both}
.counter-wrap small{display:block;letter-spacing:.3em;text-transform:uppercase;font-size:.72rem;opacity:.7;margin-bottom:14px}
.counter{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.u{min-width:80px;padding:14px 10px;border-radius:18px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.u b{display:block;font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.u span{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;opacity:.65}
.cue{position:absolute;bottom:22px;font-size:1.8rem;opacity:.6;animation:bob 2s infinite}
@keyframes rise{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
@keyframes beat{0%,100%{transform:scale(1)}15%{transform:scale(1.18)}30%{transform:scale(1)}45%{transform:scale(1.12)}}
@keyframes bob{50%{transform:translateY(8px)}}

/* anniversary */
.anniv{text-align:center;padding:40px 20px}
.anniv .big{font-family:var(--font-head);font-size:clamp(2.4rem,9vw,5rem);line-height:1.1}
.anniv .big b{background:linear-gradient(120deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}
.anniv p{opacity:.8;letter-spacing:.08em}
#anniv{display:grid;gap:48px}
.ac small{display:block;font-family:var(--font-head);font-size:clamp(1.3rem,4vw,1.9rem);margin-bottom:18px}

/* reveal (uses `translate` so it never fights other transforms) */
.rv{opacity:0;translate:0 28px;transition:opacity .8s,translate .8s}
.rv.in{opacity:1;translate:0 0}

/* gallery */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:30px}
.shot{background:#fff;color:#2a2a2a;padding:12px 12px 6px;border-radius:6px;box-shadow:0 14px 40px rgba(0,0,0,.35);transform:rotate(var(--r,0deg));transition:transform .35s}
.shot:nth-child(3n+1){--r:-3deg}.shot:nth-child(3n+2){--r:2deg}.shot:nth-child(3n){--r:-1deg}
.shot:hover{transform:rotate(0) scale(1.05);z-index:2}
.shot img{width:100%;aspect-ratio:1;object-fit:cover;display:block;cursor:zoom-in}
.shot figcaption{font-family:'Dancing Script',cursive;font-size:1.35rem;text-align:center;padding:8px 0 4px;min-height:2.6rem}

footer{text-align:center;padding:60px 20px 90px;opacity:.7;font-size:.9rem}

/* lightbox */
.lb{position:fixed;inset:0;background:rgba(0,0,0,.9);display:none;place-items:center;z-index:50;cursor:zoom-out}
.lb.open{display:grid}
.lb img{max-width:92vw;max-height:88vh;border-radius:8px}

@media(max-width:700px){
  section{padding:70px 18px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .rv{opacity:1;translate:0 0}
}
