.effects{--side: 100cqmin;position:absolute;left:0;right:0;bottom:0;z-index:1;height:calc(var(--side) + 20px);overflow:hidden;pointer-events:none}.pet:not(:has(>.pet__image,>.pet__rig))>.effects{--side: 100%}.effects__reward,.effects__level{font-weight:900;line-height:1;white-space:nowrap}.effects__reward{position:absolute;left:50%;bottom:calc(var(--side) * .9 - 30px);color:var(--cream);font-size:1.6rem;text-shadow:-2px 0 0 var(--wood-dark),2px 0 0 var(--wood-dark),0 -2px 0 var(--wood-dark),0 2px 0 var(--wood-dark),0 4px 0 var(--wood-dark),0 6px 8px rgb(61 34 14 / .4);animation:effects-reward 1.5s ease-out both}@keyframes effects-reward{0%{opacity:0;transform:translate(-50%,12px) scale(.6)}15%{opacity:1;transform:translate(-50%) scale(1.15)}25%{transform:translate(-50%,-6px) scale(1)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-60px) scale(1)}}.effects__heart{position:absolute;left:calc(50% + var(--x));bottom:calc(var(--side) * .74 - 24px);font-size:1.5rem;line-height:1;filter:drop-shadow(0 2px 0 var(--wood-dark));animation:effects-heart 1.2s ease-out var(--delay) both}@keyframes effects-heart{0%{opacity:0;transform:translate(-50%,16px) scale(.4)}20%{opacity:1;transform:translate(calc(-50% - 6px)) scale(1.1)}45%{transform:translate(calc(-50% + 6px),-24px) scale(1)}70%{opacity:1;transform:translate(calc(-50% - 5px),-46px) scale(1)}to{opacity:0;transform:translate(calc(-50% + 4px),-70px) scale(.85)}}.effects__bubble{position:absolute;left:calc(50% + var(--x));bottom:calc(var(--side) * .14);width:var(--size);height:var(--size);margin-left:calc(var(--size) / -2);border:2px solid var(--action-wash-edge);border-radius:50%;background:radial-gradient(circle at 32% 30%,var(--cream) 0 16%,transparent 24%),radial-gradient(circle at 50% 50%,#bee6fa59 0,#bee6fa59 55%,#3ea8e28c);box-shadow:0 2px #0f4a7059;animation:effects-bubble 1.1s ease-out var(--delay) both}@keyframes effects-bubble{0%{opacity:0;transform:translateY(10px) scale(.3)}15%{opacity:1;transform:translate(-4px) scale(1)}45%{transform:translate(5px,-40px) scale(1)}80%{opacity:1;transform:translate(-3px,-78px) scale(1)}88%{opacity:1;transform:translate(-3px,-84px) scale(1.35)}to{opacity:0;transform:translate(-3px,-86px) scale(1.7)}}.effects__level{position:absolute;left:50%;top:calc(20px + var(--side) * .72);padding:clamp(6px,var(--side) * .03,10px) clamp(12px,var(--side) * .06,20px);border:3px solid var(--wood-dark);border-radius:16px;background:repeating-linear-gradient(45deg,transparent 0 5px,rgb(160 110 30 / .22) 5px 6px),repeating-linear-gradient(-45deg,transparent 0 5px,rgb(160 110 30 / .22) 5px 6px),linear-gradient(to bottom,var(--straw),var(--straw-dark));box-shadow:inset 0 2px #ffffff59,0 4px 0 var(--wood-dark),0 8px 14px #3d220e59;color:var(--ink);font-size:clamp(.95rem,var(--side) * .075,1.4rem);text-shadow:0 1px 0 rgb(255 248 232 / .7);animation:effects-level 1.6s ease-out both}@keyframes effects-level{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-6deg)}16%{opacity:1;transform:translate(-50%,-50%) scale(1.15) rotate(2deg)}26%{transform:translate(-50%,-50%) scale(.94) rotate(-1deg)}36%,80%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,calc(-50% - 24px)) scale(.9) rotate(0)}}@media(prefers-reduced-motion:reduce){.effects{display:none}}.pet{position:relative;width:min(100%,37.5dvh);aspect-ratio:200 / 240;margin:0 auto;isolation:isolate}.pet:after{content:"";position:absolute;left:22%;right:22%;bottom:1%;height:5%;border-radius:50%;background:radial-gradient(closest-side,rgb(42 18 6 / .35),transparent);z-index:-1}.pet:has(>.pet__image),.pet:has(>.pet__rig){flex:1 1 0;width:100%;min-height:min(180px,40dvh);max-height:46dvh;aspect-ratio:auto;container-type:size}.pet:has(>.pet__image):after,.pet:has(>.pet__rig):after{left:50%;right:auto;bottom:1cqmin;width:46cqmin;height:6cqmin;translate:-50% 0;background:radial-gradient(closest-side,rgb(42 18 6 / .45),rgb(42 18 6 / .2) 60%,transparent)}.pet--sleeping:has(>.pet__image):after,.pet--washing:has(>.pet__image):after,.pet--sleeping:has(>.pet__rig):after,.pet--washing:has(>.pet__rig):after{width:80cqmin}.pet .roccolino,.pet__image,.pet__rig{display:block;width:100%;height:100%;object-fit:contain}.pet__image{object-position:50% 100%;transform-origin:50% calc(100% - 4cqmin);filter:drop-shadow(0 3px 2px rgb(42 18 6 / .25));animation:pet-in .3s ease-out,pet-image-breathe 3.6s ease-in-out infinite}.pet--sleeping .pet__image{animation:pet-in .3s ease-out,pet-image-breathe 5s ease-in-out infinite}.pet--happy .pet__image,.pet--playing .pet__image{animation:pet-in .3s ease-out,pet-hop .9s ease-in-out infinite}.pet__rig{animation:pet-in .3s ease-out;transition:opacity .25s ease}.pet__rig--hidden{opacity:0}.pet__sprite{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;object-position:50% 100%;transform-origin:50% calc(100% - 4cqmin);filter:drop-shadow(0 3px 2px rgb(42 18 6 / .25));opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity .25s ease}.pet__sprite--on{opacity:1;animation:pet-image-breathe 3.6s ease-in-out infinite}.pet--sleeping .pet__sprite--on{animation-duration:5s}.pet__pose{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none}.pet__pose-scene{opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s}.pet__pose-scene--on{opacity:1;visibility:visible}.pet__pose-breathe{transform-box:fill-box;transform-origin:50% 100%}.pet__pose-scene--on .pet__pose-breathe,.pet__pose-scene--leaving .pet__pose-breathe{animation:pet-image-breathe 3.6s ease-in-out infinite}.pet__pose-scene--sleep .pet__pose-breathe{animation-duration:5s}.pet__chestnut{transform-box:fill-box;transform-origin:50% 50%}.pet__pose-scene--on .pet__chestnut,.pet__pose-scene--leaving .pet__chestnut{animation:pet-chestnut-pop .2s ease-out both,pet-chestnut-bob 1.6s ease-in-out .2s infinite}@keyframes pet-chestnut-pop{0%{scale:.6}to{scale:1}}@keyframes pet-chestnut-bob{0%,to{translate:0 0}25%{translate:var(--bob-x) var(--bob-y)}75%{translate:calc(-1 * var(--bob-x)) calc(-1 * var(--bob-y))}}.pet:has(>.pet__rig):after{animation:none;scale:calc(1 - .3 * var(--pet-lift, 0)) calc(1 - .2 * var(--pet-lift, 0));opacity:calc(1 - .4 * var(--pet-lift, 0))}.pet__touch{position:absolute;left:50%;bottom:4cqmin;width:74cqmin;height:88cqmin;translate:-50% 0;margin:0;padding:0;border:0;border-radius:24px;background:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.pet__touch:disabled{cursor:default}.pet__touch:focus-visible{outline:3px solid var(--cream);outline-offset:-3px}.pet--happy:after,.pet--playing:after{animation:pet-shadow-hop .9s ease-in-out infinite}.pet--shake-a{animation:pet-shake-a .5s ease-in-out}.pet--shake-b{animation:pet-shake-b .5s ease-in-out}@keyframes pet-shake-a{0%,to{translate:0 0}15%,55%{translate:-6px 0}35%,75%{translate:6px 0}90%{translate:-3px 0}}@keyframes pet-shake-b{0%,to{translate:0 0}15%,55%{translate:-6px 0}35%,75%{translate:6px 0}90%{translate:-3px 0}}@keyframes pet-in{0%{opacity:0}}@keyframes pet-image-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.01,1.025)}}@keyframes pet-hop{0%,to{transform:translateY(0) scale(1.03,.97)}15%{transform:translateY(0) scale(1)}45%{transform:translateY(-6%) scale(.99,1.02)}80%{transform:translateY(0) scale(1)}}@keyframes pet-shadow-hop{45%{transform:scaleX(.75);opacity:.6}}.roccolino__body{transform-box:view-box;transform-origin:100px 232px}.roccolino__lids{transform:scaleY(0);transform-box:fill-box;transform-origin:center top;animation:pet-blink 4s infinite}.roccolino__arm-wave{transform-box:view-box;transform-origin:126px 160px}.roccolino__burr{transform-box:view-box;transform-origin:100px 90px}.pet--idle .roccolino__body{animation:pet-breathe 3s ease-in-out infinite}.pet--happy .roccolino__arm-wave,.pet--playing .roccolino__arm-wave{animation:pet-wave 1.2s ease-in-out infinite}.pet--playing .roccolino__burr{animation:pet-wiggle .8s ease-in-out infinite}@keyframes pet-breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.02)}}@keyframes pet-blink{0%,94%,to{transform:scaleY(0)}97%{transform:scaleY(1)}}@keyframes pet-wave{0%,to{transform:rotate(0)}50%{transform:rotate(-14deg)}}@keyframes pet-wiggle{0%,to{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@media(prefers-reduced-motion:reduce){.pet__rig,.pet__sprite,.pet__pose-scene{transition:none}.pet__sprite--on,.pet__pose-breathe,.pet__chestnut,.pet--shake-a,.pet--shake-b,.pet__rig,.pet:has(>.pet__rig):after,.roccolino__body,.roccolino__lids,.roccolino__arm-wave,.roccolino__burr{animation:none!important}}:root{--den-wall: #7a4520;--ink: #3d220e;--wood-dark: #5a3217;--wood: #9a5a2a;--wood-light: #c47f41;--plank: #f1d6a2;--plank-dark: #dcb778;--straw: #f3d57f;--straw-dark: #d3a748;--cream: #fff8e8;--need-satiety: #f07f22;--need-happiness: #f5c21b;--need-energy: #68bd36;--need-hygiene: #3ea8e2;--need-low: #e23b2e;--need-low-bg: #ffe1d6;--meter-track: #6b4526;--xp: #ef4f73;--action-feed: #c73f22;--action-feed-edge: #7a2210;--action-play: #347a18;--action-play-edge: #1f4d0c;--action-sleep: #6a55c4;--action-sleep-edge: #3a2b80;--action-wash: #1a74a8;--action-wash-edge: #0f4a70;color:var(--ink);font-family:ui-rounded,SF Pro Rounded,Arial Rounded MT Bold,Nunito,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}html{background:var(--den-wall)}body{position:relative;min-height:100dvh;overflow-x:hidden;background:var(--den-wall);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}#root{position:relative;z-index:1;isolation:isolate}.den{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;container-type:size;pointer-events:none}.den__scene{--den-w: max(100vw, 150vh);position:absolute;left:clamp(100vw - var(--den-w),50vw - var(--den-door) * var(--den-w),0px);top:calc((100vh - var(--den-w) / 1.5) * .7);width:var(--den-w);aspect-ratio:1536 / 1024}@supports (width: 1cqw){.den__scene{--den-w: max(100cqw, 150cqh);left:clamp(100cqw - var(--den-w),50cqw - var(--den-door) * var(--den-w),0px);top:calc((100cqh - var(--den-w) / 1.5) * .7)}}.den__bg,.den__prop{position:absolute;display:block;-webkit-user-select:none;user-select:none}.den__bg{top:0;right:0;bottom:0;left:0;width:100%;height:100%}.den__bg--night{z-index:1;opacity:0;transition:opacity 4s ease-in-out}.den__bg--on{opacity:1}.den__prop{z-index:2}.app{position:relative;z-index:1;display:grid;grid-template-rows:auto 1fr auto auto;gap:12px;width:100%;max-width:480px;min-height:100dvh;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 14px max(16px,env(safe-area-inset-bottom));overflow:hidden}.app>*{position:relative}.app--loading{place-items:center;background:linear-gradient(#2a1608b8,#2a1608b8) center / 100% 3.5em no-repeat;color:var(--cream);font-size:1.25rem;font-weight:900;text-shadow:0 2px 0 var(--wood-dark),0 0 6px rgb(61 34 14 / .5)}.top-bar{display:flex;justify-content:space-between;gap:8px}.badge{display:flex;align-items:center;gap:6px;min-height:42px;padding:6px 14px 6px 10px;border:3px solid var(--wood-dark);border-radius:14px;box-shadow:inset 0 2px #ffffff59,0 4px 0 var(--wood-dark),0 6px 10px #3d220e4d;font-size:1.05rem;font-weight:900}.badge--wood{background:repeating-linear-gradient(176deg,transparent 0 7px,rgb(90 50 23 / .16) 7px 9px),linear-gradient(to bottom,var(--wood-light),var(--wood));color:var(--cream);text-shadow:0 2px 0 var(--wood-dark)}.badge--straw{background:repeating-linear-gradient(45deg,transparent 0 5px,rgb(160 110 30 / .22) 5px 6px),repeating-linear-gradient(-45deg,transparent 0 5px,rgb(160 110 30 / .22) 5px 6px),linear-gradient(to bottom,var(--straw),var(--straw-dark));color:var(--ink);text-shadow:0 1px 0 rgb(255 248 232 / .7)}.badge__icon{font-size:1.25rem;line-height:1;filter:drop-shadow(0 1px 0 rgb(61 34 14 / .6))}.badge__value{min-width:2ch}.meter{position:relative;display:block;flex:1;height:18px;border:2px solid var(--wood-dark);border-radius:999px;background:var(--meter-track);box-shadow:inset 0 3px 3px #00000059;overflow:hidden}.meter--xp{width:64px;height:14px;flex:none}.meter__fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(to bottom,#ffffff8c,#ffffff1a 50%,#0000001f),var(--fill, var(--need-energy));transition:width .4s ease}.meter--xp .meter__fill{--fill: var(--xp)}.stage{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-height:0}.bubble-slot{display:flex;flex:none;align-items:flex-end;justify-content:center;width:100%;height:calc(2.625rem + 40px)}.bubble{position:relative;max-width:88%;margin:0 0 14px;padding:10px 18px;border:3px solid var(--ink);border-radius:22px;background:var(--cream);box-shadow:0 4px #3d220e59;font-size:1.05rem;font-weight:800;line-height:1.25;text-align:center;animation:bubble-in .25s ease-out}.bubble:before,.bubble:after{content:"";position:absolute;left:50%;transform:translate(-50%);clip-path:polygon(0 0,100% 0,50% 100%)}.bubble:before{top:100%;width:26px;height:16px;background:var(--ink)}.bubble:after{top:calc(100% - 3px);width:18px;height:12px;background:var(--cream)}@keyframes bubble-in{0%{opacity:0;transform:translateY(6px) scale(.95)}}.needs{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin:0;padding:14px 18px;list-style:none;border:3px solid var(--wood-dark);border-radius:18px;background:radial-gradient(circle at 9px 9px,var(--wood-dark) 2.5px,transparent 3.5px),radial-gradient(circle at calc(100% - 9px) 9px,var(--wood-dark) 2.5px,transparent 3.5px),radial-gradient(circle at 9px calc(100% - 9px),var(--wood-dark) 2.5px,transparent 3.5px),radial-gradient(circle at calc(100% - 9px) calc(100% - 9px),var(--wood-dark) 2.5px,transparent 3.5px),repeating-linear-gradient(178deg,transparent 0 11px,rgb(154 90 42 / .12) 11px 13px),linear-gradient(to bottom,var(--plank),var(--plank-dark));box-shadow:inset 0 2px #ffffff80,0 5px 0 var(--wood-dark),0 8px 14px #3d220e4d}.need{display:flex;align-items:center;gap:8px}.need__icon{display:grid;place-items:center;flex:none;width:34px;height:34px;border:2px solid var(--wood-dark);border-radius:50%;background:var(--cream);box-shadow:0 2px 0 var(--wood-dark);font-size:1.15rem;line-height:1}.need--satiety{--fill: var(--need-satiety)}.need--happiness{--fill: var(--need-happiness)}.need--energy{--fill: var(--need-energy)}.need--hygiene{--fill: var(--need-hygiene)}.need--low{--fill: var(--need-low)}.need--low .need__icon{border-color:var(--need-low);background:var(--need-low-bg)}.need--low .meter__fill{animation:need-pulse 1.2s ease-in-out infinite}@keyframes need-pulse{50%{opacity:.55}}.actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding-bottom:6px}.action{--face: var(--wood-light);--edge: var(--wood-dark);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:76px;padding:6px 2px;border:3px solid var(--ink);border-radius:20px;background:linear-gradient(to bottom,#fff6,#fff0 48%),var(--face);box-shadow:inset 0 -4px #00000026,0 6px 0 var(--edge),0 8px 12px #3d220e59;color:var(--cream);font:inherit;font-weight:900;cursor:pointer;overflow:hidden;touch-action:manipulation;transition:transform .08s ease,box-shadow .08s ease}.action--feed{--face: var(--action-feed);--edge: var(--action-feed-edge)}.action--play{--face: var(--action-play);--edge: var(--action-play-edge)}.action--sleep{--face: var(--action-sleep);--edge: var(--action-sleep-edge)}.action--wash{--face: var(--action-wash);--edge: var(--action-wash-edge)}.action:active:not(:disabled){transform:translateY(5px);box-shadow:inset 0 -2px #00000026,0 1px 0 var(--edge),0 2px 4px #3d220e4d}.action:focus-visible{outline:3px solid var(--cream);outline-offset:3px}.action:disabled{cursor:default;filter:saturate(.45) brightness(.92)}.action:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:conic-gradient(rgb(40 20 6 / .5) calc(var(--cooldown, 0) * 360deg),transparent 0);pointer-events:none}.action__icon{font-size:1.9rem;line-height:1;filter:drop-shadow(0 2px 0 rgb(0 0 0 / .3))}.action__label{font-size:.85rem;letter-spacing:.02em;text-shadow:0 2px 0 rgb(0 0 0 / .35),0 0 3px rgb(0 0 0 / .35)}@media(min-height:760px){.action{min-height:84px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}}
