:root{--paper: oklch(.971 .016 84);--card: oklch(.988 .009 88);--pet-cream: oklch(.985 .012 88);--ink: oklch(.34 .038 55);--ink-soft: oklch(.5 .035 58);--ink-faint: oklch(.66 .028 62);--line: oklch(.865 .028 75);--user-line: oklch(.82 .06 60);--accent: oklch(.71 .15 52);--accent-deep: oklch(.64 .155 46);--accent-tint: oklch(.936 .045 68);--blush: oklch(.8 .11 38);--ear-pink: oklch(.89 .06 48);--shadow: oklch(.9 .028 80);--grass: oklch(.77 .05 128);--ok: oklch(.7 .13 150);--font-hand: "Patrick Hand", "Segoe Print", "Bradley Hand", cursive;--font-ui: -apple-system, "Segoe UI", system-ui, sans-serif;--ease-out: cubic-bezier(.25, 1, .5, 1);--ease-io: cubic-bezier(.65, 0, .35, 1);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 40px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overflow:hidden}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.32 0 0 0 0 0.24 0 0 0 0 0.16 0 0 0 0.06 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}.room{height:100dvh;max-width:720px;margin-inline:auto;padding-inline:clamp(16px,4vw,28px);display:flex;flex-direction:column}.masthead{display:flex;justify-content:space-between;align-items:baseline;padding:18px 2px 0}.wordmark{margin:0;font:400 26px/1 var(--font-hand);letter-spacing:.5px}.tagline{margin-left:10px;font-size:13px;font-weight:400;letter-spacing:.3px;color:var(--ink-faint)}.model-tag{display:flex;align-items:center;gap:6px;font:11.5px/1 var(--font-ui);letter-spacing:.3px;color:var(--ink-faint)}.model-dot{width:7px;height:7px;border-radius:50%;background:var(--ok)}.model-tag.is-off .model-dot{background:var(--line)}.sign{position:absolute;right:calc(100% + 12px);bottom:2px;width:150px;padding:10px 13px;background:var(--card);border:1.5px solid var(--line);border-radius:14px 17px 13px 16px;rotate:-2.2deg;font-family:var(--font-hand);z-index:2;box-shadow:0 2px color-mix(in oklch,var(--line) 50%,transparent)}.sign:after{content:"";position:absolute;left:54%;bottom:-13px;width:3px;height:15px;background:var(--ink-soft);border-radius:2px;z-index:-1}.sign-name{font-size:16px;color:var(--ink);line-height:1.2}.sign-name span{margin-left:6px;font-size:12px;color:var(--ink-faint)}.sign-mood{margin-top:1px;font-size:12.5px;color:var(--ink-soft)}.sign-mood:before{content:"~ ";color:var(--ink-faint)}.sign-grow{display:flex;align-items:center;gap:6px;margin-top:8px}.sign-stage{font-size:12.5px;color:var(--ink-soft);white-space:nowrap}.sign-bar{flex:1;height:8px;background:var(--paper);border:1.5px solid var(--user-line);border-radius:5px 6px;overflow:hidden}.sign-bar i{display:block;height:100%;background:var(--accent);transition:width .7s var(--ease-out)}.sign-hearts{display:flex;gap:3px;margin-top:8px}.hh path{fill:transparent;stroke:var(--user-line);stroke-width:1.7;transition:fill .35s,stroke .35s}.hh.on path{fill:var(--accent);stroke:var(--accent-deep)}.sign-hungry{display:block;margin-top:6px;font-size:12px;font-style:normal;color:var(--accent-deep);animation:soft-pulse 2s var(--ease-io) infinite}.stage{position:relative;display:flex;justify-content:center;padding-top:clamp(44px,10vh,96px)}.pet-anchor{position:relative;display:flex;justify-content:center;align-items:flex-end}.status-chip{position:absolute;bottom:4px;left:50%;transform:translate(-50%);padding:6px 12px;font:12.5px/1 var(--font-hand);color:var(--ink-soft);background:var(--card);border:1.5px dashed var(--line);border-radius:999px;white-space:nowrap;animation:soft-pulse 1.6s var(--ease-io) infinite}@keyframes soft-pulse{0%,to{opacity:1}50%{opacity:.55}}.pet{position:relative;z-index:3;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.pet.is-dragging{cursor:grabbing}.pet-hold{transition:transform .42s var(--ease-out)}.pet svg{display:block;width:min(230px,52vw);height:auto;transition:width .8s var(--ease-out)}.pet.stage-0 svg{width:min(172px,42vw)}.pet.stage-2 svg{width:min(258px,56vw)}.pet.stage-0 .blush ellipse{opacity:.6}.pet.is-bored .ahoge{transform:rotate(26deg);transition:transform .9s var(--ease-io)}.pet.is-bored .pet-body{animation-duration:5s}.pet.is-bored .eyes-open{transform:translate(var(--gx, 0px),var(--gy, 0px)) scaleY(.82)}.pet svg *{transform-box:fill-box}.ground-shadow{fill:var(--shadow)}.grass{fill:none;stroke:var(--grass);stroke-width:2;stroke-linecap:round}.pet .body,.pet .ear{fill:var(--pet-cream);stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round}.ear-inner{fill:var(--ear-pink)}.ahoge{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round;transform-origin:50% 100%}.eye-dot{fill:var(--ink)}.eyes-closed path,.eyes-happy path,.eyes-dizzy path,.brows path{fill:none;stroke:var(--ink);stroke-linecap:round}.eyes-closed path,.eyes-happy path{stroke-width:3.5}.eyes-dizzy path{stroke-width:3}.brows path{stroke-width:2.6}.mouth-rest,.mouth-flat,.mouth-happy,.mouth-wavy,.mouth-pout,.eyes-annoyed .lid{fill:none;stroke:var(--ink);stroke-linecap:round;stroke-width:2.8}.mouth-open{fill:var(--ink)}.sweat{fill:var(--card);stroke:var(--ink-faint);stroke-width:1.8;opacity:0;transition:opacity .25s var(--ease-out)}.spark{fill:var(--accent);opacity:0;transform-origin:50% 50%}.blush ellipse{fill:var(--blush);opacity:.45;transition:opacity .3s}.zzz text{fill:var(--ink-faint);font-family:var(--font-hand);opacity:0}.eyes>*,.mouths>*,.brows{opacity:0;transition:opacity .14s var(--ease-out)}.eyes-open{opacity:1;transform:translate(var(--gx, 0px),var(--gy, 0px));transition:opacity .14s var(--ease-out),transform .55s var(--ease-out)}.pet.is-blinking .eyes-open,.mood-sleepy .eyes-open,.mood-happy .eyes-open,.mood-dizzy .eyes-open{opacity:0}.pet.is-blinking .eyes-closed,.mood-sleepy .eyes-closed,.mood-happy .eyes-happy,.mood-dizzy .eyes-dizzy,.mouth-rest{opacity:1}.mood-talking .mouth-rest,.mood-thinking .mouth-rest,.mood-happy .mouth-rest,.mood-dizzy .mouth-rest{opacity:0}.mood-thinking .mouth-flat{opacity:1}.mood-talking .mouth-open{opacity:1;transform-origin:50% 15%;animation:yap .34s var(--ease-io) infinite alternate}.mood-happy .mouth-happy,.mood-dizzy .mouth-wavy,.mood-thinking .brows{opacity:1}.mood-happy .blush ellipse{opacity:.68}@keyframes yap{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}.rx-pat .eyes-open,.rx-pat .mouth-rest{opacity:0}.rx-pat .eyes-happy,.rx-pat .mouth-happy{opacity:1}.rx-pat .blush ellipse{opacity:.8}.rx-pat .pet-rig{animation:purr .9s var(--ease-io)}@keyframes purr{0%,to{transform:rotate(0)}25%{transform:rotate(1.4deg)}75%{transform:rotate(-1.4deg)}}.rx-poke .eyes-open,.rx-poke .mouth-rest{opacity:0}.rx-poke .eyes-annoyed,.rx-poke .mouth-pout{opacity:1}.rx-poke .pet-rig{animation:recoil .5s var(--ease-out)}@keyframes recoil{0%{transform:translate(0)}25%{transform:translate(-3.5px)}60%{transform:translate(2px)}to{transform:translate(0)}}.rx-distracted .eyes-open{opacity:1;transform:translate(0) scale(1.18)}.rx-distracted .mouth-rest,.rx-distracted .mouth-flat{opacity:0}.rx-distracted .mouth-open{opacity:1;animation:none;transform:scale(.6)}.rx-distracted .brows{opacity:0}.rx-distracted .sweat{opacity:1}.rx-startled .eyes-open{opacity:1;transform:translate(0) scale(1.22)}.rx-startled .eyes-closed,.rx-startled .mouth-rest{opacity:0}.rx-startled .mouth-open{opacity:1;animation:none;transform:scale(.65)}.rx-idea .eyes-open{transform:translate(var(--gx, 0px),var(--gy, 0px)) scale(1.15)}.rx-idea .ahoge{animation:boing .65s var(--ease-out)}.rx-idea .spark,.rx-insight .spark{animation:spark-pop .9s var(--ease-out)}.rx-insight .eyes-open{transform:translate(var(--gx, 0px),var(--gy, 0px)) scale(1.12)}.rx-insight .brows{opacity:0}@keyframes spark-pop{0%{opacity:0;transform:scale(.3) rotate(-20deg)}30%{opacity:1;transform:scale(1.15) rotate(8deg)}70%{opacity:1;transform:scale(.95) rotate(0)}to{opacity:0;transform:scale(.7)}}.think-confused .sweat{opacity:1}.think-confused .eyes-open{transform:translate(var(--gx, 0px),var(--gy, 0px)) scaleY(.8)}.rx-dangle .eyes-open{opacity:1;transform:translateY(2px) scale(1.15)}.rx-dangle .mouth-rest,.rx-dangle .mouth-flat,.rx-dangle .mouth-open{opacity:0;animation:none}.rx-dangle .mouth-wavy{opacity:1}.rx-dangle .ear-gl{transform:rotate(6deg)}.rx-dangle .ear-gr{transform:rotate(-6deg)}.rx-land .pet-rig{animation:land-squash .45s var(--ease-out)}@keyframes land-squash{0%{transform:scale(1.06,.88)}45%{transform:scale(.98,1.05)}to{transform:scale(1)}}.pet-rig{transform-origin:50% 100%}.pet-body{transform-origin:50% 100%;animation:breathe 3.6s var(--ease-io) infinite}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.012,1.03)}}.mood-listening .pet-rig{transform:translateY(-3px);transition:transform .25s var(--ease-out)}.mood-listening .eyes-open{transform:translate(var(--gx, 0px),var(--gy, 0px)) scale(1.1)}.mood-thinking .pet-rig{animation:sway 3.2s var(--ease-io) infinite}@keyframes sway{0%,to{transform:rotate(-1.5deg)}50%{transform:rotate(1.8deg)}}.mood-talking .pet-rig{animation:chatter .52s var(--ease-io) infinite}@keyframes chatter{0%,to{transform:translateY(0)}30%{transform:translateY(-2.5px)}}.mood-happy .pet-rig{animation:hop .6s var(--ease-out)}@keyframes hop{0%{transform:translateY(0) scale(1)}22%{transform:translateY(1px) scale(1.07,.9)}55%{transform:translateY(-15px) scale(.96,1.06)}80%{transform:translateY(0) scale(1.04,.95)}to{transform:translateY(0) scale(1)}}.mood-dizzy .pet-rig{animation:wobble .9s var(--ease-io)}@keyframes wobble{0%{transform:rotate(0)}20%{transform:rotate(-4deg)}45%{transform:rotate(3.2deg)}70%{transform:rotate(-1.6deg)}to{transform:rotate(0)}}.mood-sleepy .pet-rig{transform:translateY(3px);transition:transform .7s var(--ease-io)}.mood-sleepy .pet-body{animation-duration:5.6s}.ear-g{transform-origin:50% 100%;transition:transform .26s var(--ease-out)}.mood-listening .ear-gl{transform:rotate(-7deg)}.mood-listening .ear-gr{transform:rotate(7deg)}.mood-idle .ear-gr{animation:twitch 9s var(--ease-io) infinite}@keyframes twitch{0%,93%,to{transform:rotate(0)}95%{transform:rotate(4.5deg)}97%{transform:rotate(-2deg)}}.mood-listening .ahoge,.mood-happy .ahoge{animation:boing .65s var(--ease-out)}@keyframes boing{0%{transform:rotate(0)}30%{transform:rotate(12deg)}60%{transform:rotate(-7deg)}to{transform:rotate(0)}}.mood-sleepy .zzz text{animation:zdrift 3.2s var(--ease-io) infinite}.mood-sleepy .z2{animation-delay:.6s}.mood-sleepy .z3{animation-delay:1.2s}@keyframes zdrift{0%,12%{opacity:0;transform:translateY(4px)}40%{opacity:.75}to{opacity:0;transform:translate(10px,-22px)}}.bubble{position:absolute;bottom:calc(100% - 52px);left:60%;width:min(232px,42vw);z-index:2;opacity:0;transform:translateY(8px) scale(.92);transform-origin:bottom left;transition:opacity .35s var(--ease-out),transform .35s var(--ease-out);pointer-events:none}.bubble.is-active{opacity:1;transform:none}.bubble-cloud{background:var(--card);border:1.5px solid var(--line);border-radius:26px 32px 28px 34px/32px 26px 34px 24px;padding:13px 16px 12px;box-shadow:0 2px color-mix(in oklch,var(--line) 50%,transparent)}.bubble-scroll{max-height:110px;overflow-y:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 20px);mask-image:linear-gradient(to bottom,transparent 0,#000 20px)}.bubble-scroll::-webkit-scrollbar{display:none}.bubble-text{font-family:var(--font-hand);font-size:13.5px;line-height:1.55;color:var(--ink-soft);white-space:pre-wrap;overflow-wrap:anywhere}.bubble-dot{position:absolute;background:var(--card);border:1.5px solid var(--line);border-radius:50%}.bubble-dot-a{width:11px;height:11px;left:6px;bottom:-13px}.bubble-dot-b{width:6px;height:6px;left:-5px;bottom:-25px}.bubble-lost{position:absolute;right:12px;bottom:7px;font:12.5px/1 var(--font-hand);color:var(--accent-deep);opacity:0;transition:opacity .2s var(--ease-out)}.bubble.is-scattered .bubble-lost{opacity:1}.bubble.is-scattered .bubble-text{animation:scatter 1.1s var(--ease-io)}@keyframes scatter{15%{transform:translate(2px,-1px) skew(4deg);opacity:.35}45%{transform:translate(-2px,1px) skew(-3deg);opacity:.6}to{transform:none;opacity:1}}.log{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.log-inner{display:flex;flex-direction:column;gap:14px;padding:18px 2px 26px}.msg{max-width:78%;padding:10px 15px;font-size:15px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;animation:msg-in .32s var(--ease-out) both}@keyframes msg-in{0%{opacity:0;transform:translateY(9px)}}.msg-user{align-self:flex-end;font-family:var(--font-ui);background:var(--accent-tint);border:1.5px solid var(--user-line);border-radius:16px 14px 5px 17px;rotate:.25deg}.msg-pet{align-self:flex-start;font-family:var(--font-hand);font-size:16.5px;line-height:1.5;background:var(--card);border:1.5px solid var(--line);border-radius:5px 17px 15px 14px;rotate:-.2deg}.msg-pet.is-error{border-style:dashed;color:var(--ink-soft)}.caret{display:inline-block;width:7px;height:7px;margin-left:6px;border-radius:50%;background:var(--accent);animation:soft-pulse 1s var(--ease-io) infinite}.muse-fold{margin-top:8px;padding-top:7px;border-top:1px dashed var(--line);font-size:13px;color:var(--ink-faint)}.muse-fold summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;transition:color .15s}.muse-fold summary::-webkit-details-marker{display:none}.muse-fold summary:after{content:" ▾";font-size:10px}.muse-fold[open] summary:after{content:" ▴";font-size:10px}.muse-fold summary:hover{color:var(--ink-soft)}.muse-text{margin-top:6px;line-height:1.6;white-space:pre-wrap;color:var(--ink-faint)}.dock{padding:6px 0 max(14px,env(safe-area-inset-bottom))}.chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:12px;animation:msg-in .4s var(--ease-out) .15s both}.chip{padding:8px 14px;font:14.5px/1.3 var(--font-hand);color:var(--ink-soft);background:var(--card);border:1.5px solid var(--line);border-radius:14px 18px 12px 16px;cursor:pointer;transition:transform .18s var(--ease-out),border-color .18s,color .18s}.chip:hover:not(:disabled){transform:translateY(-1.5px) rotate(-.5deg);border-color:color-mix(in oklch,var(--accent) 50%,var(--line));color:var(--ink)}.chip:disabled{opacity:.5;cursor:default}.composer{display:flex;align-items:flex-end;gap:10px;padding:9px 9px 9px 17px;background:var(--card);border:1.5px solid var(--line);border-radius:19px 23px 17px 25px;transition:border-color .2s,box-shadow .2s}.composer:focus-within{border-color:color-mix(in oklch,var(--accent) 55%,var(--line));box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 14%,transparent)}.composer textarea{flex:1;min-height:24px;max-height:130px;padding:2px 0;border:0;outline:0;background:transparent;resize:none;font:15px/1.6 var(--font-ui);color:var(--ink);field-sizing:content}.composer textarea::placeholder{color:var(--ink-faint);font-family:var(--font-hand);font-size:15.5px}.send{flex:none;display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:50%;background:var(--accent);color:#fffbf4;cursor:pointer;transition:transform .15s var(--ease-out),background .2s}.send:hover:not(:disabled){transform:scale(1.07) rotate(3deg);background:var(--accent-deep)}.send:active:not(:disabled){transform:scale(.93)}.send:disabled{background:var(--line);color:var(--paper);cursor:default}body.night{--paper: oklch(.865 .025 65);--card: oklch(.905 .018 70);--pet-cream: oklch(.93 .014 75);--line: oklch(.77 .028 70);--shadow: oklch(.79 .028 72);--accent-tint: oklch(.85 .045 65);--ink-faint: oklch(.58 .03 62)}body.night .stage:before{content:"";position:absolute;top:clamp(18px,4vh,40px);right:14%;width:30px;height:30px;border-radius:50%;box-shadow:9px 5px #f6ecc2;opacity:.85}body.night .stage:after{content:"";position:absolute;top:30px;left:16%;width:90px;height:50px;background:radial-gradient(circle 1.6px at 10px 8px,oklch(.93 .04 95) 98%,transparent),radial-gradient(circle 1.2px at 60px 30px,oklch(.93 .04 95) 98%,transparent),radial-gradient(circle 1.4px at 84px 4px,oklch(.93 .04 95) 98%,transparent);opacity:.8}@media (prefers-reduced-motion: reduce){.pet-rig,.pet-body,.ear-g,.ahoge,.mouth-open,.zzz text,.status-chip,.caret,.chips,.spark,.bubble-text{animation:none!important}.msg{animation:reduced-fade .2s var(--ease-out) both}@keyframes reduced-fade{0%{opacity:0}}}@media (max-width: 600px){.wordmark{font-size:22px}.tagline{display:none}.msg{max-width:88%}.bubble{left:auto;right:-8px;width:min(230px,62vw);transform-origin:bottom right}.pet svg{width:min(190px,54vw)}.sign{right:calc(100% - 34px);width:122px;padding:8px 10px}.sign-name{font-size:14px}}
