/* El sobre es toda la primera pantalla; la tarjeta revela la foto de portada. */
.has-envelope{overflow:hidden}
.has-envelope>header,.has-envelope>main,.has-envelope>footer,.has-envelope>#customization-status{visibility:hidden}
.envelope-screen{display:block;overflow:hidden;isolation:isolate;background:var(--paper);transition:opacity .75s ease,visibility .75s ease}
.envelope-screen::before,.custom-design .envelope-screen::before{background:radial-gradient(ellipse at 50% 35%,var(--white),var(--paper));filter:none}
.envelope-scene{width:100%;height:100%;min-height:0;padding:0;display:block;text-align:center}
.envelope-trigger{position:absolute;inset:0;width:100%;height:100%;max-width:none;aspect-ratio:auto;border:0;border-radius:0;padding:0;perspective:1600px;outline-offset:-8px!important}
.envelope-trigger:disabled{opacity:1;cursor:default}
.envelope-back{border:0;border-radius:0;box-shadow:none;transition:opacity 1s ease}
.envelope-lining{inset:0;transition:opacity 1s ease}
.envelope-pocket{border-radius:0;transition:transform 1.3s cubic-bezier(.4,0,.2,1),opacity 1s ease;will-change:transform}
.envelope-pocket::before{clip-path:polygon(0 0,50% 53%,100% 0,100% 100%,0 100%)}
.envelope-pocket::after{clip-path:polygon(0 100%,50% 48%,100% 100%)}
.envelope-flap{top:0;height:54%;transition:transform 1s cubic-bezier(.4,.02,.2,1),opacity .7s ease,z-index 0s .5s;will-change:transform}
.wax-seal,.custom-design .wax-seal{top:51%;width:clamp(104px,12vw,156px);height:clamp(104px,12vw,156px);transform:translate(-50%,-50%);border:0;border-radius:0;background:none;box-shadow:none;text-shadow:none;transition:opacity .35s ease,transform .5s ease}
.wax-seal img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 7px #00000070);pointer-events:none}
.wax-seal::after{display:none}
.envelope-title{position:absolute;z-index:6;left:7%;right:7%;bottom:25%;font:400 clamp(32px,4vw,62px)/1.2 var(--serif);letter-spacing:-1px;color:var(--envelope-text,#e8dcc8);pointer-events:none;transition:opacity .4s ease,transform .6s ease}
.envelope-title span{font-style:italic;font-size:.8em}
.envelope-caption{left:9%;right:9%;bottom:17%;font-size:clamp(10px,1vw,13px);letter-spacing:1.2px;line-height:1.7;transition:opacity .4s ease,transform .6s ease;overflow-wrap:anywhere}
.open-hint{position:absolute;z-index:6;left:8%;right:8%;bottom:calc(6% + env(safe-area-inset-bottom,0px));margin:0;color:var(--envelope-text,#e8dcc8);font-size:10px;letter-spacing:2px;pointer-events:none;transition:opacity .35s ease}
.open-hint span{color:inherit;font-size:15px;opacity:.75;margin-top:7px}
.opening-location{display:none}
.opening-feedback{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0}
.envelope-card{left:50%;top:50%;width:min(76vw,430px);height:min(74dvh,570px);max-height:calc(100% - 48px);padding:12px;outline:none;border:1px solid var(--raw-accent,var(--line));background:var(--paper);box-shadow:0 24px 90px #00000030;display:flex;justify-content:flex-start;align-items:stretch;border-radius:2px;gap:0;visibility:hidden;opacity:0;transform:translate(-50%,12%) scale(.78) rotate(4deg);transition:none;will-change:transform,opacity}
.opening-card-photo{display:block;width:100%;flex:1;min-height:0;object-fit:cover;object-position:center;filter:var(--photo-filter,none)}
.opening-card-fallback{flex:1;display:grid;place-items:center;color:var(--ink);font:italic 70px var(--serif);border:1px solid var(--line);min-height:0}
.opening-card-caption{display:flex;flex-direction:column;align-items:center;padding:16px 0 9px;flex-shrink:0;color:var(--ink)}
.envelope-card .card-names{font:400 clamp(25px,3vw,34px)/1.1 var(--serif);margin:0 0 10px;color:var(--ink)}
.envelope-card .card-names span{font-style:italic;color:inherit}
.envelope-card .card-date{font-size:9px;letter-spacing:2px;color:var(--muted)}
.envelope-screen.is-opening .wax-seal{opacity:0;transform:translate(-50%,-50%) scale(1.28) rotate(-8deg)}
.envelope-screen.is-opening .envelope-flap{transform:rotateX(-175deg);z-index:0}
.envelope-screen.is-opening .envelope-title,.envelope-screen.is-opening .envelope-caption{opacity:0;transform:translateY(16px)}
.envelope-screen.is-opening .envelope-card{visibility:visible;animation:couple-card-emerge 1.8s cubic-bezier(.2,.65,.25,1) .65s both}
.envelope-screen.is-photo-revealed .envelope-pocket{transform:translateY(105%);opacity:0}
.envelope-screen.is-photo-revealed .envelope-flap{opacity:0}
.envelope-screen.is-photo-revealed .envelope-back,.envelope-screen.is-photo-revealed .envelope-lining{opacity:0}
.envelope-screen.is-finished{opacity:0;visibility:hidden;pointer-events:none}
.hero.is-entering .couple-portrait{animation:invitation-appear 1.15s ease .1s both}
@keyframes couple-card-emerge{
  0%{opacity:0;z-index:1;transform:translate(-50%,12%) scale(.78) rotate(4deg)}
  20%{opacity:1;z-index:1}
  45%{opacity:1;z-index:6;transform:translate(-50%,-64%) scale(.94) rotate(-2deg)}
  75%,100%{opacity:1;z-index:6;transform:translate(-50%,-50%) scale(1) rotate(0)}
}
@media(max-width:600px){.envelope-title{bottom:27%;font-size:38px}.envelope-caption{bottom:19%;font-size:10px}.open-hint{bottom:calc(7% + env(safe-area-inset-bottom,0px));font-size:9px}.envelope-card{width:min(84vw,390px);height:min(70dvh,560px);padding:10px}.opening-card-caption{padding-top:14px}}
@media(max-height:480px){.envelope-title{bottom:24%;font-size:29px}.envelope-caption{bottom:14%;font-size:9px}.open-hint{bottom:4%;font-size:8px}.open-hint span{display:none}.wax-seal,.custom-design .wax-seal{width:64px;height:64px}.envelope-card{width:min(64vw,250px);height:86dvh;padding:8px}.opening-card-caption{padding:9px 0 2px}.envelope-card .card-names{font-size:22px;margin-bottom:6px}.envelope-card .card-date{font-size:7px}}
@media(prefers-reduced-motion:reduce){.envelope-screen.is-opening .envelope-card,.hero.is-entering .couple-portrait{animation:none}.envelope-card{will-change:auto}.envelope-pocket,.envelope-flap{will-change:auto}}
@media print{.has-envelope>header,.has-envelope>main,.has-envelope>footer{visibility:visible}}
