:root{--paper: #f6ecd3;--paper-soft: #fbf3df;--ink: #2a1a14;--burgundy: #7a2e3f;--burgundy-deep: #5a1f2c;--gold: #b78844;--rose: #c97a76;--machine: #e07485;--machine-deep: #b04a5a;--ink-soft: #5b3f2d;--tape: rgba(196, 158, 90, .6)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.game{position:relative;width:100vw;min-height:100dvh;background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px 16px 40px;box-sizing:border-box;overflow:hidden;touch-action:manipulation;transition:opacity .4s ease;background-image:radial-gradient(circle,rgba(122,46,63,.08) 1px,transparent 1px);background-size:16px 16px;background-color:var(--paper)}.game.gone{opacity:0;pointer-events:none}.machine,.machine *{image-rendering:pixelated;image-rendering:crisp-edges;box-sizing:border-box}.machine{width:min(92vw,380px);background:var(--burgundy);border:3px solid var(--burgundy-deep);box-shadow:4px 4px 0 var(--burgundy-deep);display:flex;flex-direction:column;position:relative;user-select:none}.marquee{background:var(--burgundy-deep);border-bottom:3px solid #3a1020;padding:6px 8px 4px;display:flex;flex-direction:column;align-items:center;gap:4px}.marquee-text{font-family:monospace;font-size:11px;letter-spacing:.12em;color:var(--gold);text-transform:uppercase;line-height:1}.marquee-lights{display:flex;gap:5px;align-items:center}.marquee-lights .ml{display:inline-block;width:6px;height:6px;background:var(--gold);border:1px solid #7a5010;animation:blink-lights 1.4s step-start infinite}.marquee-lights .ml:nth-child(2n){background:var(--rose);animation-delay:.7s}@keyframes blink-lights{0%,49%{opacity:1}50%,to{opacity:.2}}.glass-box{position:relative;background:#b8e4f0;background:linear-gradient(180deg,#c8eaf5,#b0d8ec 60%,#e8d4a0);border-top:3px solid #6ab0d0;border-bottom:3px solid #6ab0d0;min-height:260px;overflow:hidden}.glass-box:before,.glass-box:after{content:"";position:absolute;top:0;bottom:0;width:6px;background:var(--burgundy);z-index:7}.glass-box:before{left:0;border-right:2px solid var(--burgundy-deep)}.glass-box:after{right:0;border-left:2px solid var(--burgundy-deep)}.rail-h{position:absolute;top:0;left:6px;right:6px;height:8px;background:var(--burgundy-deep);border-bottom:2px solid #3a1020;z-index:5}.claw{position:absolute;top:0;left:6px;transform:translate(0);will-change:transform,top;z-index:4;transition:top .3s steps(10,end)}.claw-cable{width:4px;height:24px;background:var(--burgundy-deep);margin:8px auto 0;border-left:1px solid #1a0010}.claw-head{position:relative;width:20px;height:10px;background:var(--burgundy-deep);border:2px solid #1a0010;margin:0 auto;display:flex;align-items:flex-end;justify-content:space-between}.claw-arm{width:7px;height:18px;background:var(--burgundy);border:2px solid var(--burgundy-deep);transform-origin:top center;transition:transform .22s steps(4,end)}.claw-arm.left,.claw-arm.right{border-radius:0 0 3px 3px}.claw.dropping{top:52%}.claw.lifting{top:-4%;transition:top .6s steps(20,end)}.claw.closing .claw-arm.left{transform:rotate(35deg)}.claw.closing .claw-arm.right{transform:rotate(-35deg)}.glass-box .prize{position:absolute;bottom:24px;left:50%;transform:translate(-50%);height:58%;width:auto;z-index:3;pointer-events:none;image-rendering:pixelated;image-rendering:crisp-edges;transition:transform .6s steps(20,end),z-index 0ms}.game[data-phase=closing] .glass-box .prize,.game[data-phase=lifting] .glass-box .prize,.game[data-phase=won] .glass-box .prize{z-index:5}.game[data-phase=lifting] .glass-box .prize,.game[data-phase=won] .glass-box .prize{transform:translate(-50%) translateY(-90%)}.plush{position:absolute;bottom:16px;width:auto;z-index:3;pointer-events:none;image-rendering:pixelated;image-rendering:crisp-edges;filter:drop-shadow(2px 2px 0 rgba(0,0,0,.35))}.plush.p-snoopy{left:1%;height:34%;transform:rotate(-4deg);z-index:3}.plush.p-lucy{left:16%;height:34%;transform:rotate(3deg);z-index:3}.plush.p-charlie{left:30%;height:34%;transform:rotate(-2deg);z-index:3}.plush.p-sally{left:60%;height:34%;transform:rotate(2deg);z-index:3}.plush.p-franklin{left:74%;height:34%;transform:rotate(-3deg);z-index:3}.plush.p-cake{left:50%;bottom:4px;height:28%;transform:translate(-50%) rotate(-1deg);z-index:4}.plush.p-linus{left:8%;bottom:34%;height:26%;transform:rotate(-3deg);z-index:1}.plush.p-marcie{left:24%;bottom:34%;height:26%;transform:rotate(5deg);z-index:1}.plush.p-schroeder{left:64%;bottom:34%;height:28%;transform:rotate(-2deg);z-index:1}.plush.p-woodstock{right:1%;bottom:4px;height:30%;transform:rotate(6deg);z-index:3}.glass-box .prize{z-index:3}.prize-chute{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:40px;height:22px;background:var(--burgundy-deep);border:2px solid #1a0010;border-bottom:0;z-index:3}.control-panel{background:var(--burgundy-deep);border-top:3px solid #1a0010;padding:10px 12px;display:flex;align-items:center;justify-content:center;gap:10px}.ctrl-btn{font-family:monospace;font-size:16px;font-weight:700;color:var(--paper);background:var(--burgundy);border:3px solid #1a0010;box-shadow:3px 3px #1a0010;padding:8px 14px;cursor:pointer;user-select:none;touch-action:manipulation;border-radius:0;transition:none;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.ctrl-btn:active,.ctrl-btn.held{transform:translate(3px,3px);box-shadow:0 0 #1a0010}.ctrl-btn.drop{background:var(--gold);color:var(--burgundy-deep);border-color:#7a5010;box-shadow:3px 3px #7a5010;font-size:12px;letter-spacing:.1em;padding:8px 16px}.ctrl-btn.drop:active,.ctrl-btn.drop.held{box-shadow:0 0 #7a5010}.machine-base{background:var(--burgundy);border-top:2px solid #1a0010;padding:6px 12px 8px;display:flex;align-items:center;justify-content:space-between}.coin-slot{width:28px;height:5px;background:#1a0010;border:2px solid #3a1020;box-shadow:1px 1px #000}.prize-door{width:36px;height:18px;background:var(--burgundy-deep);border:2px solid #1a0010;box-shadow:2px 2px #1a0010;position:relative}.prize-door:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:3px;background:#1a0010}.cta{font-family:monospace;font-size:12px;letter-spacing:.08em;color:var(--burgundy-deep);text-align:center;opacity:.8;margin:0}.skip{position:absolute;bottom:12px;right:14px;font-family:Kalam,cursive;font-size:12px;color:#2a1a148c;text-decoration:none;padding:6px 8px;border-radius:4px}.skip:focus-visible{outline:2px dashed var(--burgundy)}.confetti{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle at 20% 20%,var(--burgundy) 0 4px,transparent 4px),radial-gradient(circle at 80% 25%,var(--gold) 0 5px,transparent 5px),radial-gradient(circle at 30% 70%,var(--rose) 0 4px,transparent 4px),radial-gradient(circle at 70% 80%,var(--burgundy) 0 5px,transparent 5px),radial-gradient(circle at 50% 40%,var(--gold) 0 3px,transparent 3px);background-size:120px 120px;opacity:0}.confetti.burst{animation:confetti-burst 1.1s ease-out forwards}@keyframes confetti-burst{0%{opacity:0;transform:scale(.6)}20%{opacity:1}to{opacity:0;transform:scale(1.4)}}@media(prefers-reduced-motion:reduce){.claw,.claw-arm{transition:none!important}.confetti.burst{animation:none;opacity:1}.marquee-lights .ml{animation:none!important}.game,.invite{transition:none}}.invite{opacity:0;transition:opacity .4s ease}.invite.fade-in{opacity:1}.replay{display:inline-block;margin-top:22px;font-family:Kalam,cursive;font-size:14px;color:#2a1a148c;text-decoration:none;border-bottom:1px dashed rgba(122,46,63,.3);padding-bottom:1px;align-self:center}.replay:hover,.replay:focus-visible{color:var(--burgundy)}html,body{background:var(--paper);color:var(--ink);font-family:Kalam,Caveat,cursive}.invite{min-height:100vh;background-image:radial-gradient(circle at 15% 8%,rgba(122,46,63,.06) 0%,transparent 50%),radial-gradient(circle at 85% 95%,rgba(192,138,62,.1) 0%,transparent 55%),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.18  0 0 0 0 0.11  0 0 0 0 0.08  0 0 0 0.035 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");padding:28px 22px 56px;position:relative;overflow-x:hidden}.wrap{max-width:460px;margin:0 auto;position:relative}.opener{font-family:Kalam,cursive;font-weight:300;font-size:18px;color:var(--ink-soft);text-align:center;transform:rotate(-1deg);margin-bottom:6px}.opener .arrow{display:inline-block;transform:rotate(8deg) translateY(2px);color:var(--burgundy);margin:0 4px}h1{font-family:Caveat,cursive;font-weight:700;font-size:clamp(64px,18vw,96px);line-height:.92;text-align:center;color:var(--burgundy-deep);margin:2px 0;letter-spacing:-.01em;text-shadow:2px 2px 0 rgba(192,138,62,.3)}h1 .turns{display:block;font-family:Kalam,cursive;font-weight:400;font-size:.3em;color:var(--ink-soft);letter-spacing:.15em;text-transform:lowercase;margin-bottom:8px}h1 .age{display:inline-block;color:var(--burgundy);transform:rotate(-3deg);margin-left:6px}.polaroid-stage{margin:22px auto 18px;display:flex;justify-content:center;perspective:800px}.polaroid{background:var(--paper-soft);padding:14px 14px 60px;box-shadow:0 1px 1px #0000000d,0 22px 36px -12px #3c190f57;transform:rotate(-3deg);position:relative;width:270px}.polaroid:before,.polaroid:after{content:"";position:absolute;top:-16px;width:70px;height:24px;background:var(--tape);box-shadow:0 1px 2px #0000001a}.polaroid:before{left:18px;transform:rotate(-10deg)}.polaroid:after{right:18px;transform:rotate(8deg)}.polaroid .photo{width:100%;height:340px;background:radial-gradient(ellipse 60% 50% at 50% 60%,rgba(183,136,68,.18),transparent 70%),linear-gradient(160deg,#f4e9cf,#ebdcb8);overflow:hidden;display:flex;align-items:flex-end;justify-content:center}.polaroid .photo img{height:100%;width:auto;object-fit:contain;filter:saturate(1.05) contrast(1.02)}.polaroid .caption{position:absolute;bottom:16px;left:0;right:0;text-align:center;font-family:Caveat,cursive;font-size:26px;color:var(--ink)}.polaroid .caption .heart{color:var(--burgundy)}.quote{margin:18px auto 30px;text-align:center;font-family:Caveat,cursive;font-weight:500;font-size:28px;line-height:1.25;color:var(--burgundy-deep);max-width:360px;padding:0 8px;transform:rotate(-1deg)}.quote .body:before,.quote .body:after{color:var(--gold);font-family:Fraunces,serif;font-size:36px;line-height:0;vertical-align:-10px}.quote .body:before{content:"“";margin-right:4px}.quote .body:after{content:"”";margin-left:4px}.quote .attr{display:block;margin-top:10px;font-family:Kalam,cursive;font-weight:400;font-size:16px;color:var(--ink-soft);transform:rotate(1deg);letter-spacing:0}.quote .attr:before{content:"—";color:var(--burgundy)}.details{margin:16px auto 0;padding:8px 12px;max-width:380px;text-align:center}.line{font-family:Kalam,cursive;font-weight:400;font-size:21px;line-height:1.45;color:var(--ink);margin:14px 0;padding-bottom:14px;border-bottom:1px dashed rgba(122,46,63,.3)}.line:last-child{border-bottom:0}.line .label{display:block;font-family:Caveat,cursive;font-weight:500;font-size:24px;color:var(--burgundy);margin-bottom:2px;transform:rotate(-1deg)}.line b{font-weight:700;color:var(--burgundy-deep)}.line .address-link,.line .email-link,.line .cashapp-link{color:inherit;text-decoration:none;border-bottom:1px dashed rgba(122,46,63,.3);padding-bottom:1px}.line .address-link:hover,.line .address-link:focus-visible,.line .email-link:hover,.line .email-link:focus-visible,.line .cashapp-link:hover,.line .cashapp-link:focus-visible{border-bottom-color:var(--burgundy)}.rsvp{margin-top:26px;display:grid;gap:12px}.rsvp .btn{display:block;padding:16px 18px;background:var(--burgundy);color:var(--paper-soft);text-align:center;font-family:Caveat,cursive;font-weight:700;font-size:22px;letter-spacing:.02em;text-decoration:none;border-radius:4px;box-shadow:0 6px 0 var(--burgundy-deep),0 14px 22px -10px #3c190f59;transform:rotate(-1deg);transition:transform .08s}.rsvp .btn:active{transform:translateY(2px) rotate(-1deg);box-shadow:0 4px 0 var(--burgundy-deep),0 10px 18px -10px #3c190f59}.rsvp .btn.alt{background:transparent;color:var(--burgundy-deep);box-shadow:none;border:1px dashed rgba(122,46,63,.45);font-weight:500;font-size:17px;padding:12px 16px;transform:rotate(1deg)}.foot{text-align:center;margin-top:30px;font-family:Caveat,cursive;font-weight:500;color:var(--burgundy);font-size:26px;transform:rotate(-1deg)}.foot .heart{color:var(--rose);font-size:22px}.doodle{position:absolute;pointer-events:none;color:var(--burgundy);opacity:.55;font-family:Fraunces,serif}.note-1{top:10px;left:4%;font-size:28px;transform:rotate(-15deg);color:var(--gold)}.note-2{top:78px;right:4%;font-size:32px;transform:rotate(20deg);color:var(--burgundy)}.star-1{top:460px;left:2%;font-size:26px;color:var(--gold)}.star-2{top:620px;right:3%;font-size:22px;color:var(--rose)}.heart-1{bottom:80px;left:4%;font-size:24px;color:var(--rose);transform:rotate(10deg)}.swirl-1{bottom:8px;right:6%;font-size:28px;color:var(--gold);transform:rotate(-8deg)}.rsvp-form{display:grid;gap:14px}.rsvp-form .field{display:grid;gap:4px;font-family:Kalam,cursive}.rsvp-form .lbl{font-family:Caveat,cursive;font-size:22px;color:var(--burgundy)}.rsvp-form input[type=text],.rsvp-form input[type=number],.rsvp-form textarea{font-family:Kalam,cursive;font-size:18px;padding:10px 12px;background:var(--paper-soft);color:var(--ink);border:1px dashed rgba(122,46,63,.4);border-radius:4px}.rsvp-form .choice{border:0;padding:0;display:grid;gap:6px}.rsvp-form .choice label{font-family:Kalam,cursive;font-size:18px;color:var(--ink)}.rsvp-status{font-family:Kalam,cursive;color:var(--burgundy-deep);min-height:1.2em;text-align:center}.rsvp-success{font-family:Caveat,cursive;font-size:26px;color:var(--burgundy);text-align:center;margin-top:18px}
