@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=DM+Sans:wght@400;500;600&family=Italiana&display=swap');

:root{
  --paper:#fff6f7;
  --paper2:#fffafb;
  --ink:#24314f;
  --navy:#26375e;
  --navy2:#52678d;
  --rose:#d9bcc7;
  --rose2:#f2dfe4;
  --line:#e7d6db;
  --muted:#776f78;
  --shadow:0 18px 48px rgba(50,43,59,.10);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:#f3eaed}
body{margin:0;background:#f3eaed;color:var(--ink);font-family:"DM Sans",system-ui,sans-serif;overflow-x:hidden}
body.locked{overflow:hidden}
button,input,select,textarea{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
a{text-decoration:none;color:inherit}
img{display:block;width:100%;height:100%;object-fit:cover}
main{width:min(100%,820px);margin:auto;background:var(--paper2);box-shadow:0 0 55px rgba(47,42,54,.10)}
.paper-page{position:relative;padding:70px 24px;background:var(--paper2);overflow:hidden}
.paper-page:nth-child(even){background:var(--paper)}
.tiny-label,.section-kicker,.section-heading>p{font-size:.62rem;letter-spacing:.22em;font-weight:600;color:var(--navy2);margin:0 0 12px}
.section-heading{text-align:center;max-width:650px;margin:0 auto 38px}
.section-heading h2,.reading-block h2,.photo-safe-card h2,.rsvp-content h2{
  font-family:"Cormorant Garamond",serif;font-size:clamp(2.4rem,7vw,4rem);line-height:.98;font-weight:500;margin:.12em 0;color:var(--navy)
}
.navy-button{
  min-height:50px;border:0;border-radius:999px;background:var(--navy);color:white;padding:0 24px;
  display:inline-flex;align-items:center;justify-content:center;font-size:.71rem;letter-spacing:.12em;font-weight:600;cursor:pointer;
  transition:transform .2s ease,box-shadow .2s ease,background .2s ease
}
.navy-button:hover,.navy-button:focus-visible{background:#182946;transform:translateY(-2px);box-shadow:0 12px 26px rgba(38,55,94,.22)}

.opening-screen{
  position:fixed;inset:0;z-index:250;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 18px;
  background:linear-gradient(180deg,#fff9fa 0%,#f7e9ed 45%,#e8dce2 100%);transition:opacity .9s ease,visibility .9s ease
}
.opening-screen.done{opacity:0;visibility:hidden}
.opening-copy{text-align:center;max-width:520px;margin-bottom:18px}
.opening-copy h1{font-family:"Cormorant Garamond",serif;font-size:clamp(3rem,11vw,5.5rem);font-weight:500;line-height:.75;margin:.15em 0;color:var(--navy)}
.opening-copy h1 em{display:block;font-weight:400;color:#9a6f82;font-size:.72em;margin:.18em 0}
.opening-line{font-family:"Cormorant Garamond",serif;font-size:1.15rem;color:#736975;margin:15px 0 0}
.envelope{position:relative;width:min(92vw,460px);height:290px;perspective:1000px;margin:5px 0 20px}
.envelope-back{position:absolute;left:4%;right:4%;bottom:0;height:70%;background:linear-gradient(145deg,#34466f,#1f3155);border-radius:15px;box-shadow:0 24px 55px rgba(31,39,67,.20)}
.letter-card{position:absolute;z-index:2;left:12%;right:12%;bottom:8%;height:78%;border-radius:12px;background:#fffafb;border:1px solid #eadde1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;box-shadow:0 12px 28px rgba(44,37,53,.12);transform:translateY(24%);transition:transform 1.15s cubic-bezier(.2,.8,.2,1) .45s}
.letter-card span{font-size:.54rem;letter-spacing:.2em;color:#67789b}.letter-card strong{font-family:"Cormorant Garamond",serif;font-size:2.25rem;font-weight:500;color:var(--navy);line-height:.8}.letter-card strong em{display:block;color:#a27587;font-weight:400;margin:.1em 0}.letter-card small{letter-spacing:.18em;color:#877982}
.envelope-front{position:absolute;z-index:4;left:4%;right:4%;bottom:0;height:70%;background:linear-gradient(150deg,#33466e,#1e3156);clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%);border-radius:15px}
.envelope-flap{position:absolute;z-index:6;left:4%;right:4%;top:30%;height:42%;background:linear-gradient(160deg,#4d6087,#23375e);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top center;transition:transform .85s ease}
.lace{position:absolute;z-index:7;top:29%;width:48%;height:62px;background:
 radial-gradient(circle at 10px 50%,transparent 0 7px,#fff8fb 8px 10px,transparent 11px) 0 0/22px 22px,
 linear-gradient(180deg,#fff7fa,#e9dde5);filter:drop-shadow(0 5px 6px rgba(21,29,49,.08));opacity:.95;transition:opacity .45s}
.lace-left{left:7%;clip-path:polygon(0 0,100% 0,74% 100%,0 100%)}.lace-right{right:7%;clip-path:polygon(0 0,100% 0,100% 100%,26% 100%)}
.seal{position:absolute;z-index:8;left:50%;top:52%;transform:translate(-50%,-50%);width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 35% 28%,#dfe5ef,#7083a7 55%,#31456e);color:white;display:grid;place-items:center;font-family:"Cormorant Garamond",serif;font-size:1.1rem;box-shadow:0 7px 20px rgba(26,38,66,.28);transition:.4s}.seal span{font-size:.7em;padding:0 2px}
.envelope.open .envelope-flap{transform:rotateX(178deg);z-index:1}.envelope.open .letter-card{transform:translateY(-20%)}.envelope.open .seal,.envelope.open .lace{opacity:0}
.opening-btn{width:min(100%,280px)}.opening-hint{max-width:440px;text-align:center;font-size:.72rem;line-height:1.5;color:#8b7c85;margin:10px 0 0}

.music-btn{position:fixed;z-index:120;right:12px;top:12px;height:44px;min-width:84px;border:1px solid rgba(38,55,94,.16);border-radius:999px;background:rgba(255,250,251,.9);backdrop-filter:blur(10px);color:var(--navy);cursor:pointer;box-shadow:0 8px 20px rgba(40,34,50,.10)}
.music-btn span{font-size:.65rem;letter-spacing:.08em;text-transform:uppercase}
.bottom-nav{
  position:fixed;z-index:130;left:50%;bottom:max(10px,env(safe-area-inset-bottom));transform:translateX(-50%);
  width:min(calc(100% - 18px),430px);min-height:64px;padding:7px;border:1px solid rgba(38,55,94,.12);border-radius:22px;
  background:rgba(255,250,251,.94);backdrop-filter:blur(13px);box-shadow:0 14px 35px rgba(40,34,50,.14);
  display:grid;grid-template-columns:repeat(4,1fr);gap:3px
}
.bottom-nav a{min-height:50px;border-radius:15px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--navy)}
.bottom-nav a:focus-visible,.bottom-nav a:hover{background:#eef1f8}.bottom-nav span{font-size:1rem}.bottom-nav small{font-size:.54rem;letter-spacing:.08em;text-transform:uppercase;margin-top:3px}

.hero-page{padding-top:48px;text-align:center}
.blue-band{background:var(--navy);color:white;margin:0 auto 18px;padding:15px 16px;max-width:620px}.blue-band span{display:block;font-size:.52rem;letter-spacing:.22em;opacity:.78}.blue-band strong{font-family:"Cormorant Garamond",serif;font-size:2.45rem;font-weight:500}.blue-band i{font-style:normal;color:#e6c5d0;padding:0 .1em}
.hero-photo{max-width:620px;height:min(62vh,600px);margin:0 auto;overflow:hidden;box-shadow:var(--shadow)}.hero-photo img{object-position:center 38%}
.date-block{display:flex;align-items:center;justify-content:center;gap:16px;margin:22px 0 28px}.date-block span{font-size:.68rem;letter-spacing:.13em;color:#8b7b85}.date-block strong{font-family:"Italiana",serif;font-size:2.25rem;font-weight:400;color:var(--navy);padding:0 15px;border-left:1px solid var(--line);border-right:1px solid var(--line)}
.count-title p{font-size:.52rem;letter-spacing:.22em;color:#8e7d88;margin:0}.count-title h2{font-family:"Cormorant Garamond",serif;font-weight:500;font-size:2.25rem;letter-spacing:.04em;margin:0 0 18px}
.countdown{max-width:590px;margin:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.countdown div{padding:16px 7px;border:1px solid var(--line);background:#fffafb}.countdown strong{display:block;font-family:"Italiana",serif;font-size:1.9rem;font-weight:400;color:var(--navy)}.countdown span{font-size:.52rem;text-transform:uppercase;letter-spacing:.1em;color:#917f8a}
.small-note{max-width:570px;margin:22px auto 0;font-family:"Cormorant Garamond",serif;font-size:1.16rem;line-height:1.6;color:#7d6f78}

.schedule-page{padding-top:74px}
.oval-card{max-width:520px;margin:auto;border:1px solid #c6b0bd;border-radius:52% / 18%;padding:54px 34px;text-align:center;position:relative}.oval-card::before,.oval-card::after{content:"✦";position:absolute;color:#60729a}.oval-card::before{top:20px;left:50%;transform:translateX(-50%)}.oval-card::after{bottom:20px;left:50%;transform:translateX(-50%)}
.script-lite{font-family:"Cormorant Garamond",serif;font-style:italic;font-size:1.55rem;margin:0;color:#52658c}.oval-card h2{font-family:"Cormorant Garamond",serif;font-size:2.6rem;font-weight:500;margin:.25em 0}.oval-card h2 span{color:#b08293}
.programme{max-width:300px;margin:auto;text-align:left}.programme div{display:grid;grid-template-columns:90px 1fr;gap:14px;padding:8px 0}.programme b{font-size:.65rem;letter-spacing:.08em;color:#56698f}.programme span{font-family:"Cormorant Garamond",serif;font-size:1.05rem;color:#706772}
.story-banner{max-width:620px;height:260px;margin:45px auto 0;position:relative;overflow:hidden}.story-banner::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent,rgba(25,35,58,.52))}.story-banner figcaption{position:absolute;z-index:2;left:0;right:0;bottom:17px;text-align:center;color:white;font-family:"Cormorant Garamond",serif;font-size:2.1rem;font-style:italic}

.reading-page{padding-top:80px}
.reading-block{max-width:630px;margin:0 auto 55px;text-align:center}.reading-block h2{font-size:3rem}.reading-block p:not(.section-kicker){font-family:"Cormorant Garamond",serif;font-size:1.15rem;line-height:1.76;color:#665e68}.reading-block p+p{margin-top:18px}.memory-strip{max-width:660px;height:auto;margin:0 auto 55px;overflow:visible;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.memory-strip img{width:100%;height:330px;object-fit:cover;object-position:center center;border-radius:18px}.memory-strip img[hidden]{display:none!important}.memory-strip[data-story-layout="one"]{grid-template-columns:1fr}.memory-strip[data-story-layout="two"]{grid-template-columns:repeat(2,minmax(0,1fr))}.memory-strip[data-story-layout="three"]{grid-template-columns:repeat(3,minmax(0,1fr))}.reading-block.second{margin-bottom:0}

.entourage-page{padding-top:84px}
.party-grid{max-width:630px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:30px 44px;text-align:center}.party-grid h3{font-family:"Cormorant Garamond",serif;font-size:1.7rem;margin:0 0 8px;color:var(--navy)}.party-grid p{margin:4px 0;color:#80717b;font-size:.86rem}.wide-photo{max-width:650px;height:360px;margin:45px auto 0;overflow:hidden}.wide-photo img{object-position:center 42%}

.details-page{padding-top:72px}
.details-cover{max-width:650px;height:470px;margin:0 auto 45px;position:relative;overflow:hidden}.details-cover::after,.closing-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(27,36,58,.62))}
.photo-safe-card{position:absolute;z-index:2;left:18px;right:18px;bottom:18px;padding:20px;border-radius:16px;background:rgba(29,40,66,.58);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.23);color:white}.photo-safe-card h2{color:white;font-size:2.45rem;margin:0}.section-kicker.light{color:#efd9e0}
.detail-lines{max-width:620px;margin:auto}.detail-lines>div{padding:18px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:130px 1fr;gap:18px}.detail-lines>div:last-child{border-bottom:1px solid var(--line)}.detail-lines b{font-family:"Cormorant Garamond",serif;font-size:1.25rem}.detail-lines>div>span{color:#7d7079;line-height:1.55}.palette{display:flex;gap:8px}.palette i{width:28px;height:28px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px white,0 3px 10px rgba(0,0,0,.08)}
.guest-note{margin-top:60px;margin-bottom:0}

.venue-page{padding-top:80px}
.venue-grid{max-width:650px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:15px}.venue-card{background:#fffafb;border:1px solid var(--line);padding-bottom:20px;text-align:center}.venue-card h3{font-family:"Cormorant Garamond",serif;font-size:1.65rem;margin:18px 0 4px}.venue-card p{color:#82747d;font-size:.78rem;margin:0}.venue-art{height:230px;position:relative;display:flex;align-items:flex-end;justify-content:center;padding:16px;overflow:hidden;background:linear-gradient(180deg,#cbd6c2,#eee2d7 55%,#d4c1b7)}.venue-art::before{content:"";position:absolute;left:15%;right:15%;bottom:0;height:58%;background:#fff7f2;clip-path:polygon(0 100%,0 28%,14% 28%,14% 9%,25% 9%,25% 25%,72% 25%,72% 8%,84% 8%,84% 28%,100% 28%,100% 100%)}.reception-art{background:linear-gradient(180deg,#d6dfd0,#eadbd4 50%,#cab9ad)}.venue-art span{position:relative;z-index:2;background:rgba(255,250,251,.92);padding:7px 14px;font-size:.62rem;letter-spacing:.13em;color:var(--navy)}
.mini-map{max-width:650px;margin:28px auto 0;padding:16px;border:1px solid var(--line);background:#fffafb;display:grid;grid-template-columns:160px 1fr auto;gap:16px;align-items:center}.mini-map svg{width:160px;height:auto}.road{fill:none;stroke:#e0d7dc;stroke-width:8;stroke-linecap:round}.road.main{stroke:#aab4c9;stroke-width:10}.pin-ring{fill:#e9dfe6}.pin{fill:#34466f}.pin-hole{fill:#fff}.mini-map>div{display:flex;flex-direction:column;gap:4px}.mini-map strong{font-family:"Cormorant Garamond",serif;font-size:1.3rem}.mini-map span{font-size:.72rem;color:#83757e}.map-btn{min-width:120px}

.gallery-page{padding-top:80px}.gallery{max-width:650px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:10px}.gallery img{height:260px}.gallery img:first-child{grid-row:span 2;height:530px}

.rsvp-page{padding-top:82px;display:grid;grid-template-columns:160px 1fr;gap:28px;align-items:start}.rsvp-side{display:flex;flex-direction:column;align-items:center;font-family:"Italiana",serif;font-size:4rem;color:var(--navy);line-height:.85;padding-top:40px}.rsvp-side b{font-family:"Cormorant Garamond",serif;color:#b08293;font-weight:400;font-size:.75em}.rsvp-content{max-width:560px}.rsvp-intro{color:#7f717a;line-height:1.6;margin-bottom:25px}
#rsvpForm{display:grid;gap:17px}.field>span,.field legend{display:block;margin-bottom:7px;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:#53658b;font-weight:600}.field input,.field select,.field textarea{width:100%;min-height:50px;border:1px solid #d7cbd1;border-radius:10px;background:white;color:#4d4550;padding:13px 14px;outline:none}.field textarea{resize:vertical;min-height:105px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#667aa1;box-shadow:0 0 0 3px rgba(82,103,141,.12)}
fieldset.field{border:0;margin:0;padding:0}.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choices input{position:absolute;opacity:0}.choices span{min-height:50px;border:1px solid #d7cbd1;background:white;display:flex;align-items:center;justify-content:center;border-radius:10px;cursor:pointer;color:#685e69}.choices input:checked+span{border-color:#40547e;background:#edf0f6;color:var(--navy)}.field small{display:block;min-height:1em;margin-top:4px;color:#a24c5a;font-size:.7rem}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.submit-btn{width:100%;min-height:54px}.rsvp-result{display:none;margin-top:4px;padding:14px;border-radius:10px;background:#eaf0ec;color:#3d6b50;line-height:1.5}.rsvp-result.show{display:block}
.qr-row{margin-top:30px;padding-top:24px;border-top:1px solid var(--line);display:flex;align-items:center;gap:16px}.qr-row img{width:92px;height:92px;object-fit:contain}.qr-row p{margin:0;display:flex;flex-direction:column;gap:4px}.qr-row b{font-family:"Cormorant Garamond",serif;font-size:1.3rem}.qr-row span{font-size:.72rem;color:#80727b}

.closing-page{padding:50px 24px 110px}.closing-photo{max-width:650px;height:560px;margin:auto;position:relative;overflow:hidden}.closing-card h2{font-size:2.7rem}.closing-card p:last-child{font-family:"Cormorant Garamond",serif;font-size:1.45rem;margin:8px 0 0}
.footer{text-align:center;padding:20px 15px 95px;color:#9b8b94;font-size:.58rem;text-transform:uppercase;letter-spacing:.12em}
.reveal{opacity:0;transform:translateY(20px);transition:opacity .75s ease,transform .75s ease}.reveal.visible{opacity:1;transform:none}

@media(min-width:900px){
  main{margin-top:26px;margin-bottom:26px;border-radius:8px;overflow:hidden}
  .bottom-nav{width:390px}
}
@media(max-width:640px){
  .paper-page{padding:62px 16px}.hero-page{padding-top:34px}
  .blue-band{margin-left:-16px;margin-right:-16px;max-width:none}
  .hero-photo{height:58svh;min-height:470px}
  .countdown{grid-template-columns:repeat(2,1fr)}
  .oval-card{border-radius:44% / 13%;padding:48px 22px}
  .party-grid{gap:25px 18px}
  .details-cover{height:420px}.detail-lines>div{grid-template-columns:100px 1fr;gap:10px}
  .venue-grid{grid-template-columns:1fr}.venue-art{height:210px}
  .mini-map{grid-template-columns:100px 1fr;gap:12px}.mini-map svg{width:100px}.mini-map .map-btn{grid-column:1/-1;width:100%}
  .gallery img{height:190px}.gallery img:first-child{height:390px}
  .rsvp-page{grid-template-columns:1fr}.rsvp-side{display:none}.rsvp-content{max-width:none}
  .closing-photo{height:520px}
}
@media(max-width:390px){
  .opening-copy h1{font-size:3.2rem}.envelope{height:250px}.opening-hint{font-size:.68rem}
  .party-grid{grid-template-columns:1fr}.wide-photo{height:290px}
  .detail-lines>div{grid-template-columns:1fr}.palette{margin-top:5px}
  .form-grid,.choices{grid-template-columns:1fr}
  .gallery{grid-template-columns:1fr}.gallery img,.gallery img:first-child{height:270px;grid-row:auto}
  .qr-row{align-items:flex-start}.qr-row img{width:82px;height:82px}
  .bottom-nav{width:calc(100% - 12px);bottom:max(6px,env(safe-area-inset-bottom))}
  .bottom-nav a{min-height:52px}
}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}


/* =========================================================
   REAL ENVELOPE OPENING — REV2
   ========================================================= */
.real-envelope-opening{
  background:
    radial-gradient(circle at 50% 18%,rgba(255,255,255,.98),transparent 34%),
    linear-gradient(180deg,#fffafa 0%,#f8eaee 52%,#eadde4 100%);
}

.opening-title{
  width:min(92vw,560px);
  text-align:center;
  margin:0 auto 18px;
  position:relative;
  z-index:5;
}
.opening-title h1{
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(3rem,9vw,4.9rem);
  line-height:.78;
  font-weight:500;
  color:#293a61;
  margin:.12em 0;
}
.opening-title h1 em{
  display:block;
  font-weight:400;
  color:#a77488;
  font-size:.72em;
  margin:.16em 0;
}
.opening-title>p:last-child{
  margin:12px 0 0;
  font-family:"Cormorant Garamond",serif;
  font-size:1.08rem;
  color:#756b75;
}

.real-envelope{
  position:relative;
  display:block;
  width:min(88vw,500px);
  height:315px;
  padding:0;
  margin:0 auto 20px;
  border:0;
  background:transparent;
  cursor:pointer;
  perspective:1200px;
  overflow:visible;
  -webkit-tap-highlight-color:transparent;
}
.real-envelope:focus-visible{
  outline:3px solid rgba(38,55,94,.28);
  outline-offset:8px;
  border-radius:22px;
}
.real-envelope span{pointer-events:none}

.env-shadow{
  position:absolute;
  left:9%;
  right:9%;
  bottom:-8px;
  height:34px;
  border-radius:50%;
  background:rgba(43,33,48,.18);
  filter:blur(16px);
  z-index:0;
}

.env-back{
  position:absolute;
  left:4%;
  right:4%;
  bottom:0;
  height:72%;
  z-index:1;
  border-radius:17px;
  background:
    linear-gradient(145deg,rgba(255,255,255,.08),transparent 32%),
    linear-gradient(145deg,#385077,#21375f);
  box-shadow:0 24px 55px rgba(30,42,70,.23);
  overflow:hidden;
}
.env-back:before{
  content:"";
  position:absolute;
  inset:12px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:11px;
}
.env-paper-text{
  position:absolute;
  left:0;right:0;bottom:14px;
  color:rgba(255,255,255,.44);
  font-size:.54rem;
  letter-spacing:.25em;
  text-align:center;
}

.real-letter{
  position:absolute;
  z-index:2;
  left:12%;
  right:12%;
  bottom:8%;
  height:78%;
  border-radius:10px 10px 5px 5px;
  background:
    linear-gradient(rgba(255,255,255,.7),rgba(255,255,255,.7)),
    repeating-linear-gradient(0deg,#fff9fb 0 26px,#f3e9ed 27px);
  border:1px solid #e6d8de;
  box-shadow:0 9px 24px rgba(43,35,48,.11);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:7px;
  color:#24375f;
  transform:translateY(28%);
  transition:
    transform 1.25s cubic-bezier(.19,.78,.2,1) .46s,
    box-shadow .8s ease;
}
.real-letter:before,
.real-letter:after{
  content:"❦";
  position:absolute;
  color:#bd879a;
  font-size:.9rem;
  opacity:.65;
}
.real-letter:before{top:17px;left:19px}
.real-letter:after{bottom:17px;right:19px;transform:rotate(180deg)}
.real-letter small{
  font-size:.50rem;
  letter-spacing:.19em;
  color:#7786a3;
}
.real-letter strong{
  font-family:"Cormorant Garamond",serif;
  font-size:2.15rem;
  font-weight:500;
  line-height:.8;
}
.real-letter strong em{
  display:block;
  color:#a87387;
  font-weight:400;
  margin:.09em 0;
}
.real-letter>span{
  font-family:"Cormorant Garamond",serif;
  font-size:.9rem;
  color:#746a73;
}
.real-letter b{
  font-size:.58rem;
  letter-spacing:.18em;
  font-weight:600;
  color:#52698f;
}

.env-pocket-left,
.env-pocket-right,
.env-pocket-bottom{
  position:absolute;
  z-index:4;
  bottom:0;
}
.env-pocket-left{
  left:4%;
  width:49%;
  height:72%;
  background:linear-gradient(155deg,#3a5178,#24385f);
  clip-path:polygon(0 0,100% 63%,100% 100%,0 100%);
  border-radius:0 0 0 17px;
}
.env-pocket-right{
  right:4%;
  width:49%;
  height:72%;
  background:linear-gradient(205deg,#41587e,#263b63);
  clip-path:polygon(0 63%,100% 0,100% 100%,0 100%);
  border-radius:0 0 17px 0;
}
.env-pocket-bottom{
  left:4%;
  right:4%;
  height:48%;
  background:linear-gradient(180deg,#30466e,#20355c);
  clip-path:polygon(0 100%,50% 14%,100% 100%);
  border-radius:0 0 17px 17px;
  z-index:5;
}

.env-flap{
  position:absolute;
  z-index:7;
  left:4%;
  right:4%;
  top:28%;
  height:48%;
  transform-origin:top center;
  transform-style:preserve-3d;
  transition:transform .9s cubic-bezier(.2,.7,.2,1),z-index .01s .45s;
  clip-path:polygon(0 0,100% 0,50% 100%);
  background:linear-gradient(165deg,#52698f,#273c64);
  filter:drop-shadow(0 6px 8px rgba(25,34,57,.15));
}
.flap-lining{
  position:absolute;
  inset:6px 7px 13px;
  clip-path:polygon(0 0,100% 0,50% 100%);
  background:
    radial-gradient(circle at 10px 10px,rgba(179,124,144,.34) 0 2px,transparent 3px) 0 0/18px 18px,
    linear-gradient(180deg,#efe2e7,#e0ced7);
  backface-visibility:hidden;
}

.ribbon{
  position:absolute;
  z-index:8;
  top:49%;
  width:39%;
  height:22px;
  background:
    repeating-linear-gradient(90deg,#f5edf1 0 7px,#e4d4dd 8px 9px);
  border-top:1px solid rgba(255,255,255,.8);
  border-bottom:1px solid rgba(67,50,66,.08);
  transition:opacity .4s ease,transform .6s ease;
}
.ribbon-left{left:6%;transform:rotate(-3deg)}
.ribbon-right{right:6%;transform:rotate(3deg)}

.wax-seal{
  position:absolute;
  z-index:10;
  left:50%;
  top:53%;
  width:66px;
  height:66px;
  border-radius:50%;
  transform:translate(-50%,-50%);
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at 35% 25%,#dce7f2 0 6%,transparent 7%),
    radial-gradient(circle at 35% 30%,#91a2be,#526b94 55%,#2b426d 100%);
  border:3px solid rgba(255,255,255,.24);
  box-shadow:
    0 9px 20px rgba(25,36,62,.32),
    inset 0 0 0 3px rgba(25,43,75,.22);
  color:white;
  transition:opacity .35s ease,transform .5s ease;
}
.seal-monogram{
  font-family:"Cormorant Garamond",serif;
  font-size:1rem;
  letter-spacing:.02em;
}
.seal-monogram i{font-style:normal;font-size:.75em;color:#eedce3}

.real-envelope.open .env-flap{
  transform:rotateX(178deg);
  z-index:1;
}
.real-envelope.open .real-letter{
  transform:translateY(-27%);
  box-shadow:0 18px 35px rgba(43,35,48,.16);
}
.real-envelope.open .wax-seal{
  opacity:0;
  transform:translate(-50%,-50%) scale(.58);
}
.real-envelope.open .ribbon-left{
  opacity:0;
  transform:translateX(-32px) rotate(-8deg);
}
.real-envelope.open .ribbon-right{
  opacity:0;
  transform:translateX(32px) rotate(8deg);
}

.opening-btn{
  width:min(88vw,310px);
  min-height:52px;
}
.opening-hint{
  margin-top:9px;
  min-height:18px;
}

@media(max-width:430px){
  .opening-title{margin-bottom:10px}
  .opening-title h1{font-size:3.15rem}
  .opening-title>p:last-child{font-size:1rem}
  .real-envelope{
    width:min(94vw,430px);
    height:270px;
    margin-bottom:14px;
  }
  .real-letter strong{font-size:1.85rem}
  .real-letter>span{font-size:.8rem}
  .wax-seal{width:58px;height:58px}
}

@media(max-height:690px){
  .opening-title{margin-bottom:5px}
  .opening-title>p:last-child{display:none}
  .real-envelope{height:245px;margin-bottom:9px}
  .opening-hint{margin-top:6px}
}


/* =========================================================
   REV3 VENUE POLISH — compact, filled, no empty placeholder art
   ========================================================= */
.venue-intro{
  max-width:560px;
  margin:12px auto 0;
  color:#7d7179;
  font-family:"Cormorant Garamond",serif;
  font-size:1.08rem;
  line-height:1.6;
}

.venue-grid-refined{
  max-width:650px;
  grid-template-columns:1fr 1fr;
  gap:14px;
}

.venue-card-refined{
  padding:28px 24px 24px;
  border-radius:18px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.76),rgba(255,248,250,.96));
  box-shadow:0 12px 30px rgba(46,42,55,.07);
  border:1px solid #e5d9df;
  text-align:left;
  position:relative;
  overflow:hidden;
}

.venue-card-refined::after{
  content:"";
  position:absolute;
  width:130px;
  height:130px;
  border-radius:50%;
  right:-45px;
  top:-45px;
  background:radial-gradient(circle,#dbe1ec 0 3px,transparent 4px) 0 0/18px 18px;
  opacity:.36;
  pointer-events:none;
}

.venue-icon-wrap{
  width:74px;
  height:74px;
  border-radius:50%;
  display:grid;
  place-items:center;
  margin-bottom:18px;
  background:linear-gradient(145deg,#eef1f7,#f6e9ee);
  border:1px solid #d9dce7;
  position:relative;
  z-index:1;
}

.venue-icon-wrap svg{
  width:48px;
  height:48px;
}

.venue-icon-wrap path{
  fill:none;
  stroke:#34466f;
  stroke-width:2.6;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.venue-type{
  margin:0 0 8px !important;
  color:#6f82a6 !important;
  font-size:.58rem !important;
  letter-spacing:.18em !important;
  font-weight:600;
}

.venue-card-refined h3{
  margin:0 0 7px;
  font-family:"Cormorant Garamond",serif;
  font-size:2rem;
  line-height:1;
  color:#26375e;
}

.venue-time{
  margin:0 0 4px !important;
  color:#a47487 !important;
  font-size:.78rem !important;
  letter-spacing:.08em;
  font-weight:600;
}

.venue-address{
  margin:0 0 15px !important;
  color:#675f68 !important;
  font-size:.82rem !important;
}

.venue-copy-small{
  margin:0 0 18px !important;
  color:#7d737a !important;
  font-size:.82rem !important;
  line-height:1.6;
}

.venue-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:#2c426d;
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.05em;
  padding-bottom:3px;
  border-bottom:1px solid #aeb9cc;
}

.venue-link span{
  transition:transform .2s ease;
}

.venue-link:hover span{
  transform:translateX(3px);
}

.mini-map-refined{
  max-width:650px;
  grid-template-columns:130px 1fr auto;
  border-radius:16px;
  padding:14px 16px;
  background:#fffafb;
  box-shadow:0 10px 24px rgba(46,42,55,.05);
}

.mini-map-art svg{
  width:130px;
  display:block;
}

.mini-map-copy{
  display:flex;
  flex-direction:column;
  gap:4px;
}

.mini-map-copy strong{
  font-family:"Cormorant Garamond",serif;
  font-size:1.25rem;
  color:#26375e;
}

.mini-map-copy span{
  font-size:.72rem;
  color:#82777f;
}

@media(max-width:640px){
  .venue-grid-refined{
    grid-template-columns:1fr;
  }

  .venue-card-refined{
    padding:24px 20px;
  }

  .mini-map-refined{
    grid-template-columns:94px 1fr;
    gap:12px;
  }

  .mini-map-art svg{
    width:94px;
  }

  .mini-map-refined .map-btn{
    grid-column:1/-1;
    width:100%;
  }
}

@media(max-width:390px){
  .venue-card-refined h3{
    font-size:1.8rem;
  }

  .venue-icon-wrap{
    width:66px;
    height:66px;
  }

  .venue-icon-wrap svg{
    width:42px;
    height:42px;
  }
}


/* ===== Bride / Groom Contact ===== */
.contact-section{
  padding:clamp(44px,7vw,76px) 18px;
  position:relative;
}
.contact-heading{
  max-width:720px;
  margin:0 auto 26px;
  text-align:center;
}
.contact-kicker{
  margin:0 0 8px;
  font-size:.65rem;
  font-weight:800;
  letter-spacing:.18em;
}
.contact-heading h2{
  margin:.05em 0;
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(2rem,5vw,3rem);
  font-weight:500;
}
.contact-heading>p:last-child{
  max-width:590px;
  margin:10px auto 0;
  line-height:1.65;
  opacity:.78;
}
.couple-contact-grid{
  width:min(100%,820px);
  margin:0 auto;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
}
.couple-contact-card{
  display:grid;
  grid-template-columns:82px 1fr;
  gap:16px;
  align-items:center;
  padding:18px;
  border:1px solid rgba(120,100,80,.18);
  border-radius:20px;
  background:rgba(255,255,255,.88);
  box-shadow:0 14px 38px rgba(55,45,35,.08);
}
.contact-avatar{
  width:82px;height:82px;border-radius:50%;
  display:grid;place-items:center;
  border:5px solid rgba(255,255,255,.95);
  box-shadow:0 0 0 1px rgba(120,100,80,.18);
  background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(235,225,210,.9));
}
.contact-avatar span{
  font-family:Georgia,"Times New Roman",serif;
  font-size:1.55rem;
}
.contact-copy small{
  display:block;
  font-size:.54rem;
  letter-spacing:.15em;
  font-weight:800;
  opacity:.65;
}
.contact-copy h3{
  margin:2px 0 4px;
  font-family:Georgia,"Times New Roman",serif;
  font-size:1.55rem;
  font-weight:500;
}
.contact-copy p{
  margin:0 0 10px;
  font-size:.76rem;
  line-height:1.45;
  opacity:.72;
}
.couple-contact-actions{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
}
.couple-contact-actions a{
  min-height:38px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 13px;
  border-radius:999px;
  border:1px solid currentColor;
  font-size:.62rem;
  font-weight:800;
}
@media(max-width:680px){
  .couple-contact-grid{grid-template-columns:1fr}
}
@media(max-width:390px){
  .couple-contact-card{grid-template-columns:68px 1fr;padding:14px}
  .contact-avatar{width:68px;height:68px}
}

/* V4.9.1 KF-003 editor fixes */
.venue-grid-refined:has(.venue-card[hidden]){grid-template-columns:1fr;max-width:460px}
.venue-card[hidden]{display:none!important}
@media(max-width:720px){
  .memory-strip,.memory-strip[data-story-layout="two"],.memory-strip[data-story-layout="three"]{grid-template-columns:1fr}
  .memory-strip img{height:270px}
}
