*{box-sizing:border-box}
:root{
  --bg:#f6efe6;
  --paper:#fbf7f1;
  --ink:#342c27;
  --muted:#81766d;
  --gold:#ad8a5b;
  --line:rgba(173,138,91,.45);
}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:Manrope,Arial,sans-serif;font-weight:300;
}
body:before{
  content:"";position:fixed;inset:14px;border:1px solid var(--line);
  pointer-events:none;z-index:20;
}
main{overflow:hidden}
section{
  min-height:100svh;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;
  padding:70px 24px;position:relative;
}
.hero{
  background:
    radial-gradient(circle at 15% 20%,rgba(173,138,91,.11),transparent 28%),
    radial-gradient(circle at 85% 80%,rgba(173,138,91,.10),transparent 30%),
    var(--bg);
}
.hero:after,.closing:after{
  content:"";position:absolute;inset:45px 34px;
  border:1px solid rgba(173,138,91,.20);pointer-events:none;
}
.ornament{color:var(--gold);font-size:28px;margin-bottom:28px}
.eyebrow,.small-title{
  letter-spacing:.30em;font-size:11px;color:var(--muted);margin:0 0 24px;
}
.names,h1,h2{
  font-family:"Cormorant Garamond",Georgia,serif;font-weight:400;
}
.names{font-size:clamp(54px,13vw,104px);line-height:.82;margin:0}
.names span{display:block;font-size:.45em;line-height:1.3;color:var(--gold)}
.date{font-family:"Cormorant Garamond",serif;font-size:25px;letter-spacing:.18em;margin:32px 0 0}
.scroll{position:absolute;bottom:54px;font-size:11px;letter-spacing:.18em;color:var(--muted)}
.scroll span{display:block;font-size:22px;margin-top:8px;color:var(--gold)}
.section{max-width:900px;margin:auto}
.invitation{background:var(--paper)}
.flower{font-size:42px;color:var(--gold);margin-bottom:28px}
h2{font-size:clamp(40px,9vw,68px);line-height:1;margin:0 0 28px}
.body-text{max-width:570px;font-size:15px;line-height:2;color:#665c54}
.gold-line{height:1px;width:90px;background:var(--gold);margin-top:30px}
.details{min-height:70svh}
.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;width:min(780px,100%)}
.detail{padding:30px 14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.detail-icon{font-family:"Cormorant Garamond",serif;font-size:36px;color:var(--gold);min-height:46px}
.detail p{font-size:11px;letter-spacing:.15em;color:var(--muted);text-transform:uppercase}
.detail strong{font-family:"Cormorant Garamond",serif;font-size:27px;font-weight:500}
.countdown{background:var(--paper);min-height:65svh}
.timer{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:min(760px,100%)}
.timer div{padding:18px 8px}
.timer strong{display:block;font-family:"Cormorant Garamond",serif;font-size:clamp(42px,10vw,72px);font-weight:400}
.timer span{font-size:10px;letter-spacing:.15em;color:var(--muted);text-transform:uppercase}
.place{background:var(--bg)}
.place-card{border:1px solid var(--line);padding:50px 35px;max-width:620px;width:100%;position:relative}
.place-card h2{font-size:clamp(52px,12vw,84px);margin-bottom:10px}
.place-card p:not(.small-title){color:var(--muted);font-size:13px}
.map-btn{
  display:inline-block;margin-top:25px;padding:14px 28px;
  border:1px solid var(--gold);color:var(--ink);text-decoration:none;
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;
}
.closing{min-height:90svh;background:var(--paper)}
.closing h2{font-size:clamp(54px,12vw,96px)}
.heart{font-family:Georgia,serif;color:var(--gold);font-size:42px;margin-top:30px}
.music-btn{
  position:fixed;right:30px;top:28px;z-index:30;
  border:1px solid var(--line);background:rgba(251,247,241,.86);
  color:var(--ink);padding:10px 13px;border-radius:30px;
  font:11px Manrope,sans-serif;letter-spacing:.08em;cursor:pointer;
  backdrop-filter:blur(8px);
}
.music-icon{font-size:18px;vertical-align:-2px;margin-right:5px}
.reveal{opacity:0;transform:translateY(24px);transition:opacity 1s ease,transform 1s ease}
.reveal.visible{opacity:1;transform:none}
@media(max-width:600px){
  body:before{inset:8px}
  section{padding:65px 28px}
  .detail-grid{grid-template-columns:1fr}
  .detail{padding:20px}
  .timer{gap:0}
  .timer strong{font-size:38px}
  .timer span{font-size:8px}
  .place-card{padding:45px 20px}
}

.photo-hero{
  min-height:90svh;position:relative;overflow:hidden;padding:0;
  display:flex;align-items:flex-end;justify-content:center;background:#241e1a;
}
.photo-hero img{
  width:100%;height:100%;object-fit:cover;position:absolute;inset:0;
  filter:saturate(.92);
}
.photo-hero:after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(transparent 45%,rgba(20,15,12,.62));
}
.photo-caption{
  position:relative;z-index:2;color:#fff;font-family:"Cormorant Garamond",serif;
  font-size:clamp(30px,7vw,55px);padding:0 25px 65px;max-width:700px;
}
.gallery{background:var(--paper);min-height:100svh}
.gallery-grid{
  width:min(900px,100%);display:grid;grid-template-columns:1fr 1fr;
  grid-template-rows:auto auto;gap:14px;margin-top:20px;
}
.gallery-item{margin:0;overflow:hidden;min-height:260px}
.gallery-item.tall{grid-row:span 2;min-height:530px}
.gallery-item img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.2s ease;
}
.gallery-item:hover img{transform:scale(1.035)}
@media(max-width:600px){
  .gallery-grid{grid-template-columns:1fr;grid-template-rows:auto}
  .gallery-item,.gallery-item.tall{min-height:380px;grid-row:auto}
  .photo-hero{min-height:78svh}
}

