:root{color-scheme:light;--ink:#57283d;--muted:#865b6e;--pink:#ac315e;--paper:#fffafb;--viewport-height:100dvh;font-family:"Segoe UI",-apple-system,BlinkMacSystemFont,sans-serif;color:var(--ink);background:#f9e8ef;font-synthesis:none}
*{box-sizing:border-box}
html,body{width:100%;overflow:hidden}
body{margin:0;min-width:320px;background:radial-gradient(ellipse at 15% 8%,#fff9fb 0,transparent 55%),radial-gradient(ellipse at 100% 95%,#efddeb 0,transparent 60%),#f9e8ef}
button{font:inherit;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
.page{height:100vh;height:var(--viewport-height);min-height:240px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding: max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));position:relative}
.card{width:min(100%,470px);min-height:0;flex-shrink:1;display:flex;flex-direction:column;background:var(--paper);border:1px solid #fff;border-radius:28px;padding:24px 24px 18px;box-shadow:0 24px 80px #903e6314,0 3px 12px #903e6309;position:relative}
.progress-header{display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--muted);font-size:12px;flex-shrink:0}
#progress{font-variant-numeric:tabular-nums;letter-spacing:2px}
.progress-track{height:3px;background:#f5e5ed;border-radius:4px;margin:15px 0 0;flex-shrink:0;overflow:hidden}
#progress-fill{display:block;height:100%;width:25%;background:#cb7193;border-radius:inherit;transition:width .35s ease}
.copy{text-align:center;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:17px 0 8px;scrollbar-width:thin;scrollbar-color:#e7b7ca transparent}
.seal{width:88px;height:82px;margin:0 auto 4px;display:grid;place-items:center;background:#f9edf2;border-radius:50% 50% 46% 46%;transform:rotate(-7deg)}
.seal svg{width:80px;transform:rotate(7deg)}
.dedication{font-size:12px;color:var(--muted);margin:15px 0 9px;letter-spacing:.5px}
h1{font-family:Georgia,"Times New Roman",serif;font-size:clamp(28px,7.5vw,38px);font-weight:400;letter-spacing:-1.2px;line-height:1.12;margin:0 0 25px;text-wrap:balance}
h2{font-size:clamp(19px,4.7vw,23px);font-weight:500;line-height:1.5;letter-spacing:-.3px;max-width:365px;margin:0 auto;min-height:104px;display:grid;place-content:center;text-wrap:balance;outline:none}
#controls{flex-shrink:0;margin-top:6px}
.arena{position:relative;height:138px;width:100%}
button{height:52px;border-radius:16px;font-size:17px;font-weight:600;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none}
#yes{position:absolute;left:0;top:13px;width:calc(50% - 10px);color:white;background:var(--pink);border:1px solid var(--pink);box-shadow:0 6px 16px #ac315e26;transition:background .18s ease,box-shadow .18s ease}
#yes span{margin-left:6px;font-size:22px;font-weight:400;vertical-align:-1px}
#yes:hover{background:#94254f;box-shadow:0 8px 22px #ac315e35}
#yes:active{background:#7f2044}
button:focus-visible{outline:3px solid #622044;outline-offset:4px}
#no{position:absolute;left:calc(50% + 10px);top:13px;width:86px;color:var(--muted);border:1px solid #ddbac9;background:#fff7fa;touch-action:none;will-change:transform;transition:transform .16s cubic-bezier(.2,.75,.3,1)}
#no.repositioning{transition:none}
.hint{text-align:center;color:var(--muted);font-size:12px;line-height:1.5;margin:0}
.page-note{margin:0;color:#865b6e;font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:14px;flex-shrink:0}
.decoration{position:fixed;inset:0;pointer-events:none;overflow:hidden;color:#cb7193;opacity:.35}
.decoration span{position:absolute;font-family:Georgia,serif;font-size:30px;animation:drift 5s ease-in-out 2 alternate}
.decoration span:nth-child(1){left:8%;top:15%;transform:rotate(-18deg)}
.decoration span:nth-child(2){right:7%;top:32%;font-size:22px;animation-delay:-2s}
.decoration span:nth-child(3){left:13%;bottom:12%;font-size:20px;animation-delay:-1s}
.decoration span:nth-child(4){right:12%;bottom:9%;transform:rotate(16deg);animation-delay:-3s}
.couple{font-family:Georgia,"Times New Roman",serif;font-size:30px;margin:5px 0 22px}
.terms{font-size:16px;line-height:1.7;margin:0 auto 24px;max-width:310px;color:var(--muted);text-wrap:balance}
.signature{border:1px dashed #dca7bd;border-radius:16px;padding:17px 14px;margin:0;background:#fceff4;font-size:16px;line-height:1.6;text-wrap:balance}
.accepted .copy{padding-bottom:18px}
.accepted h1{margin-bottom:22px}
.accepted .seal{margin-bottom:18px}
footer{font-size:12px;line-height:1.5;color:var(--muted);text-align:center;padding-top:12px;flex-shrink:0}
#confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden}
.confetti-heart{position:absolute;top:-40px;left:var(--x);font-size:var(--size);color:var(--color);animation:fall var(--duration) var(--delay) ease-in both}
.noscript{position:fixed;inset:12px 12px auto;padding:20px;background:white;border:1px solid #ac315e;border-radius:16px;text-align:center}
@keyframes drift{to{translate:0 -10px;rotate:7deg}}
@keyframes fall{0%{transform:translateY(-30px) rotate(0);opacity:0}10%{opacity:.85}100%{transform:translate(var(--sway),110dvh) rotate(220deg);opacity:0}}
@media(max-width:360px){.card{padding:20px 18px 16px;border-radius:24px}.page{gap:12px}.little-note{font-size:11px}h1{margin-bottom:18px}}
@media(max-height:650px){.page{gap:10px;padding-top:max(10px,env(safe-area-inset-top));padding-bottom:max(10px,env(safe-area-inset-bottom))}.card{padding-top:16px;padding-bottom:12px}.copy{padding-top:12px}.seal{width:62px;height:58px}.seal svg{width:59px}.dedication{margin-top:10px}h1{font-size:28px;margin-bottom:14px}h2{font-size:19px;min-height:88px}.arena{height:112px}.page-note{font-size:12px}.progress-track{margin-top:10px}}
@media(max-height:450px){.page-note,.seal,.dedication{display:none}.copy{padding-top:12px}h1{font-size:24px;margin-bottom:8px}h2{font-size:18px;min-height:0}.arena{height:88px}button{height:48px}.hint{font-size:11px}.card{border-radius:20px}.accepted h1{margin-bottom:12px}.couple{margin-bottom:12px}.terms{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
