:root {
  --ink:#40543f; --muted:#64745e; --green:#58724b; --deep:#35583f;
  --gold:#ae8847; --gold-light:#e2c47e; --cream:#fffdf5; --rust:#bd8056;
  --sans:"Nunito",system-ui,sans-serif; --serif:"Cormorant Garamond",Georgia,serif; --script:"Parisienne","Brush Script MT",cursive;
  --scroll:0; --forest-x:0px; --forest-y:0px; --pointer-x:0px; --pointer-y:0px; --sun-x:0px;
  color:var(--ink); font-family:var(--sans); font-size:16px; background:#fbfbef; scroll-behavior:smooth;
}
*,*::before,*::after { box-sizing:border-box; }
html,body { margin:0; min-width:320px; overflow-x:hidden; }
body { overflow-x:clip; background:linear-gradient(180deg,#fffdf5 0%,#f9f9eb 27%,#f3f7ed 55%,#fbf4e3 80%,#eef1de 100%); }
button,input,textarea { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; }
a { color:inherit; }
button:focus-visible,a:focus-visible { outline:3px solid #bd8e44; outline-offset:7px; }
[hidden] { display:none !important; }
svg { display:block; width:100%; height:100%; overflow:visible; }
p { color:var(--muted); font-size:1.08rem; line-height:1.75; margin:0; }
h1,h2,h3 { margin:0; font-family:var(--serif); font-weight:600; line-height:1; color:var(--green); }
h1 { font-size:clamp(4.5rem,7.7vw,8rem); letter-spacing:-.04em; }
h2 { font-size:clamp(3.7rem,6vw,6.4rem); letter-spacing:-.035em; }
h3 { font-size:2.8rem; }
.script { display:block; font-family:var(--script); color:var(--gold); font-size:.65em; font-weight:400; line-height:1.3; letter-spacing:0; margin-top:.02em; }
.eyebrow { color:#977940; font-size:.8rem; font-weight:800; letter-spacing:.2em; text-transform:uppercase; line-height:1.7; margin-bottom:1.3rem; }
.skip-link { position:fixed; z-index:200; top:8px; left:8px; padding:10px 20px; background:white; transform:translateY(-200%); }
.skip-link:focus { transform:none; }
.woodland-world { position:fixed; inset:0; z-index:0; overflow:hidden; pointer-events:none; }
.sky-light { position:absolute; inset:0; background:radial-gradient(ellipse at 20% 13%,#f4dca152,transparent 42%),radial-gradient(ellipse at 84% 55%,#c4d8b938,transparent 45%); opacity:calc(.5 + var(--scroll)*.4); }
.world-vignette { position:absolute; inset:0; background:radial-gradient(ellipse at center,transparent 37%,#fffef036 76%,#d6dfc526 100%); }
.sun { position:absolute; top:8vh; left:10vw; width:150px; height:150px; transform:translate3d(var(--sun-x),calc(var(--scroll)*90px),0); }
.sun-core { position:absolute; inset:15%; border-radius:50%; background:radial-gradient(circle at 35% 28%,#fffad2 4%,#f6dfa2 48%,#e7c677 85%); box-shadow:0 0 45px 19px #eed49a44,0 0 100px 40px #f5dea43d,inset -5px -8px 16px #b9883b12; animation:sunPulse 6s ease-in-out infinite; }
.sun-halo { position:absolute; inset:-25%; border:1px solid #dcb75c22; border-radius:50%; animation:haloSpin 35s linear infinite; }
.sun-halo::before,.sun-halo::after { content:""; position:absolute; left:50%; top:0; width:6px; height:6px; border-radius:50%; background:#e5c476; box-shadow:0 0 18px #edcc76; }
.sun-halo::after { top:auto; bottom:0; width:3px; height:3px; }
.sunbeams { position:absolute; inset:-40%; background:repeating-conic-gradient(from 20deg at 32% 26%,#f1daa129 0deg,transparent 7deg,transparent 24deg); opacity:.38; animation:lightShift 18s ease-in-out infinite alternate; }
.distant-trees { position:absolute; inset:0; opacity:.43; transform:translate3d(calc(var(--forest-x)*-.15),calc(var(--forest-y)*.1),0); }
.distant-trees>span { position:absolute; bottom:-18%; width:21%; filter:blur(1px); }
.edge-tree { position:absolute; width:clamp(185px,22vw,360px); height:auto; opacity:.67; filter:drop-shadow(12px 16px 16px #4f683f14); transform:translate3d(calc(var(--forest-x)*.4 + var(--pointer-x)*-.2),calc(var(--forest-y)*.25),0); }
.edge-tree-left { left:-11%; top:5%; rotate:-7deg; }
.edge-tree-right { right:-12%; bottom:-1%; rotate:8deg; opacity:.55; }
.tree-boughs { transform-origin:50% 95%; animation:treeSway 8s ease-in-out infinite alternate; }
.edge-tree-right .tree-boughs { animation-delay:-3.3s; animation-duration:9.8s; }
.edge-fern { position:absolute; width:clamp(190px,22vw,350px); bottom:-11%; opacity:.62; }
.fern-left { left:-7%; rotate:32deg; transform:translateX(calc(var(--forest-x)*.25)); }
.fern-right { right:-9%; rotate:-35deg; scale:-1 1; transform:translateX(calc(var(--forest-x)*-.3)); }
.fern-frond { transform-origin:50% 95%; animation:fernSway 5.8s ease-in-out infinite alternate; }
.floating-leaves,.fireflies { position:absolute; inset:0; }
.floating-leaves>span { position:absolute; left:var(--leaf-x); top:-8%; width:var(--leaf-size); height:var(--leaf-size); opacity:0; animation:leafFall var(--duration) linear var(--delay) infinite; }
.fireflies i { position:absolute; width:4px; height:4px; border-radius:50%; background:#dfbd6a; box-shadow:0 0 14px 4px #dfbd6a33; animation:fireflyDrift var(--duration) ease-in-out var(--delay) infinite alternate; opacity:.6; }
.progress-trail { position:fixed; z-index:50; top:0; left:0; width:100%; height:3px; background:#b2ba9320; pointer-events:none; }
.progress-trail span { display:block; height:100%; background:linear-gradient(90deg,#779965,#d1b76e); transform:scaleX(0); transform-origin:left; }
.sound-controls { position:fixed; z-index:50; right:1.3rem; bottom:1.2rem; display:flex; gap:.5rem; }
.little-control { padding:.7rem .95rem; border:1px solid #b9ad8a44; border-radius:30px; background:#fffef4ed; box-shadow:0 6px 24px #5c6b3b12; color:#897342; display:flex; align-items:center; gap:.5rem; font-size:.78rem; font-weight:800; backdrop-filter:blur(12px); }
.little-control>span:first-child { font-size:1rem; min-width:15px; }
.music-control { width:46px; height:46px; padding:0 !important; justify-content:center; border-radius:50%; }
.music-control>span:first-child { font-size:1rem; line-height:1; }
.music-control.is-playing { box-shadow:0 0 0 5px #d0ba7414,0 6px 24px #5c6b3b18; }
.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; }
main,footer { position:relative; z-index:2; }
.scene { position:relative; min-height:min(92svh,1100px); padding:clamp(80px,9vw,140px) 8%; display:grid; align-items:center; isolation:isolate; overflow:clip; }
.content { width:min(1040px,100%); margin:auto; }
.scene>*,.content>*,.split-content>*,.rsvp-layout>* { min-width:0; }
.scene-mist { position:absolute; z-index:-1; pointer-events:none; width:64vw; height:26vw; border-radius:50%; filter:blur(32px); background:radial-gradient(ellipse,#ffffffab,transparent 70%); transform:translate3d(var(--mist-x,0px),var(--mist-y,0px),0) scale(var(--mist-scale,1)); }
.mist-left { left:-25%; bottom:8%; }
.mist-right { right:-23%; top:10%; background:radial-gradient(ellipse,#e1e7c758,transparent 72%); }
.hero { min-height:clamp(900px,100svh,1150px); padding:90px 5% 145px; display:flex; flex-direction:column; justify-content:center; text-align:center; }
.hero-copy { position:relative; z-index:5; width:min(930px,100%); margin:0 auto; }
.hero h1 { text-shadow:0 2px 0 #fffef6,0 0 50px #fffdf6; }
.hero .script { margin-top:-.02em; font-size:.69em; }
.hero-names { display:inline-block; border-block:1px solid #bdac7a55; padding:1.1rem 2.1rem; margin:1.8rem auto 1rem; font:600 clamp(1.4rem,2.8vw,2.5rem)/1.2 var(--serif); letter-spacing:.04em; text-transform:uppercase; }
.hero-subtitle { max-width:440px; margin:0 auto; font-size:1rem; }
.forest-gathering { position:relative; width:min(880px,100%); height:295px; margin:2.8rem auto 0; }
.gathering-hill { position:absolute; left:1%; right:1%; bottom:19px; height:54px; border-radius:50%; background:radial-gradient(ellipse,#99b08030,transparent 73%); }
.animal { display:block; padding:0; border:0; background:none; position:relative; transition:filter .3s,scale .3s; border-radius:38%; touch-action:manipulation; }
.animal::after { content:""; position:absolute; bottom:4%; left:20%; right:20%; height:8%; border-radius:50%; opacity:0; background:#eaca7533; filter:blur(9px); transition:opacity .3s; }
.animal:hover::after,.animal:focus-visible::after { opacity:1; }
.animal:hover { filter:drop-shadow(0 3px 13px #dfbc5440); }
.character { overflow:visible; }
.character-body { transform-box:view-box; transform-origin:120px 238px; animation:characterBreathe 4s ease-in-out var(--idle-delay,0s) infinite; }
.character .head { transform-box:view-box; transform-origin:120px 151px; animation:headTilt 6.5s ease-in-out var(--idle-delay,0s) infinite; }
.character .ear { transform-box:view-box; }
.character .ear-left { transform-origin:86px 91px; animation:earTwitch 7s ease-in-out var(--idle-delay,0s) infinite; }
.character .ear-right { transform-origin:155px 88px; animation:earTwitch 7.3s ease-in-out calc(var(--idle-delay,0s) - 2s) infinite reverse; }
.character .eye { transform-box:fill-box; transform-origin:center; animation:blink 5.5s linear var(--idle-delay,0s) infinite; }
.character .tail { transform-box:view-box; }
.fawn-tail { transform-origin:167px 185px; animation:tailWag 3.8s ease-in-out infinite alternate; }
.fox-tail { transform-origin:109px 216px; animation:foxSwish 4.2s ease-in-out infinite alternate; }
.raccoon-tail { transform-origin:166px 190px; animation:tailWag 4.5s ease-in-out infinite alternate-reverse; }
.skunk-tail { transform-origin:145px 187px; animation:skunkSwish 4s ease-in-out infinite alternate; }
.waving-paw { transform-box:view-box; transform-origin:153px 169px; animation:raccoonWave 6.5s ease-in-out var(--idle-delay,0s) infinite; }
.bear-paw-left { transform-box:view-box; transform-origin:91px 164px; animation:bearClapLeft 5s ease-in-out var(--idle-delay,0s) infinite; }
.bear-paw-right { transform-box:view-box; transform-origin:151px 164px; animation:bearClapRight 5s ease-in-out var(--idle-delay,0s) infinite; }
.wing-left { transform-box:view-box; transform-origin:76px 142px; animation:wingLeft 2.1s ease-in-out infinite; }
.wing-right { transform-box:view-box; transform-origin:164px 142px; animation:wingRight 2.1s ease-in-out infinite; }
.animal.is-greeting .character-body { animation:happyHop .6s ease-in-out 2; }
.animal.is-greeting .tail { animation-duration:.35s; }
.animal.is-greeting .waving-paw { animation:waveHello .42s ease-in-out infinite alternate; }
.animal.is-greeting .wing-left,.animal.is-greeting .wing-right { animation-duration:.35s; }
.animal.is-greeting .bear-paw-left,.animal.is-greeting .bear-paw-right { animation-duration:.75s; }
.animal.is-greeting .ear { animation:excitedEar .45s ease-in-out infinite alternate; }
.forest-gathering .animal { position:absolute; width:166px; bottom:21px; }
.forest-gathering .friend-fawn { left:25%; width:193px; bottom:29px; z-index:2; }
.forest-gathering .friend-fox { left:44%; width:180px; bottom:10px; z-index:4; }
.forest-gathering .friend-raccoon { left:9%; bottom:6px; z-index:3; }
.forest-gathering .friend-bear { right:4%; bottom:2px; width:190px; z-index:3; }
.forest-gathering .friend-skunk { left:-4%; bottom:5px; width:152px; z-index:4; }
.forest-gathering .friend-owl { right:15%; bottom:118px; width:119px; z-index:1; animation:owlHover 5s ease-in-out infinite; }
.animal-hint { position:absolute; top:0; right:0; color:#8f9474; font-size:.78rem; rotate:8deg; }
.mushroom-cluster { position:absolute; width:91px; left:-4%; bottom:9px; z-index:5; pointer-events:none; }
.gathering-fern { position:absolute; width:133px; right:-4%; bottom:0; z-index:5; pointer-events:none; rotate:25deg; }
.scroll-cue { position:absolute; bottom:42px; left:50%; transform:translateX(-50%); display:grid; justify-items:center; gap:16px; width:max-content; text-decoration:none; font-size:.73rem; font-weight:800; text-transform:uppercase; letter-spacing:.16em; color:#9a854f; }
.scroll-cue i { display:block; width:12px; height:12px; border-right:1px solid currentColor; border-bottom:1px solid currentColor; rotate:45deg; animation:scrollFloat 1.9s ease-in-out infinite; }
.flow-bridge { position:relative; height:90px; margin:-20px 0; z-index:3; pointer-events:none; overflow:hidden; }
.flow-line { position:absolute; width:min(750px,78vw); height:32px; left:50%; top:35px; translate:-50% 0; border-top:1px solid #cbb87957; border-radius:50%; rotate:-3deg; background:radial-gradient(ellipse,#ecdfab15,transparent); }
.flow-bridge>span { position:absolute; left:48%; top:12px; width:34px; height:40px; rotate:-25deg; animation:bridgeLeaf 5s ease-in-out infinite; }
.traveling-light { position:absolute; top:32px; left:13%; width:7px; height:7px; background:#e3c572; border-radius:50%; box-shadow:0 0 14px 5px #e3c57244; animation:trailTravel 7s ease-in-out infinite; }
.flow-bridge.alt .flow-line { rotate:3deg; }
.flow-bridge.alt>span { animation-delay:-2s; left:56%; }
.flow-bridge.alt .traveling-light { animation-direction:reverse; }
.honoring-scene { padding-block:110px 80px; text-align:center; }
.honoring-content { width:min(760px,100%); margin:auto; }
.honoring-scene h2 { font-size:clamp(6.7rem,12vw,11.5rem); line-height:1; }
.honoring-scene h2 .script { font-size:.38em; line-height:1.25; margin-bottom:.05em; }
.baby-surname { font:600 clamp(1.5rem,3.4vw,2.7rem)/1.2 var(--serif); letter-spacing:.14em; text-transform:uppercase; margin:.7rem 0 1.3rem; color:#876e47; }
.little-branch { width:230px; height:46px; margin:1.2rem auto; }
.scene-copy { max-width:510px; margin:1rem auto 0; }
.parents-label { font-size:.75rem; font-weight:800; text-transform:uppercase; letter-spacing:.16em; margin-top:2.2rem; color:#9b8d67; }
.parents-script { font:400 clamp(1.8rem,3.6vw,2.9rem)/1.4 var(--script); color:#77835c; margin-top:.3rem; }
.honoring-friends { display:flex; width:260px; margin:1rem auto -20px; justify-content:center; gap:0; }
.honoring-friends .animal { width:143px; margin-inline:-3px; }
.scene-heading { text-align:center; }
.scene-heading>p:last-child { margin:1.5rem auto 0; }
.details-grid { display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(3rem,8vw,8rem); align-items:center; margin:5rem auto 0; max-width:850px; }
[data-tilt] { transform:perspective(1000px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)); transition:transform .3s ease-out; }
.calendar-wrap { position:relative; width:100%; max-width:315px; margin:auto; }
.calendar-card { position:relative; padding:1.5rem 1.5rem 1.4rem; text-align:center; border:1px solid #c8bc934d; border-radius:12px 12px 19px 19px; background:linear-gradient(140deg,#fffff7,#f7f2df); box-shadow:0 25px 50px #65744721,0 5px 0 #e7dfc1,0 9px 0 #f6f0de,inset 0 2px 0 white; }
.calendar-month { display:block; margin:-1.5rem -1.5rem 0; padding:1.35rem 1rem 1rem; border-bottom:1px solid #c8bc934d; background:#a5b3892d; text-transform:uppercase; letter-spacing:.2em; font-size:.85rem; font-weight:800; border-radius:12px 12px 0 0; }
.calendar-number { display:block; font:500 8.3rem/1.2 var(--serif); color:#667c4e; }
.calendar-weekday { display:block; color:#8d855f; font-size:.85rem; letter-spacing:.08em; }
.calendar-time { margin:1.25rem auto 0; padding-top:1.2rem; border-top:1px solid #c8bc934d; display:flex; justify-content:center; gap:.7rem; align-items:center; color:#6d7951; font-weight:700; }
.calendar-ring { position:absolute; width:13px; height:36px; top:-15px; z-index:3; border-radius:9px; background:linear-gradient(90deg,#b2935b,#f2e2b2 40%,#b19560); box-shadow:2px 2px 4px #4d593133; }
.ring-one { left:24%; }.ring-two { right:24%; }
.calendar-owl { position:absolute; width:135px; right:-68px; top:-127px; z-index:4; }
.little-clock { display:block; position:relative; width:26px; height:26px; border:1.5px solid #a99056; border-radius:50%; }
.little-clock i,.little-clock b { position:absolute; display:block; background:#a99056; border-radius:3px; bottom:50%; left:calc(50% - 1px); width:2px; transform-origin:50% 100%; }
.little-clock i { height:7px; rotate:90deg; }.little-clock b { height:9px; animation:clockSpin 12s linear infinite; }
.location-wrap { text-align:center; }
.woodland-map { position:relative; display:block; height:228px; border-radius:58% 42% 49% 51% / 48% 47% 53% 52%; background:radial-gradient(ellipse at 30% 20%,#fbfbec,#dce7ca); margin-bottom:2rem; box-shadow:inset 0 0 30px #fffdf380,0 19px 38px #7f936f14; }
.map-forest { position:absolute; inset:0; overflow:hidden; border-radius:inherit; }
.map-tree { position:absolute; width:65px; filter:drop-shadow(3px 5px 5px #6e7d521b); }
.map-path { position:absolute; inset:0; }
.map-road-markings { animation:mapDash 10s linear infinite; }
.map-car { filter:drop-shadow(0 3px 2px #56613b55); }
.map-pin { position:absolute; width:35px; height:44px; top:35%; left:48%; border-radius:55% 55% 55% 0; rotate:-45deg; background:linear-gradient(120deg,#f3dfa0,#b28e49); box-shadow:2px 6px 12px #93805138; animation:pinBounce 3.7s ease-in-out infinite; }
.map-pin i { position:absolute; top:8px; left:8px; width:19px; height:19px; border-radius:50%; background:#fffcef; box-shadow:inset 1px 2px 4px #b0a46f55; }
.map-label { position:absolute; bottom:17%; left:50%; translate:-50% 0; white-space:nowrap; font-size:.76rem; font-weight:800; color:#768457; background:#fffdf2d6; padding:5px 13px; border-radius:15px; }
.location-wrap .eyebrow { margin-bottom:.7rem; }
address { font:500 clamp(1.25rem,2vw,1.5rem)/1.55 var(--serif); color:#657451; }
.text-link { border:0; border-bottom:1px solid #b5a47270; background:none; display:inline-flex; gap:.8rem; color:#907d45; text-decoration:none; padding:4px 0; font-size:.88rem; font-weight:800; margin-top:1.1rem; }
.split-content { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:clamp(2rem,7vw,7rem); }
.section-copy>p:not(.eyebrow) { margin-top:1.6rem; }
.section-copy strong { color:#8f7542; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:1.2rem; margin-top:1.8rem; text-decoration:none; font-size:.88rem; font-weight:800; border:1px solid #87975d22; border-radius:30px; padding:1rem 1.6rem; color:#fffdf4; background:linear-gradient(130deg,#8a9c6d,#627f56); box-shadow:0 11px 25px #5c75412a,inset 0 1px 0 #d3dfb366; transition:transform .3s,box-shadow .3s; min-height:52px; }
.button:hover { transform:translateY(-3px); box-shadow:0 16px 28px #5c754133; }
.button:disabled { opacity:.65; cursor:wait; }
.registry-art,.raffle-art { position:relative; min-height:450px; }
.registry-art::before,.raffle-art::before { content:""; position:absolute; inset:4% -7% -3%; background:radial-gradient(ellipse,#e7deb15e,transparent 66%); z-index:-1; }
.gift-float { position:absolute; left:12%; top:6%; width:60%; height:280px; animation:giftFloat 6s ease-in-out infinite; }
.present { display:block; position:relative; width:230px; height:230px; padding:0; border:0; background:none; color:inherit; }
.gift-box { position:absolute; top:36%; bottom:0; left:10%; width:80%; border-radius:3px 3px 14px 14px; background:linear-gradient(120deg,#d1d8b4,#9cba8b 60%,#81a477); box-shadow:inset 5px 0 10px #fff9d133,inset -8px -7px 16px #4567491a,0 22px 27px #5b6c302b; }
.gift-lid { position:absolute; top:29%; left:6%; width:88%; height:17%; z-index:3; border-radius:6px; background:linear-gradient(120deg,#e4e6c6,#b0c698 75%); box-shadow:0 6px 8px #526a342b,inset 0 2px 0 #fffbe5b0; transition:transform .65s cubic-bezier(.18,.85,.27,1); }
.gift-ribbon { position:absolute; z-index:4; top:29%; bottom:0; left:43%; width:14%; background:linear-gradient(90deg,#d3b665,#f0db9d,#cfb46f); opacity:.94; border-radius:0 0 3px 3px; }
.gift-bow { position:absolute; z-index:5; top:4%; left:25%; width:50%; height:29%; transition:transform .65s cubic-bezier(.18,.85,.27,1); }
.gift-bow i,.gift-bow b { position:absolute; width:53%; height:86%; top:0; border:9px solid #d8bd79; border-radius:65% 60% 0 70%; rotate:20deg; box-shadow:inset 3px 4px 5px #fff6d05e,2px 4px 4px #94814720; }
.gift-bow b { right:0; rotate:72deg; }.gift-bow i { left:0; }
.gift-tag { position:absolute; z-index:6; right:9%; top:45%; width:53px; height:70px; padding:17px 5px 0; text-align:center; border-radius:3px 3px 10px 10px; background:#fbf3d9; box-shadow:2px 5px 8px #75875420; font:400 1.2rem/1.1 var(--script); color:#a2864c; rotate:-12deg; transform-origin:top; animation:tagSwing 4.4s ease-in-out infinite alternate; }
.gift-tag::before { content:""; position:absolute; top:-19px; left:23px; width:1px; height:25px; background:#a58f5a; }
.registry-present:hover .gift-lid,.registry-present:focus-visible .gift-lid { transform:translateY(-12px) rotate(-4deg); }
.registry-present:hover .gift-bow,.registry-present:focus-visible .gift-bow { transform:translateY(-12px) rotate(-4deg); }
.registry-fox { position:absolute; bottom:0; right:-1%; width:220px; }
.art-spark { position:absolute; color:#c0a260; font-size:1.6rem; animation:sparkle 3s ease-in-out infinite; pointer-events:none; }
.spark-one { top:12%; right:6%; }.spark-two { top:59%; left:2%; animation-delay:-1s; }.spark-three { top:43%; right:2%; font-size:1rem; animation-delay:-2s; }
.raffle-equation { display:flex; gap:.9rem; align-items:center; padding:1.1rem 0; margin-top:1.2rem; border-block:1px solid #b7a1643d; width:max-content; max-width:100%; font-size:.87rem; font-weight:800; color:#8c7d4e; }
.raffle-equation i { font-family:var(--serif); font-size:1.8rem; font-style:normal; color:#bba05e; }
.raffle-whisper { font:400 1.6rem/1.3 var(--script); color:#aa9259; }
.raffle-orbit { position:absolute; width:300px; height:300px; top:25px; left:50%; margin-left:-150px; border:1px dashed #b8aa743e; border-radius:50%; animation:haloSpin 30s linear infinite; }
.raffle-orbit::after { content:"✦"; position:absolute; top:15px; left:52px; color:#caae62; font-size:1.6rem; }
.mystery-present { position:absolute; width:200px; height:200px; top:120px; left:50%; translate:-50% 0; z-index:4; }
.mystery-present .gift-box { background:linear-gradient(120deg,#e3c99e,#d2ad7e 60%,#c29d6c); }
.mystery-present .gift-lid { background:linear-gradient(120deg,#efdcb6,#d5b387); }
.mystery-present .gift-ribbon { background:linear-gradient(90deg,#739469,#b4c59a,#6e8e60); }
.mystery-present .gift-bow i,.mystery-present .gift-bow b { border-color:#95ad7b; }
.mystery-present.is-open .gift-lid { transform:translateY(-66px) rotate(-13deg); }
.mystery-present.is-open .gift-bow { transform:translate(-12px,-65px) rotate(-13deg); }
.mystery-present.is-open .gift-tag { rotate:12deg; }
.gift-peek { position:absolute; top:162px; left:50%; width:175px; translate:-50% 0; opacity:0; visibility:hidden; scale:.8; transition:opacity .5s,translate .5s,scale .5s,visibility .5s; font:600 1.2rem/1.2 var(--serif); text-align:center; color:#846b3c; z-index:5; pointer-events:none; padding:10px; border-radius:13px; background:#fffbed; box-shadow:0 0 28px #efd28a70; }
.raffle-art:has(.is-open) .gift-peek { opacity:1; visibility:visible; translate:-50% -15px; scale:1; }
.raffle-ticket { position:absolute; top:23px; left:3%; width:152px; height:77px; border-block:1px dashed #bba776; border-radius:8px; padding:10px 12px; text-align:center; background:linear-gradient(120deg,#fff9e4,#f1e4b9); color:#aa8745; box-shadow:0 10px 25px #a8935c18; rotate:-12deg; animation:ticketFloat 5s ease-in-out infinite; z-index:2; }
.raffle-ticket small { display:block; font-size:.7rem; }.raffle-ticket strong { display:block; font-size:.85rem; letter-spacing:.1em; margin-top:3px; }.raffle-ticket span { position:absolute; right:6px; top:30px; font-size:.8rem; }
.raffle-raccoon { position:absolute; width:180px; bottom:2px; left:-14px; z-index:5; }
.raffle-skunk { position:absolute; width:161px; bottom:4px; right:-18px; z-index:3; }
.gift-hint { position:absolute; bottom:-22px; left:50%; translate:-50% 0; width:max-content; font-size:.8rem; color:#95865b; }
.rsvp-scene { padding-top:140px; }
.rsvp-layout { display:grid; grid-template-columns:1fr 1fr; gap:clamp(3rem,8vw,7rem); align-items:center; }
.rsvp-date { font-size:.91rem; color:#91916e; }
.rsvp-art { position:relative; width:320px; height:265px; margin-top:1rem; }
.rsvp-art .animal { position:absolute; width:220px; bottom:0; left:-8px; }
.lantern { position:absolute; width:82px; height:155px; right:20px; bottom:17px; padding:0; border:0; background:none; transform-origin:50% 0; animation:lanternSway 5s ease-in-out infinite; }
.lantern-handle { position:absolute; left:27%; top:0; width:46%; height:31%; border:4px solid #8c8256; border-radius:60% 60% 0 0; }
.lantern-top { position:absolute; z-index:3; top:28%; left:9%; width:82%; height:15%; border-radius:40% 40% 8% 8%; background:linear-gradient(100deg,#a69865,#716e45); box-shadow:inset 0 3px 0 #c5b880; }
.lantern-glass { position:absolute; top:38%; left:17%; width:66%; height:49%; border-radius:5px 5px 12px 12px; border-inline:5px solid #8d8154; background:radial-gradient(ellipse at 50% 73%,#fff0a7,#edcd7680 50%,#e4d9b349); box-shadow:0 0 34px 19px #edca782e,inset 0 0 8px #fffbdd; transition:background .5s,box-shadow .5s; }
.flame { position:absolute; left:40%; bottom:11%; width:25%; height:37%; border-radius:60% 10% 55% 45%; rotate:-5deg; background:linear-gradient(0deg,#fffbd0,#f6c361); box-shadow:0 0 8px 4px #f7d775; animation:flameFlicker .9s ease-in-out infinite alternate; transition:opacity .3s; }
.lantern-base { position:absolute; bottom:3%; left:7%; width:86%; height:15%; border-radius:6px 6px 35% 35%; background:linear-gradient(100deg,#ae9d63,#747146); box-shadow:0 5px 10px #737c4433; }
.lantern.is-off .flame { opacity:0; }.lantern.is-off .lantern-glass { background:#dad7b656; box-shadow:inset 0 0 8px #e1e2cf; }
.lantern-hint { position:absolute; left:40%; bottom:-20px; font:400 1.2rem/1.2 var(--script); color:#a39767; white-space:nowrap; }
.form-card { border:1px solid #c4bd963d; border-radius:22px; padding:clamp(24px,3vw,40px); background:linear-gradient(135deg,#fffdf6eb,#fbf9eeda); box-shadow:0 23px 64px #6a7e4717,inset 0 1px 0 white; backdrop-filter:blur(14px); }
fieldset { border:0; padding:0; margin:0 0 1.9rem; }
legend,.field-title { font-size:.98rem; font-weight:800; color:#66754f; }
.attendance-options { display:grid; grid-template-columns:1fr 1fr; gap:.6rem; margin-top:1rem; }
.attendance-options label { position:relative; cursor:pointer; }
.attendance-options input { position:absolute; width:1px; height:1px; opacity:0; }
.attendance-options span { display:block; padding:.8rem .5rem; text-align:center; font-size:.88rem; color:#89916e; border:1px solid #c9ceaf; border-radius:9px; transition:background .2s,color .2s; }
.attendance-options input:checked+span { color:#fffef4; background:#82976a; border-color:#82976a; }
.attendance-options input:focus-visible+span { outline:3px solid #bca166; outline-offset:3px; }
.guest-heading { display:flex; justify-content:space-between; align-items:center; margin-bottom:.9rem; gap:10px; }
#guest-count { color:#969b7c; font-size:.76rem; }
.guest-row { margin-top:.75rem; animation:guestIn .3s ease-out; }
.guest-row>label { font-size:.82rem; font-weight:700; color:#8a9175; display:block; margin-bottom:.35rem; }
.guest-input { display:flex; gap:.5rem; }
input:not([type=radio]),textarea { width:100%; min-width:0; padding:.85rem 1rem; border:1px solid #c8ccaf; border-radius:8px; background:#fffef8e0; color:#506443; outline:none; transition:border-color .2s,box-shadow .2s; font-size:1rem; }
input::placeholder,textarea::placeholder { color:#a4a58e; }
input:focus,textarea:focus { border-color:#95a47a; box-shadow:0 0 0 3px #a5b78c1f; }
input[aria-invalid=true],textarea[aria-invalid=true] { border-color:#c48467; }
.remove-guest { flex:0 0 42px; border:1px solid #c8ccaf; border-radius:8px; background:#f7f5e7; color:#9a8b69; font-size:1.4rem; }
.add-guest { display:flex; align-items:center; gap:.55rem; border:0; background:none; color:#819066; font-size:.85rem; font-weight:800; padding:.7rem 0; margin:.35rem 0 1.2rem; }
.add-guest>span { font-size:1.3rem; }.add-guest:disabled { opacity:.5; cursor:default; }
.field { display:block; margin-top:1rem; color:#73815b; font-weight:800; font-size:.85rem; }
.field input,.field textarea { display:block; margin-top:.4rem; font-weight:400; }
.optional { font-size:.74rem; font-weight:500; margin-left:5px; color:#a4a58b; }
textarea { resize:vertical; }
.submit-button { width:100%; margin-top:1.5rem; }
.form-error { color:#a85e42; font-size:.88rem; margin-top:1rem; }
.success-card { text-align:center; padding:3rem 0; }
.success-heart { display:block; color:#b9a263; font-size:4rem; }.success-card p { margin-top:1.5rem; }
footer { text-align:center; padding:40px 20px 95px; }
footer p { font:400 1.8rem/1.3 var(--script); color:#95936b; }
footer strong { display:block; margin:.5rem 0; font:500 clamp(1.4rem,3vw,2.3rem)/1.2 var(--serif); color:#78825c; }
footer>span { display:block; font-size:.75rem; color:#a0a082; margin-top:1rem; letter-spacing:.1em; text-transform:uppercase; }
.friend-bubble { position:fixed; z-index:100; max-width:min(260px,calc(100vw - 40px)); padding:14px 19px; border:1px solid #d1be8245; border-radius:18px; background:#fffdf1f5; box-shadow:0 12px 32px #6f794c1f; color:#7d7952; font-size:.88rem; font-weight:700; text-align:center; opacity:0; translate:-50% -90%; scale:.9; transition:opacity .25s,scale .25s,translate .25s; pointer-events:none; }
.friend-bubble.visible { opacity:1; translate:-50% -100%; scale:1; }
.sparkle-bursts { position:fixed; inset:0; overflow:hidden; z-index:110; pointer-events:none; }
.burst-spark { position:absolute; font-size:var(--size); color:var(--color); animation:burstFly var(--life,1.1s) ease-out forwards; }
.celebrating-rsvp { overflow:hidden; }
.celebration-dialog { position:fixed; inset:0; width:100%; max-width:none; height:100%; max-height:none; margin:0; padding:24px 16px; border:0; background:transparent; overflow-y:auto; overscroll-behavior:contain; color:var(--ink); }
.celebration-dialog::backdrop { background:#40513f55; backdrop-filter:blur(8px); }
.celebration-dialog[open] { display:flex; align-items:flex-start; justify-content:center; }
.celebration-card { position:relative; z-index:1; flex:none; width:min(510px,100%); margin:auto; padding:28px 32px 32px; border:1px solid #d2c48f77; border-radius:28px; background:linear-gradient(145deg,#fffdf1,#f0f3df); text-align:center; box-shadow:0 40px 100px #293b3940; }
.celebration-dialog[open] .celebration-card { animation:dialogIn .55s cubic-bezier(.2,.8,.3,1.15) both; }
.celebration-dialog h2 { font-size:clamp(3.5rem,11vw,4.5rem); }
.celebration-cheer { margin:.65rem 0 1rem; font-size:1.2rem; font-weight:800; color:var(--deep); }
#celebration-message { font-size:1rem; line-height:1.6; }
.celebration-love { margin:1rem 0 1.5rem; font-family:var(--serif); font-size:1.55rem; line-height:1.2; color:#877343; }
.dialog-done { min-height:48px; }
.dialog-close { position:absolute; top:8px; right:8px; width:44px; height:44px; border:0; background:none; font-size:2rem; color:#777453; }
.celebration-friends { display:flex; justify-content:center; height:145px; margin-top:-6px; }
.celebration-friends>span { width:130px; margin-inline:-10px; transform-origin:center bottom; }
.celebration-dialog[open] .celebration-friends>span { animation:happyHop .7s ease-in-out .2s 2; }
.celebration-dialog[open] .celebration-friends>span+span { animation-delay:.38s; }
.celebration-dialog .eyebrow { font-size:.875rem; margin:8px 0 .5rem; letter-spacing:.15em; }
.rsvp-confetti { position:fixed; inset:0; z-index:2; overflow:hidden; pointer-events:none; }
.confetti-piece { position:absolute; width:var(--size); height:calc(var(--size)*1.6); background:var(--color); border-radius:2px; opacity:0; animation:rsvpConfetti var(--life) cubic-bezier(.2,.65,.4,1) var(--delay) both; will-change:transform,opacity; }
.confetti-piece.is-round { height:var(--size); border-radius:50%; }
.confetti-piece.is-heart { width:auto; height:auto; background:none; color:var(--color); font-size:calc(var(--size)*1.7); line-height:1; }
body.motion-managed .scene:not(.is-near) *,body.motion-managed .flow-bridge:not(.is-near) * { animation-play-state:paused; }

@keyframes sunPulse { 50% { scale:1.05; opacity:.83; } }
@keyframes haloSpin { to { rotate:360deg; } }
@keyframes lightShift { from { rotate:-3deg; } to { rotate:5deg; } }
@keyframes treeSway { from { transform:rotate(-1.6deg) skewX(-.4deg); } to { transform:rotate(1.5deg) skewX(.4deg); } }
@keyframes fernSway { from { transform:rotate(-3deg) scaleY(.99); } to { transform:rotate(4deg) scaleY(1.02); } }
@keyframes leafFall { 0% { translate:0 -4vh; rotate:0deg; opacity:0; } 7% { opacity:.42; } 50% { translate:calc(var(--sweep)*-.6) 54vh; rotate:120deg; } 94% { opacity:.35; } 100% { translate:var(--sweep) 114vh; rotate:240deg; opacity:0; } }
@keyframes fireflyDrift { 0% { transform:translate(0,0); opacity:.15; } 50% { opacity:.8; } 100% { transform:translate(30px,-25px); opacity:.25; } }
@keyframes characterBreathe { 0%,100% { transform:scale(1,1); } 50% { transform:scale(1.01,1.017) translateY(-1px); } }
@keyframes headTilt { 0%,60%,100% { transform:rotate(0deg); } 75%,85% { transform:rotate(3deg); } }
@keyframes earTwitch { 0%,65%,88%,100% { transform:rotate(0deg); } 71%,81% { transform:rotate(-10deg); } 76% { transform:rotate(5deg); } }
@keyframes blink { 0%,90%,96%,100% { transform:scaleY(1); } 93%,94% { transform:scaleY(.08); } }
@keyframes tailWag { from { transform:rotate(-8deg); } to { transform:rotate(10deg); } }
@keyframes foxSwish { from { transform:rotate(-5deg); } to { transform:rotate(12deg); } }
@keyframes skunkSwish { from { transform:rotate(-10deg); } to { transform:rotate(8deg); } }
@keyframes raccoonWave { 0%,50%,90%,100% { transform:rotate(0deg); } 62%,74% { transform:rotate(-115deg); } 68%,80% { transform:rotate(-85deg); } }
@keyframes bearClapLeft { 0%,55%,100% { transform:rotate(0deg); } 65%,80% { transform:rotate(-45deg); } 73%,88% { transform:rotate(-13deg); } }
@keyframes bearClapRight { 0%,55%,100% { transform:rotate(0deg); } 65%,80% { transform:rotate(45deg); } 73%,88% { transform:rotate(13deg); } }
@keyframes wingLeft { 0%,100% { transform:rotate(0deg); } 50% { transform:rotate(52deg); } }
@keyframes wingRight { 0%,100% { transform:rotate(0deg); } 50% { transform:rotate(-52deg); } }
@keyframes happyHop { 0%,100% { transform:translateY(0) scale(1); } 30% { transform:translateY(-15px) scale(1.03); } 65% { transform:translateY(0) scale(1.03,.97); } }
@keyframes waveHello { from { transform:rotate(-84deg); } to { transform:rotate(-125deg); } }
@keyframes excitedEar { from { transform:rotate(-8deg); } to { transform:rotate(10deg); } }
@keyframes owlHover { 50% { translate:0 -9px; } }
@keyframes scrollFloat { 50% { translate:0 7px; opacity:.45; } }
@keyframes bridgeLeaf { 50% { translate:12px -5px; rotate:4deg; } }
@keyframes trailTravel { 0% { left:12%; opacity:0; } 18%,75% { opacity:.8; } 100% { left:86%; opacity:0; } }
@keyframes clockSpin { to { rotate:360deg; } }
@keyframes mapDash { to { stroke-dashoffset:-140; } }
@keyframes pinBounce { 50% { translate:0 -8px; } }
@keyframes giftFloat { 50% { translate:0 -14px; rotate:-3deg; } }
@keyframes tagSwing { from { transform:rotate(-4deg); } to { transform:rotate(9deg); } }
@keyframes sparkle { 0%,100% { opacity:.25; scale:.75; } 50% { opacity:1; scale:1.1; } }
@keyframes ticketFloat { 50% { translate:10px -8px; rotate:-5deg; } }
@keyframes lanternSway { 0%,100% { rotate:-2deg; } 50% { rotate:3deg; } }
@keyframes flameFlicker { from { scale:.9 1; rotate:-6deg; } to { scale:1.1 1.15; rotate:5deg; } }
@keyframes guestIn { from { opacity:0; translate:0 -7px; } to { opacity:1; translate:0 0; } }
@keyframes burstFly { 0% { opacity:0; transform:translate(0,0) scale(.3); } 15% { opacity:1; } 100% { opacity:0; transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(.3); } }
@keyframes dialogIn { from { opacity:0; transform:translateY(30px) scale(.92); } to { opacity:1; transform:translateY(0) scale(1); } }
@keyframes rsvpConfetti {
  0% { opacity:0; transform:translate3d(0,0,0) rotate(0deg); }
  7% { opacity:1; }
  30% { opacity:1; transform:translate3d(calc(var(--dx)*.45),var(--rise),0) rotate(calc(var(--spin)*.3)); }
  75% { opacity:1; }
  100% { opacity:0; transform:translate3d(var(--dx),var(--fall),0) rotate(var(--spin)); }
}

@media(min-width:1500px) {
  .edge-tree-left { left:-7%; }.edge-tree-right { right:-7%; }.fern-left { left:-3%; }.fern-right { right:-4%; }
}
@media(max-width:900px) {
  .scene { padding-inline:7%; }
  .split-content { gap:2.5rem; }
  .rsvp-layout { gap:3rem; }
  .forest-gathering { width:750px; max-width:100%; }
  .forest-gathering .animal { width:145px; }
  .forest-gathering .friend-fawn { width:165px; left:25%; }
  .forest-gathering .friend-fox { width:162px; left:44%; }
  .forest-gathering .friend-skunk { width:135px; left:-5%; }
  .forest-gathering .friend-bear { width:163px; right:1%; }
  .forest-gathering .friend-owl { width:103px; right:13%; bottom:128px; }
  .calendar-owl { right:-30px; }
  .gift-float { left:0; }.registry-fox { width:185px; }
  .raffle-raccoon { width:155px; left:-20px; }.raffle-skunk { width:140px; right:-20px; }
  .rsvp-art { width:275px; }.rsvp-art .animal { width:205px; left:-22px; }
}
@media(max-width:680px) {
  h1 { font-size:clamp(3.7rem,13.2vw,5.6rem); line-height:1.01; }
  h2 { font-size:clamp(3.4rem,12vw,4.6rem); }
  p { font-size:1rem; line-height:1.75; }
  .eyebrow { font-size:.74rem; letter-spacing:.15em; margin-bottom:1rem; }
  .scene { min-height:auto; padding:90px 7%; }
  .sun { top:8vh; left:-9vw; width:118px; opacity:.78; }
  .edge-tree { width:175px; opacity:.35; }.edge-tree-left { left:-128px; top:19%; }.edge-tree-right { right:-127px; bottom:2%; }
  .edge-fern { width:190px; bottom:-48px; opacity:.5; }.fern-left { left:-127px; }.fern-right { right:-135px; }
  .distant-trees { opacity:.29; }.distant-trees>span { width:40%; bottom:-10%; }
  .hero { min-height:clamp(860px,100svh,1120px); padding:100px 7% 150px; justify-content:center; }
  .hero-copy { max-width:420px; }
  .hero .script { font-size:.72em; }
  .hero-names { font-size:clamp(1.2rem,5.9vw,1.7rem); padding:1rem .3rem; margin-top:1.6rem; width:100%; }
  .hero-subtitle { max-width:280px; font-size:.9rem; line-height:1.7; }
  .forest-gathering { margin-top:2.7rem; height:240px; width:380px; max-width:100%; }
  .forest-gathering .animal { width:100px; }
  .forest-gathering .friend-skunk { left:-4%; bottom:0; width:86px; }
  .forest-gathering .friend-raccoon { left:18%; bottom:-1px; width:95px; }
  .forest-gathering .friend-fox { left:42%; bottom:-1px; width:101px; }
  .forest-gathering .friend-bear { right:-5%; bottom:-1px; width:107px; }
  .forest-gathering .friend-fawn { left:17%; bottom:88px; width:117px; }
  .forest-gathering .friend-owl { right:17%; bottom:124px; width:82px; }
  .animal-hint { top:4px; right:2px; font-size:.72rem; max-width:80px; line-height:1.4; rotate:9deg; }
  .gathering-fern { width:80px; right:-8%; bottom:-9px; }.mushroom-cluster { width:57px; left:-8%; bottom:-3px; }
  .gathering-hill { bottom:5px; }
  .scroll-cue { bottom:40px; font-size:.67rem; gap:12px; }
  .flow-bridge { height:74px; margin:-25px 0; }.flow-bridge>span { width:29px; }
  .scene-mist { width:110vw; height:60vw; filter:blur(23px); }.mist-left { left:-40%; }.mist-right { right:-45%; }
  .honoring-scene { padding-top:100px; }.honoring-scene h2 { font-size:clamp(4.5rem,21vw,8rem); }
  .baby-surname { font-size:1.4rem; letter-spacing:.12em; }
  .scene-copy { font-size:.96rem; }.parents-script { font-size:1.8rem; }.parents-label { font-size:.7rem; }
  .honoring-friends { width:220px; margin-bottom:-20px; }.honoring-friends .animal { width:123px; }
  .little-branch { width:192px; }
  .details-grid { grid-template-columns:1fr; gap:3.5rem; margin-top:4rem; }
  .calendar-wrap { width:235px; }.calendar-number { font-size:7rem; }.calendar-owl { width:100px; right:-36px; top:-85px; }
  .calendar-card { padding-top:1.3rem; }.calendar-month { margin-top:-1.3rem; padding-top:1.2rem; font-size:.8rem; }
  .woodland-map { max-width:340px; margin:0 auto 1.7rem; height:220px; }
  .split-content,.rsvp-layout { grid-template-columns:1fr; gap:2rem; }
  .section-copy { text-align:center; }
  .section-copy>p:not(.eyebrow) { margin-top:1.4rem; }
  .registry-scene { padding-top:65px; }.registry-art { min-height:345px; width:300px; max-width:100%; margin:auto; }
  .gift-float { left:4%; top:0; width:190px; height:220px; }.registry-present { width:190px; height:190px; }
  .registry-fox { width:167px; right:0; bottom:0; }
  .spark-one { right:3%; top:10%; }.spark-two { left:2%; top:70%; }.spark-three { right:6%; top:45%; }
  .registry-scene .section-copy { max-width:430px; margin:auto; }
  .button { padding:.95rem 1.35rem; font-size:.85rem; }
  .raffle-layout { gap:3rem; }.raffle-equation { margin:1.5rem auto 0; gap:.55rem; font-size:.79rem; }
  .raffle-whisper { font-size:1.4rem; }
  .raffle-art { width:320px; max-width:100%; min-height:400px; margin:auto; }
  .mystery-present { top:110px; width:175px; height:175px; }
  .raffle-raccoon { width:145px; left:-12px; bottom:9px; }.raffle-skunk { width:130px; right:-4px; bottom:13px; }
  .raffle-ticket { width:135px; top:9px; left:0; }.raffle-orbit { width:250px; height:250px; margin-left:-125px; }
  .gift-peek { top:138px; font-size:1.1rem; width:154px; }
  .rsvp-scene { padding-top:105px; padding-bottom:65px; }.rsvp-art { margin:.6rem auto 0; height:235px; width:280px; }
  .rsvp-art .animal { width:190px; left:0; }.lantern { width:70px; height:134px; right:22px; bottom:14px; }
  .lantern-hint { font-size:1.05rem; left:34%; }
  .form-card { margin-top:2rem; padding:25px 20px; }
  .sound-controls { right:.7rem; bottom:.7rem; }.little-control { padding:.6rem .8rem; font-size:.72rem; }
  footer { padding-bottom:90px; }
  .celebration-card { padding:24px 20px; }
  .celebration-friends { height:115px; }
  .celebration-friends>span { width:110px; }
  .celebration-cheer { font-size:1.1rem; }
}