/* Elegant invitation opening */
body.locked{overflow:hidden}
.opening{
  position:fixed;inset:0;z-index:100;
  display:flex;align-items:center;justify-content:center;
  background:#eee3d6;
  transition:opacity 1s ease, visibility 1s ease;
}
.opening-bg{
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 20% 20%,rgba(173,138,91,.15),transparent 30%),
    radial-gradient(circle at 80% 75%,rgba(173,138,91,.12),transparent 32%),
    #eee3d6;
}
.opening:before{
  content:"";position:absolute;inset:22px;border:1px solid rgba(173,138,91,.48);
}
.opening.hide{opacity:0;visibility:hidden;pointer-events:none}
.envelope-wrap{
  position:relative;width:min(360px,78vw);text-align:center;
  cursor:pointer;z-index:2;
}
.envelope{
  width:100%;aspect-ratio:1.5/1;position:relative;
  filter:drop-shadow(0 18px 28px rgba(65,48,35,.18));
  transition:transform .5s ease;
}
.envelope-wrap:hover .envelope{transform:translateY(-5px)}
.envelope-back,.envelope-front{
  position:absolute;inset:0;border-radius:3px;
  background:#f8f0e7;border:1px solid rgba(150,117,78,.4);
}
.envelope-back{z-index:1}
.envelope-front{
  z-index:4;
  clip-path:polygon(0 30%,50% 72%,100% 30%,100% 100%,0 100%);
  background:#f4e8dc;
}
.flap{
  position:absolute;left:0;top:0;width:100%;height:72%;
  z-index:5;transform-origin:top center;
  clip-path:polygon(0 0,100% 0,50% 75%);
  background:#fbf4ec;border:1px solid rgba(150,117,78,.4);
  transition:transform 1s cubic-bezier(.2,.75,.25,1),z-index .1s .55s;
}
.envelope-paper{
  position:absolute;left:9%;right:9%;top:9%;height:83%;z-index:2;
  background:#fffaf4;border:1px solid rgba(173,138,91,.35);
  transition:transform 1s cubic-bezier(.2,.75,.25,1),z-index .1s .45s;
  display:flex;align-items:center;justify-content:center;
}
.paper-content{display:flex;flex-direction:column;gap:9px}
.paper-label{font:9px Manrope,sans-serif;letter-spacing:.25em;color:#81766d}
.paper-names{font:27px "Cormorant Garamond",serif;color:#342c27}
.paper-names i{font-style:normal;color:#ad8a5b}
.paper-date{font:10px Manrope,sans-serif;letter-spacing:.2em;color:#81766d}
.seal{
  position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);
  width:48px;height:48px;border-radius:50%;z-index:7;
  display:flex;align-items:center;justify-content:center;
  background:#b08b5d;color:#fffaf4;font-size:18px;
  border:4px solid #f4e8dc;box-shadow:0 5px 12px rgba(65,48,35,.15);
  transition:transform .5s ease,opacity .3s ease;
}
.open-hint{
  margin:28px 0 0;color:#81766d;
  font:10px Manrope,sans-serif;letter-spacing:.22em;text-transform:uppercase;
  animation:hint 2s ease-in-out infinite;
}
@keyframes hint{0%,100%{opacity:.55}50%{opacity:1}}
.opening.open .flap{
  transform:rotateX(180deg);z-index:2;
}
.opening.open .envelope-paper{
  transform:translateY(-38%);z-index:6;
}
.opening.open .seal{
  transform:translate(-50%,-50%) scale(.2);opacity:0;
}
.opening.open .open-hint{opacity:0;transition:opacity .3s}
.opening.open .envelope{
  transform:translateY(8px);
}
@media(max-width:600px){
  .opening:before{inset:12px}
  .envelope-wrap{width:min(330px,82vw)}
}
