:root{--cream: #fff8ec;--cream-deep: #fdf0da;--butter: #ffe8a3;--sun: #ffd97a;--peach: #ffd9b8;--blush: #f7c8b0;--sage: #a8c3a0;--sage-deep: #7fa377;--moss: #5d8257;--leaf-dark: #476b42;--cocoa: #6b4f3a;--cocoa-soft: #8a6a50;--lion: #e8b06a;--lion-light: #f6cf96;--lion-mane: #c98d4b;--sky-top: #fdeed3;--sky-bottom: #fbdcb6;--ink: #5a4632;--white-soft: #fffdf7}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Quicksand,Segoe UI,sans-serif;color:var(--ink);background:var(--cream);overflow-x:hidden;-webkit-font-smoothing:antialiased}.display-font{font-family:Caprasimo,Georgia,serif}.page{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;background:linear-gradient(180deg,var(--sky-top) 0%,var(--sky-bottom) 55%,var(--cream-deep) 100%)}.hero{position:relative;width:100%;min-height:100svh;display:flex;flex-direction:column;align-items:center;background:linear-gradient(180deg,var(--sky-top) 0%,var(--sky-bottom) 78%,#f3e3c2 100%);overflow:hidden}.hero .scene-wrap{margin-top:auto}.below{position:relative;z-index:5;width:100%;display:flex;flex-direction:column;align-items:center;background:linear-gradient(180deg,#79a06c 0%,#86ab77 30%,var(--cream-deep) 100%);padding:.5rem 0 0}.below .content{padding-top:1.5rem}.scroll-hint{position:relative;z-index:6;font-weight:700;color:#fffdf7f2;font-size:.95rem;margin-top:-3.2rem;margin-bottom:1rem;text-shadow:0 2px 8px rgba(93,130,87,.6);animation:hint-bounce 2s ease-in-out infinite;pointer-events:none}@keyframes hint-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(7px)}}.content{position:relative;z-index:5;width:100%;max-width:680px;padding:3rem 1.25rem 0;text-align:center}.hero .content{padding-top:clamp(1.5rem,5vh,3.5rem)}.eyebrow{font-size:clamp(.95rem,2.6vw,1.15rem);letter-spacing:.35em;text-transform:uppercase;font-weight:700;color:var(--sage-deep);animation:rise-in .9s ease-out both}.headline{font-family:Caprasimo,serif;font-weight:400;font-size:clamp(2.4rem,8.5vw,4.6rem);line-height:1.08;color:var(--cocoa);margin:.75rem 0 .5rem;animation:rise-in .9s .15s ease-out both}.headline .accent{color:var(--sage-deep)}.subline{font-size:clamp(1.05rem,3vw,1.3rem);font-weight:500;color:var(--cocoa-soft);animation:rise-in .9s .3s ease-out both}.card{background:#fffdf7d1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:26px;border:2px dashed rgba(168,195,160,.65);box-shadow:0 12px 32px #6b4f3a1a;padding:1.6rem 1.5rem;margin:1.5rem auto;animation:rise-in .9s .45s ease-out both}.card h2{font-family:Caprasimo,serif;font-weight:400;color:var(--moss);font-size:1.5rem;margin-bottom:.6rem}.date-line{font-family:Caprasimo,serif;font-size:clamp(1.5rem,5vw,2.2rem);color:var(--cocoa)}.detail-line{font-size:clamp(1rem,3vw,1.2rem);font-weight:600;color:var(--cocoa-soft);margin-top:.4rem}.pill{display:inline-flex;align-items:center;gap:.45rem;background:var(--butter);color:var(--cocoa);border-radius:999px;font-weight:700;font-size:.95rem;padding:.5rem 1.1rem;margin:.35rem .25rem;box-shadow:0 4px 10px #6b4f3a1f}.pill.sage{background:#d5e5cf}.pill.peach{background:var(--peach)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-family:Quicksand,sans-serif;font-weight:700;font-size:1.05rem;border:none;cursor:pointer;border-radius:999px;padding:.85rem 1.9rem;transition:transform .18s ease,box-shadow .18s ease,background .18s ease;text-decoration:none}.btn-primary{background:var(--sage-deep);color:var(--white-soft);box-shadow:0 8px 20px #7fa37773}.btn-primary:hover{transform:translateY(-2px) scale(1.03);background:var(--moss)}.btn-primary:active{transform:translateY(0) scale(.98)}.btn-soft{background:var(--white-soft);color:var(--sage-deep);border:2px solid var(--sage);box-shadow:0 6px 14px #6b4f3a1a}.btn-soft:hover{transform:translateY(-2px);background:#f3f8f0}.scene-wrap{position:relative;z-index:4;width:100%;margin-top:auto;pointer-events:none}.scene-wrap svg{display:block;width:100%;height:auto}.cub-hit{pointer-events:auto;cursor:pointer;outline:none}.cub-hit:focus-visible ellipse:first-of-type{filter:drop-shadow(0 0 14px rgba(255,217,122,.95))}.scene-wrap svg g[tabindex]{outline:none}.scene-wrap svg g[tabindex]:focus-visible{filter:drop-shadow(0 0 12px rgba(255,217,122,.9))}.sway{transform-box:fill-box;transform-origin:50% 100%;animation:sway 4.2s ease-in-out infinite alternate}@keyframes sway{0%{transform:rotate(-3.5deg)}to{transform:rotate(3.5deg)}}.sway-slow{transform-box:fill-box;transform-origin:50% 100%;animation:sway 6.5s ease-in-out infinite alternate}.cloud{animation:drift linear infinite}@keyframes drift{0%{transform:translate(-18vw)}to{transform:translate(118vw)}}.sun-glow{transform-box:fill-box;transform-origin:center;animation:sun-pulse 6s ease-in-out infinite alternate}@keyframes sun-pulse{0%{transform:scale(1);opacity:.85}to{transform:scale(1.07);opacity:1}}.balloon{animation:balloon-drift 85s linear infinite}@keyframes balloon-drift{0%{transform:translate(-6vw,150px)}to{transform:translate(106vw,60px)}}.balloon-bob{transform-box:fill-box;transform-origin:center;animation:balloon-bob 5s ease-in-out infinite alternate}@keyframes balloon-bob{0%{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-16px) rotate(2deg)}}.bird{animation:bird-fly linear infinite}@keyframes bird-fly{0%{transform:translate(108vw,120px)}to{transform:translate(-10vw,70px)}}.bird-flap{transform-box:fill-box;transform-origin:50% 100%;animation:bird-flap .6s ease-in-out infinite alternate}@keyframes bird-flap{0%{transform:scaleY(1)}to{transform:scaleY(.35)}}.elephant{animation:elephant-walk 70s linear infinite}@keyframes elephant-walk{0%{transform:translate(-120px,282px)}to{transform:translate(1560px,282px)}}.trunk{transform-box:fill-box;transform-origin:20% 10%;animation:trunk-swing 2.4s ease-in-out infinite alternate}@keyframes trunk-swing{0%{transform:rotate(-7deg)}to{transform:rotate(9deg)}}.giraffe{transform-box:fill-box;transform-origin:50% 100%;animation:giraffe-peek 1.8s 1.6s cubic-bezier(.34,1.56,.64,1) both}@keyframes giraffe-peek{0%{transform:translateY(85%) rotate(-4deg)}to{transform:translateY(0) rotate(0)}}.giraffe-inner{transform-box:fill-box;transform-origin:50% 100%;animation:giraffe-sway 5.5s 3.5s ease-in-out infinite alternate}@keyframes giraffe-sway{0%{transform:rotate(-1.6deg)}to{transform:rotate(2deg) translateY(-5px)}}.zebra{animation:zebra-peek 1.7s 2.2s cubic-bezier(.34,1.56,.64,1) both}@keyframes zebra-peek{0%{transform:translate(30%)}to{transform:translate(0)}}.zebra-inner{transform-box:fill-box;transform-origin:100% 100%;animation:giraffe-sway 6s 4s ease-in-out infinite alternate}.monkey{transform-box:fill-box;transform-origin:50% 0%;animation:monkey-swing 3.2s ease-in-out infinite alternate}@keyframes monkey-swing{0%{transform:rotate(-8deg)}to{transform:rotate(9deg)}}.hippo{animation:hippo-peek 9s 3s ease-in-out infinite}@keyframes hippo-peek{0%,14%{transform:translateY(52px)}24%,62%{transform:translateY(0)}72%,to{transform:translateY(52px)}}.snail-bob{transform-box:fill-box;transform-origin:50% 100%;animation:snail-bob 4s ease-in-out infinite alternate}@keyframes snail-bob{0%{transform:translateY(0) scaleX(1)}to{transform:translateY(-2px) scaleX(1.05)}}.butterfly{transform-box:fill-box;transform-origin:center;animation:flutter 9s ease-in-out infinite alternate}@keyframes flutter{0%{transform:translate(0) rotate(-6deg)}25%{transform:translate(26px,-34px) rotate(8deg)}50%{transform:translate(-14px,-12px) rotate(-10deg)}75%{transform:translate(30px,-44px) rotate(6deg)}to{transform:translate(-6px,-6px) rotate(-4deg)}}.butterfly-wing{transform-box:fill-box;transform-origin:50% 100%;animation:wing .5s ease-in-out infinite alternate}@keyframes wing{0%{transform:scaleX(1)}to{transform:scaleX(.4)}}.cub{transform-box:fill-box;transform-origin:50% 100%;animation:peek 1.6s .8s cubic-bezier(.34,1.56,.64,1) both}@keyframes peek{0%{transform:translateY(78%)}to{transform:translateY(0)}}.cub-inner{transform-box:fill-box;transform-origin:50% 100%;animation:bob 3.4s 2.4s ease-in-out infinite alternate}@keyframes bob{0%{transform:translateY(0) rotate(-1.2deg)}to{transform:translateY(-7px) rotate(1.2deg)}}.cub-wiggle{animation:wiggle .7s ease-in-out both!important}@keyframes wiggle{0%{transform:rotate(0)}20%{transform:rotate(-7deg) scale(1.05)}45%{transform:rotate(6deg) scale(1.06)}70%{transform:rotate(-4deg) scale(1.03)}to{transform:rotate(0) scale(1)}}.blink{transform-box:fill-box;transform-origin:center;animation:blink 5.2s infinite}@keyframes blink{0%,93%,to{transform:scaleY(1)}95.5%,97%{transform:scaleY(.08)}}.tail{transform-box:fill-box;transform-origin:10% 90%;animation:tail-flick 3s ease-in-out infinite alternate}@keyframes tail-flick{0%{transform:rotate(-8deg)}to{transform:rotate(14deg)}}.ear-l,.ear-r{transform-box:fill-box;transform-origin:50% 100%}.ear-l{animation:ear 4.6s 1s ease-in-out infinite}.ear-r{animation:ear 4.6s 2.7s ease-in-out infinite}@keyframes ear{0%,88%,to{transform:rotate(0)}91%{transform:rotate(-9deg)}94%{transform:rotate(5deg)}97%{transform:rotate(-3deg)}}.sparkle{position:absolute;border-radius:50%;background:radial-gradient(circle,#ffe8a3f2,#ffe8a300 70%);pointer-events:none;animation:twinkle ease-in-out infinite}@keyframes twinkle{0%,to{opacity:0;transform:translateY(0) scale(.6)}50%{opacity:1;transform:translateY(-26px) scale(1.15)}}.leaf-float{position:absolute;pointer-events:none;animation:leaf-fall linear infinite;opacity:.85}@keyframes leaf-fall{0%{transform:translateY(-6vh) translate(0) rotate(0);opacity:0}8%{opacity:.85}to{transform:translateY(108vh) translate(9vw) rotate(320deg);opacity:0}}.letter{display:inline-block;animation:letter-pop .65s cubic-bezier(.34,1.56,.64,1) both}@keyframes letter-pop{0%{opacity:0;transform:translateY(34px) rotate(-8deg) scale(.6)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}.scene-wrap svg .par-far{transform:translate(calc(var(--mx, 0) * 6px),calc(var(--my, 0) * 3px));transition:transform .35s ease-out}.scene-wrap svg .par-mid{transform:translate(calc(var(--mx, 0) * 12px),calc(var(--my, 0) * 6px));transition:transform .3s ease-out}.scene-wrap svg .par-near{transform:translate(calc(var(--mx, 0) * 20px),calc(var(--my, 0) * 9px));transition:transform .25s ease-out}.eye-track{transform:translate(calc(var(--mx, 0) * 6px),calc(var(--my, 0) * 4px));transition:transform .18s ease-out}@keyframes rise-in{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}.rise{animation:rise-in .9s ease-out both}.speech{position:absolute;z-index:6;background:var(--white-soft);color:var(--cocoa);font-weight:700;border-radius:18px;border:2px solid var(--butter);padding:.55rem .95rem;font-size:.98rem;box-shadow:0 8px 18px #6b4f3a2e;animation:pop-bubble .4s cubic-bezier(.34,1.56,.64,1) both;pointer-events:none;white-space:normal;width:max-content;max-width:min(78vw,360px);text-align:center}.speech:after{content:"";position:absolute;bottom:-9px;left:50%;transform:translate(-50%);border:9px solid transparent;border-top-color:var(--white-soft);border-bottom:0}@keyframes pop-bubble{0%{opacity:0;transform:scale(.5) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.buddy{position:absolute;z-index:6}.buddy-left{left:clamp(4px,2.5vw,40px)}.buddy-right{right:clamp(4px,2.5vw,40px)}.buddy-btn{background:none;border:none;padding:0;cursor:pointer;display:block;animation:bob 3.8s ease-in-out infinite alternate;transition:transform .18s ease}.buddy-btn:hover{transform:scale(1.12) rotate(-3deg)}.buddy-btn:focus-visible{outline:3px solid var(--butter);outline-offset:4px;border-radius:14px}.buddy .speech{bottom:calc(100% + 12px);white-space:normal;width:max-content;max-width:220px;text-align:center}.buddy-speech-left{left:0}.buddy-speech-right{right:0}.buddy-speech-left:after{left:30px;transform:none}.buddy-speech-right:after{left:auto;right:30px;transform:none}@media(max-width:900px){.buddy-btn svg{width:62px;height:auto}.buddy-left{left:0;transform:translate(-36%)}.buddy-right{right:0;transform:translate(36%)}.buddy-speech-left{left:60%}.buddy-speech-right{right:60%}.buddy .speech{max-width:min(64vw,240px)}}.baby-check{display:flex;align-items:center;gap:.6rem;justify-content:center;background:#fdf3dd;border:2px solid var(--butter);border-radius:16px;padding:.8rem 1rem;font-weight:700;color:var(--cocoa);cursor:pointer;transition:background .15s ease}.baby-check:hover{background:#fcedcc}.baby-check input{width:22px;height:22px;accent-color:var(--sage-deep);cursor:pointer}.stepper{display:flex;align-items:center;justify-content:center;gap:1rem}.stepper .count{font-family:Caprasimo,serif;font-size:1.7rem;color:var(--cocoa);min-width:2.2rem;text-align:center}.stepper button{width:44px;height:44px;border-radius:50%;border:none;font-size:1.4rem;font-weight:700;cursor:pointer;background:#d5e5cf;color:var(--moss);transition:transform .15s ease}.stepper button:hover{transform:scale(1.1)}.stepper button:disabled{opacity:.35;cursor:default;transform:none}.name-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}@media(max-width:560px){.name-grid{grid-template-columns:1fr}}.date-change-card{border:3px solid var(--blush);background:linear-gradient(160deg,#fff1e8,#ffe4d6);box-shadow:0 14px 36px #b0623f38}.date-change-card h2{color:#b0623f}.date-change-card .old-date{text-decoration:line-through;opacity:.65;font-weight:700}.date-change-card .new-date{font-family:Caprasimo,serif;font-size:clamp(1.3rem,4.5vw,1.7rem);color:var(--cocoa)}.rsvp-deadline{font-weight:800;font-size:clamp(1.05rem,3.2vw,1.25rem);color:var(--cocoa);background:var(--butter);border-radius:999px;display:inline-block;padding:.55rem 1.3rem;margin-top:.9rem;box-shadow:0 6px 14px #6b4f3a26}.registry-card{border:3px solid var(--sun);background:linear-gradient(160deg,var(--white-soft) 0%,#fdf3dd 100%);box-shadow:0 14px 36px #c98d4b38}.registry-sub{font-weight:600;color:var(--cocoa-soft);margin-bottom:1rem}.registry-btns{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}.registry-btn{min-width:240px;font-size:1.08rem}@media(max-width:560px){.registry-btns{flex-direction:column;align-items:stretch}.registry-btn{min-width:0}}.secret-snail{position:relative;z-index:6;align-self:flex-start;margin:-.4rem 0 .5rem .9rem;opacity:.5;transition:opacity .25s ease}.secret-snail:hover,.secret-snail:focus-within{opacity:1}.secret-snail .snail-btn{animation:none}.snail-speech{bottom:calc(100% + 10px);left:0}.snail-speech:after{left:20px;transform:none}.poem{font-size:clamp(1rem,3vw,1.15rem);font-weight:600;line-height:1.8;color:var(--cocoa)}.poem em{color:var(--sage-deep);font-style:normal;font-weight:700}.footer-note{position:relative;z-index:5;padding:1rem 1rem 1.4rem;font-size:.85rem;font-weight:600;color:#5a46328c;text-align:center}.form-grid{display:grid;gap:1rem;text-align:left}.field label{display:block;font-weight:700;color:var(--moss);margin-bottom:.35rem;font-size:.98rem}.field input[type=text],.field input[type=email],.field textarea{width:100%;font-family:Quicksand,sans-serif;font-size:1.02rem;font-weight:600;color:var(--ink);background:var(--white-soft);border:2px solid #e3d9c6;border-radius:14px;padding:.7rem .9rem;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.field input:focus,.field textarea:focus{border-color:var(--sage-deep);box-shadow:0 0 0 4px #a8c3a040}.attend-toggle{display:flex;gap:.7rem;justify-content:center}.attend-btn{flex:1;max-width:220px;font-family:Quicksand,sans-serif;font-weight:700;font-size:1.05rem;padding:.9rem .5rem;border-radius:18px;border:2.5px solid #e3d9c6;background:var(--white-soft);color:var(--cocoa-soft);cursor:pointer;transition:all .18s ease}.attend-btn:hover{transform:translateY(-2px)}.attend-btn.selected-yes{background:#ddebd6;border-color:var(--sage-deep);color:var(--moss);box-shadow:0 6px 16px #7fa37759}.attend-btn.selected-no{background:#ffe4d6;border-color:var(--blush);color:#b0623f;box-shadow:0 6px 16px #f7c8b066}.guest-row{display:flex;gap:.5rem;align-items:center}.guest-row input{flex:1}.icon-btn{border:none;background:var(--peach);color:var(--cocoa);font-size:1.1rem;font-weight:700;width:40px;height:40px;border-radius:12px;cursor:pointer;transition:transform .15s ease;flex-shrink:0}.icon-btn:hover{transform:scale(1.1)}.icon-btn.add{background:#d5e5cf;color:var(--moss)}.err-msg{color:#c0563a;font-weight:700;font-size:.95rem;margin-top:.5rem}.hotel-tier{font-family:Caprasimo,serif;color:var(--sage-deep);font-size:1.15rem;margin:1.1rem 0 .4rem;text-align:left}.hotel{text-align:left;background:var(--white-soft);border:2px solid #eee3cf;border-radius:16px;padding:.85rem 1rem;margin-bottom:.6rem}.hotel .h-name{font-weight:700;color:var(--cocoa);font-size:1.02rem}.hotel .h-name a{color:var(--moss);text-decoration:none;border-bottom:2px dotted var(--sage)}.hotel .h-meta{font-size:.9rem;font-weight:600;color:var(--cocoa-soft);margin-top:.15rem}.hotel .h-note{font-size:.88rem;color:#7d6a56;margin-top:.2rem}.info-callout{text-align:left;background:#fdf3dd;border:2px solid var(--butter);border-radius:16px;padding:.9rem 1rem;font-size:.95rem;font-weight:600;color:var(--cocoa);margin-top:.8rem}.celebrate-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#fff8ece0;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);animation:fade-in .4s ease both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.celebrate-card{text-align:center;padding:2rem 1.5rem;max-width:480px;animation:pop-bubble .55s .1s cubic-bezier(.34,1.56,.64,1) both}.celebrate-card .big{font-size:4.2rem;animation:bounce-big 1.1s .4s ease infinite alternate;display:inline-block}@keyframes bounce-big{0%{transform:translateY(0) rotate(-4deg)}to{transform:translateY(-16px) rotate(4deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important}}@media(max-width:560px){.content{padding-top:2rem}.attend-toggle{flex-direction:column;align-items:stretch}.attend-btn{max-width:none}}@media(max-width:640px){.scene-wrap svg{height:42svh}.hero .content{padding-top:1.4rem}.edge-shift-left{transform:translate(360px)}.edge-shift-right{transform:translate(-360px)}.edge-shift-snail{transform:translate(400px)}.edge-shift-mky{transform:translate(-80px)}.scene-wrap .speech{left:50%!important;right:auto!important;transform:translate(-50%)!important;bottom:64%!important}}
