:root{font-family:ui-rounded,'Trebuchet MS',system-ui,sans-serif;color:#4c443c;background:#fbf6ec;font-synthesis:none;--green:#536c52;--muted:#8e877b;--line:#e8dfcf}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 5% 10%,#e7eddc77,transparent 45%),#fbf6ec}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:1px solid var(--line);background:#fffdf7;color:inherit;border-radius:18px;min-height:64px;font-weight:700}button:hover{background:#f4efe2}button:active{transform:translateY(2px)}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #6f9070;outline-offset:3px}[hidden]{display:none!important}.shell{max-width:930px;margin:auto;padding:0 30px}.brand{display:flex;justify-content:space-between;align-items:center;padding:30px 0 24px;border-bottom:1px solid var(--line)}.brand a{text-decoration:none;color:var(--green);font-size:23px;font-weight:800;letter-spacing:-.8px}.brand img{width:30px;vertical-align:middle;image-rendering:pixelated;margin-right:5px}.brand a span{display:block;font-size:11px;font-weight:400;color:var(--muted);letter-spacing:.15px;padding:5px 0 0 42px}.brand-note{font-size:10px;letter-spacing:1.7px;color:#969b84}.pet-heading{display:flex;justify-content:space-between;align-items:center;padding:26px 3px 19px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;color:#92977c;margin:0 0 9px}h1{font-family:Georgia,serif;font-size:39px;letter-spacing:-1.2px;color:#4e5f49;margin:0}h2{font-family:Georgia,serif;color:var(--green);font-size:29px}.muted{color:var(--muted);font-size:13px;line-height:1.6;margin:7px 0}.settings{width:52px;min-height:52px;font-size:25px;background:#f0ebdf;border:none;border-radius:50%;color:#7d816a}.card{border:1px solid #e2d9c7;border-radius:24px;background:#fffcf5;box-shadow:0 8px 28px #827b4c08;overflow:hidden}.scene-top{height:43px;display:flex;align-items:center;justify-content:space-between;padding:0 23px;color:#797f63;font-size:11px}.live-dot{font-size:10px;color:#92957e}.live-dot:before,.message-dot{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#99af84;margin-right:7px}.scene{position:relative;aspect-ratio:240/124;overflow:hidden;background:#f5e3c7}.room{position:absolute;inset:auto 0 0;width:100%;height:auto}.scene img{image-rendering:pixelated;pointer-events:none}.bed{position:absolute;width:18%;left:73%;bottom:10%}.bowl{position:absolute;width:12%;bottom:2%}.food-bowl{left:19%}.water-bowl{left:32%}.toy{position:absolute;width:9%;left:69%;bottom:3%}.pet-touch{position:absolute;width:34%;aspect-ratio:1;left:35%;bottom:4%;border:0;border-radius:0;background:transparent!important;min-height:0;padding:0;touch-action:manipulation}.sprite{display:block;width:100%;height:100%;background-image:url('/static/assets/egg-0.png?v=20261017-walk-5');background-size:100% 100%;image-rendering:pixelated}.sprite.animated{background-size:400% 100%;animation:frames 1.7s steps(4) infinite}.sprite.egg{animation:egg-breathe 3s ease-in-out infinite}.poop{position:absolute;width:9%;bottom:4%}.effect{position:absolute;width:10%;left:48%;top:18%;animation:heart-rise 1s ease-out forwards}.sleep-mark{position:absolute;left:63%;top:28%;color:#746b80;font-weight:bold;letter-spacing:8px}.scene.night:after{content:'';position:absolute;inset:0;background:#38385a30;pointer-events:none}.scene.playing .toy{animation:ball .9s ease-in-out 2}.scene.playing.follow .pet-touch{animation:follow 1.5s ease-in-out}.scene.playing.chase .pet-touch{animation:chase 1.5s ease-in-out}.pet-message{display:flex;align-items:center;justify-content:center;gap:2px;padding:13px 10px;background:#f4f3e7;border-top:1px solid #e1d9c6}.pet-message p{font-size:12px;margin:0;color:#7c8069}.needs{display:grid;grid-template-columns:repeat(5,1fr);gap:23px;padding:21px 26px 24px}.need label{font-size:11px;display:flex;justify-content:space-between;color:#7d7b6d}.need output{font-size:10px;color:#9e9a8c}.need meter{display:block;width:100%;height:9px;margin-top:8px;border:0;background:#eae7da;border-radius:10px}meter::-webkit-meter-bar{background:#eae7da;border:0;height:7px}meter::-webkit-meter-optimum-value{background:#9aaf83;border-radius:10px}meter::-moz-meter-bar{background:#9aaf83}.actions{display:grid;grid-template-columns:repeat(6,1fr);gap:11px;margin-top:18px}.actions button{padding:12px 2px;background:#fffdf7;box-shadow:0 3px 0 #e9e0cf;border-radius:18px;font-size:12px;min-height:110px;touch-action:manipulation}.actions img{display:block;margin:0 auto 5px;width:40px;height:40px;image-rendering:pixelated}.actions small{display:block;font-size:8px;color:#9e9889;font-weight:400;margin-top:5px}.below-note{font-size:11px;text-align:center;color:#93927e;margin:22px 0 35px}.below-note img{width:18px;image-rendering:pixelated;vertical-align:middle;margin-right:6px}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:21px 3px 26px;color:#aaa38e;font-size:10px}.login{max-width:470px;margin:35px auto;padding:25px 38px;text-align:center}.welcome-art{background:#f3ead2;border-radius:50%;width:120px;height:120px;margin:0 auto 20px}.welcome-art img{width:120px;image-rendering:pixelated}.login h1{font-size:34px}label{display:block;text-align:left;font-size:12px;color:#7f7a6d}input:not([type=checkbox]){width:100%;height:50px;border:1px solid #ddd4c0;border-radius:12px;background:#fffdf7;padding:12px;font-size:16px;margin:7px 0 17px;color:#4c443c}.primary{background:var(--green)!important;color:#fff9e9;width:100%;border:0}.fine{font-size:11px;color:#9d9585;line-height:1.8}.login form{margin-top:24px}.login .primary{margin:3px 0 10px}dialog{border:1px solid var(--line);border-radius:24px;padding:28px;max-width:430px;width:calc(100% - 36px);background:#fffaf0;color:#4c443c}dialog::backdrop{background:#383f35aa;backdrop-filter:blur(3px)}dialog button{width:100%;margin:7px 0}dialog h2{margin:5px 0 16px}.name-options{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:20px 0}.name-options button{margin:0}.toggle{padding:14px 0;font-size:15px;display:flex;gap:14px;align-items:center}.toggle input{width:24px;height:24px;accent-color:var(--green)}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);padding:17px 23px;background:#4d634c;color:#fff9e9;border-radius:16px;box-shadow:0 6px 30px #3333;z-index:20;max-width:calc(100% - 24px);width:max-content;font-size:14px;text-align:center}.reduced *{animation:none!important;transition:none!important}@keyframes frames{to{background-position:133.333% 0}}@keyframes egg-breathe{50%{transform:rotate(3deg) translateY(-2px)}}@keyframes heart-rise{from{opacity:1;transform:translateY(8px)}to{opacity:0;transform:translateY(-30px)}}@keyframes ball{50%{transform:translateX(-130px) rotate(-150deg)}}@keyframes follow{50%{transform:translateY(-18px)}}@keyframes chase{50%{transform:translateX(24px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(min-width:1000px){.shell{max-width:870px}.scene{aspect-ratio:240/105}.room{bottom:-12%}}@media(max-width:600px){.shell{padding:0 15px}.brand{padding:16px 2px 14px}.brand a{font-size:20px}.brand a span{font-size:9px}.brand-note{display:none}.pet-heading{padding:19px 2px 15px}h1{font-size:32px}.eyebrow{font-size:9px;margin-bottom:5px}.muted{font-size:11px}.scene{aspect-ratio:240/160}.room{height:100%;object-fit:cover}.pet-touch{width:40%;left:31%;bottom:12%}.scene-top{height:34px;padding:0 13px;font-size:10px}.live-dot{font-size:9px}.pet-message{padding:11px 9px}.pet-message p{font-size:10px}.needs{padding:15px 13px 19px;gap:10px}.need label{font-size:10px}.need output{display:none}.need meter{height:7px}.actions{grid-template-columns:repeat(3,1fr);gap:9px;margin-top:13px}.actions button{min-height:79px;padding:7px 2px;border-radius:15px}.actions img{width:32px;height:32px;margin-bottom:3px}.actions small{display:none}.below-note{font-size:10px;margin:17px 0 22px}footer{font-size:9px;padding-top:14px}footer span{display:none}.login{padding:23px;margin-top:22px}.login h1{font-size:31px}.settings{width:48px;min-height:48px}.bowl{width:14%}.bed{width:22%;left:75%}}@media(max-height:750px) and (max-width:600px){.brand a span{display:none}.brand{padding:10px 0}.pet-heading{padding:12px 2px}.scene{aspect-ratio:240/125}.room{height:auto}.actions button{min-height:68px}.actions img{width:28px;height:28px}.needs{padding:12px}.below-note{margin:12px 0}footer{padding:11px 0}.pet-message{padding:9px}.pet-heading h1{font-size:28px}}@media(max-width:340px){.shell{padding:0 9px}.needs{gap:6px;padding:12px 8px}.live-dot{display:none}}

@media(max-height:650px) and (max-width:600px){.scene{aspect-ratio:240/103}.pet-heading{padding:9px 2px}.pet-heading .muted{margin:4px 0}.scene-top{height:29px}.below-note{font-size:9px}#toast{top:12px;bottom:auto}.pet-message p{line-height:1.3}.settings{min-height:44px;width:44px}}

/* The moving actor contains its own touch target and feedback. */
.actor{position:absolute;left:52%;bottom:8%;width:34%;aspect-ratio:1;transform:translateX(-50%);transition-property:left,bottom;transition-duration:0s;transition-timing-function:linear;z-index:3;pointer-events:none}
.scene .pet-touch{inset:0;width:100%;height:100%;min-height:0;aspect-ratio:1;pointer-events:auto;touch-action:manipulation}
.scene .pet-touch:active{transform:none}
.actor .effect{width:29%;left:35%;top:1%;z-index:5}
.actor .sleep-mark{left:67%;top:12%;font-size:18px;letter-spacing:3px;white-space:nowrap}
.cat-bubble{position:absolute;left:50%;top:0;transform:translate(-50%,-50%);background:#fff;color:#24333e;border:2px solid #26324c;border-radius:15px;padding:6px 10px;white-space:nowrap;font-size:13px;font-weight:bold;box-shadow:3px 3px 0 #26324c25;z-index:6}
.actor[data-mood=walk] .sprite{animation-duration:.55s}
.actor[data-mood=eat] .sprite,.actor[data-mood=drink] .sprite{animation-duration:.7s}
.actor.hop .pet-touch{animation:cat-hop .55s ease-in-out 2}
.actor.stretch .pet-touch{animation:cat-stretch 1.1s ease-in-out}
.actor.refusing .pet-touch{animation:cat-no .5s ease-in-out}
.scene.playing .pet-touch{animation:none}
.scene.playing .toy{animation:ball 1.2s ease-in-out 3}
@keyframes cat-hop{50%{transform:translateY(-15px)}}
@keyframes cat-stretch{50%{transform:scaleX(1.09) scaleY(.88);transform-origin:50% 90%}}
@keyframes cat-no{25%,75%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@media(max-width:600px){.actor{width:40%}}
@media(prefers-reduced-motion:reduce){.actor{transition-duration:0s!important}}

/* Saturated colors, crisp outlines, neutral white panels. */
:root{--green:#006b69;--muted:#526778;--line:#183e5e;color:#17354f;background:#123d61}
body{background:#123d61;color:#17354f}
.brand{border-color:#5682a0}.brand a{color:#ffcf24}.brand a span,.brand-note{color:#d6eefb}
.pet-heading h1{color:#fff}.pet-heading .eyebrow{color:#ffcf24}.pet-heading .muted{color:#d6eefb}
.settings{background:#ffcf24;color:#17354f;box-shadow:3px 3px 0 #072b46}
.card{background:#fff;border:2px solid #092b47;box-shadow:5px 6px 0 #072b4650}
.scene-top{background:#006b69;color:#fff}.live-dot{color:#fff}.live-dot:before{background:#ffcf24}
.pet-message{background:#fff;border-color:#123d61}.pet-message p{color:#244f63}.message-dot{background:#008d58}
.needs{background:#fff}.need label{color:#21435b}.need output{color:#4f6776}.need meter{background:#dae4eb}
meter::-webkit-meter-bar{background:#dae4eb}meter::-webkit-meter-optimum-value{background:#009968}meter::-moz-meter-bar{background:#009968}
.actions button{border:2px solid #092b47;box-shadow:3px 4px 0 #072b46;color:#fff;background:#006b69}
.actions button:nth-child(1){background:#ffb51b;color:#2e260b}.actions button:nth-child(2){background:#00b8df;color:#092b47}
.actions button:nth-child(3){background:#7944d6}.actions button:nth-child(4){background:#2364d6}
.actions button:nth-child(5){background:#008765}.actions button:nth-child(6){background:#d83d69}
.actions button:hover{filter:brightness(1.08)}.actions small{color:inherit;opacity:.9}
.below-note,footer{color:#d6eefb}footer{border-color:#5682a0}
.login h1,h2{color:#075d67}.login .eyebrow{color:#007d77}.welcome-art{background:#ffcf24}
.primary{background:#00796e!important;color:#fff}.login .muted,.fine,.login label{color:#486275}
input:not([type=checkbox]){background:#fff;border:2px solid #537d97;color:#17354f}
dialog{background:#fff;color:#17354f;border:2px solid #092b47;box-shadow:5px 6px 0 #072b4650}
dialog button{border-color:#7197ac;background:#fff;color:#17354f}.toggle input{accent-color:#00796e}
#toast{background:#092b47;color:#fff;border:2px solid #ffcf24}.cat-bubble{border-color:#092b47}
.scene.night:after{background:#14286766;z-index:4}.actor .sleep-mark{color:#fff;text-shadow:2px 2px #172e62}
.scene .pet-touch:disabled{opacity:1;cursor:default}

.need label{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-start;min-height:30px}.need .need-icon{width:26px;height:26px;object-fit:contain;image-rendering:pixelated;flex-shrink:0}.need label output{margin-left:auto}
@media(max-width:600px){.need label{font-size:10px;gap:2px}.need .need-icon{width:23px;height:23px}.need label output{width:100%;text-align:right}}

.need meter{--need-color:#009968}.need meter[data-level="medium"]{--need-color:#f4ba00}.need meter[data-level="low"]{--need-color:#e63839}
.need meter::-webkit-meter-optimum-value,.need meter::-webkit-meter-suboptimum-value,.need meter::-webkit-meter-even-less-good-value{background:var(--need-color)}
.need meter::-moz-meter-bar{background:var(--need-color)}
@media(max-width:600px){.need label{flex-direction:column;align-items:center;flex-wrap:nowrap;gap:3px;font-size:9px;text-align:center}.need label output{margin-left:0;text-align:center}.need .need-icon{width:26px;height:26px}}
