:root{--bg-blush:#fdf2f5;--bg-glow:#f9dfe7;--card-bg:#fffbfceb;--rose-text:#9d5867;--rose-deep:#7f404e;--rose-accent:#c57286;--rose-soft:#f5d0da;--rose-pill:#fbe5ec;--gold:#c7a052;--gold-light:#e7cb83;--gold-dark:#a67c33;--font-serif:"Cormorant Garamond", Georgia, serif;--font-script:"Great Vibes", cursive}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;font-family:var(--font-serif);color:var(--rose-text);background:radial-gradient(circle at 50% 25%, var(--bg-glow) 0%, var(--bg-blush) 65%, #f8e5ec 100%);-webkit-font-smoothing:antialiased;margin:0;padding:0}.page-shell{place-items:center;min-height:100dvh;padding:1.5rem 1rem;display:grid;position:relative;overflow-x:hidden}.sky-decor{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.floating-balloon{width:var(--balloon-size,78px);opacity:0;will-change:transform, opacity;height:auto;position:absolute;bottom:-180px}.flying-seagull{opacity:0;will-change:transform, opacity;width:clamp(84px,12vw,130px);height:auto;position:absolute;top:1.25rem;left:0}@media (prefers-reduced-motion:no-preference){.floating-balloon{animation:float-up var(--balloon-duration,16s) linear var(--balloon-delay,0s) infinite}.flying-seagull{animation:18s linear infinite fly-across}}@keyframes float-up{0%{opacity:0;transform:translate(0,0)rotate(-3deg)}10%{opacity:.85}85%{opacity:.85}to{opacity:0;transform:translate3d(var(--balloon-drift,18px), calc(-100dvh - 240px), 0) rotate(4deg)}}@keyframes fly-across{0%{opacity:0;transform:translate(calc(100vw + 150px))}6%{opacity:.9}50%{transform:translate(50vw,10px)}94%{opacity:.9}to{opacity:0;transform:translate(-150px,-4px)}}.invitation-card{z-index:1;background:var(--card-bg);text-align:center;border:1.5px solid #c7a0528c;border-radius:140px 140px 24px 24px;flex-direction:column;justify-content:space-between;align-items:center;width:min(100%,430px);min-height:620px;padding:2.75rem 2rem 2rem;display:flex;position:relative;box-shadow:0 20px 50px #9d58671f,inset 0 0 0 6px #fffc,inset 0 0 0 7px #c7a05247}.top-ornament{color:var(--gold);opacity:.75;justify-content:center;align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.music-toggle{z-index:5;width:38px;height:38px;color:var(--rose-deep);cursor:pointer;background:#ffffffe0;border:1px solid #c7a0528c;border-radius:50%;place-items:center;padding:0;transition:background-color .2s,transform .2s,color .2s;display:grid;position:absolute;top:.75rem;right:.75rem;box-shadow:0 4px 12px #9d586714}.music-toggle svg{width:18px;height:18px}.music-toggle:hover{background:var(--rose-pill);transform:scale(1.05)}.music-toggle:focus-visible{outline:2px solid var(--gold-dark);outline-offset:2px}.step-stage{flex-direction:column;flex:1;justify-content:center;align-items:center;width:100%;padding:1rem 0;display:flex}.script-title{font-family:var(--font-script);color:var(--rose-accent);margin:0;font-weight:400;line-height:1.15}.script-parents{margin:.35rem 0 .75rem;font-size:clamp(2.15rem,7vw,2.65rem)}.script-baby{margin:.35rem 0;font-size:clamp(2.5rem,8vw,3.1rem)}.script-gold{font-family:var(--font-script);background:linear-gradient(135deg, var(--gold-dark) 0%, var(--gold-light) 48%, var(--gold-dark) 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(3rem,10vw,3.75rem);line-height:1.1}.serif-lead{max-width:30ch;margin:0;font-size:clamp(1.25rem,4.2vw,1.45rem);font-weight:500;line-height:1.55}.serif-label{letter-spacing:.01em;margin:.25rem 0;font-size:1.15rem;font-weight:500}.serif-highlight{color:var(--rose-accent);letter-spacing:.03em;margin:.45rem 0;font-size:clamp(1.75rem,5.5vw,2.1rem);font-weight:600}.envelope-wrapper{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.envelope-button{cursor:pointer;perspective:800px;background:linear-gradient(160deg,#fde8ee 0%,#f9d4df 100%);border:1px solid #c7a05273;border-radius:10px;width:250px;height:165px;padding:0;transition:transform .25s,box-shadow .25s;position:relative;box-shadow:0 14px 32px #9d586729}.envelope-button:hover{transform:translateY(-2px);box-shadow:0 18px 36px #9d586738}.envelope-button:focus-visible,.nav-btn:focus-visible,.map-link:focus-visible{outline:2px solid var(--gold-dark);outline-offset:3px}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;z-index:2;background:linear-gradient(#fff5f8 0%,#fce1ea 100%);border-top-left-radius:10px;border-top-right-radius:10px;height:92px;transition:transform .48s cubic-bezier(.22,1,.36,1);position:absolute;inset:0 0 auto}.envelope-button.is-opening .envelope-flap{transform:rotateX(165deg)}.envelope-crease{clip-path:polygon(0 100%,50% 12%,100% 100%);background:linear-gradient(#0000 0%,#f4c6d48c 100%);border-bottom-right-radius:10px;border-bottom-left-radius:10px;height:95px;position:absolute;inset:auto 0 0}.wax-seal{background:radial-gradient(circle at 35% 30%, #f5df9d 0%, var(--gold) 55%, var(--gold-dark) 100%);z-index:3;color:#fff9ec;border-radius:50%;place-items:center;width:48px;height:48px;font-size:1.25rem;transition:opacity .25s,transform .25s;display:grid;position:absolute;top:52%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 12px #a67c3361}@media (prefers-reduced-motion:no-preference){.wax-seal{animation:2.6s ease-in-out infinite gentle-pulse}}.envelope-button.is-opening .wax-seal{opacity:0;transform:translate(-50%,-50%)scale(.8)}@keyframes gentle-pulse{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.06)}}.tap-hint{letter-spacing:.14em;text-transform:uppercase;color:var(--rose-text);opacity:.82;margin:0;font-size:.95rem}.banner-title{background:var(--rose-pill);color:var(--rose-deep);letter-spacing:.18em;text-transform:uppercase;border:1px solid #c7a0528c;border-radius:999px;margin-bottom:.5rem;padding:.3rem 1.5rem;font-size:.95rem;font-weight:600;display:inline-block}.date-grid{width:100%;max-width:310px;margin:1rem 0 1.15rem}.month-label{letter-spacing:.2em;text-transform:uppercase;margin:0 0 .45rem;font-size:.95rem;font-weight:600}.date-columns{grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;display:grid}.date-side{letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #9d586773;border-bottom:1px solid #9d586773;padding:.35rem 0;font-size:.95rem;font-weight:600}.date-day{color:var(--rose-accent);font-size:2.5rem;font-weight:600;line-height:1}.countdown{grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;width:100%;max-width:310px;margin:0 auto 1rem;display:grid}.countdown-item{background:#ffffffb8;border:1px solid #c7a05259;border-radius:10px;padding:.4rem .25rem}.countdown-value{color:var(--rose-deep);font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:600;line-height:1.1;display:block}.countdown-label{letter-spacing:.08em;text-transform:uppercase;color:var(--rose-text);margin-top:.15rem;font-size:.68rem;display:block}.countdown-today{color:var(--rose-accent);margin:0 0 .9rem;font-size:1.05rem;font-weight:600}.location-block{margin:.25rem 0 1rem}.location-title{letter-spacing:.12em;text-transform:uppercase;margin:0 0 .2rem;font-size:.9rem;font-weight:600}.location-address{margin:0;font-size:1.08rem;line-height:1.4}.map-link{color:var(--gold-dark);text-underline-offset:3px;margin-top:.35rem;font-size:.9rem;text-decoration:underline;display:inline-block}.dress-code{background:var(--rose-pill);border:1px solid #c5728659;border-radius:14px;width:100%;max-width:310px;padding:.65rem 1rem;font-size:.98rem;line-height:1.35}.dress-code strong{color:var(--rose-deep)}.closing-stage{width:100%;padding:2.5rem 0;position:relative}.closing-watermark{clip-path:polygon(0 38%,50% 0,100% 38%,100% 100%,0 100%);pointer-events:none;background:linear-gradient(#f5d0da59 0%,#fdf2f526 100%);border-radius:10px;width:210px;height:145px;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.closing-flourish{color:var(--gold);letter-spacing:.25em;margin-top:.65rem;font-size:1.1rem;position:relative}.photo-upload{flex-direction:column;align-items:center;gap:.6rem;margin-top:1.75rem;display:flex;position:relative}.upload-trigger{background:var(--rose-pill);color:var(--rose-deep);font-family:var(--font-serif);letter-spacing:.04em;cursor:pointer;border:1px solid #c7a052a6;border-radius:999px;align-items:center;gap:.5rem;padding:.55rem 1.35rem;font-size:1rem;font-weight:600;transition:background-color .2s,transform .2s;display:inline-flex}.upload-trigger:hover{background:#f7d8e2;transform:translateY(-1px)}.upload-trigger:has(input:disabled){opacity:.65;cursor:wait;transform:none}.upload-trigger:has(input:focus-visible){outline:2px solid var(--gold-dark);outline-offset:3px}.upload-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.upload-status{color:var(--rose-text);max-width:28ch;margin:0;font-size:.92rem}.upload-status--error{color:#a63a50}.card-footer{flex-direction:column;align-items:center;gap:.85rem;width:100%;padding-top:.5rem;display:flex}.progress-dots{gap:.45rem;display:flex}.dot{background:#9d586738;border-radius:50%;width:7px;height:7px;transition:background-color .2s,transform .2s}.dot.is-active{background:var(--rose-accent);transform:scale(1.25)}.nav-actions{justify-content:center;align-items:center;gap:.75rem;display:flex}.nav-btn{font-family:var(--font-serif);letter-spacing:.06em;cursor:pointer;border-radius:999px;padding:.5rem 1.35rem;font-size:.98rem;font-weight:600;transition:background-color .2s,color .2s,border-color .2s}.nav-btn--primary{background:var(--rose-accent);color:#fff;border:1px solid var(--rose-accent)}.nav-btn--primary:hover{background:var(--rose-deep);border-color:var(--rose-deep)}.nav-btn--ghost{color:var(--rose-text);background:0 0;border:1px solid #9d586759}.nav-btn--ghost:hover{background:var(--rose-pill)}@keyframes slide-to-left{to{opacity:0;transform:translate(-28px)}}@keyframes slide-from-right{0%{opacity:0;transform:translate(28px)}}@keyframes slide-to-right{to{opacity:0;transform:translate(28px)}}@keyframes slide-from-left{0%{opacity:0;transform:translate(-28px)}}.step-stage{view-transition-name:step-stage}::view-transition-group(step-stage){animation-duration:.35s;animation-timing-function:cubic-bezier(.22,1,.36,1)}html:active-view-transition-type(forward)::view-transition-old(step-stage){animation-name:slide-to-left}html:active-view-transition-type(forward)::view-transition-new(step-stage){animation-name:slide-from-right}html:active-view-transition-type(backward)::view-transition-old(step-stage){animation-name:slide-to-right}html:active-view-transition-type(backward)::view-transition-new(step-stage){animation-name:slide-from-left}@media (prefers-reduced-motion:reduce){::view-transition-group(step-stage){animation:none!important}}
