/* Design tokens */
:root{--surface:#f6e3b4;--surface-raised:#fdf1d3;--surface-sunken:#ecd29a;--ink:#3a1f17;--ink-muted:#6b4227;--accent-text:#9a3d1a;--grass-text:#2f6b2b;--wood:#a0522a;--wood-dark:#5e2f18;--wood-light:#e09a52;--on-wood:#fff3d6;--on-fill:#2b1510;--grass:#7cc44f;--gold:#f0b54a;--sky:#7cc0ea;--flower:#f08cc0;--berry:#e5645a;--pixel-shadow:#3a1f1759;--focus:#2f6b2b;
--font-display:"Pixelify Sans","Courier New",monospace;--font-body:"Nunito",ui-rounded,system-ui,sans-serif;--font-pixel:"VT323",ui-monospace,monospace;
--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-20:80px;--radius-md:8px;--radius-pill:999px;--border-wood:4px;--border-pixel:3px}
.dlg{min-height:192px;align-items:stretch}.dlg-text{min-height:0!important;overflow:hidden}.dlg-text .pp-btn{font-size:18px;line-height:18px;padding:6px 12px 8px 14px;justify-content:center}.dlg-text>div{flex-wrap:nowrap!important;gap:8px!important}@media (max-width:760px){.dlg{min-height:240px}.dlg-text>div{flex-wrap:wrap!important}}
@media (max-width:760px){.catchgap{padding-top:96px!important}}
@media (max-width:760px){.mailgrid{grid-template-columns:1fr!important;justify-items:start}.mailgrid .mailbtn{width:240px!important}}
body{margin:0;background:var(--surface)}
html{scroll-behavior:smooth}
a{color:var(--accent-text)}
section{scroll-margin-top:84px}
a:focus-visible,button:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.px{shape-rendering:crispEdges;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;image-rendering:pixelated;display:inline-block}
.sprite-o{filter:drop-shadow(0 3px 0 rgba(58,31,23,.22))}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
@keyframes drift{from{left:-140px}to{left:105%}}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes drop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.05);opacity:1}100%{transform:scale(1)}}
@keyframes cur{50%{opacity:0}}
@keyframes hint{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes smoke{0%{transform:translate(0,0) scale(.6);opacity:0}20%{opacity:.9}100%{transform:translate(14px,-50px) scale(1.4);opacity:0}}
@keyframes shake{0%,100%{transform:none}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
@keyframes knockfx{0%{opacity:0;transform:scale(.4)}30%{opacity:1;transform:scale(1.15)}100%{opacity:0;transform:translateY(-16px)}}
@keyframes emerge{0%{opacity:0;transform:translateY(12%) scale(.7)}50%{opacity:1;transform:translateY(-30%) scale(1.04,.96)}75%{transform:translateY(0) scale(1.06,.92)}100%{transform:none}}
@keyframes heart{0%{opacity:0;transform:translateY(0) scale(.6)}25%{opacity:1}100%{opacity:0;transform:translateY(-44px) scale(1.1)}}
@keyframes jumpA{0%,100%{transform:translateY(0)}40%{transform:translateY(-24px)}70%{transform:translateY(0) scale(1.06,.92)}}
@keyframes jumpB{0%,100%{transform:translateY(0)}40%{transform:translateY(-24px)}70%{transform:translateY(0) scale(1.06,.92)}}
@keyframes hop{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes bubble{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes glowwin{0%,100%{opacity:0}50%{opacity:.55}}
.bob{display:inline-block;animation:bob 1.4s steps(2) infinite}
.blink{transform-box:fill-box;transform-origin:center;animation:blink 4.2s infinite}
.cloud{position:absolute;animation:drift linear infinite}
.drop{animation:drop .24s steps(3)}
.pop{animation:pop .36s steps(4)}
.cur{animation:cur 1s steps(1) infinite}
.hint{animation:hint 1s steps(2) infinite}
.smoke{position:absolute;width:5%;aspect-ratio:1;background:#efe6d6;box-shadow:0 0 0 2px #b8aea0;animation:smoke 3.2s steps(8) infinite}
.shake{animation:shake .12s steps(2) 6}
.knockfx{position:absolute;animation:knockfx .6s steps(5) both}
.emerge{animation:emerge .72s steps(8) both}
.heart{position:absolute;animation:heart 1.8s steps(9) infinite}
.jumpA{animation:jumpA .48s steps(6)}.jumpB{animation:jumpB .48s steps(6)}
.walking .stepper{animation:hop .28s steps(2) infinite}
.idle .stepper{animation:bob 1.4s steps(2) infinite}
.bubble{animation:bubble .24s steps(3)}
.glowwin{position:absolute;background:#fff6d8;animation:glowwin 2s steps(2) infinite;pointer-events:none}
.doorpanel{transform-origin:0 50%;transition:transform .48s steps(6)}
.clickhouse:hover .doorpanel{transform:perspective(300px) rotateY(-10deg)}
@keyframes dlgup{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.dlg-up{animation:dlgup .28s steps(4)}.dlg-stud{position:absolute;width:6px;height:6px;background:var(--gold);box-shadow:0 0 0 2px var(--wood-dark)}.dlg-next{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 10px;background:none;border:none;cursor:pointer;font-family:var(--font-pixel);font-size:24px;color:var(--wood-dark)}.dlg-next:hover{color:var(--accent-text)}@keyframes dlgarrow{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}.dlg-arrow{display:inline-block;font-size:18px;animation:dlgarrow .8s steps(2) infinite}.dlg-x{position:absolute;top:-18px;right:-14px;width:36px;height:36px;padding:0;background:var(--wood);color:var(--on-wood);border:3px solid var(--wood-dark);box-shadow:0 3px 0 var(--wood-dark);font-family:var(--font-display);font-size:22px;line-height:28px;cursor:pointer}.dlg-x:hover{background:var(--accent-text)}@media (max-width:760px){.dlg-wrap{bottom:168px!important}}@media (max-width:640px){.dlg{grid-template-columns:1fr!important}.dlg-port{display:none!important}}
@media (max-width:760px){.teaser-grid{grid-template-columns:1fr!important}.teaser-grid>div:first-child{justify-self:center!important}}
@media (max-width:860px){.about-intro{grid-template-columns:1fr!important}.about-intro .about-photo{position:relative!important;top:0!important;max-width:420px;width:100%;justify-self:center}}
.stall-wrap{position:relative;padding:40px 0 16px}.stall{position:relative;display:flex;flex-direction:column}.stall-awning{position:relative;z-index:2;height:74px;margin:0 -14px;background:linear-gradient(90deg,#f8ebc4 0 50%,#f0cf86 50% 100%) 0 0/128px 100% round;box-shadow:inset 0 -4px 0 #00000014,0 -4px 0 var(--wood-dark),-4px 0 0 var(--wood-dark),4px 0 0 var(--wood-dark);display:flex;align-items:flex-start;justify-content:center}.stall-awning::after{content:"";position:absolute;left:0;right:0;bottom:-22px;height:22px;background:radial-gradient(circle at 25% 0,#f8ebc4 31px,transparent 32px) 0 0/128px 22px,radial-gradient(circle at 75% 0,#f0cf86 31px,transparent 32px) 0 0/128px 22px;background-repeat:round no-repeat;filter:drop-shadow(0 3px 0 var(--wood-dark))}.stall-sign{position:relative;top:-26px;padding:8px 22px 6px;background:var(--wood);color:var(--on-wood);font-family:var(--font-display);font-weight:700;font-size:24px;line-height:28px;box-shadow:inset 0 2px 0 var(--wood-light),0 0 0 4px var(--wood-dark),6px 6px 0 4px var(--pixel-shadow);transform:rotate(-2deg)}.stall-body{position:relative;margin:0 6px;padding:40px 24px 28px;background:var(--surface-raised);box-shadow:inset 0 0 0 4px var(--wood-light),0 0 0 4px var(--wood-dark),8px 8px 0 4px var(--pixel-shadow);display:flex;flex-direction:column;gap:22px}.stall-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}.stall-count{display:inline-flex;align-items:center;gap:8px;padding:4px 12px 2px;background:var(--surface-sunken);box-shadow:0 0 0 3px var(--wood);font-family:var(--font-pixel);font-size:20px;text-transform:uppercase}.stall-row{display:flex;flex-direction:column;gap:10px}.stall-rowtag{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:2px 10px 0;background:var(--gold);box-shadow:0 0 0 2px var(--wood-dark);font-family:var(--font-pixel);font-size:18px;text-transform:uppercase}.stall-marquee{overflow:hidden;margin:0 -24px;padding:10px 0 4px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}.stall-track{display:flex;gap:28px;width:max-content;padding-left:24px;animation:stallscroll 46s linear infinite}.stall-track.rev{animation-direction:reverse}.stall-track:has(.stall-item:hover),.stall-marquee:focus-within .stall-track{animation-play-state:paused}@keyframes stallscroll{from{transform:translateX(0)}to{transform:translateX(calc(-50% - 14px))}}@media (prefers-reduced-motion:reduce){.stall-track{animation:none}.stall-marquee{overflow-x:auto}}.stall-shelf{display:block;height:18px;margin:-30px -24px 0;background:linear-gradient(#b7834f 0 50%,#8a5a35 50%);box-shadow:0 4px 0 #6e3a1f33}.stall-item{flex:none;width:250px;display:flex;flex-direction:column;align-items:center;gap:0;text-decoration:none;color:var(--ink);outline:none}.stall-photo{position:relative;z-index:1;width:100%;aspect-ratio:4/5;border-radius:var(--radius-md);box-shadow:0 0 0 3px var(--wood-dark);display:flex;align-items:center;justify-content:center;text-align:center;padding:6px;font-family:var(--font-pixel);font-size:14px;line-height:14px;text-transform:uppercase;color:var(--ink-muted);transition:transform .2s steps(3)}.stall-plank{display:block;width:calc(100% + 28px);height:16px;margin-top:-4px;background:linear-gradient(#b7834f 0 50%,#8a5a35 50%);box-shadow:0 4px 0 #6e3a1f33}.stall-cap{margin-top:12px;font-size:15px;line-height:22px;font-weight:600;font-style:italic;text-align:center;color:var(--ink)}.stall-tag{margin-top:8px;max-width:100%;padding:3px 12px;background:#f8ebc4;border-radius:999px;box-shadow:0 0 0 2px var(--wood);font-size:13px;line-height:16px;font-weight:800;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stall-item:hover .stall-photo,.stall-item:focus-visible .stall-photo{transform:translateY(-6px)}.stall-item:focus-visible .stall-photo{box-shadow:0 0 0 3px var(--wood-dark),0 0 0 6px var(--focus)}.splat{position:absolute;right:-40px;bottom:0;width:290px;height:250px;z-index:3}.splat-blob{position:absolute;inset:0;overflow:hidden;border-radius:58% 42% 55% 45% / 48% 56% 44% 52%;box-shadow:0 0 0 4px var(--wood-dark),6px 6px 0 4px var(--pixel-shadow)}.splat-dot{position:absolute;border-radius:50%;background:#7cc0ea;box-shadow:0 0 0 3px var(--wood-dark)}.splat-sky{position:absolute;left:0;right:0;top:0;height:46%;background:linear-gradient(#bfe4f7,#e3f3fb)}.splat-water{position:absolute;left:0;right:0;bottom:0;height:54%;background:#7cc0ea;background-image:radial-gradient(ellipse 14px 2px at 50% 50%,#b9e2f7 95%,transparent 100%);background-size:60px 26px}.splat-dock{position:absolute;left:-4%;bottom:34%;width:58%;height:20px;background:repeating-linear-gradient(90deg,var(--wood) 0 22px,var(--wood-dark) 22px 25px);box-shadow:inset 0 3px 0 var(--wood-light)}.splat-post{position:absolute;bottom:8%;width:10px;height:26%;background:var(--wood-dark)}.splat-ripple{position:absolute;left:72%;bottom:30%;width:26px;height:8px;margin-left:-13px;border:2px solid #e3f3fb;border-radius:50%;animation:ripple 2.4s ease-out infinite}@keyframes ripple{0%{transform:scale(.4);opacity:1}100%{transform:scale(2.2);opacity:0}}.keeper{position:absolute;right:18px;top:-176px;width:176px;height:180px;z-index:3}.keeper-girl{position:absolute;left:0;bottom:6px;width:176px}.keeper-shadow{display:none;position:absolute;left:30px;bottom:0;width:116px;height:14px;border-radius:50%;background:#3a1f1733}.keeper-rod{position:absolute;left:120px;bottom:62px}.keeper-bob{animation:bobsway 2.2s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 0}@keyframes bobsway{0%,100%{transform:translateY(0)}50%{transform:translateY(2px)}}.stall-modal{display:none;position:fixed;inset:0;z-index:60;align-items:center;justify-content:center;padding:20px}.stall-modal:target{display:flex}.stall-scrim{position:absolute;inset:0;background:#2b151099}.stall-card{position:relative;width:min(520px,100%);animation:dlgup .28s steps(4)}@media (max-width:900px){.stall-item{width:200px}.keeper{display:none}}
#top .rv,#work .rv{opacity:1!important;animation:none!important;transform:none!important}
@media (max-width:760px){.hero-grid{grid-template-columns:1fr!important}}
.clickhouse{transition:transform .15s steps(2),filter .15s steps(2);outline:none}.clickhouse:hover{transform:translateY(-3px);filter:brightness(1.05)}.clickhouse:focus-visible{box-shadow:0 0 0 4px var(--gold)}.scrolldown{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;margin-top:8px;border-radius:50%;background:var(--surface-raised);box-shadow:0 0 0 3px var(--wood-dark),3px 3px 0 3px var(--pixel-shadow);color:var(--wood-dark);font-size:18px;line-height:18px;text-decoration:none;transition:transform .15s steps(2)}.scrolldown:hover{transform:translateY(2px);background:var(--gold)}
.comp{position:fixed;bottom:14px;z-index:30;width:64px}
.flip:hover .flipin,.flip:focus-visible .flipin{transform:rotateY(180deg)}
body,.pp-root{cursor:url(../assets/images/cursor-arrow.png) 0 0,auto}
a,button,[role=switch],label,.flip,.workcard{cursor:url(../assets/images/cursor-pointer.png) 10 0,pointer!important}
.cardlink:hover{color:var(--ink)}.readcs{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-pixel);font-size:19px;line-height:20px;letter-spacing:.04em;text-transform:uppercase;color:var(--wood-dark);border-bottom:2px solid currentColor;padding-bottom:2px}.readarrow{display:inline-block;transition:transform .2s steps(2)}.cardlink:hover .readcs{color:var(--accent-text)}.cardlink:hover .readarrow{transform:translateX(4px)}.qlook{font-family:var(--font-pixel)!important;font-size:19px!important;line-height:20px!important;letter-spacing:.04em;text-transform:uppercase;font-weight:400!important;color:var(--wood-dark)!important;text-decoration:none!important;border-bottom:2px solid currentColor!important;padding:0 0 2px!important}.qlook:hover{color:var(--accent-text)!important}.qlook{background:none;border:0;padding:4px 2px;font-family:var(--font-body);font-size:15px;line-height:20px;font-weight:700;color:var(--accent-text);text-decoration:underline;text-underline-offset:4px}.qlook:hover{color:var(--ink)}.qlook:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.cardlink:focus,.cardlink:active,.workcard button:focus{outline:none}
.cardlink:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}

@keyframes ldrSeed{0%{transform:translateY(-40px);opacity:0}6%{opacity:1}24%{transform:translateY(160px)}29%{transform:translateY(152px)}34%{transform:translateY(160px);opacity:1}42%{transform:translateY(168px);opacity:1}56%,100%{transform:translateY(168px);opacity:0}}
@keyframes ldrCan{0%,36%{transform:translateX(80px);opacity:0}44%{transform:translateX(0);opacity:1}50%,72%{transform:rotate(-32deg);opacity:1}80%{transform:rotate(0);opacity:1}92%,100%{transform:translateX(80px);opacity:0}}
@keyframes ldrDrop{0%{transform:translateY(0);opacity:0}15%{opacity:1}100%{transform:translateY(56px);opacity:0}}
@keyframes ldrSprout{0%,54%{transform:scale(0)}62%{transform:scale(.45,.35)}70%{transform:scale(.75,.7)}78%,100%{transform:scale(1)}}
@keyframes ldrBloom{0%,80%{transform:scale(0);opacity:0}88%{transform:scale(1.3);opacity:1}94%,100%{transform:scale(1);opacity:1}}
@keyframes ldrBar{from{width:0}to{width:100%}}
@keyframes ldrFade{0%,82%{opacity:1}92%,100%{opacity:0}}
.ldr-seed{animation:ldrSeed 3.6s steps(36) both}
.ldr-can{animation:ldrCan 3.6s steps(36) both}
.ldr-drop{position:absolute;top:130px;width:6px;height:8px;background:#7cc0ea;box-shadow:0 0 0 2px #4f9ccb;opacity:0;animation:ldrDrop .45s steps(5) 2 both}
.ldr-sprout{animation:ldrSprout 3.6s steps(36) both}
.ldr-bloom{animation:ldrBloom 3.6s steps(36) both}
.ldr-bar{animation:ldrBar 3s steps(15) both}
.ldr-scene{animation:ldrFade 3.6s linear both}
@property --ldr-r{syntax:'<length>';inherits:false;initial-value:0px}
@keyframes ldrReveal{0%,80%{--ldr-r:0px}100%{--ldr-r:calc(120vmax + 160px)}}
.ldr-bg{-webkit-mask-image:radial-gradient(circle at 50% 46%,transparent calc(var(--ldr-r) - 160px),#000 var(--ldr-r));mask-image:radial-gradient(circle at 50% 46%,transparent calc(var(--ldr-r) - 160px),#000 var(--ldr-r));animation:ldrReveal 3.6s cubic-bezier(.5,0,.3,1) both}
@supports not (mask-image:radial-gradient(circle,#000,#000)){.ldr-bg{animation:ldrFade 3.6s linear both}}
.hero-house{width:340px;height:312px}.pp-btn.navres{box-shadow:inset 0 2px 0 0 #e09a52,inset 0 -3px 0 0 #00000033,0 -3px 0 0 #5e2f18,0 3px 0 0 #5e2f18,-3px 0 0 0 #5e2f18,3px 0 0 0 #5e2f18,7px 7px 0 0 #b49e7d}@media (max-width:760px){.heroc{padding:32px 18px!important}.herorole{font-size:30px!important}}
@media (max-width:860px){.postcard{grid-template-columns:1fr!important}.pcdiv{display:none}}
.above{position:relative;z-index:2}
.logentry{transition:transform 120ms steps(3)}
.logentry:hover{transform:translate(-2px,-4px)}
.logentry:hover .logfish svg{animation:wiggle .36s steps(3)}
.snap{transition:transform 120ms steps(3)}
.snap:hover,.snap:focus-within{transform:rotate(0deg) translateY(-6px) scale(1.03)!important;z-index:2}
@keyframes nibble{0%,70%,100%{transform:translateY(0)}74%,82%{transform:translateY(8px)}78%,86%{transform:translateY(2px)}}
@keyframes nibblealert{0%,70%,92%,100%{opacity:0;transform:scale(.4)}74%,88%{opacity:1;transform:scale(1)}}
.nibble{animation:nibble 6s steps(24) infinite}
.nibblealert{animation:nibblealert 6s steps(24) infinite}
.fishitem{transition:transform 120ms steps(3)}
.fishitem:hover{transform:translate(-2px,-2px)}
.fishitem:hover .fishimg svg{animation:wiggle .36s steps(3)}
@keyframes envout{0%{transform:translate(20px,0) scale(.5);opacity:0}45%{transform:translate(-70px,-70px) rotate(-18deg) scale(1);opacity:1}75%{transform:translate(-104px,-44px) rotate(-10deg)}100%{transform:translate(-112px,-50px) rotate(-12deg);opacity:1}}
.flag{transform-origin:7px 96px;transition:transform .36s steps(4)}
.mdoor{transform-origin:50% 100%;transition:transform .36s steps(4)}
.envout{animation:envout .7s cubic-bezier(.3,1.2,.5,1) both}@keyframes envfly{0%{transform:none}55%{transform:translate(-4px,-86px) rotate(-14deg)}100%{transform:translate(-2px,-70px) rotate(-9deg)}}.mflag{transform-origin:8px 100%;z-index:1}@keyframes flagwave{0%,15%{transform:rotate(0)}45%,60%{transform:rotate(90deg)}90%,100%{transform:rotate(0)}}.mailenv{transition:transform .2s}.mailenv.envfly{animation:envfly .7s cubic-bezier(.3,1.2,.5,1) both}.mailbtn:hover .mailenv:not(.envfly){transform:translateY(-4px)}
.mailbtn:hover .flag{transform:rotate(0deg)!important}
@keyframes rodcast{0%{transform:rotate(0)}35%{transform:rotate(-38deg)}70%{transform:rotate(10deg)}100%{transform:rotate(0)}}
@keyframes castfly{0%{transform:translate(-80px,-150px);opacity:1}50%{transform:translate(-30px,-190px)}100%{transform:translate(0,0)}}
@keyframes bite{0%,100%{transform:translateY(0)}50%{transform:translateY(9px)}}
@keyframes caught{0%{transform:translate(0,0) rotate(0);opacity:1}45%{transform:translate(-120px,-210px) rotate(-200deg);opacity:1}80%{transform:translate(-210px,-150px) rotate(-340deg);opacity:1}100%{transform:translate(-220px,-140px) rotate(-360deg) scale(.4);opacity:0}}
@keyframes alert{0%{transform:scale(0)}60%{transform:scale(1.3)}100%{transform:scale(1)}}
@keyframes wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}
@keyframes shimmer{0%,100%{filter:none}50%{filter:brightness(1.25)}}
.rodcast{transform-origin:44px 92px;animation:rodcast .6s steps(6)}
.castfly{animation:castfly .6s steps(6)}
.bite{animation:bite .24s steps(2) infinite}
.caughtfish{position:absolute;animation:caught 1s steps(10) forwards}
.alert{position:absolute;animation:alert .3s steps(3) both}
.slot{transition:transform .12s steps(2)}.slot:hover{animation:wiggle .36s steps(3)}
.carousel{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:6px 6px 18px;scrollbar-width:none}
.carousel::-webkit-scrollbar{display:none}
.carousel > *{scroll-snap-align:start;flex:0 0 calc((100% - 40px) / 3)}
@media (max-width:860px){.carousel > *{flex-basis:calc((100% - 20px) / 2)}}
@media (max-width:560px){.carousel > *{flex-basis:86%}}
.fishcard:hover .fishimg{animation:wiggle .36s steps(3)}
.slides{display:flex;transition:transform .36s steps(4)}
.rare{animation:shimmer 1.2s steps(2) infinite}

@keyframes twinkle{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes nightwin{0%,100%{opacity:.85}50%{opacity:1}}
.ffw{position:absolute;width:5px;height:5px;transition:transform .5s cubic-bezier(.2,.9,.3,1.2);will-change:transform;pointer-events:none}.ffw.near .firefly{background:#fff6b0;box-shadow:0 0 12px 5px #f4e27acc}
@keyframes firefly{0%,100%{transform:translate(0,0);opacity:.2}25%{transform:translate(10px,-14px);opacity:1}50%{transform:translate(-6px,-26px);opacity:.4}75%{transform:translate(-14px,-8px);opacity:1}}
.star{position:absolute;width:4px;height:4px;background:#fbe8c0;animation:twinkle 2.6s steps(2) infinite}
.nightwin{position:absolute;background:#f6c94a;box-shadow:0 0 18px 6px #f6c94a88;mix-blend-mode:screen;animation:nightwin 2.4s steps(2) infinite;pointer-events:none}
.firefly{position:absolute;width:5px;height:5px;background:#f4e27a;box-shadow:0 0 8px 3px #f4e27a99;animation:firefly 4.2s steps(8) infinite}
@keyframes ripple{0%{transform:scale(.3);opacity:.9}100%{transform:scale(1.6);opacity:0}}
@keyframes bobber{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}
@keyframes fishjump{0%,78%{opacity:0;transform:translate(0,30px) rotate(-60deg)}82%{opacity:1;transform:translate(14px,-24px) rotate(-20deg)}88%{opacity:1;transform:translate(34px,-36px) rotate(20deg)}94%{opacity:1;transform:translate(52px,0) rotate(70deg)}97%,100%{opacity:0;transform:translate(56px,24px) rotate(80deg)}}
@keyframes lily{0%,100%{transform:translateY(0)}50%{transform:translateY(2px)}}
.ripple{position:absolute;width:40px;height:12px;border-radius:50%;box-shadow:0 0 0 2px #fff6d8;animation:ripple 2.4s steps(6) infinite}
.bobber{position:absolute;animation:bobber 1.2s steps(2) infinite}
.bobber-idle{animation:bobber 1.2s steps(2) infinite}
.fishjump{position:absolute;animation:fishjump 7s steps(24) infinite}
.lily{position:absolute;animation:lily 2.4s steps(2) infinite}
@keyframes sway{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes flutter{0%{left:-6%;top:120px}25%{left:28%;top:60px}50%{left:55%;top:150px}75%{left:80%;top:70px}100%{left:106%;top:130px}}
@keyframes wing{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.35)}}
.sway{display:inline-block;transform-origin:50% 100%;animation:sway 1.6s steps(2) infinite}
.butterfly{position:absolute;z-index:2;width:28px;animation:flutter 22s linear infinite;pointer-events:none}
.butterfly svg{animation:wing .3s steps(2) infinite}
.soil{background-color:#8a5a35;background-image:repeating-linear-gradient(0deg,#6e3a1f 0 3px,transparent 3px 10px);box-shadow:0 0 0 3px var(--wood-dark)}
.js .rv{opacity:0}
.js .in .rv{animation:rise .36s steps(4) forwards}
.calm *{animation:none!important;transition:none!important}
.calm .rv{opacity:1!important}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.js .rv{opacity:1}}
@media (max-width:1100px){.topnav{gap:12px!important;font-size:19px!important}}@media (max-width:900px){.topnav{gap:4px!important;font-size:18px!important}}
@media (max-width:760px){.navlinks{display:none!important}.hero-house{width:240px;height:220px}.comp{width:32px}.greetgirl{width:64px!important;left:calc(50% - 32px)!important}.compbubble{display:none!important}}

/* Dialogue: the box grows to fit long lines; a hidden copy of the full line reserves the space
   before it finishes typing, so the box never resizes mid-sentence. */
.dlg-text>p{display:grid}.dlg-ghost,.dlg-shown{grid-area:1/1}.dlg-ghost{visibility:hidden}

/* Elements toggled by the page scripts */
[hidden]{display:none!important}
