:root{--f-script:var(--font-script);--f-serif:var(--font-serif);--f-sans:var(--font-sans);--plum:#1e0f14;--gold-hi:#f3d98c;--parch:#fbf3e2}body{color:var(--ink);font:400 1.08rem/1.65 var(--f-serif);background:radial-gradient(120% 60% at 50% 0%, #fff8f5 0%, var(--bg) 55%, var(--bg-2) 100%) fixed, var(--bg)}h2{font:italic 400 clamp(2rem, 7vw, 2.8rem)/1.15 var(--f-serif);color:var(--primary);text-align:center}h3{font:600 clamp(1.5rem, 5.5vw, 1.9rem)/1.2 var(--f-serif);color:var(--primary)}.sub{color:var(--muted);text-align:center;font:italic 400 1rem/1.5 var(--f-serif)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.badge{color:var(--accent-ink);font:600 .62rem/1 var(--f-sans);letter-spacing:.2em;text-transform:uppercase;background:#f7e6c4;border-radius:999px;align-items:center;gap:8px;padding:7px 14px;display:inline-flex;box-shadow:inset 0 0 0 1px #c49a4559}.badge svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}main>section{flex-direction:column;align-items:center;gap:18px;padding:34px 18px;display:flex}.btn svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.corner-card{--c:var(--accent);--o:10px;--l:22px;background:linear-gradient(var(--c), var(--c)) var(--o) var(--o) / var(--l) 2px no-repeat, linear-gradient(var(--c), var(--c)) var(--o) var(--o) / 2px var(--l) no-repeat, linear-gradient(var(--c), var(--c)) calc(100% - var(--o)) var(--o) / var(--l) 2px no-repeat, linear-gradient(var(--c), var(--c)) calc(100% - var(--o)) var(--o) / 2px var(--l) no-repeat, linear-gradient(var(--c), var(--c)) var(--o) calc(100% - var(--o)) / var(--l) 2px no-repeat, linear-gradient(var(--c), var(--c)) var(--o) calc(100% - var(--o)) / 2px var(--l) no-repeat, linear-gradient(var(--c), var(--c)) calc(100% - var(--o)) calc(100% - var(--o)) / var(--l) 2px no-repeat, linear-gradient(var(--c), var(--c)) calc(100% - var(--o)) calc(100% - var(--o)) / 2px var(--l) no-repeat, var(--card);width:min(100%,520px);box-shadow:0 0 0 1px var(--line), 0 24px 50px -30px #6b1a2e59;border-radius:20px;padding:26px 18px;position:relative}.gate{color:#f6e9e4;background:radial-gradient(70% 55% at 50% 42%, #4a2230 0%, #2a121a 55%, var(--plum) 100%);place-items:center;display:grid;overflow:hidden}.g-dots{background:radial-gradient(circle,#c49a4538 1px,#0000 1.4px) 0 0/22px 22px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 70% at 50% 45%,#000 40%,#0000 100%);mask-image:radial-gradient(80% 70% at 50% 45%,#000 40%,#0000 100%)}.g-glow{background:radial-gradient(circle,#e8b46e47,#0000 65%);border-radius:50%;width:420px;height:420px;margin:-210px 0 0 -210px;position:absolute;top:46%;left:50%}.petals{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.gate .gate-skip{color:#f6e9e4}.g-stage{z-index:2;text-align:center;flex-direction:column;align-items:center;gap:14px;padding:0 22px;display:flex;position:relative}.g-kick{font:italic 500 .74rem var(--f-serif);letter-spacing:.28em;text-transform:uppercase;color:var(--accent-2)}.g-title{font:italic 500 clamp(1.9rem, 7.5vw, 2.6rem)/1.15 var(--f-serif);color:#fff4ee}.g-rule{background:linear-gradient(90deg, transparent, var(--accent), transparent);width:64px;height:1px}.bottle{width:min(56vw,230px);margin:8px 0 6px;position:relative}.bottle-svg{filter:drop-shadow(0 18px 30px #00000073);width:100%;height:auto;display:block;overflow:visible}.bottle-shadow{background:radial-gradient(closest-side,#0000008c,#0000);border-radius:50%;height:16px;position:absolute;bottom:-10px;left:18%;right:18%}.g-open{background:linear-gradient(100deg, #c99a3e 0%, var(--gold-hi) 45%, #e9c46e 60%, #c99a3e 100%);color:#4e0f1a;min-height:56px;font:700 .74rem var(--f-sans);letter-spacing:.26em;text-transform:uppercase;border:0;border-radius:999px;align-items:center;gap:14px;padding:0 30px;display:inline-flex;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffecbe99,0 10px 40px -6px #e8b45a99}.g-open svg{fill:currentColor;width:14px;height:14px}.g-open:after{content:"";background:linear-gradient(100deg,#0000 30%,#ffffff8c 50%,#0000 70%);animation:3.4s ease-in-out 1.2s infinite bt-shine;position:absolute;inset:0;transform:translate(-120%)}@keyframes bt-shine{0%,55%{transform:translate(-120%)}85%,to{transform:translate(120%)}}.g-hint{font:500 .78rem var(--f-sans);color:#f6e9e4a6}.letter-wrap{z-index:3;padding:calc(56px + env(safe-area-inset-top,0px)) 16px calc(20px + env(safe-area-inset-bottom,0px));visibility:hidden;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.letter-wrap.on{visibility:visible;pointer-events:auto}.letter{flex-direction:column;width:min(100%,430px);max-height:100%;display:flex;position:relative}.rod{z-index:2;background:linear-gradient(#e7c47a 0%,#9a6f2a 55%,#6e4c17 100%);border-radius:8px;height:16px;margin:0 -14px;position:relative;box-shadow:0 4px 10px #00000059}.rod i:before,.rod i:after{content:"";background:linear-gradient(#f3d98c,#8a6420);border-radius:6px;width:14px;height:22px;position:absolute;top:-3px}.rod i:before{left:-6px}.rod i:after{right:-6px}.paper{overscroll-behavior:contain;text-align:center;color:#4a2a2e;background:radial-gradient(120% 80% at 50% 0%, #fffbf2 0%, var(--parch) 45%, #f1debb 100%);box-shadow:inset 0 0 0 1px #c49a4573, inset 0 0 0 7px var(--parch), inset 0 0 0 8px #c49a454d, inset 0 0 60px #a06e2833;flex-direction:column;align-items:center;gap:12px;margin:-6px 0;padding:30px 26px 26px;display:flex;position:relative;overflow:auto}.lt-kick{font:600 .6rem var(--f-sans);letter-spacing:.26em;text-transform:uppercase;color:var(--accent-ink)}.lt-p{font:400 1.02rem/1.6 var(--f-serif)}.lt-p.it{color:#6e4e50;font-style:italic}.lt-names{font:400 clamp(2.4rem, 11vw, 3.2rem)/1.1 var(--f-script);color:var(--primary)}.lt-names i{font:italic 400 1.4rem var(--f-serif);color:var(--accent);margin:0 4px}.lt-date{font:600 .66rem var(--f-sans);letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink);border-block:1px solid #c49a4573;padding:6px 0}.lt-love{font:400 1.9rem/1 var(--f-script);color:var(--primary)}.lt-seal{width:74px}.lt-go{background:linear-gradient(180deg, var(--primary-2), var(--primary));margin-top:4px;box-shadow:0 10px 24px -10px #6b1a2eb3}.replay{top:calc(12px + env(safe-area-inset-top,0px));z-index:30;border:1px solid var(--line);min-height:44px;color:var(--primary);font:italic 500 .9rem var(--f-serif);background:#fffaf7e6;border-radius:999px;padding:0 16px;display:none;position:absolute;right:12px;box-shadow:0 6px 18px -10px #6b1a2e66}.hl-ready .replay{align-items:center;display:inline-flex}.note-bar~.replay{top:calc(56px + env(safe-area-inset-top,0px))}.dock{right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:40;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed}.dock-btn{border:1px solid var(--line);width:48px;height:48px;color:var(--primary);background:#fffaf7f2;border-radius:50%;place-items:center;display:grid;box-shadow:0 10px 24px -12px #6b1a2e80}.dock-btn svg.i{width:18px;height:18px}.dock .chip{box-shadow:0 10px 24px -12px #6b1a2e80}.hero{text-align:center;justify-content:center;min-height:92svh;position:relative;padding-top:calc(70px + env(safe-area-inset-top,0px))!important;gap:12px!important}.hero-petals{z-index:0;opacity:.7}.hero>:not(canvas){z-index:1;position:relative}.emblem{fill:none;width:58px;height:36px;stroke:var(--accent);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.hero-kick{font:italic 500 .74rem var(--f-serif);letter-spacing:.26em;text-transform:uppercase;color:var(--accent-ink)}.hero-lead{max-width:30ch;font:400 1.08rem/1.5 var(--f-serif);color:var(--ink)}.names{font:400 clamp(3.6rem, 17vw, 6rem)/1.05 var(--f-script);color:var(--primary);flex-direction:column;align-items:center;gap:0;margin:6px 0;display:flex}.names .amp{font:italic 400 1.5rem var(--f-serif);color:var(--accent);align-items:center;gap:14px;display:flex}.names .amp i{background:linear-gradient(90deg, transparent, var(--accent));width:56px;height:1px}.names .amp i:last-child{transform:scaleX(-1)}.tagline{font:italic 400 1rem var(--f-serif);color:var(--accent-ink)}.arch{aspect-ratio:3/4;width:min(66vw,320px);box-shadow:0 0 0 6px var(--card), 0 0 0 7px var(--accent), 0 30px 60px -30px #6b1a2e99;border-radius:999px 999px 22px 22px;margin:18px 0 4px;overflow:hidden}.arch img{object-fit:cover;width:100%;height:100%}.fleuron{color:var(--accent);font-size:1.5rem}.count-sec{padding-top:10px!important}.cd-card{padding:28px 14px 24px}.cd-card .ks-countdown .kicker{font:italic 500 .78rem var(--f-serif);letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink)}.cd-card .cd{gap:8px}.cd-card .cell{box-shadow:inset 0 0 0 1px var(--line), 0 6px 16px -12px #6b1a2e80;background:#fffdfb;border-radius:14px}.cd-card .num{font:600 2rem/1 var(--f-serif);font-variant-numeric:tabular-nums lining-nums;color:var(--primary)}.cd-card .lbl{font:600 .56rem var(--f-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.cd-card .ks-countdown>.muted{font:italic 400 .95rem var(--f-serif)}.scratch{border-radius:22px;width:min(100%,520px);position:relative}.std-card{text-align:center;background:var(--card);box-shadow:0 0 0 1px var(--line), inset 0 0 0 9px var(--card), inset 0 0 0 10px #c49a4573, 0 24px 50px -30px #6b1a2e59;border-radius:22px;flex-direction:column;align-items:center;gap:6px;padding:30px 20px 26px;display:flex;position:relative}.std-kick{font:600 .6rem var(--f-sans);letter-spacing:.26em;text-transform:uppercase;color:var(--muted);align-items:center;gap:10px;display:flex}.std-kick:before,.std-kick:after{content:"";background:var(--accent);width:26px;height:1px}.std-day{font:italic 400 1.1rem var(--f-serif);color:var(--accent-ink)}.std-date{font:600 clamp(2.6rem, 12vw, 3.4rem)/1 var(--f-serif);color:var(--primary);align-items:baseline;gap:10px;display:flex}.std-date span{font:500 1rem var(--f-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--accent-ink)}.std-venue{font:italic 400 1rem var(--f-serif);color:var(--muted)}.std-place{color:var(--accent-ink);font:500 .8rem var(--f-sans);background:#f7e6c4;border-radius:999px;align-items:center;gap:6px;margin-top:6px;padding:6px 14px;display:inline-flex}.std-place svg{fill:none;stroke:currentColor;stroke-width:1.8px;width:14px;height:14px}.std-done{color:#2f6b3a;font:600 .62rem var(--f-sans);letter-spacing:.1em;text-transform:uppercase;background:#e6f2e7;border-radius:999px;padding:4px 10px;display:none;position:absolute;top:12px;right:12px}.scratch.revealed .std-done{display:inline-block}.foil{touch-action:none;cursor:grab;border-radius:22px;width:100%;height:100%;position:absolute;inset:0}.foil-btn{white-space:nowrap;background:linear-gradient(180deg, var(--primary-2), var(--primary));color:#fff4ee;min-height:48px;font:700 .66rem var(--f-sans);letter-spacing:.18em;text-transform:uppercase;border:0;border-radius:999px;align-items:center;gap:10px;padding:0 22px;transition:opacity .4s;display:none;position:absolute;top:50%;left:50%;translate:-50% -50%;box-shadow:0 10px 24px -8px #4e0f1ab3}.foil-btn svg{width:14px;height:14px;fill:var(--gold-hi)}.scratch.armed .foil-btn{display:inline-flex}.scratch.scratching .foil-btn{opacity:0;pointer-events:none}.scratch.revealed .foil,.scratch.revealed .foil-btn{display:none}.burst{z-index:90;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.venues{gap:16px;width:min(100%,520px);margin:0;padding:0;list-style:none;display:grid}.venue-card{text-align:center;background:var(--card);box-shadow:0 0 0 1px var(--line), 0 20px 44px -30px #6b1a2e59;border-radius:22px;flex-direction:column;align-items:center;gap:8px;padding:28px 20px 22px;display:flex}.venue-card.main{box-shadow:0 0 0 1px var(--accent-2), 0 20px 44px -26px #6b1a2e73}.pin{width:54px;height:54px;color:var(--primary);background:#f7e6c4;border-radius:50%;place-items:center;display:grid;box-shadow:inset 0 0 0 1px #c49a4580}.pin svg{fill:none;stroke:currentColor;stroke-width:1.7px;width:22px;height:22px}.v-kick{font:italic 600 .72rem var(--f-serif);letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink)}.v-addr{color:var(--muted);font-size:.98rem}.v-when{background:var(--bg);box-shadow:inset 0 0 0 1px var(--line);font:500 .78rem var(--f-sans);color:var(--ink);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.v-when svg{fill:none;width:14px;height:14px;stroke:var(--accent-ink);stroke-width:1.8px}.v-acts{flex-direction:column;gap:10px;width:100%;margin-top:6px;display:flex}.v-acts .btn{width:100%}.carousel{width:min(100%,520px)}.slides{scroll-snap-type:x mandatory;scrollbar-width:none;box-shadow:0 0 0 1px var(--line), 0 24px 50px -30px #6b1a2e66;background:var(--card);border-radius:24px;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.slides::-webkit-scrollbar{display:none}.slide{scroll-snap-align:center;flex-direction:column;flex:0 0 100%;display:flex}.sl-photo{aspect-ratio:4/5;position:relative;overflow:hidden}.sl-photo img{object-fit:cover;width:100%;height:100%}.sl-photo:after{content:"";background:linear-gradient(#0000,#1e0f1473);height:40%;position:absolute;inset:auto 0 0}.sl-tag{z-index:1;color:var(--accent-ink);font:600 .58rem var(--f-sans);letter-spacing:.18em;text-transform:uppercase;background:#fffaf7eb;border-radius:999px;padding:6px 12px;position:absolute;top:14px;left:14px}.sl-text{text-align:center;font:italic 400 1.08rem/1.6 var(--f-serif);color:var(--ink);padding:22px 22px 26px}.car-nav{justify-content:center;align-items:center;gap:14px;margin-top:14px;display:flex}.car-btn{border:1px solid var(--line);background:var(--card);width:44px;height:44px;color:var(--primary);border-radius:50%;place-items:center;display:grid}.car-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.dots{gap:6px;display:flex}.dots i{background:var(--line);border-radius:4px;width:8px;height:8px;transition:width .4s cubic-bezier(.22,1,.36,1),background .4s}.dots i.on{background:var(--accent);width:26px}.know-sec ul{gap:10px;width:min(100%,520px);margin:0;padding:0;list-style:none;display:grid}.know-sec li{background:var(--card);box-shadow:inset 0 0 0 1px var(--line);border-radius:16px;padding:14px 18px}.note-sec{text-align:center}.note-sec .heart{fill:#d98c9c;width:26px;height:26px}.quote{max-width:34ch;font:italic 400 1.15rem/1.6 var(--f-serif);color:var(--ink)}.love{font:400 2.2rem/1 var(--f-script);color:var(--primary)}.sign{font:600 .66rem var(--f-sans);letter-spacing:.26em;text-transform:uppercase;color:var(--accent-ink)}.reply-sec .form-card{padding:30px 18px 24px}.mb-wrap{justify-content:center;padding:0 18px 40px;display:flex}.mb-wrap>*{width:min(100%,520px)}.finale{padding:0 22px calc(110px + env(safe-area-inset-bottom,0px));text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex}.fin-seal{width:88px}.fin-line{max-width:30ch;font:italic 400 1.05rem/1.5 var(--f-serif);color:var(--ink)}.fin-small{font:500 .78rem var(--f-sans);color:var(--muted)}.finale-small{font:400 .72rem var(--f-sans);color:var(--muted)}.finale-credit{color:var(--muted);font:500 .72rem var(--f-sans);align-items:center;min-height:44px;display:inline-flex}@media (width>=960px){main>section{padding:80px 24px}.hero{min-height:100svh}}@media (prefers-reduced-motion:reduce){.g-open:after{animation:none}}
