:root{--bg: #FCFDFA;--bg-soft: #FDF0F1;--ink: #6C0D26;--ink-soft: #9E5061;--accent: #FFB6B6;--accent-line: #F6A3AD;--serif: "Cormorant Garamond", Georgia, serif;--sans: "Jost", system-ui, sans-serif;--ease: cubic-bezier(.22, 1, .36, 1)}*{margin:0;padding:0;box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:300;-webkit-font-smoothing:antialiased;overflow-x:hidden}.page-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:url(/gate/bg.jpg) center / cover no-repeat var(--bg)}.page-bg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 30%,#ffb6b61a,#ffb6b642 90%)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.gate{opacity:0;position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;background:radial-gradient(circle at 50% 35%,var(--bg-soft),var(--bg) 70%);background-size:cover;background-position:center;text-align:center;padding:.5rem}.gate:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 40%,#ffb6b629,#ffb6b657 85%);pointer-events:none}.gate__inner{position:relative;z-index:1}.gate__inner{display:grid;place-items:center;gap:2rem}.env-art{position:relative;width:min(84vw,440px);cursor:pointer;transform-origin:center;filter:drop-shadow(0 20px 40px rgba(108,13,38,.18))}.env-art__img{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.env-art__closed{position:relative;z-index:2}.env-art__open{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:auto;z-index:1;opacity:0}.env__hint{letter-spacing:.3em;text-transform:uppercase;font-size:.75rem;color:var(--ink-soft)}.gate__btn{font-family:var(--sans);font-size:.8rem;letter-spacing:.25em;text-transform:uppercase;color:var(--ink);background:transparent;border:1px solid var(--accent);padding:1rem 2.2rem;border-radius:999px;cursor:pointer;transition:background .4s var(--ease),color .4s var(--ease)}.gate__btn:hover{background:var(--accent);color:var(--ink)}.gate.is-open{pointer-events:none}.card{opacity:0}.card.is-revealed{opacity:1}.panel{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:12vh 2rem;gap:1.4rem}.panel--hero{position:relative;overflow:hidden}.hero__petals{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:0;-webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 6%,#000 93%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0%,#000 6%,#000 93%,transparent 100%)}.hero__petal{position:absolute;top:0;height:auto;will-change:transform}.hero__float{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.hero__text{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:1.4rem}.hero__img{position:absolute;top:50%;height:auto;border-radius:10px;box-shadow:0 18px 44px #6c0d2638;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform}.hero__polaroid{position:relative;margin-top:.8rem;background:#fff;padding:10px 10px 14px;border-radius:4px;box-shadow:0 18px 44px #6c0d262e}.hero__polaroid-caption{font-family:var(--serif);font-style:italic;font-weight:500;color:var(--ink);text-align:center;font-size:clamp(1rem,3.6vw,1.3rem);padding-top:.55em;margin:0}.hero__static{display:block;height:auto;border-radius:2px;aspect-ratio:2 / 3;object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.hero__sakura{position:absolute;top:-9%;right:-11%;width:26%;height:auto;pointer-events:none;filter:drop-shadow(0 6px 14px rgba(108,13,38,.18))}.hero__sakura--alt{right:auto;top:auto;left:-11%;bottom:-7%}.hero__line{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);font-size:clamp(.85rem,3.4vw,1.05rem);line-height:2}.hero__names{font-family:var(--serif);font-weight:500;font-size:clamp(3rem,12vw,7rem);line-height:1}.hero__names .amp{color:var(--accent);font-style:italic;font-weight:400;display:block;font-size:.5em;margin:.15em 0}.hero__date{font-family:var(--serif);font-style:italic;letter-spacing:.12em;color:var(--ink-soft);font-size:clamp(1.1rem,3.5vw,1.5rem)}.panel--quote{position:relative;isolation:isolate;min-height:56svh;padding-block:12vh}.panel--quote:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(circle at 50% 45%,#ffb6b629,#ffb6b657 85%),url(/gate/bg.jpg) center / cover no-repeat;-webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 30%,#000 70%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0%,#000 30%,#000 70%,transparent 100%)}.quote{font-family:var(--serif);font-style:italic;font-size:clamp(1.6rem,5vw,3rem);max-width:18ch;color:var(--ink);line-height:1.3}.q-caret{display:inline-block;width:2px;height:.9em;margin-left:3px;background:var(--accent-line);vertical-align:-.08em;animation:caret-blink .8s step-end infinite}@keyframes caret-blink{0%,to{opacity:1}50%{opacity:0}}.panel--sequence{gap:1.6rem;min-height:0;padding-block:12vh}.seq-polaroid{background:#fff;padding:clamp(10px,2.6vw,16px);padding-bottom:0;border-radius:6px;box-shadow:0 26px 64px #6c0d2633;width:min(86vw,540px)}.seq{position:relative;width:100%;aspect-ratio:3 / 4;overflow:hidden;border-radius:3px;background:var(--bg-soft)}.seq__frame{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.seq__layer{will-change:opacity,transform;backface-visibility:hidden}.seq__caption{text-align:center;font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(1.35rem,4.6vw,1.8rem);color:var(--ink);padding:.7em .5em .15em;margin:0}.seq__dots{display:flex;justify-content:center;align-items:center;gap:7px;padding:.55em 0 1em}.seq__dot{width:6px;height:6px;border-radius:50%;background:#efd3d6;transition:transform .3s var(--ease),background .3s var(--ease)}.seq__dot.is-on{background:var(--accent-line);transform:scale(1.35)}.seq--tv .seq-polaroid{border-radius:26px;border:1px solid var(--accent);padding:clamp(12px,3vw,20px);padding-bottom:4px;width:min(92vw,620px);background:linear-gradient(180deg,#fff,#fdeef0)}.seq--tv .seq{aspect-ratio:4 / 3;border-radius:16px;background:#2a1e21;transform-origin:center}.seq--tv .seq__caption{display:none}.seq__fx{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10;border-radius:inherit;background:linear-gradient(115deg,rgba(255,255,255,.09) 0%,transparent 28%),radial-gradient(ellipse at center,transparent 55%,rgba(20,5,10,.3) 100%),repeating-linear-gradient(0deg,rgba(255,255,255,.045) 0 1px,transparent 1px 3px);animation:tv-flicker .9s steps(2) infinite}@keyframes tv-flicker{0%,to{opacity:1}33%{opacity:.93}66%{opacity:.97}}.seq__static{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:11;opacity:0;will-change:opacity;border-radius:inherit;background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>") repeat;background-size:120px 120px}.seq-shell--tvart{position:relative;background:transparent;border:none;padding:0;box-shadow:none;border-radius:0;width:min(92vw,600px)}.tvart{position:relative}.seq--tvimg .seq__dots{display:none}.tvart__img{display:block;width:100%;height:auto;position:relative;z-index:2;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 12px 14px rgba(108,13,38,.2)) drop-shadow(0 34px 44px rgba(108,13,38,.1))}.seq--tvimg .seq{aspect-ratio:auto;border-radius:4%;background:#2a3336;z-index:1}.seq--tvimg .seq__caption{display:none}.seq--tvimg .seq__title{font-size:clamp(1.25rem,5vw,2rem);font-weight:600;letter-spacing:.02em;padding:8%;line-height:1.25;text-shadow:0 2px 18px rgba(0,0,0,.75)}.seq--tvimg .seq__vhs span{font-size:.58rem}.seq--tvimg .seq__rec{top:12%;left:11%}.seq--tvimg .seq__ch{top:12%;right:11%}.seq--tvimg .seq__play{bottom:11%;left:11%}.seq__vhs{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:12}.seq__vhs span{position:absolute;color:#fff;font:600 .7rem/1 ui-monospace,SF Mono,Menlo,monospace;letter-spacing:.14em;text-shadow:0 0 8px rgba(0,0,0,.65)}.seq__rec{top:12px;left:15px;display:flex;align-items:center;gap:6px}.seq__rec i{width:9px;height:9px;border-radius:50%;background:#ff4d4d;box-shadow:0 0 6px #ff4d4dcc;animation:rec-blink 1.1s steps(1) infinite}@keyframes rec-blink{50%{opacity:0}}.seq__ch{top:12px;right:15px}.seq__play{bottom:12px;left:15px;opacity:.85}.seq__title{position:absolute;top:0;right:0;bottom:0;left:0;z-index:11;display:grid;place-items:center;margin:0;padding:1rem;text-align:center;opacity:0;font-family:var(--serif);font-style:italic;font-weight:500;color:#fff7f3;font-size:clamp(1.5rem,5.5vw,2.3rem);text-shadow:0 2px 24px rgba(0,0,0,.5)}.seq--tv .seq__dots{gap:8px;padding:12px 0 14px}.seq--tv .seq__dots:before,.seq--tv .seq__dots:after{content:"";width:13px;height:13px;border-radius:50%;margin:0 10px;background:#fff;border:2px solid var(--accent-line);box-shadow:inset 0 -2px #6c0d262e}.panel--story{position:relative;min-height:0;padding-block:12vh}.story__bokeh{position:absolute;height:auto;pointer-events:none;z-index:0;will-change:transform}.panel--story:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 72% 58% at 50% 50%,rgba(252,253,250,.88),transparent 78%)}.story{position:relative;z-index:1;max-width:34ch;display:grid;gap:1.4rem}.story p{font-family:var(--serif);font-weight:500;font-size:clamp(1.25rem,3.7vw,1.75rem);line-height:1.55;color:var(--ink)}.panel--details{min-height:0;padding-block:12vh}.details__title{font-family:var(--serif);font-weight:500;font-size:clamp(2rem,7vw,3.4rem);color:var(--ink)}.details__grid{display:grid;gap:2rem;margin-top:1rem}.detail{display:grid;gap:.4rem}.detail__label{letter-spacing:.3em;text-transform:uppercase;font-size:.75rem;color:var(--ink-soft)}.detail__value{font-family:var(--serif);font-size:clamp(1.2rem,3.5vw,1.6rem)}.flip{position:relative;width:min(78vw,520px);aspect-ratio:1200 / 1673;perspective:1400px;cursor:pointer}.flip__inner{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d}.flip__face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip__front img{width:100%;height:100%;object-fit:cover;border-radius:10px;box-shadow:0 24px 60px #6c0d262e;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.flip__back{transform:rotateY(180deg)}.flip .wcard{width:100%}.flip__hint{letter-spacing:.28em;text-transform:uppercase;font-size:.7rem;color:var(--ink-soft);margin-top:.4rem;animation:hint-pulse 2.4s var(--ease) infinite}@keyframes hint-pulse{0%,to{opacity:.45}50%{opacity:1}}.wcard{position:relative;width:min(78vw,520px);container-type:inline-size}.wcard__img{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 18px 40px rgba(108,13,38,.14))}.wcard__flower{position:absolute;height:auto;pointer-events:none;will-change:transform;filter:drop-shadow(0 6px 14px rgba(108,13,38,.15))}.wcard:not([hidden]) .timer{position:absolute;transform:translate(-50%,-50%);width:max-content}.wcard:not([hidden]) .timer__row{gap:2.6cqw}.wcard:not([hidden]) .timer__num{font-size:6.2cqw}.wcard:not([hidden]) .timer__cap{font-size:2cqw;letter-spacing:.16em}.wcard:not([hidden]) .timer__sep{font-size:4cqw}.wcard:not([hidden]) .details__btn{position:absolute;width:max-content;padding:1.6cqw 4.2cqw;font-size:2.3cqw;letter-spacing:.18em;box-shadow:0 6px 16px #ffb6b68c}.timer{display:grid;justify-items:center}.timer__row{display:flex;align-items:baseline;gap:clamp(.5rem,2.5vw,1.1rem)}.timer__unit{display:grid;justify-items:center;gap:.15rem}.timer__num{font-family:var(--serif);font-weight:500;font-variant-numeric:tabular-nums;font-size:clamp(2rem,8vw,3.2rem);line-height:1;color:var(--ink)}.timer__cap{font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft)}.timer__sep{color:var(--accent-line);font-size:clamp(1.4rem,5vw,2.2rem);line-height:1}.details__btn{display:inline-block;background:var(--accent);color:var(--ink);text-decoration:none;border-radius:999px;padding:1rem 2.4rem;font-size:.8rem;letter-spacing:.25em;text-transform:uppercase;box-shadow:0 10px 26px #ffb6b68c;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}.details__btn:hover{transform:translateY(-2px);box-shadow:0 14px 32px #ffb6b6b3}.panel--closing{padding:0;min-height:100svh;min-height:100dvh}.closing-scene{position:relative;width:100%;min-height:100svh;min-height:100dvh;overflow:hidden}.closing-scene__img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.closing-scene__sky{position:absolute;left:0;right:0;z-index:1;display:grid;justify-items:center;gap:1.3rem;padding:0 1.5rem;text-align:center}.closing{display:grid;gap:.5rem;color:var(--ink);text-shadow:0 2px 26px rgba(252,253,250,.85)}.closing__kicker{font-family:var(--sans);font-weight:400;font-size:clamp(.78rem,3vw,1rem);letter-spacing:.45em;text-transform:uppercase}.closing__big{font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(2.6rem,11vw,4.4rem);line-height:1.02}.closing__rsvp{position:relative;overflow:hidden;display:inline-block;color:var(--ink);text-decoration:none;background:linear-gradient(135deg,#ffffff94,#fff3);backdrop-filter:blur(18px) saturate(170%);-webkit-backdrop-filter:blur(18px) saturate(170%);border:none;border-radius:999px;padding:.62rem 2.1rem;font-family:var(--sans);font-size:.78rem;letter-spacing:.3em;text-transform:uppercase;box-shadow:inset 0 1px #ffffffe6,inset 0 -1px 2px #6c0d261a,inset 0 0 0 1px #ffffff59,0 10px 30px #6c0d2629,0 2px 8px #6c0d261a;transition:transform .25s var(--ease),box-shadow .35s var(--ease)}.closing__rsvp:after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:45%;transform:skew(-20deg);pointer-events:none;background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);animation:rsvp-sheen 4.6s ease-in-out infinite}@keyframes rsvp-sheen{0%,55%{left:-60%}88%,to{left:125%}}.closing__rsvp:hover{transform:translateY(-2px);box-shadow:inset 0 1px #fffffff2,inset 0 -1px 2px #6c0d261a,inset 0 0 0 1px #ffffff80,0 14px 36px #6c0d2638,0 2px 8px #6c0d261f}.closing__rsvp:active{transform:scale(.96)}.rsvp-swap{position:relative;display:inline-block}.rsvp-a{display:inline-block;white-space:nowrap;letter-spacing:.04em;font-size:.95rem}.rsvp-b{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;white-space:nowrap}.closing--plain{font-family:var(--serif);font-style:italic;font-size:clamp(1.7rem,6vw,3rem)}.closing-scene__sig{position:absolute;left:0;right:0;bottom:3.5%;z-index:1;text-align:center;font-family:var(--sans);font-weight:500;font-size:clamp(.9rem,3.2vw,1.05rem);letter-spacing:.32em;text-transform:uppercase;color:var(--ink);text-shadow:0 1px 18px rgba(252,253,250,.95),0 0 8px rgba(252,253,250,.85)}.replay-btn{position:fixed;right:1.4rem;bottom:1.4rem;z-index:120;width:52px;height:52px;border-radius:50%;border:none;display:grid;place-items:center;color:var(--ink);cursor:pointer;background:linear-gradient(135deg,#ffffff9e,#ffffff3d);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);box-shadow:inset 0 1px #ffffffe6,inset 0 -1px 2px #6c0d261a,inset 0 0 0 1px #ffffff59,0 10px 26px #6c0d2633;opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity .45s var(--ease),transform .45s var(--ease),box-shadow .3s var(--ease)}.replay-btn.is-shown{opacity:1;pointer-events:auto;transform:none}.replay-btn:active{transform:scale(.9)}.replay-btn.is-shown svg{animation:replay-spin 9s linear infinite}@keyframes replay-spin{to{transform:rotate(-360deg)}}.closing--plain{position:static}@media(min-width:900px)and (orientation:landscape){.panel--closing{padding:10vh 2rem}.closing-scene{width:auto;min-height:0;height:84svh;aspect-ratio:1400 / 1967;margin-inline:auto;border-radius:12px;box-shadow:0 30px 70px #6c0d2633}}[data-reveal]>*{will-change:transform,opacity}.music-toggle{position:fixed;top:1.4rem;right:1.4rem;z-index:120;width:44px;height:44px;border-radius:50%;border:1px solid var(--accent);background:#ffffffa6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;display:grid;place-items:center}.music-toggle__icon{width:18px;height:18px;background:var(--ink);-webkit-mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 18V5l12-2v13'/><circle cx='6' cy='18' r='3'/><circle cx='18' cy='16' r='3'/></svg>") no-repeat center / contain;mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 18V5l12-2v13'/><circle cx='6' cy='18' r='3'/><circle cx='18' cy='16' r='3'/></svg>") no-repeat center / contain}.music-toggle[data-playing=false] .music-toggle__icon{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 18V5l12-2v13'/><circle cx='6' cy='18' r='3'/><circle cx='18' cy='16' r='3'/><line x1='3' y1='3' x2='21' y2='21'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 18V5l12-2v13'/><circle cx='6' cy='18' r='3'/><circle cx='18' cy='16' r='3'/><line x1='3' y1='3' x2='21' y2='21'/></svg>");opacity:.6}.music-toggle[data-playing=true] .music-toggle__icon{animation:pulse 1.6s var(--ease) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
