/* Revision 2: demo-wedding interaction, original rotating coin, richer stationery. */
#envelope-overlay{cursor:pointer}
#envelope-ui{inset:auto 0 max(5%,35px);gap:.9rem;color:var(--ink);text-shadow:0 2px 18px rgba(250,247,241,.8)}
.env-exclusive{font-size:1.05rem;color:#fff;margin-bottom:.2rem;text-shadow:0 1px 6px #635346}
#open-btn{position:relative;width:84px;height:84px;padding:0;border-radius:50%;border:1px solid rgba(43,26,18,.55);background:rgba(255,255,255,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--ink);display:grid;place-items:center;transition:transform .25s var(--ease),background .25s}
#open-btn:hover{transform:scale(1.07);background:rgba(255,255,255,.85)}
#open-btn svg{width:34px;height:34px}
.env-hint{font:400 .64rem/1.5 var(--font-sans);letter-spacing:.2em;text-transform:uppercase}
.coin-wrap{padding:1rem 0 .5rem;perspective:700px}
.coin{width:92px;height:92px;transform-style:preserve-3d;animation:spin 7s linear infinite}
.coin-face{background:radial-gradient(circle at 30% 25%,#5A4335,#2B1A12 62%,#140B06);border:2px solid #1C0F09;color:#F6EFE5;box-shadow:0 10px 26px rgba(43,26,18,.35)}
.story-text h2{font-size:2.6rem;font-style:italic;color:#765635;margin-bottom:1.7rem}
.story-text p:last-child{font-size:1.32rem;font-style:italic;color:#88653d}
.story-photo{box-shadow:0 22px 45px #79573322;transform-origin:center bottom}
.program{position:relative;background:radial-gradient(ellipse at 100% 15%,#eedad766,transparent 55%),linear-gradient(#f5ecdf,#faf6ef)}
.timeline{margin-top:2.5rem}.timeline li{padding:0 0 1.3rem;gap:.8rem}
.tl-body{flex:1;min-width:0;padding:1.15rem 1.05rem;background:linear-gradient(135deg,#fffdf9,#f7eee2);border:1px solid #d5bc973d;border-radius:4px 22px 22px 22px;box-shadow:0 8px 22px #7656350b}
.tl-body time{display:inline-block;margin-bottom:.25rem;font-size:.85rem;font-weight:500;color:#a1743c}.tl-body h3{font-size:1.5rem}.tl-body p{font-size:1.03rem}
.tl-dot{margin-top:1rem;background:#fff9ed;box-shadow:0 4px 14px #a27f5320;border-color:#d6bc96}
.place-card{position:relative;background:linear-gradient(145deg,#fffefa,#f5ebdd);border-color:#d2b68e;box-shadow:0 20px 45px #7656351a}
.place-body .venue-name{font-size:3rem;font-style:italic}.place-body{position:relative}.place-body:after{content:'✧';display:block;font-size:1.3rem;color:#b69159;margin:1.3rem 0 -.8rem}
.dresscode{background:radial-gradient(ellipse at 0 0,#f9f1ec,transparent 65%),#efdedb}
.dress-details{position:relative;border:1px solid #cfaab080;padding:2rem 1.4rem;background:#fffaf4a6;border-radius:80px 80px 10px 10px;box-shadow:0 12px 35px #85505b0c}
.dress-details h3{font-family:var(--font-script);font-size:2rem;color:#8c6541}.dress-details p{font-size:1.13rem}
.info-grid{gap:1.6rem}.info-card{padding:2rem 1.7rem;border:1px solid #d3ba96;border-radius:7px 36px 7px 36px;background:radial-gradient(ellipse at 100% 0,#f2dedb88,transparent 60%),linear-gradient(130deg,#fffefa,#f8efdf);box-shadow:0 15px 30px #73512d13;overflow:hidden}
.info-card:after{content:'';position:absolute;inset:7px;border:1px solid #d3ba964d;border-radius:3px 29px 3px 29px;pointer-events:none}
.info-card:nth-child(2){background:radial-gradient(ellipse at 0 0,#e9dcc466,transparent 65%),#fffaf1;border-radius:36px 7px 36px 7px}
.info-card:nth-child(2):after{border-radius:29px 3px 29px 3px}
.info-card h3{font-family:var(--font-script);font-size:2.1rem;color:#8a643a;margin-bottom:.75rem}.card-mark{font-family:var(--font-serif);font-size:2rem;line-height:1;color:#ccb28e;font-style:italic;letter-spacing:0}
.info-card p{line-height:1.75}.info-card strong{color:#95606b}.info-card a{text-decoration-color:#c2a277;text-underline-offset:4px}
.rsvp-card{background:radial-gradient(ellipse at 100% 0,#f0ded94d,transparent 38%),#fffdf7;border-color:#d2b68f;box-shadow:0 22px 45px #7656351c;border-radius:70px 70px 8px 8px;padding-top:3.5rem}
.rsvp-card:before{border-color:#e4d4bb;border-radius:63px 63px 3px 3px}.guest-entry{background:linear-gradient(135deg,#fffefb,#faf4eb);border-radius:8px}.adults-note{border-radius:0 12px 12px 0}
.reveal{transition:opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:var(--entry-delay,0ms);transform:translateY(38px)}
.reveal.visible{transform:none}.reveal-card{transform:translateY(48px) scale(.965);transition-duration:1.15s;will-change:auto}.reveal-card.visible{transform:none}
.reveal-timeline{transform:translate(20px,26px)}.reveal-timeline.visible{transform:none}
.reveal-title{transform:none!important}.reveal-word{display:inline-block;opacity:0;transform:translateY(24px) rotate(2deg);transition:opacity .8s var(--ease),transform .95s var(--ease);transition-delay:var(--word-delay,0ms)}
.visible .reveal-word{opacity:1;transform:none}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.info-card.visible:hover{transform:translateY(-5px);box-shadow:0 24px 40px #73512d22}.btn-gold:hover{filter:brightness(1.08)}}
@media(max-height:700px){#envelope-ui{bottom:35px;gap:.65rem}.env-exclusive{font-size:.95rem}#open-btn{width:70px;height:70px}.env-hint{font-size:.57rem}}
@media(max-width:360px){.tl-body{padding:1rem .8rem}.timeline li{gap:.55rem}.tl-dot{flex-basis:36px;height:36px}.timeline:before{left:17px}.info-card{padding:1.8rem 1.3rem}.story-text h2{font-size:2.35rem}}
@media(prefers-reduced-motion:reduce){.coin,.pulse-ring{animation:none}.reveal,.reveal-word,.reveal-card,.reveal-timeline{opacity:1;transform:none;transition:none}}
/* Hand-drawn watercolor details, revision 3. */
.dress-details{padding:2.25rem 1.15rem 1.9rem;border-radius:65px 65px 10px 10px}
.dress-illustration{display:block;width:100%;height:auto;max-width:360px;margin:.1rem auto 1.7rem;object-fit:contain}
.dress-copy{max-width:300px;margin:auto;padding-top:1.3rem;border-top:1px solid #c9a48d55}
.card-illustration{display:block;width:84px;height:84px;object-fit:contain;margin:-.25rem auto .55rem}
.illustrated-card h3{text-align:center}.illustrated-card .card-mark{position:absolute;right:1.65rem;top:1.8rem}
.illustrated-card p{text-align:center}.illustrated-card{padding-top:1.7rem}
@media(max-width:360px){.dress-details{padding-left:.75rem;padding-right:.75rem}.card-illustration{width:76px;height:76px}}
/* Mobile video playback: keep the poster until a decoded frame is playing. */
#envelope-overlay.playing:not(.has-video) #envelope-video{opacity:0}
#envelope-overlay.has-video #envelope-video{opacity:1}
#envelope-overlay::after{transition:opacity .12s linear}
.proposal-stage{position:relative}
.film-play{position:absolute;z-index:8;left:50%;bottom:2rem;transform:translateX(-50%);min-height:44px;padding:.8rem 1.2rem;border:1px solid #b99a72;border-radius:30px;background:#fffaf1ed;color:#604627;font:400 .75rem var(--font-sans);cursor:pointer;white-space:nowrap;box-shadow:0 4px 20px #62482b22}
.hero>.film-play{bottom:6.5rem}.film-play:focus-visible{outline:2px solid #604627;outline-offset:4px}
/* Requested mobile motion and calligraphic hero, revision 5. */
.coin{animation:spin 7s linear infinite!important;-webkit-transform-style:preserve-3d;will-change:transform}
.coin-face{-webkit-backface-visibility:hidden;backface-visibility:hidden}
#petals{display:block!important;visibility:hidden}
.site-open #petals{visibility:visible}
#petals .drifting-heart{display:block!important;animation-name:wedding-hearts;animation-timing-function:linear;animation-iteration-count:infinite;font-size:12px;color:#c4899d}
#petals .alicia-heart{width:19px;height:19px;color:#6b5147}
.alicia-heart svg{width:100%;height:100%;display:block}
@keyframes wedding-hearts{0%{transform:translate(0,0) rotate(-15deg);opacity:0}12%,75%{opacity:.36}48%{transform:translate(-12px,50vh) rotate(20deg)}100%{transform:translate(18px,106vh) rotate(45deg);opacity:0}}
.hero-content{padding:2rem 1.1rem 0}
.names{font-family:var(--font-script);font-weight:400;font-size:clamp(3rem,13vw,4rem);letter-spacing:0;line-height:.96;margin:.6rem 0 .25rem;gap:0;overflow:visible}
.names>span{padding:.08em .15em}.names em{font-size:.44em;line-height:.82;margin:-.02em 0}
.hero-tag{font-size:.59rem;letter-spacing:.26em}.hero-divider{margin:.4rem 0}.hero-date{font-size:.6rem;line-height:1.8}
@media(max-width:360px){.hero-content{padding-top:1.6rem}.names{font-size:3rem}}
@media(max-height:700px){.hero-content{padding-top:1.2rem}.names{font-size:2.85rem}.hero-tag{font-size:.55rem}.hero-date{font-size:.56rem}}
/* Small studio signature below the couple's closing greeting. */
.studio-credit{padding:2.6rem 2rem 3rem;text-align:center;border-top:1px solid #cfba982e;background:#f6efe4;color:#78654f}
.studio-credit img{display:block;width:74px;height:auto;margin:0 auto .6rem;mix-blend-mode:multiply}
.studio-label{font:400 .55rem/1.5 var(--font-sans);letter-spacing:.25em;color:#9a7a48;margin-bottom:.9rem}
.studio-credit h2{font:400 1.85rem/1.3 var(--font-script);color:#856338;margin:0 0 .7rem}
.studio-credit>p:not(.studio-label){font-size:.96rem;line-height:1.7;max-width:320px;margin:0 auto 1rem}
.studio-credit>a{display:inline-block;padding:.5rem 0;font:400 .73rem/1.5 var(--font-sans);color:#86643e;text-decoration-color:#c5ab83;text-underline-offset:5px}
.page-paused .coin,.page-paused .drifting-heart{animation-play-state:paused!important}
.studio-credit>a.studio-website{display:block;width:fit-content;margin:.15rem auto 0;font-size:.66rem;letter-spacing:.035em}
/* Their engagement photograph, preserved in a warm, double-lined frame. */
.story-photo.ring-photo{padding:10px 10px 0;border:1px solid #c9ad84;border-radius:150px 150px 8px 8px;background:#fbf5ea;box-shadow:0 18px 40px #7957331c}
.story-photo.ring-photo img{display:block;width:100%;height:auto;aspect-ratio:2/3;object-fit:contain;border-radius:140px 140px 3px 3px}
.story-photo.ring-photo figcaption{font-family:var(--font-serif);font-style:italic;font-size:1.03rem;line-height:1.5;letter-spacing:0;color:#89683f;padding:1.15rem .5rem 1.25rem}
.travel-note{margin:1.6rem auto 0;padding:1.6rem 1.35rem;border:1px solid #cfb59077;border-radius:4px 30px 4px 30px;background:linear-gradient(140deg,#fffaf2,#f5eadc);text-align:left}
.travel-note h3{font:400 1.8rem/1.3 var(--font-script);color:#89683f;text-align:center;margin:0 0 .85rem}
.travel-note p{font:400 1.05rem/1.7 var(--font-serif);color:var(--ink);margin:0}.travel-note p+p{margin-top:.8rem}
@media(max-width:360px){.travel-note{padding:1.35rem 1.1rem}.story-photo.ring-photo figcaption{font-size:.96rem}}
