@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400&family=Cormorant+SC:wght@500;600&family=Cinzel:wght@400;600;700&family=Dancing+Script:wght@600;700&display=swap');
@import url('./firefly.css');

:root{
  --paper:#faf7f3;--ink:#2c1810;--muted:#7a7068;
  --rose:#d4867e;--rose-d:#b5625c;--rose-l:#e0a09a;
  --gold:#c5a059;--gold-l:#d4b06a;--gold-b:#f4d878;--gold-d:#8a6820;
  --foil:linear-gradient(135deg,#fff2b4 0%,#d7aa48 34%,#fff0a8 50%,#9d7224 72%,#e9c864 100%);
  --foil-readable:#9b7026;
  --foil-bright:#f7df83;
  --foil-shadow:0 1px 0 rgba(255,249,222,.60),0 2px 5px rgba(61,34,17,.20);
  --shadow:0 24px 72px rgba(30,16,8,.30),0 4px 16px rgba(30,16,8,.12);
  --cw:min(400px,calc(100vw - 24px));
  --ch:min(800px,calc(100svh - 24px));
  --stub:100px;
  --cover-h:calc(var(--ch) - var(--stub));
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:'Cormorant Garamond',Georgia,serif;color:var(--ink);
  min-height:100svh;overflow:hidden;
  background:
    radial-gradient(ellipse at 25% 15%,rgba(207,136,128,.18) 0%,transparent 50%),
    radial-gradient(ellipse at 75% 85%,rgba(184,150,62,.10) 0%,transparent 50%),
    linear-gradient(160deg,#fff9f0 0%,#f5e8d5 45%,#ede0cc 100%);
}

.page-wrap{min-height:100svh;display:grid;place-items:center;padding:12px;}

/* ── SCENE ── */
.invite-scene{
  position:relative;width:var(--cw);height:var(--ch);flex-shrink:0;z-index:1;
  perspective:1500px;
}

/* ── BOARDING PASS ── */
.boarding-pass{
  position:absolute;inset:0;border-radius:18px;
  background:
    linear-gradient(90deg, rgba(255,255,255,.58), rgba(255,255,255,.16)),
    radial-gradient(ellipse at 37% 31%, rgba(212,134,126,.22), transparent 17%),
    radial-gradient(ellipse at 54% 42%, rgba(212,134,126,.18), transparent 22%),
    radial-gradient(ellipse at 30% 69%, rgba(212,134,126,.14), transparent 18%),
    radial-gradient(ellipse at 73% 67%, rgba(212,134,126,.11), transparent 17%),
    #fbf8f1;
  box-shadow:var(--shadow);
  overflow:hidden;display:flex;flex-direction:column;
}

.boarding-pass::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  background:
    linear-gradient(rgba(251,248,241,.72), rgba(251,248,241,.72)),
    url('/3b4766bd9_generated_image.png') center 45% / 145% auto no-repeat,
    repeating-linear-gradient(0deg, rgba(60,42,28,.025) 0 1px, transparent 1px 5px),
    repeating-linear-gradient(90deg, rgba(197,160,89,.028) 0 1px, transparent 1px 7px);
  opacity:.62;
  mix-blend-mode:multiply;
}

.boarding-pass > *{
  position:relative;
  z-index:1;
}

.boarding-pass::after{
  content:"✈";
  position:absolute;
  right:18px;
  bottom:122px;
  z-index:0;
  width:72px;
  height:72px;
  border:2px dashed rgba(197,160,89,.24);
  border-radius:50%;
  display:grid;
  place-items:center;
  color:rgba(197,160,89,.18);
  font-size:34px;
  transform:rotate(-18deg);
  pointer-events:none;
}

.bp-header{
  flex-shrink:0;background:linear-gradient(135deg,var(--rose-l),var(--rose) 55%,var(--rose-d));
  padding:12px 16px;display:flex;align-items:center;justify-content:space-between;
}
.bp-header-text{font-family:'Cinzel',serif;font-size:10px;font-weight:600;letter-spacing:.22rem;text-transform:uppercase;color:#2a1810;flex:1;text-align:center;}
.bp-perf{height:10px;flex-shrink:0;position:relative;}
.bp-perf::before{content:'';position:absolute;left:-10px;right:-10px;top:50%;border-top:2px dashed rgba(160,120,60,.20);}

/* body */
.bp-body{flex:1;display:flex;min-height:0;position:relative;overflow:hidden;}
.bp-map{position:absolute;top:50%;left:50%;width:120vh;height:120vh;pointer-events:none;opacity:.16;background:url('/3b4766bd9_generated_image.png') center/cover no-repeat;filter:blur(.25px) saturate(.86);transform:translate(-50%,-50%) rotate(90deg);}
.bp-map svg{display:none;}
.bp-strip{flex-shrink:0;width:31px;background:linear-gradient(180deg,var(--rose-l),var(--rose-d));display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);}
.bp-strip-text{font-family:'Cinzel',serif;font-size:10px;font-weight:600;letter-spacing:.12rem;text-transform:uppercase;color:#2a1810;display:flex;align-items:center;gap:4px;}

.bp-content{flex:1;padding:10px 13px 8px;display:flex;flex-direction:column;gap:5px;position:relative;z-index:1;overflow:hidden;}
.bp-content::before{
  content:"";
  position:absolute;
  inset:6% 2% 8% 2%;
  z-index:-1;
  pointer-events:none;
  opacity:.42;
  background:
    radial-gradient(ellipse at 47% 31%, rgba(212,134,126,.34), transparent 18%),
    radial-gradient(ellipse at 56% 46%, rgba(212,134,126,.24), transparent 22%),
    radial-gradient(ellipse at 34% 64%, rgba(212,134,126,.20), transparent 16%),
    radial-gradient(ellipse at 72% 74%, rgba(212,134,126,.17), transparent 18%);
  filter:blur(.35px);
}
.bp-script{font-family:'Dancing Script',cursive;font-size:clamp(19px,5.6vw,26px);font-weight:700;color:var(--foil-readable);text-shadow:var(--foil-shadow);line-height:1;white-space:nowrap;}
.bp-names{
  font-family:'Cormorant SC','Cormorant Garamond',serif;font-size:clamp(25px,7.1vw,33px);font-weight:600;
  color:#8b6425;line-height:1;text-transform:none;letter-spacing:.06em;text-align:center;white-space:nowrap;
  text-shadow:0 1px 0 rgba(255,244,191,.90),0 2px 0 rgba(204,154,58,.45),0 4px 8px rgba(83,48,18,.18);
  margin-bottom:9px;
}
.bp-names span{font-weight:500;color:#73501b;text-shadow:0 1px 0 rgba(249,232,162,.78),0 2px 5px rgba(61,34,17,.14);}

/* guest section */
.bp-guest{border:1px solid rgba(197,160,89,.30);border-radius:9px;background:rgba(255,255,255,.56);padding:8px 9px;margin:0 0 2px;}
.bp-guest-label{display:block;font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.09rem;text-transform:uppercase;color:var(--gold-d);margin-bottom:2px;}
.bp-guest-name{display:block;font-family:'Cormorant Garamond',serif;font-size:clamp(17px,5vw,22px);font-weight:700;line-height:1.08;color:var(--ink);}
.bp-intro{font-family:'Cormorant Garamond',serif;font-size:13.4px;font-weight:700;line-height:1.1;color:#6a574a;text-align:center;padding:3px 7px;border-top:1px solid rgba(197,160,89,.18);border-bottom:1px solid rgba(197,160,89,.18);background:rgba(255,255,255,.26);}

/* 2-col event grid */
.bp-event-grid{display:grid;grid-template-columns:1fr;gap:5px;}
.bp-event-col{border-left:3px solid rgba(212,134,126,.48);padding:7px 8px 7px 9px;display:grid;grid-template-columns:1fr auto;column-gap:8px;row-gap:2px;min-width:0;border-radius:9px;background:linear-gradient(135deg,rgba(255,255,255,.62),rgba(255,248,241,.38));box-shadow:inset 0 0 0 1px rgba(197,160,89,.13),0 6px 16px rgba(60,34,14,.06);}
.bp-ev-city{grid-column:1 / 2;font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.08rem;text-transform:uppercase;color:var(--foil-readable);text-shadow:0 1px 0 rgba(255,245,214,.50);}
.bp-ev-date{grid-column:2 / 3;grid-row:1 / 2;align-self:start;font-family:'Cinzel',serif;font-size:12.4px;font-weight:700;color:var(--ink);white-space:nowrap;text-align:right;}
.bp-ev-meta{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:8px;font-family:'Cormorant Garamond',serif;font-size:12.5px;font-weight:600;color:#6d5d52;font-style:italic;line-height:1.02;}
.bp-ev-meta span:last-child{font-weight:700;font-style:normal;white-space:nowrap;text-align:right;}
.bp-ev-venue{grid-column:1 / -1;font-family:'Cormorant Garamond',serif;font-size:15.4px;font-weight:700;color:var(--ink);line-height:1.05;}
.bp-ev-addr{grid-column:1 / -1;font-family:'Cormorant Garamond',serif;font-size:11.8px;color:#5f544b;line-height:1.14;}
.bp-card-action{grid-column:1 / -1;justify-self:start;margin-top:2px;border:1px solid rgba(197,160,89,.42);border-radius:999px;background:rgba(255,255,255,.58);color:#3f2a16;padding:5px 10px;font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.035rem;text-transform:uppercase;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.62);}

.bp-action-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;margin-top:0;padding:6px 8px;border-radius:10px;background:linear-gradient(135deg,rgba(212,134,126,.13),rgba(255,255,255,.38));border:1px solid rgba(212,134,126,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.24);}
.bp-action-kicker{font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.08rem;text-transform:uppercase;color:var(--foil-readable);}
.bp-countdown-compact{display:grid;gap:3px;min-width:0;}
.bp-countdown-units{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:4px;font-family:'Cinzel',serif;font-size:10px;font-weight:700;color:#6a574a;line-height:1;}
.bp-countdown-units span{display:inline-flex;align-items:baseline;gap:1px;padding:3px 4px;border-radius:5px;background:rgba(255,255,255,.52);border:1px solid rgba(197,160,89,.16);}
.bp-countdown-units strong{font-size:13px;color:var(--ink);}
.bp-rsvp-mini{display:grid;justify-items:center;gap:3px;font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.035rem;text-transform:uppercase;color:#6a574a;white-space:nowrap;}
.bp-wa-action{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#1f8f50;color:#fff;text-decoration:none;font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.02rem;border:1px solid rgba(255,255,255,.72);box-shadow:0 4px 10px rgba(31,143,80,.24),inset 0 1px 0 rgba(255,255,255,.32);}

/* plane bar */
.bp-plane-bar{display:flex;align-items:center;gap:6px;margin-top:0;}
.bp-plane-bar svg{flex-shrink:0;width:28px;height:18px;}
.bp-dot-line{flex:1;height:1px;background:repeating-linear-gradient(to right,var(--gold) 0,var(--gold) 4px,transparent 4px,transparent 9px);}
.bp-stamp{flex-shrink:0;width:30px;height:30px;border-radius:50%;border:1.5px dotted rgba(197,160,89,.70);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:0;}
.bp-stamp-ico{font-size:10px;color:var(--gold);}
.bp-stamp-txt{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.02rem;color:rgba(197,160,89,.80);text-align:center;transform:scale(.55);line-height:.9;}

/* countdown */
.bp-countdown{display:flex;align-items:flex-end;justify-content:center;gap:3px;margin-top:1px;}
.cd-unit{display:flex;flex-direction:column;align-items:center;gap:1px;}
.cd-num{font-family:'Cinzel',serif;font-size:clamp(11px,3vw,14px);font-weight:700;color:var(--gold);line-height:1;min-width:24px;text-align:center;}
.cd-label{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.04rem;text-transform:uppercase;color:var(--muted);}
.cd-sep{font-family:'Cinzel',serif;font-size:11px;font-weight:700;color:rgba(197,160,89,.50);margin-bottom:6px;}

.bp-barcode-wrap{margin-top:auto;display:flex;flex-direction:column;gap:3px;}
.bp-ticket-label{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.14rem;text-transform:uppercase;color:var(--muted);text-align:center;}
.bp-barcode{width:100%;height:20px;border-radius:2px;background:repeating-linear-gradient(90deg,#2c1810 0 1.5px,transparent 1.5px 3.5px,#2c1810 3.5px 5.5px,transparent 5.5px 8px,#2c1810 8px 9px,transparent 9px 12px);opacity:.45;}

/* STUB */
.bp-stub{
  flex-shrink:0;
  margin-top: -9px;
  border-top:2px dashed rgba(212,134,126,.45);
  background:#f0ebe3;
  position:relative;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  padding:10px 18px;gap:8px;
  overflow:visible;
}
.stub-hole{position:absolute;top:0%;width:20px;height:20px;border-radius:50%;background:white;transform:translateY(-50%);}
.stub-hole-l{left:-10px;}
.stub-hole-r{right:-10px;}
.stub-card{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:7px 6px;border-radius:8px;border:1px solid rgba(197,160,89,.28);background:var(--paper);text-align:center;}
.stub-card-label{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.06rem;text-transform:uppercase;color:var(--muted);transform:scale(.82);line-height:.9;}
.stub-card-date{font-family:'Cinzel',serif;font-size:15px;font-weight:700;color:var(--gold-d);line-height:1;text-shadow:0 1px 0 rgba(255,245,214,.55);}
.stub-card-day{font-family:'Cinzel',serif;font-size:10px;color:var(--muted);letter-spacing:.03rem;transform:scale(.82);line-height:.9;}
.stub-card-city{font-family:'Cinzel',serif;font-size:10px;font-weight:700;color:var(--rose-d);line-height:1.05;}
.stub-card-venue{font-family:'Cormorant Garamond',serif;font-size:10px;font-weight:700;color:var(--ink);line-height:1.02;max-width:100%;}
.stub-center{display:flex;flex-direction:column;align-items:center;gap:6px;}
.stub-name{font-family:'Cinzel',serif;font-size:10px;font-weight:700;color:var(--gold);writing-mode:vertical-rl;transform:rotate(180deg) scale(.82);letter-spacing:.06rem;text-transform:uppercase;}
.stub-open-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:999px;background:var(--ink);color:#fff8f0;font-family:'Cinzel',serif;font-weight:600;text-transform:uppercase;border:none;cursor:pointer;transition:background 140ms;}
.stub-open-btn:hover{background:var(--gold-d);}
.invite-scene.open .stub-open-btn{background:var(--rose-d);}

/* ── COVER (3D Flip) ── */
.passport-cover{
  position:absolute;left:0;right:0;top:15%;bottom:15%;z-index:10;
  border-radius:12px;
  transform-origin:left center;
  transform-style:preserve-3d;
  transition:transform 1.4s cubic-bezier(0.645,0.045,0.355,1), box-shadow 1.4s;
  box-shadow:
    0 24px 70px rgba(70,36,28,.38),
    inset 0 1px 0 rgba(255,255,255,.26),
    inset 0 -22px 50px rgba(83,35,31,.24);
  cursor:pointer;
}

.cover-front, .cover-back {
  position:absolute;inset:0;
  border-radius:12px;
  backface-visibility:hidden;
  overflow:hidden;
}

.cover-front {
  background:
    radial-gradient(circle at 34% 22%, rgba(255,255,255,.22), transparent 24%),
    radial-gradient(circle at 74% 76%, rgba(92,32,30,.20), transparent 32%),
    linear-gradient(145deg,#e0a19b 0%,#c67a73 48%,#9f5751 100%);
  display:flex;flex-direction:column;align-items:center;padding:18px 12px 18px;
  animation:coverFloat 6s ease-in-out infinite;
}

.cover-front::before{
  content:"";
  position:absolute;
  inset:10px;
  border-radius:10px;
  border:1px solid rgba(255,238,190,.18);
  box-shadow:inset 0 0 0 1px rgba(90,40,32,.12);
  pointer-events:none;
  z-index:1;
}

.cover-front::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(90deg, rgba(255,255,255,.09), transparent 28%, rgba(0,0,0,.10) 54%, transparent 74%),
    repeating-linear-gradient(115deg, rgba(255,255,255,.045) 0 1px, transparent 1px 5px);
  mix-blend-mode:soft-light;
  pointer-events:none;
  z-index:1;
}

.cover-back {
  background:#fdfcf8;
  transform:rotateY(180deg);
  display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(197,160,89,0.3);
}

.cover-back-stamp {
  font-size:64px;
  color:rgba(197,160,89,0.12);
  transform:rotate(-20deg);
}

/* On open, flip cover */
.invite-scene.open .passport-cover{
  transform:rotateY(-110deg);
  box-shadow:-20px 10px 30px rgba(0,0,0,.15);
}

.cover-map{position:absolute;top:50%;left:50%;width:120vh;height:120vh;pointer-events:none;opacity:.11;background:url('/3b4766bd9_generated_image.png') center/cover no-repeat;filter:saturate(.7) brightness(1.22);transform:translate(-50%,-50%) rotate(90deg);}
.cover-map svg{display:none;}
.cover-texture{position:absolute;inset:0;pointer-events:none;opacity:.06;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(255,255,255,.07) 2px,rgba(255,255,255,.07) 4px);}

.cover-top-label{font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.14rem;text-transform:uppercase;color:var(--foil-bright);text-shadow:0 1px 0 rgba(76,40,20,.52),0 0 10px rgba(255,235,154,.20);white-space:nowrap;padding-top:2px;position:relative;z-index:2;animation:foilSweep 4.8s ease-in-out infinite;}
.cover-guest{position:relative;z-index:2;display:grid;gap:4px;text-align:center;margin-top:14px;margin-bottom:16px;max-width:92%;padding:11px 16px 10px;border-radius:14px;background:linear-gradient(135deg,rgba(255,248,238,.18),rgba(255,255,255,.06));border:1px solid rgba(255,238,190,.28);box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 12px 26px rgba(72,32,26,.16);backdrop-filter:blur(5px);animation:guestGlow 4s ease-in-out infinite;}
.cover-guest-label{font-family:'Cinzel',serif;font-size:10px;font-weight:700;letter-spacing:.12rem;text-transform:uppercase;color:rgba(255,245,224,.72);}
.cover-guest-name{font-family:'Cinzel',serif;font-size:clamp(16px,4.7vw,23px);font-weight:700;line-height:1.05;letter-spacing:.04em;color:#fff2b4;text-shadow:0 1px 0 rgba(87,43,24,.72),0 2px 10px rgba(64,28,22,.34),0 0 12px rgba(255,232,143,.16);}
.cover-guest-invite{font-family:'Dancing Script',cursive;font-size:clamp(19px,5.7vw,29px);font-weight:700;line-height:1;color:rgba(255,255,255,.98);letter-spacing:.02em;text-shadow:0 2px 12px rgba(64,28,22,.30);}
.cover-center{display:flex;flex-direction:column;align-items:center;width:100%;margin-top:0;margin-bottom:auto;position:relative;z-index:2;}

.cover-rope-row{width:100%;display:flex;align-items:center;gap:0;}
.cover-rope-seg{flex:1;height:4px;background:repeating-linear-gradient(90deg,rgba(98,68,20,.84) 0 2px,#f7df7a 2px 5px,#b98a2f 5px 8px,#f7df7a 8px 11px,rgba(98,68,20,.84) 11px 14px);border-radius:2px;box-shadow:0 1px 4px rgba(46,25,12,.22);}
.cover-knot{width:12px;height:12px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff2a7,#c79b35 54%,#76541d);flex-shrink:0;box-shadow:0 2px 7px rgba(0,0,0,.34);}

.cover-heart-svg{display:block;width:clamp(40px,11vw,52px);height:auto;margin:0 12px;filter:drop-shadow(0 5px 14px rgba(0,0,0,.38));}

.cover-plane-svg{display:block;width:clamp(44px,14vw,66px);height:auto;margin-top:14px;filter:drop-shadow(0 7px 14px rgba(0,0,0,.30));transform:rotate(-6deg);animation:planeDrift 3.6s ease-in-out infinite;}

/* ── bottom text ── */
.cover-bottom{display:flex;flex-direction:column;align-items:center;gap:5px;margin-top:14px;padding-top:0;width:100%;position:relative;z-index:2;}
.cover-couple-foil{
  margin-top:8px;
  font-family:'Cinzel',serif;font-size:clamp(18px,5.6vw,25px);font-weight:700;
  color:#f2d879;
  text-align:center;white-space:nowrap;letter-spacing:.08em;
  text-shadow:0 1px 0 rgba(76,40,20,.68),0 2px 8px rgba(64,28,22,.28),0 0 14px rgba(255,232,143,.16);
}
.cover-sep{display:none;}
.cover-hint{
  position:relative;overflow:hidden;
  display:inline-flex;align-items:center;gap:7px;padding:12px 22px;
  border:2px solid rgba(255,245,214,0.72);border-radius:999px;
  background:linear-gradient(135deg,rgba(44,24,16,.78),rgba(138,104,32,.70));backdrop-filter:blur(6px);
  font-family:'Cinzel',serif;font-size:clamp(10px,3.2vw,14px);font-weight:700;letter-spacing:.18rem;
  color:#fff9ee;text-transform:uppercase;animation:pulseHint 2.2s infinite;
  box-shadow:0 12px 28px rgba(55,28,17,.22), inset 0 1px 0 rgba(255,255,255,.28);
}
.cover-hint::before{content:"";position:absolute;top:-40%;bottom:-40%;left:-45%;width:34%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);transform:rotate(18deg);animation:ctaShine 2.8s ease-in-out infinite;}
.cover-hint-arrow{font-size:14px;opacity:.9;animation:arrowLift 1.25s ease-in-out infinite;}
@keyframes pulseHint {
  0%, 100% { box-shadow:0 0 0 0 rgba(255,255,255,0.4); border-color:rgba(255,255,255,0.4); }
  50% { box-shadow:0 0 0 6px rgba(255,255,255,0); border-color:rgba(255,255,255,0.8); }
}
@keyframes coverFloat {
  0%, 100% { transform:translateY(0); }
  50% { transform:translateY(-3px); }
}
@keyframes foilSweep {
  0%, 100% { opacity:.92; }
  50% { opacity:1; text-shadow:0 1px 0 rgba(76,40,20,.52),0 0 14px rgba(255,235,154,.34); }
}
@keyframes guestGlow {
  0%, 100% { border-color:rgba(255,238,190,.28); }
  50% { border-color:rgba(255,238,190,.56); }
}
@keyframes planeDrift {
  0%, 100% { transform:translateY(0) rotate(-6deg); }
  50% { transform:translateY(-4px) rotate(-4deg); }
}
@keyframes ctaShine {
  0%, 45% { left:-45%; }
  100% { left:115%; }
}
@keyframes arrowLift {
  0%, 100% { transform:translateY(0); }
  50% { transform:translateY(-3px); }
}

/* ── DETAILS ── */
.details{width:min(500px,100%);display:flex;flex-direction:column;gap:28px;position:relative;z-index:1;}

.guest-panel{padding:18px 22px;border:1px solid rgba(184,150,62,.32);border-radius:12px;background:rgba(255,255,255,.52);backdrop-filter:blur(6px);display:grid;gap:3px;}
.guest-eye{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.12rem;text-transform:uppercase;color:var(--gold);}
.guest-name{font-family:'Cinzel',serif;font-size:clamp(1.15rem,4.5vw,1.75rem);font-weight:700;color:#3a2c20;}
.guest-sub{font-family:'Cormorant Garamond',serif;font-size:14px;font-style:italic;color:var(--muted);}

.details-h2{font-family:'Cinzel',serif;font-size:clamp(1.2rem,4vw,1.9rem);font-weight:600;color:#3a2c20;line-height:1.15;}

.date-cards{display:flex;flex-direction:column;gap:18px;}
.date-card{border-top:1px solid rgba(90,68,42,.14);padding-top:16px;display:grid;gap:4px;}
.dc-eye{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.10rem;text-transform:uppercase;color:var(--foil-readable);text-shadow:0 1px 0 rgba(255,245,214,.50);}
.dc-date{font-family:'Cinzel',serif;font-size:1.35rem;font-weight:700;color:#3a2c20;}
.dc-time{font-family:'Cormorant Garamond',serif;font-size:14px;color:var(--muted);}
.dc-venue{font-family:'Cormorant Garamond',serif;font-size:14px;font-weight:700;color:#3a2c20;}
.dc-addr{font-family:'Cormorant Garamond',serif;font-size:13px;color:var(--muted);line-height:1.45;}

.map-btn{display:inline-flex;align-items:center;gap:6px;margin-top:4px;padding:8px 16px;border-radius:999px;border:1.5px solid rgba(184,150,62,.38);background:rgba(255,255,255,.52);font-family:'Cinzel',serif;font-size:10px;font-weight:600;letter-spacing:.06rem;text-transform:uppercase;color:#4a3820;cursor:pointer;transition:background 150ms,border-color 150ms,transform 100ms;}
.map-btn:hover{background:rgba(184,150,62,.13);border-color:var(--gold);transform:translateY(-1px);}

.rsvp-sec{border-top:1px solid rgba(90,68,42,.14);padding-top:24px;display:flex;flex-direction:column;gap:12px;}
.rsvp-eye{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.10rem;text-transform:uppercase;color:var(--gold);}
.rsvp-h{font-family:'Cormorant Garamond',serif;font-size:1.2rem;color:#3a2c20;line-height:1.3;}
.rsvp-actions{display:flex;gap:10px;flex-wrap:wrap;}
.rsvp-btn{display:inline-flex;align-items:center;gap:7px;padding:11px 20px;border-radius:999px;font-family:'Cinzel',serif;font-size:10px;font-weight:600;letter-spacing:.06rem;text-transform:uppercase;cursor:pointer;border:1.5px solid transparent;transition:transform 130ms,box-shadow 130ms;}
.rsvp-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(30,20,10,.12);}
.rsvp-wa{background:#3a2c20;color:#fff8f0;border-color:#3a2c20;}
.rsvp-mail{background:transparent;color:#3a2c20;border-color:rgba(100,75,45,.36);}
.rsvp-mail:hover{background:rgba(184,150,62,.09);border-color:var(--gold);}

/* ── MAP MODAL ── */
.modal-bd{position:fixed;inset:0;z-index:200;background:rgba(20,12,4,.55);backdrop-filter:blur(8px);display:grid;place-items:center;padding:24px;opacity:0;pointer-events:none;transition:opacity 180ms;}
.modal-bd.open{opacity:1;pointer-events:all;}
.modal{background:#faf6ee;border-radius:18px;padding:28px 32px 24px;max-width:400px;width:100%;box-shadow:0 36px 90px rgba(20,12,4,.32);border:1px solid rgba(184,150,62,.20);transform:translateY(12px) scale(.97);transition:transform 180ms;}
.modal-bd.open .modal{transform:none;}
.modal-eye{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.10rem;text-transform:uppercase;color:var(--gold);margin-bottom:4px;}
.modal-venue{font-family:'Cormorant Garamond',serif;font-size:19px;font-weight:700;color:#3a2c20;margin-bottom:18px;}
.modal-links{display:flex;flex-direction:column;gap:9px;}
.modal-link{display:flex;align-items:center;gap:11px;padding:13px 16px;border-radius:11px;border:1.5px solid rgba(184,150,62,.26);background:rgba(255,255,255,.52);font-family:'Cormorant Garamond',serif;font-size:15px;font-weight:600;color:#3a2c20;transition:background 130ms,border-color 130ms;}
.modal-link:hover{background:rgba(184,150,62,.11);border-color:var(--gold);}
.modal-link-ico{font-size:19px;flex-shrink:0;}
.modal-close{display:block;width:100%;margin-top:14px;padding:9px;background:transparent;border:none;font-family:'Cinzel',serif;font-size:10px;letter-spacing:.08rem;text-transform:uppercase;color:var(--muted);cursor:pointer;transition:color 130ms;}
.modal-close:hover{color:var(--ink);}

@media(max-width:400px){:root{--cw:calc(100vw - 20px);--ch:min(720px,calc(100svh - 20px));}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;}}
