/* Sculpted timber entrance and raised invitation surfaces. */
.opening { perspective: 1400px; }
[data-theme="lotus"] .gate {
  overflow: visible;
  transform-style: preserve-3d;
  background: linear-gradient(#11090418,#11090465), url("carved-teak.webp") center / cover;
  box-shadow: inset 0 0 0 8px #59331d, inset 0 0 0 10px #c79755, inset 0 0 45px #120903, 14px 0 38px #0009;
}
[data-theme="lotus"] .gate::before { border: 0; outline: 0; }
.gate::after { content:""; position:absolute; inset:0 -16px 0 auto; width:16px; background:linear-gradient(90deg,#ab7440,#30190d); transform-origin:left; transform:rotateY(90deg); }
.gate-right::after { inset:0 auto 0 -16px; transform-origin:right; transform:rotateY(-90deg); }
.opening-valance { opacity:.78; height:80px; }
.opening-card { border:2px solid #d0ab69; box-shadow:0 3px 0 #79582e,0 7px 0 #392819,0 22px 70px #000b,inset 0 1px 15px #d4b57920; }
.opening-options { display:flex; justify-content:center; gap:18px; margin-top:13px; align-items:center; }
.opening-card .opening-skip { margin:0; }
.opening-sound { min-height:44px; padding:8px; border:0; background:transparent; color:#f1dcaf; font-size:.76rem; cursor:pointer; }
.opening-sound span:first-child { font-size:1.15rem; margin-right:4px; }
.topbar { box-shadow:0 4px 16px #0003; position:relative; z-index:2; }
.hero.couple-hero {
  padding:55px 30px 80px;
  background:radial-gradient(ellipse at 72% 18%,#b3834d75,transparent 56%),linear-gradient(115deg,#102c26,#304d3d 58%,#1c3329);
}
.couple-hero::before { content:""; inset:0; opacity:1; filter:none; background:linear-gradient(90deg,#070e0c90,transparent 11%,transparent 89%,#070e0c90); }
.couple-hero::after { content:""; inset:auto -20% -70px; height:200px; background:repeating-linear-gradient(90deg,transparent 0 99px,#d7ae6530 100px 101px),repeating-linear-gradient(0deg,#472c20 0 59px,#c6985440 60px 61px); transform:perspective(500px) rotateX(56deg); opacity:.65; }
.couple-hero .hero-frame { gap:70px; perspective:1400px; grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr); }
.hero-plaque { position:relative; transform:rotateY(4deg) rotateZ(-.8deg); transform-style:preserve-3d; }
.hero-plaque::before { content:""; position:absolute; inset:0; background:linear-gradient(135deg,#c49a61,#76532d); transform:translate3d(-9px,12px,-12px) rotate(-1.2deg); box-shadow:0 25px 48px #0006; border:1px solid #e3bb7c; }
.couple-hero .hero-copy { position:relative; padding:40px 35px; color:#203831; background:radial-gradient(ellipse at 20% 5%,#fffdf4,transparent 60%),linear-gradient(135deg,#fff5e2,#f0dfc1); border:1px solid #d6bb8c; box-shadow:inset 0 0 0 8px #fff8e7,inset 0 0 0 9px #bd97624d,1px 2px 0 #baa078,3px 5px 0 #d5bd96,8px 15px 30px #0004; }
.couple-hero h1 { font-size:clamp(4rem,7.1vw,6.5rem); }
.couple-hero .hero-date { font-size:1rem; }
.couple-hero .hero-place { font-size:.91rem; }
.couple-hero .hero-actions { gap:8px; }
.couple-hero .pill { padding-inline:14px; font-size:.72rem; }
.portrait-mount { position:relative; perspective:1100px; min-width:0; padding-bottom:14px; }
.portrait-mount::after { content:""; position:absolute; height:22px; inset:auto -8px -11px; background:linear-gradient(#b28a52,#e3bf7a 14%,#665030 18%,#302b1d 85%,#ac8551); transform:rotateY(-6deg); box-shadow:10px 19px 24px #0007; }
.couple-photo { border-radius:48% 48% 3px 3px / 19% 19% 3px 3px; padding:13px; border:1px solid #efd19b; outline:0; background:linear-gradient(125deg,#f4d695,#b88a46 18%,#614522 42%,#ceaa68 68%,#6e4d25); transform:rotateX(calc(2deg + var(--tilt-x,0deg))) rotateY(calc(-6deg + var(--tilt-y,0deg))); box-shadow:2px 3px 0 #deb67b,5px 6px 0 #6b4826,8px 9px 0 #3f2b18,21px 30px 45px #0008; }
.couple-photo .cover-tile,.couple-photo img { border-radius:48% 48% 1px 1px / 18% 18% 1px 1px; }
.couple-photo img { aspect-ratio:9 / 10; }
.couple-photo::before { inset:5px; width:auto; height:auto; border:1px solid #ffe8b891; border-radius:inherit; }
.couple-photo::after { inset:11px; width:auto; height:auto; border:1px solid #331f0ec9; border-radius:inherit; box-shadow:inset 2px 3px 10px #0008; }
.has-scroll-motion .couple-photo { transition:transform .45s cubic-bezier(.2,.75,.25,1); }
.date-section { box-shadow:inset 0 13px 28px #0005; padding-bottom:85px; }
.date-card { border:5px ridge #bb9457; outline:1px solid #d8b87f; outline-offset:5px; box-shadow:2px 3px 0 #8a6438,5px 7px 0 #3e2c18,12px 22px 40px #0007,inset 0 0 32px #b88c4520; }
.wax-seal { box-shadow:inset 1px 2px 0 #edd6a57a,inset -2px -3px 8px #071a15,0 2px 0 #d7b176,0 5px 0 #614a27,0 10px 14px #0005; }
.countdown { border:0; gap:12px; margin-top:38px; }
.countdown div { border:1px solid #ccb6804d; padding:15px 3px; background:linear-gradient(135deg,#315044,#142e28); box-shadow:inset 1px 1px 0 #f4d29a25,2px 4px 0 #10221c,5px 10px 17px #0004; }
.countdown div + div { border-left:1px solid #ccb6804d; }
.letter { background:linear-gradient(135deg,#fffdf5,#f6e8ce); box-shadow:2px 3px 0 #dbc8a6,4px 6px 0 #f5e8cf,6px 9px 0 #b6a181,12px 22px 35px #3c2b252b; }
.event-grid { perspective:1200px; gap:24px; }
.event-card { border-bottom:4px solid #c4ac84; box-shadow:2px 3px 0 #d3c3a8,5px 7px 0 #a99470,10px 18px 25px #503c2423; background:linear-gradient(145deg,#fffdf7,#f9efd9); }
@media (hover:hover) {
  .has-scroll-motion .event-card.in-view:hover { transform:translateY(-8px) rotateX(3deg); box-shadow:3px 5px 0 #c5b392,8px 13px 0 #a99470,14px 25px 30px #503c2430; }
}
.gallery-grid .photo-tile { padding:9px; border:3px ridge #b89a69; background:#f9edd5; box-shadow:2px 4px 0 #8d7248,5px 8px 0 #5b4830,9px 17px 24px #291e1830; }
.gallery-grid { gap:27px; }
.photo-viewer { border:4px ridge #bd9b62; box-shadow:4px 7px 0 #584123,0 28px 95px #000b; }
.music { z-index:8; border-color:#e0bd7b; background:linear-gradient(135deg,#2f5042,#142e28); box-shadow:0 3px 0 #775b34,0 8px 21px #0006,inset 0 1px 0 #eddaa348; }
.music span:first-child { color:#efd49d; }
.music.is-playing { border-color:#f3dbac; }
@media (max-width:760px) {
 .hero.couple-hero { padding:25px 23px 48px; }
 .couple-hero .hero-frame { grid-template-columns:minmax(0,1fr); gap:31px; max-width:490px; }
 .hero-plaque { transform:none; }
 .hero-plaque::before { transform:translate(-5px,7px) rotate(-1deg); }
 .couple-hero .hero-copy { padding:25px 17px; }
 .couple-hero h1 { font-size:clamp(2.35rem,10.3vw,4.8rem); }
 .couple-hero .kicker { font-size:.65rem; }
 .couple-hero .hero-date { font-size:.94rem; }
 .couple-hero .hero-place { font-size:.82rem; }
 .couple-hero .hero-actions { margin-top:17px; }
 .portrait-mount { width:92%; justify-self:center; }
 .couple-photo { padding:9px; transform:rotateY(-4deg) rotateX(1deg); }
 .couple-photo img { aspect-ratio:1 / 1; }
 .portrait-mount::after { height:16px; inset:auto -5px -5px; }
 .countdown { gap:8px; }
 .date-card { margin-inline:8px; }
 .gallery-grid { gap:18px; }
 .gallery-grid .photo-tile { padding:5px; }
 .opening-valance { height:55px; }
 .music { right:12px; bottom:max(16px,env(safe-area-inset-bottom)); }
}
@media (prefers-reduced-motion:reduce) {
 .couple-photo { transition:none; }
 .hero-plaque { transform:none; }
}
.motion-disabled .couple-photo { transition:none; }
@media print {
 .hero.couple-hero { background:#fff; }
 .hero-plaque,.couple-photo { transform:none; box-shadow:none; }
 .portrait-mount::after,.hero-plaque::before { display:none; }
}
