:root {
  color-scheme: light;
  --purple: #5f668c;
  --purple-dark: #4f5678;
  --ink: #352f39;
  --muted: #6e7180;
  --line: #d2d5e2;
  --page: #f4f3f2;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--page);
  color: #242222;
  font-family: Arial, Helvetica, sans-serif;
}
button, input, textarea { font: inherit; }
button, a, input, textarea { -webkit-tap-highlight-color: transparent; }
body.envelope-pending { overflow: hidden; }

.envelope-intro { display: none; }
.js .envelope-intro {
  position:fixed;inset:0;z-index:100;display:grid;place-content:center;justify-items:center;overflow:hidden;padding:28px 16px;
  background:radial-gradient(ellipse at 50% 45%,rgba(211,216,235,.68),transparent 43%),linear-gradient(155deg,#fbfbfc 0%,#f1f2f7 55%,#eceef5 100%);
  isolation:isolate;will-change:opacity;
}
.envelope-intro::before { content:"";position:absolute;inset:0;opacity:.2;background-image:repeating-linear-gradient(7deg,rgba(79,86,120,.08) 0 1px,transparent 1px 5px),repeating-linear-gradient(97deg,rgba(255,255,255,.7) 0 1px,transparent 1px 6px);mix-blend-mode:multiply;pointer-events:none; }
.envelope-eyebrow { position:relative;margin:0 0 clamp(38px,7vh,60px);color:var(--purple);font:italic clamp(17px,4vw,20px) Georgia,"Times New Roman",serif;letter-spacing:.02em;transition:opacity .35s ease,transform .55s cubic-bezier(.22,1,.36,1); }
.envelope-stage { position:relative;width:min(88vw,430px);aspect-ratio:1.52;perspective:1500px;filter:drop-shadow(0 28px 22px rgba(42,46,67,.18));transform:translate3d(0,0,0);will-change:transform; }
.envelope-scene { position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d; }
.envelope-back,.envelope-front,.envelope-flap { position:absolute;inset:0;display:block; }
.envelope-back { z-index:1;overflow:hidden;border:1px solid #d6d8e2;border-radius:8px;background:repeating-linear-gradient(101deg,rgba(91,97,124,.025) 0 1px,transparent 1px 5px),linear-gradient(148deg,#fff 0%,#f0f1f5 100%);box-shadow:inset 0 0 22px rgba(77,82,106,.07); }
.envelope-back::after { content:"";position:absolute;inset:8px;border:1px solid rgba(118,123,146,.12);border-radius:5px; }
.envelope-card { position:absolute;z-index:2;bottom:5%;left:50%;width:70%;height:89%;object-fit:cover;object-position:top;border:5px solid #fff;border-radius:2px;box-shadow:0 10px 26px rgba(42,46,67,.21);transform:translate3d(-50%,5%,0);backface-visibility:hidden;will-change:transform; }
.envelope-flap { z-index:5;height:64%;transform-origin:50% 0;clip-path:polygon(0 0,100% 0,50% 100%);background:repeating-linear-gradient(104deg,rgba(87,93,121,.025) 0 1px,transparent 1px 5px),linear-gradient(165deg,#fff 3%,#f1f2f6 55%,#e3e6ef 100%);filter:drop-shadow(0 3px 2px rgba(58,63,88,.12));backface-visibility:hidden;will-change:transform; }
.envelope-flap::after { content:"";position:absolute;inset:0;clip-path:inherit;background:linear-gradient(100deg,transparent 32%,rgba(255,255,255,.58) 48%,transparent 66%);opacity:.65; }
.envelope-front { z-index:4;overflow:hidden;clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);border-radius:8px;background:linear-gradient(34deg,#f4f5f8 0 49.6%,transparent 50%) left/51% 100% no-repeat,linear-gradient(-34deg,#e9ebf1 0 49.6%,transparent 50%) right/51% 100% no-repeat,linear-gradient(180deg,transparent 0 42%,#fafafd 43% 100%);filter:drop-shadow(0 -1px 1px rgba(64,68,89,.08)); }
.envelope-front::after { content:"";position:absolute;inset:0;background:linear-gradient(146deg,transparent 49.6%,rgba(91,96,121,.12) 50%,transparent 50.5%) left/51% 100% no-repeat,linear-gradient(214deg,transparent 49.6%,rgba(91,96,121,.1) 50%,transparent 50.5%) right/51% 100% no-repeat; }
.envelope-lavender { position:absolute;z-index:6;width:43%;height:auto;pointer-events:none;filter:saturate(.78) contrast(.96) opacity(.84) drop-shadow(0 2px 1px rgba(42,47,69,.08));will-change:opacity,transform; }
.envelope-lavender-left { bottom:-8%;left:-4%;transform:translate3d(0,0,42px) rotate(-9deg); }
.envelope-lavender-right { top:22%;right:-6%;transform:translate3d(0,0,40px) scaleX(-1) rotate(-15deg);opacity:.5; }
.envelope-seal { position:absolute;z-index:8;top:47%;left:50%;display:grid;width:76px;height:76px;place-items:center;padding:0;cursor:pointer;border:1px solid rgba(53,59,91,.28);border-radius:49% 53% 47% 55%/54% 46% 56% 48%;background:radial-gradient(circle at 34% 24%,rgba(255,255,255,.42) 0 5%,transparent 18%),radial-gradient(circle at 50% 58%,#6e77a6 0 43%,#535c89 72%,#424a74 100%);color:#fff;box-shadow:0 9px 16px rgba(48,53,80,.32),0 2px 3px rgba(35,39,61,.32),inset 0 2px 4px rgba(255,255,255,.25),inset 0 -5px 8px rgba(31,36,64,.25);transform:translate3d(-50%,-40%,18px);transition:transform .22s cubic-bezier(.22,1,.36,1),box-shadow .22s ease;-webkit-tap-highlight-color:transparent;will-change:transform,opacity; }
.envelope-seal::before { content:"";position:absolute;inset:8px;border:1px solid rgba(233,235,248,.32);border-radius:53% 47% 52% 48%/48% 54% 46% 52%;box-shadow:inset 0 0 0 2px rgba(41,46,76,.18),0 1px 0 rgba(255,255,255,.12); }
.envelope-seal::after { content:"";position:absolute;inset:-5px;z-index:-1;border-radius:53% 47% 49% 51%;background:radial-gradient(circle,rgba(71,78,116,.18),transparent 68%); }
.envelope-seal span { position:relative;font:600 16px Georgia,"Times New Roman",serif;letter-spacing:.055em;text-shadow:0 1px 1px rgba(27,31,55,.62),0 -1px 0 rgba(255,255,255,.2); }
.envelope-seal i { font-size:.72em;font-style:normal;opacity:.75; }
.envelope-seal:active { transform:translate3d(-50%,-35%,10px) scale(.95);box-shadow:0 4px 8px rgba(48,53,80,.28),inset 0 2px 5px rgba(255,255,255,.18),inset 0 -3px 7px rgba(31,36,64,.28); }
.envelope-prompt { position:relative;margin:clamp(34px,6vh,52px) 0 0;color:#596180;font-size:14px;letter-spacing:.06em;transition:opacity .3s ease,transform .5s cubic-bezier(.22,1,.36,1); }
.envelope-prompt::after { content:"";display:inline-block;width:4px;height:4px;margin:0 0 2px 8px;border-radius:50%;background:#6b7398;animation:prompt-pulse 1.6s ease-in-out infinite; }
.envelope-seal:focus-visible { outline:3px solid rgba(82,91,137,.48);outline-offset:7px; }
.envelope-intro.is-opening { pointer-events:none;animation:envelope-intro-release 2.5s cubic-bezier(.22,1,.36,1) forwards; }
.envelope-intro.is-opening .envelope-stage { animation:envelope-stage-open 2.1s cubic-bezier(.22,1,.36,1) forwards; }
.envelope-intro.is-opening .envelope-flap { animation:envelope-flap-open .82s cubic-bezier(.32,.02,.18,1) .18s forwards; }
.envelope-intro.is-opening .envelope-card { z-index:5;animation:envelope-card-rise 1.75s cubic-bezier(.18,.78,.18,1) .52s forwards; }
.envelope-intro.is-opening .envelope-seal { animation:envelope-seal-break .42s cubic-bezier(.34,1.56,.64,1) forwards; }
.envelope-intro.is-opening .envelope-lavender-left { animation:lavender-left-release 1.2s ease .25s forwards; }
.envelope-intro.is-opening .envelope-lavender-right { animation:lavender-right-release 1.2s ease .25s forwards; }
.envelope-intro.is-opening .envelope-prompt,.envelope-intro.is-opening .envelope-eyebrow { opacity:0;transform:translateY(-8px); }
@keyframes prompt-pulse { 50% { opacity:.35; } }
@keyframes envelope-seal-break { 0%{opacity:1;transform:translate3d(-50%,-40%,18px) scale(1)}35%{transform:translate3d(-50%,-34%,8px) scale(.93)}100%{opacity:0;transform:translate3d(-50%,-62%,34px) scale(.72) rotate(-7deg)} }
@keyframes envelope-flap-open { 0%{z-index:5;transform:rotateX(0deg)}49%{z-index:5}50%,100%{z-index:1}100%{transform:rotateX(180deg);filter:drop-shadow(0 -4px 5px rgba(58,63,88,.09))} }
@keyframes envelope-card-rise { 0%{transform:translate3d(-50%,5%,0) scale(1)}68%{transform:translate3d(-50%,-68%,34px) scale(.96)}100%{transform:translate3d(-50%,-58%,58px) scale(1.04)} }
@keyframes envelope-stage-open { 0%,55%{transform:translate3d(0,0,0) scale(1)}100%{transform:translate3d(0,8vh,0) scale(1.035)} }
@keyframes lavender-left-release { to { opacity:.2;transform:translate3d(-10px,12px,42px) rotate(-14deg) } }
@keyframes lavender-right-release { to { opacity:.12;transform:translate3d(-8px,8px,40px) scaleX(-1) rotate(-20deg) } }
@keyframes envelope-intro-release { 0%,76%{opacity:1}100%{opacity:0;visibility:hidden} }

.page {
  width: 100%;
  max-width: 560px;
  min-height: 100vh;
  margin: 0 auto;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 10px 50px rgba(48, 44, 52, .10);
}
.invitation { display: block; width: 100%; height: auto; }

.quick-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  padding: 28px 20px 32px;
}
.outline-button {
  display: flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  padding: 10px 12px;
  border: 1px solid #7d84aa;
  border-radius: 999px;
  color: var(--purple);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
}
.outline-button:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--purple);
  outline-offset: 2px;
}

.confirmation {
  padding: 40px 20px;
  border-top: 1px solid #e3e5ed;
  background: #fafafc;
}
.confirmation-inner { max-width: 448px; margin: 0 auto; }
h1, h2 {
  margin: 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  text-align: center;
}
h1 { font-size: 32px; }
h2 { font-size: 26px; }
.intro {
  max-width: 384px;
  margin: 12px auto 0;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.5;
  text-align: center;
}
form { margin-top: 28px; }
.field-label, legend {
  display: block;
  margin: 0;
  color: #4d4650;
  font-size: 14px;
  font-weight: 700;
}
input[type="text"], textarea {
  display: block;
  width: 100%;
  min-height: 48px;
  margin-top: 8px;
  padding: 12px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
  color: var(--ink);
  font-size: 16px;
  outline: none;
}
textarea { min-height: 112px; resize: vertical; line-height: 1.4; }
input::placeholder, textarea::placeholder { color: #aaa2ad; }
input:focus, textarea:focus { border-color: #70779d; box-shadow: 0 0 0 3px rgba(112, 119, 157, .13); }
fieldset { margin: 22px 0; padding: 0; border: 0; }
.choice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
.choice {
  display: flex;
  min-height: 48px;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
  color: #615a63;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
}
.choice.active { border-color: #70779d; background: #70779d; color: #fff; }
.choice input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.helper { margin: 8px 0 0; color: #7d7580; font-size: 14px; line-height: 1.45; }
.honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.message { margin: 18px 0 0; padding: 12px 16px; border-radius: 16px; background: #fff0f0; color: #a32020; font-size: 14px; line-height: 1.45; }
.submit-button {
  display: flex;
  width: 100%;
  min-height: 56px;
  margin-top: 22px;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 999px;
  background: var(--purple);
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  box-shadow: 0 8px 22px rgba(95, 102, 140, .25);
}
.submit-button:disabled { cursor: wait; opacity: .7; }
.success-card {
  margin-top: 28px;
  padding: 30px 24px;
  border: 1px solid #cbd0df;
  border-radius: 24px;
  background: #fff;
  text-align: center;
  box-shadow: 0 2px 8px rgba(48, 44, 52, .05);
}
.success-icon {
  display: grid;
  width: 40px;
  height: 40px;
  margin: 0 auto 12px;
  place-items: center;
  border: 2px solid #626b94;
  border-radius: 50%;
  color: #626b94;
  font-size: 24px;
  font-weight: 700;
}
.success-card p { margin: 8px 0 0; color: var(--muted); font-size: 16px; line-height: 1.5; }
.success-card button { margin-top: 20px; cursor: pointer; border: 0; background: transparent; color: var(--purple); font-size: 14px; font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
[hidden] { display: none !important; }
footer { padding: 28px 24px; background: var(--purple); color: rgba(255,255,255,.88); font-size: 14px; text-align: center; }

@media (min-width: 520px) {
  .quick-actions { padding-right: 40px; padding-left: 40px; }
  .confirmation { padding-right: 40px; padding-left: 40px; }
}
/* Photo-real envelope artwork supplied by the couple. */
.envelope-stage { width:min(96vw,520px);height:clamp(350px,54vh,480px);aspect-ratio:auto;perspective:none;filter:none;isolation:isolate; }
.envelope-art,.envelope-open-back,.envelope-open-front,.envelope-botanical,.envelope-card { position:absolute;left:50%;height:auto;pointer-events:none;backface-visibility:hidden;will-change:transform,opacity; }
.envelope-art,.envelope-open-back,.envelope-open-front { top:50%; }
.envelope-art-closed { z-index:5;width:148%;opacity:1;transform:translate3d(-50%,-50%,0); }
.envelope-open-back,.envelope-open-front { width:148%;opacity:0;transform:translate3d(-50%,-50%,0); }
.envelope-open-back { z-index:2; }
.envelope-open-front { z-index:5;clip-path:polygon(14% 42%,50% 60.5%,86% 42%,86% 72%,14% 72%); }
.envelope-card { z-index:3;top:auto;bottom:8%;width:55%;height:auto;opacity:0;border:5px solid #fff;box-shadow:0 12px 28px rgba(37,38,48,.2);clip-path:none;transform-origin:50% 100%;transform:translate3d(-50%,0,0) scale(.72); }
.envelope-seal { z-index:8;top:50%;width:102px;height:102px;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;transform:translate3d(-50%,-50%,0);transition:transform .2s ease; }
.envelope-seal::before,.envelope-seal::after { display:none; }
.envelope-seal img { position:absolute;top:50%;left:50%;width:190px;max-width:none;height:auto;filter:drop-shadow(0 7px 7px rgba(52,37,55,.28));transform:translate(-50%,-50%); }
.envelope-seal:active { transform:translate3d(-50%,-48%,0) scale(.94);box-shadow:none; }
.envelope-intro.is-opening { animation:real-intro-release 3s cubic-bezier(.22,1,.36,1) forwards; }
.envelope-intro.is-opening .envelope-stage { animation:real-stage-open 2.6s cubic-bezier(.22,1,.36,1) forwards; }
.envelope-intro.is-opening .envelope-seal { animation:real-seal-release .52s cubic-bezier(.34,1.56,.64,1) forwards; }
.envelope-intro.is-opening .envelope-art-closed { animation:real-closed-away .4s ease .14s forwards; }
.envelope-intro.is-opening .envelope-open-back,.envelope-intro.is-opening .envelope-open-front { animation:real-open-arrive .3s ease .28s forwards; }
.envelope-intro.is-opening .envelope-card { z-index:3;animation:real-card-rise 1.72s cubic-bezier(.22,.68,.22,1) .42s forwards; }
@keyframes real-seal-release { 0%{opacity:1;transform:translate3d(-50%,-50%,0) scale(1)}35%{transform:translate3d(-50%,-47%,0) scale(.91)}100%{opacity:0;transform:translate3d(-50%,-62%,0) scale(.72) rotate(-5deg)} }
@keyframes real-closed-away { 0%,60%{opacity:1;transform:translate3d(-50%,-50%,0) scale(1)}100%{opacity:0;transform:translate3d(-50%,-52%,0) scale(.985)} }
@keyframes real-open-arrive { from{opacity:0}to{opacity:1} }
@keyframes real-card-rise { 0%{opacity:1;transform:translate3d(-50%,0,0) scale(.72)}68%{opacity:1;transform:translate3d(-50%,-34%,0) scale(.96)}100%{opacity:1;transform:translate3d(-50%,-30%,0) scale(1)} }
@keyframes real-stage-open { 0%,52%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,5vh,0) scale(1.02)} }
@keyframes real-intro-release { 0%,78%{opacity:1}100%{opacity:0;visibility:hidden} }

@media (max-width: 370px) {
  .quick-actions, .choice-grid { grid-template-columns: 1fr; }
  .envelope-stage { width:98vw;height:340px; }
  .envelope-seal { width:94px;height:94px; }
  .envelope-seal img { width:174px; }
}

@media (hover: hover) {
  .envelope-seal:hover { transform:translate3d(-50%,-53%,0) scale(1.035);box-shadow:none; }
  .outline-button:hover { background: #f1f2f7; }
  .submit-button:hover { background: var(--purple-dark); }
}

@media (prefers-reduced-motion: reduce) {
  .envelope-intro,.envelope-stage,.envelope-card,.envelope-seal,.envelope-art,.envelope-open-back,.envelope-open-front { animation-duration:.01ms !important;animation-delay:0ms !important;transition-duration:.01ms !important; }
  .envelope-prompt::after { animation:none; }
}

/* Rebuilt envelope opening. This block is intentionally isolated from the retired animation above. */
.wedding-opening{position:fixed;inset:0;z-index:100;display:grid;place-content:center;justify-items:center;overflow:hidden;padding:24px 12px;background:radial-gradient(ellipse at 50% 45%,rgba(211,216,235,.68),transparent 43%),linear-gradient(155deg,#fbfbfc 0%,#f1f2f7 55%,#eceef5 100%);isolation:isolate}
.wedding-opening::before{content:"";position:absolute;inset:0;opacity:.2;background-image:repeating-linear-gradient(7deg,rgba(79,86,120,.08) 0 1px,transparent 1px 5px),repeating-linear-gradient(97deg,rgba(255,255,255,.7) 0 1px,transparent 1px 6px);mix-blend-mode:multiply;pointer-events:none}
.wedding-opening__kicker,.wedding-opening__hint{position:relative;z-index:2;transition:opacity .3s ease,transform .45s ease}
.wedding-opening__kicker{margin:0 0 clamp(24px,5vh,42px);color:var(--purple);font:italic clamp(17px,4vw,20px) Georgia,"Times New Roman",serif;letter-spacing:.02em}
.wedding-opening__hint{margin:clamp(24px,4vh,38px) 0 0;color:#596180;font-size:14px;letter-spacing:.06em}
.wedding-opening__hint::after{content:"";display:inline-block;width:4px;height:4px;margin:0 0 2px 8px;border-radius:50%;background:#6b7398;animation:prompt-pulse 1.6s ease-in-out infinite}
.wedding-envelope{position:relative;width:min(92vw,520px);height:clamp(310px,52vh,390px);isolation:isolate}
.wedding-envelope__closed,.wedding-envelope__open-base,.wedding-envelope__front{position:absolute;top:50%;left:50%;width:148%;max-width:none;height:auto;transform:translate3d(-50%,-50%,0);pointer-events:none}
.wedding-envelope__open-base,.wedding-envelope__front{width:182%}
.wedding-envelope__closed{z-index:6;opacity:1}
.wedding-envelope__opened{position:absolute;inset:0;z-index:2;opacity:0;pointer-events:none}
.wedding-envelope__open-base{z-index:1}
.wedding-envelope__invite-track{position:absolute;inset:0 0 20% 0;z-index:3;overflow:hidden}
.wedding-envelope__invite{position:absolute;top:20%;left:50%;width:68%;max-width:none;height:auto;opacity:0;border:4px solid #fff;border-radius:2px;box-shadow:0 10px 25px rgba(37,38,48,.2);transform:translate3d(-50%,50%,0);transform-origin:50% 0;will-change:transform,opacity}
.wedding-envelope__front{z-index:4}
.wedding-envelope__front--left{clip-path:polygon(22% 42%,50% 60.5%,50% 69%,22% 69%)}
.wedding-envelope__front--right{clip-path:polygon(50% 60.5%,78% 42%,78% 69%,50% 69%)}
.wedding-envelope__seal{position:absolute;z-index:8;top:72%;left:50%;width:102px;height:102px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;transform:translate3d(-50%,-50%,0)}
.wedding-envelope__seal img{position:absolute;top:50%;left:50%;width:190px;max-width:none;height:auto;filter:drop-shadow(0 7px 7px rgba(52,37,55,.28));transform:translate(-50%,-50%)}
.wedding-envelope__seal:focus-visible{outline:3px solid rgba(82,91,137,.48);outline-offset:7px}
.wedding-opening.is-opening{pointer-events:none;animation:wedding-opening-finish 3s ease forwards}
.wedding-opening.is-opening .wedding-opening__kicker,.wedding-opening.is-opening .wedding-opening__hint{opacity:0;transform:translateY(-6px)}
.wedding-opening.is-opening .wedding-envelope__seal{animation:wedding-seal-away .45s ease forwards}
.wedding-opening.is-opening .wedding-envelope{animation:wedding-envelope-exit 3s ease forwards}
.wedding-opening.is-opening .wedding-envelope__closed{animation:wedding-closed-away .34s ease .12s forwards}
.wedding-opening.is-opening .wedding-envelope__opened{animation:wedding-open-appear .34s ease .22s forwards}
.wedding-opening.is-opening .wedding-envelope__invite{animation:wedding-invite-rise 1.55s cubic-bezier(.2,.72,.2,1) .38s forwards}
@keyframes wedding-seal-away{to{opacity:0;transform:translate3d(-50%,-56%,0) scale(.76)}}
@keyframes wedding-closed-away{to{opacity:0;transform:translate3d(-50%,-50%,0) scale(.99)}}
@keyframes wedding-open-appear{to{opacity:1}}
@keyframes wedding-invite-rise{0%{opacity:0;transform:translate3d(-50%,50%,0)}18%{opacity:1}72%{opacity:1;transform:translate3d(-50%,-6%,0)}100%{opacity:1;transform:translate3d(-50%,-4%,0)}}
@keyframes wedding-envelope-exit{0%,78%{opacity:1;transform:scale(1)}94%,100%{opacity:0;transform:scale(1.015)}}
@keyframes wedding-opening-finish{0%,99%{visibility:visible}100%{visibility:hidden}}
@media (max-width:519px){.wedding-envelope__seal{top:67%;width:82px;height:82px}.wedding-envelope__seal img{width:148px}}
@media (max-width:380px){.wedding-envelope{width:96vw;height:320px}.wedding-envelope__seal{top:67%;width:76px;height:76px}.wedding-envelope__seal img{width:138px}}
@media (hover:hover){.wedding-envelope__seal:hover{transform:translate3d(-50%,-52%,0) scale(1.025)}}
@media (prefers-reduced-motion:reduce){.wedding-opening,.wedding-opening *,.wedding-opening *::before,.wedding-opening *::after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}}

/* Lista de presentes */
.gift-list-link{grid-column:1/-1}
.gifts{padding:52px 20px 58px;border-top:1px solid #e3e5ed;background:linear-gradient(180deg,#fff 0%,#f7f7fa 100%)}
.gifts-inner{max-width:448px;margin:0 auto}
.section-eyebrow{margin:0 0 8px;color:var(--purple);font:italic 17px Georgia,"Times New Roman",serif;letter-spacing:.04em;text-align:center}
.gifts-message{position:relative;margin:22px 0 32px;padding:24px 22px;border:1px solid #dfe1ea;border-radius:22px;background:rgba(255,255,255,.86);color:#5f5963;font:17px/1.65 Georgia,"Times New Roman",serif;text-align:center;box-shadow:0 10px 30px rgba(70,72,94,.07)}
.gift-list{display:grid;gap:14px}
.gift-card{display:grid;grid-template-columns:42px 1fr;gap:14px;padding:20px;border:1px solid #e0e2eb;border-radius:20px;background:#fff;box-shadow:0 5px 18px rgba(54,52,65,.055)}
.gift-number{color:#8a90ad;font:16px Georgia,"Times New Roman",serif;letter-spacing:.08em}
.gift-card h2{font-size:21px;text-align:left}
.gift-card p{margin:7px 0 0;color:var(--muted);font-size:14px;line-height:1.5}
.gift-price{display:block;margin-top:10px;color:var(--purple-dark);font-size:15px}
.gift-button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;margin-top:14px;padding:8px 16px;border-radius:999px;background:var(--purple);color:#fff;font-size:14px;font-weight:700;text-decoration:none}
.gift-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}.gift-actions .gift-button{margin-top:0}.gift-reserve-button{min-height:40px;padding:8px 16px;border:1px solid var(--purple);border-radius:999px;background:#fff;color:var(--purple-dark);font-size:14px;font-weight:700;cursor:pointer}.gift-reservation-form{display:grid;gap:11px;margin-top:16px;padding-top:16px;border-top:1px solid #e6e7ed}.gift-reservation-form label{color:#514b55;font-size:13px;font-weight:700}.gift-reservation-form input{display:block;width:100%;margin-top:7px;padding:11px 13px;border:1px solid #d4d6e1;border-radius:12px;background:#fff;color:#352f39;font:16px Arial,sans-serif}.gift-honeypot{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0}.gift-reservation-actions{display:flex;gap:9px;flex-wrap:wrap}.gift-reservation-actions button{min-height:40px;padding:8px 15px;border:0;border-radius:999px;background:var(--purple);color:#fff;font-size:14px;font-weight:700;cursor:pointer}.gift-reservation-actions .gift-cancel-button{border:1px solid #d4d6e1;background:#fff;color:#696675}.gift-reservation-message{margin:0!important;padding:10px 12px;border-radius:10px;background:#fff0f0;color:#8e3030!important}.gift-reservation-actions button:disabled{cursor:wait;opacity:.65}
.gifts-loading,.gifts-empty{margin:0;padding:22px;color:var(--muted);text-align:center}
@media(min-width:520px){.gifts{padding-right:40px;padding-left:40px}}

.gift-list-disclosure{grid-column:1/-1}
.gift-list-disclosure>summary{list-style:none;cursor:pointer}
.gift-list-disclosure>summary::-webkit-details-marker{display:none}
.gift-list-disclosure>summary::after{content:"＋";margin-left:10px;font-size:18px;font-weight:400;line-height:1}
.gift-list-disclosure[open]>summary::after{content:"−"}
.gift-list-disclosure .gifts{margin:20px -20px -28px;border-top:1px solid #e3e5ed;border-radius:20px 20px 0 0}
