:root{color-scheme:light;--paper:#f7f5ee;--ink:#30463b;--muted:#81877b;--line:#dedfd4;--accent:#bf684e;--lavender:#e7e5f0;--serif:Georgia,'Times New Roman',serif;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{opacity:.6;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button{border:0}a{color:inherit;text-decoration:none}p{line-height:1.65}h1,h2,h3,p{margin:0}.shell{max-width:1460px;margin:auto;padding:0 56px}header{height:112px;display:flex;align-items:center;border-bottom:1px solid var(--line);gap:30px}.brand{font-family:var(--serif);font-size:38px;font-weight:bold;letter-spacing:-2px;display:flex;align-items:center;gap:12px}.brand-mark{font-family:var(--serif);height:37px;width:32px;font-size:43px;line-height:33px;position:relative;letter-spacing:-6px}.brand-mark span{color:var(--accent);font-size:15px;position:absolute;left:16px;top:9px}.brand-dot{color:var(--accent);margin-left:-13px}.brand-note,.eyebrow,.section-heading,.demo-tag,.connection,.widget-tools,.widget-caption{font-size:10px;letter-spacing:1.2px;font-weight:600}.brand-note{padding-left:24px;border-left:1px solid var(--line);color:var(--muted)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:16px}.button{border-radius:7px;padding:13px 18px;font-weight:550;font-size:12px;display:inline-block;text-align:center;transition:background .18s,transform .18s}.button:hover{transform:translateY(-2px)}.dark{background:var(--ink);color:#fffdf3}.subtle{background:#eeede4}.terracotta{background:var(--accent);color:white}.full{width:100%;margin-top:14px}.demo-tag{background:#ece7d4;padding:8px;border-radius:4px;letter-spacing:.4px;color:#827453}.intro{display:flex;align-items:flex-end;justify-content:space-between;padding:48px 0 38px;gap:25px}.eyebrow{color:#818673;display:flex;align-items:center;gap:7px}.tiny-flower{color:var(--accent);font-size:19px;margin-right:3px}h1{font-family:var(--serif);font-size:clamp(36px,3.5vw,52px);font-weight:400;line-height:1.12;letter-spacing:-1.7px;margin-top:17px}h1 em{font-weight:400;color:#737e6a}.intro>p{font-size:13px;color:#7e8479;line-height:1.8;padding-right:12px;padding-bottom:5px}.dashboard{display:grid;grid-template-columns:330px 1fr;gap:23px}.send-panel{border:1px solid var(--line);border-radius:13px;padding:25px;background:#faf9f4}.section-heading{display:flex;align-items:center;gap:10px;letter-spacing:1.05px;font-size:9px}.step{border:1px solid #ccd1c3;border-radius:50%;height:23px;min-width:23px;display:grid;place-items:center;font-size:9px;letter-spacing:0;color:#89917e}.my-pet{display:flex;align-items:center;margin:19px 0 24px;padding-bottom:19px;border-bottom:1px solid var(--line);gap:9px}.my-pet>.pet-art{width:64px;height:75px;background:#efeee6;border-radius:50%;padding:3px;flex-shrink:0}.my-pet strong{display:block;font-size:14px;margin-bottom:6px}.my-pet div>span{font-size:10px;color:var(--muted)}.edit-pet{margin-left:auto;border-radius:50%;width:26px;height:26px;background:#efeee6}.send-intro{font-size:12px;margin-bottom:12px}.signals{display:grid;gap:9px}.signal-button{display:flex;align-items:center;width:100%;text-align:left;padding:13px 12px;border:1px solid #dedfd6;border-radius:8px;background:#f9f8f2;gap:11px;font-size:12px;transition:all .18s}.signal-button:hover{background:#f0ece0;border-color:#b0b5a5;transform:translateX(3px)}.signal-emoji{font-size:23px;width:29px}.arrow{color:#939982;margin-left:auto;font-size:17px}.gentle-note{font-size:10px;color:#8a8f80;margin-top:22px}.gentle-note>span{font-size:17px;color:var(--accent);margin-right:5px}.partner-panel{border:1px solid #d7ddcd;border-radius:13px;overflow:hidden;background:#e9eedf;display:flex;flex-direction:column;min-width:0}.partner-top{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:23px 25px}.connection{font-size:9px;font-weight:400;letter-spacing:0;color:#7e8975;display:flex;align-items:center;gap:6px}.connection i{height:5px;width:5px;border-radius:50%;background:#d3a274}.connection i.on{background:#708d60}.pet-stage{position:relative;min-height:425px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:20px 20px 19px;isolation:isolate;flex:1}.stage-orbit{position:absolute;width:430px;height:430px;border:1px solid #dde4d3;border-radius:50%;z-index:-1;top:39px;left:50%;transform:translateX(-50%)}.orbit-two{width:335px;height:335px;top:85px}.stage-flower{position:absolute;right:15%;top:41%;font-size:36px;color:#bdc4a7}.stage-dot{position:absolute;left:17%;top:50%;font-size:70px;color:#bfc9ae}.hero-pet .pet-button{width:190px;height:222px}.pet-button{position:relative;padding:0;background:transparent;display:block;border-radius:45%;flex-shrink:0;width:190px;height:222px}.pet-art{width:100%;height:100%;overflow:visible}.pet-body{animation:breathe 3.8s ease-in-out infinite;transform-origin:120px 250px}.pet-eyes{animation:blink 6s infinite;transform-origin:120px 120px}.pet-tail{transform-origin:165px 200px;animation:tail 4s ease-in-out infinite}.pet-hearts,.pet-bowl{display:none}.pet-spark{position:absolute;color:#b2b99b;font-size:26px;pointer-events:none}.spark-one{top:39%;left:0}.spark-two{top:59%;right:-6%;font-size:16px}.pet-button:hover .pet-body{animation:wiggle .7s ease-in-out infinite}.pet-button[data-mood=hungry] .pet-bowl{display:block}.pet-button[data-mood=hungry] .pet-body{animation:hungry 1.8s ease-in-out infinite}.pet-button[data-mood=hug] .pet-arm{transform-origin:var(--arm-origin,76px 183px);animation:wave 1.5s ease-in-out infinite}.pet-button[data-mood=miss] .pet-hearts,.pet-button[data-mood=hug] .pet-hearts{display:block;animation:float 2.4s ease-in-out infinite}.pet-button[data-mood=walk] .pet-body{animation:wiggle 1s ease-in-out infinite}.pet-button.petted .pet-body{animation:pet .8s ease-in-out}.pet-button.petted .pet-hearts{display:block;animation:float 1s ease-in-out}.speech{position:relative;width:min(380px,94%);padding:19px 23px;border:1px solid #d9dccf;background:#fbfaf4;border-radius:13px;box-shadow:0 7px 24px #4c5a3910;text-align:center;margin-bottom:3px}.speech:after{content:'';position:absolute;bottom:-6px;left:calc(50% - 6px);width:11px;height:11px;background:#fbfaf4;border-right:1px solid #d9dccf;border-bottom:1px solid #d9dccf;transform:rotate(45deg)}.speech .eyebrow{justify-content:center;font-size:9px;letter-spacing:.45px}.speech .eyebrow span{font-size:14px}.speech h2{font:400 26px var(--serif);margin:9px 0 7px;letter-spacing:-.6px}.speech>p{font-size:10px;color:#8a907e}.replies{display:grid;gap:5px;margin-top:14px}.replies>button{border:1px solid #e2e3d8;border-radius:6px;padding:10px 12px;background:#f0f1e7;text-align:left;font-size:11px;display:flex;justify-content:space-between}.replies>button:hover{background:#dfe5d2}.replies>button.dismiss{border:0;background:transparent;justify-content:center;color:#8a907e;font-size:10px;padding:8px}.idle-speech{text-align:center;max-width:370px}.idle-speech>span{color:#929f7a;font-size:22px}.idle-speech h2{font:400 28px/1.2 var(--serif);letter-spacing:-.7px;margin:8px 0}.idle-speech>p{font-size:11px;color:#879079}.idle-speech .button{margin-top:14px}.pet-name{font-size:12px;text-align:center}.pet-name span{display:block;color:#89937d;font-size:9px;margin-top:6px}.stage-footer{border-top:1px solid #d5ddc9;padding:17px 25px;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:9px;color:#7c896e;background:#e3e9d9}.text-button{padding:0;background:transparent;text-decoration:underline;text-underline-offset:4px;font-size:10px}.bottom-row{display:grid;grid-template-columns:1fr 310px;gap:30px;padding:32px 0}.history{padding:0 3px}.history-items{margin-top:17px;display:grid;gap:13px}.history-item{display:flex;align-items:center;gap:13px}.history-icon{background:#eeece2;height:36px;width:36px;border-radius:50%;display:grid;place-items:center;font-size:17px}.history-item strong{font-size:11px;font-weight:550}.history-item strong span{font-weight:400;color:#969988}.history-item p{font-size:10px;color:#8c9282;margin-top:3px}.history-item time{font-size:9px;color:#9a9d91;margin-left:auto}.empty-history{font-size:12px;color:#929686;margin-top:15px}.desktop-note{background:#efeddf;border-radius:10px;padding:22px 24px;position:relative;align-self:start}.desktop-note h3{font:400 23px var(--serif);letter-spacing:-.5px}.desktop-note p{font-size:11px;color:#8b8f7a;margin:9px 0 14px;max-width:215px}.note-flower{position:absolute;top:19px;right:20px;color:#b7b798;font-size:29px}footer{padding:21px 0 27px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:#979c8f;font-size:10px}footer>div{display:flex;gap:22px;align-items:center}footer>div>span{font-size:8px;letter-spacing:1px}footer button{font-size:9px;color:#929887;background:none;padding:0}.coral{color:var(--accent);margin-left:5px}
dialog{background:var(--paper);border:1px solid var(--line);border-radius:17px;padding:34px;max-width:480px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 25px 100px #20332333}dialog::backdrop{background:#283e315e;backdrop-filter:blur(5px)}dialog h2{font:400 32px var(--serif);letter-spacing:-1px;margin:14px 0 10px}dialog p{font-size:12px;color:#8a907e}dialog .close-dialog{position:absolute;right:15px;top:12px;font-size:25px;background:none;color:#959a8a}label{font-size:11px;font-weight:550;display:block;margin:21px 0 8px}input{border:1px solid #d8dbcc;border-radius:7px;background:#fdfcf7;width:100%;padding:13px 12px;color:var(--ink);font-size:13px}input:focus{outline:2px solid #a5b693}.pet-options{display:flex;gap:8px}.pet-option{background:#eeede3;border:2px solid transparent;padding:5px 4px 12px;border-radius:9px;flex:1;min-width:0}.pet-option.selected{border-color:#889979;background:#e6ebdd}.pet-option .pet-art{height:87px}.pet-option span{font-size:10px;display:block}.form-error{color:#ab503e;margin-top:10px}.privacy-note{font-size:10px!important;margin-top:16px!important;line-height:1.6}.divider{border-top:1px solid var(--line);margin:28px 0 13px;text-align:center;height:1px}.divider span{position:relative;top:-9px;padding:0 13px;background:var(--paper);font-size:11px;color:#9b9e92}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,15px);background:#30483e;color:#f9f8ee;padding:14px 22px;font-size:12px;border-radius:10px;z-index:100;max-width:min(90vw,600px);opacity:0;pointer-events:none;transition:all .2s;box-shadow:0 5px 30px #1d302f20}#toast.visible{opacity:1;transform:translate(-50%,0)}
body.companion{background:transparent!important;overflow:hidden}.companion #app{height:100vh;display:flex;align-items:flex-end;justify-content:center}.companion-wrap{width:320px;max-width:100%;padding:7px 10px 10px;text-align:center;position:relative;display:flex;align-items:center;flex-direction:column}.companion .pet-button{width:180px;height:210px;filter:drop-shadow(0 3px 4px #182b2225)}.widget-tools{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:8px;color:#637357}.widget-tools span{background:#f7f5eee8;padding:5px 9px;border-radius:20px;font-size:9px}.widget-tools button{border-radius:50%;height:24px;width:24px;background:#f7f5eee8;font-size:14px}.companion .speech{width:100%;padding:14px 17px;margin-bottom:2px;box-shadow:0 3px 14px #30483e16}.companion .speech h2{font-size:23px}.companion .replies{gap:4px;margin-top:10px}.companion .replies button{padding:9px 10px}.widget-caption{font-weight:400;font-size:8px;letter-spacing:.3px;color:#6a765c;background:#f7f5eeea;border-radius:20px;padding:5px 10px}.widget-idle{padding:10px 14px;border-radius:12px;font-size:11px;background:#f7f5eef5;line-height:1.5;max-width:270px;box-shadow:0 3px 14px #30483e12}.companion #toast{font-size:10px;padding:10px 12px;bottom:12px}.companion .pet-spark{color:#bcbc7d}
@keyframes breathe{50%{transform:translateY(-3px) scale(1.015,1.01)}}@keyframes blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}@keyframes tail{50%{transform:rotate(-12deg)}}@keyframes float{50%{transform:translateY(-9px);opacity:.6}}@keyframes hungry{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}}@keyframes wiggle{25%{transform:translateY(-5px) rotate(-3deg)}75%{transform:rotate(3deg)}}@keyframes wave{50%{transform:rotate(calc(65deg * var(--arm-side,1)))}}@keyframes pet{40%{transform:translateY(-12px) rotate(-5deg)}70%{transform:translateY(-4px) rotate(5deg)}}
@media(min-width:1450px){.shell{padding:0 70px}.dashboard{grid-template-columns:355px 1fr}.pet-stage{min-height:440px}}
@media(max-width:1050px){.shell{padding:0 28px}.brand-note{display:none}.dashboard{grid-template-columns:290px 1fr}.partner-top{flex-wrap:wrap}.intro>p{font-size:11px}.demo-tag{font-size:8px}.bottom-row{grid-template-columns:1fr 280px}.send-panel{padding:20px}.stage-footer{flex-wrap:wrap}}
@media(max-width:720px){.shell{padding:0 19px}header{height:85px;gap:5px}.brand{font-size:30px}.brand-mark{transform:scale(.85)}.header-actions{gap:6px}.header-actions .button{font-size:10px;padding:10px}.demo-tag{display:none}.intro{padding:31px 0 27px}.intro>p{display:none}h1{font-size:38px}.eyebrow{font-size:8px}.dashboard{display:flex;flex-direction:column;gap:16px}.partner-panel{order:-1}.partner-top{padding:17px;flex-wrap:nowrap;gap:8px}.connection{font-size:8px}.section-heading{font-size:8px;letter-spacing:.7px}.pet-stage{min-height:380px}.speech h2{font-size:24px}.hero-pet .pet-button{width:165px;height:195px}.send-panel{padding:20px}.my-pet{margin:10px 0 13px;padding-bottom:12px}.my-pet>.pet-art{width:48px;height:55px}.signals{grid-template-columns:1fr 1fr;gap:8px}.signal-button{font-size:10px;padding:10px 8px;gap:6px}.signal-emoji{font-size:20px;width:24px}.arrow{display:none}.gentle-note{margin-top:15px}.bottom-row{display:flex;flex-direction:column;gap:22px;padding:24px 0}.desktop-note{width:100%;padding:20px}.desktop-note p{max-width:90%}footer{gap:15px;font-size:9px}footer>div{gap:12px;flex-wrap:wrap;justify-content:flex-end}footer>div>span{font-size:7px}.stage-footer{padding:14px 17px}.stage-footer>span{font-size:8px}dialog{padding:27px 22px}.pet-option .pet-art{height:78px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Desktop companion: the pet stands alone; its pie menu appears only on click. */
.companion-root{background:transparent!important}
.companion .companion-wrap{--companion-pet-height:98px;width:120px;max-width:none;height:132px;padding:0;flex:none;overflow:visible}
.companion .companion-wrap.has-signal{width:280px;height:auto;justify-content:flex-end;padding:0 10px calc(var(--companion-pet-height) + 13px)}
.companion .companion-wrap.wheel-open{width:380px;height:340px}
.companion .pet-button{position:absolute;width:84px;height:98px;bottom:5px;left:50%;transform:translateX(-50%);border-radius:45%;z-index:3;filter:drop-shadow(0 3px 2px #182b2230)}
.companion .wheel-open .pet-button{bottom:63px}
.companion .pet-spark{display:none}
.companion .pet-indicator{position:absolute;bottom:105px;left:50%;translate:-50% 0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid #e4e6dc;border-radius:50%;background:#fffef8f5;font-size:21px;line-height:1;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums;box-shadow:0 2px 6px #253b2920;z-index:4}
.companion .wheel-open .pet-indicator{bottom:166px}
.companion .pet-indicator.is-count{background:#e84158;color:#fff;border:2px solid #fff;min-width:30px;width:max-content;padding:0 5px;font-size:12px;font-weight:700}
.companion .pet-indicator.has-unread:after{content:'';position:absolute;right:-1px;top:-1px;width:7px;height:7px;border:1px solid white;border-radius:50%;background:#e84158}
.companion .quiet .pet-indicator{opacity:.65}
.companion .tiny-speech{position:relative;width:100%;padding:13px 14px;border:1px solid #d9dfd0;border-radius:16px;background:#fffef8f5;box-shadow:0 3px 10px #1e39251c}
.companion .tiny-speech:after{content:'';position:absolute;bottom:-6px;left:calc(50% - 6px);width:11px;height:11px;transform:rotate(45deg);background:#fffef8;border-right:1px solid #d9dfd0;border-bottom:1px solid #d9dfd0}
.tiny-speech>span{display:block;font-size:9px;color:#7b8970;margin-bottom:5px}
.tiny-speech>strong{display:block;font-size:13px;font-weight:500;color:#40543c}
.pie-menu{position:absolute;inset:0;animation:wheel-in .16s ease-out}
.wheel-title{position:absolute;top:6px;left:15px;right:15px;text-align:center;font-size:10px;line-height:1.4;color:#53674c;background:#fffff4eb;border-radius:20px;padding:7px 10px;width:max-content;max-width:350px;margin:0 auto;box-shadow:0 2px 5px #1e392510}
.pie-option{position:absolute;transform:translate(-50%,-50%);width:128px;min-height:37px;padding:8px 10px;background:linear-gradient(#4f8dc4,#2e639f);border:1.5px solid #dcefff;border-radius:22px;box-shadow:0 2px 0 #183d6f,0 4px 10px #183d6f38,inset 0 1px 0 #ffffff4d;color:#fff;font-size:10px;font-weight:650;line-height:1.25;text-shadow:0 1px 1px #19436b;transition:filter .15s,scale .15s;z-index:5}
.pie-option:hover{background:linear-gradient(#91c552,#458c42);border-color:#d7f59f;scale:1.06}
.pie-option:focus-visible{outline:3px solid #a8e666;outline-offset:3px}
.pie-0{left:50%;top:71px}.pie-1{left:21%;top:124px}.pie-2{left:79%;top:124px}.pie-3{left:19%;top:213px}.pie-4{left:81%;top:213px}.pie-5{left:50%;top:312px}
.pie-close{position:absolute;right:18px;top:275px;background:#f5f9eff0;border:1px solid #c2d0b9;color:#677f5d;width:24px;height:24px;border-radius:50%;font-size:17px;z-index:5}
.companion #toast{left:50%;max-width:95vw;font-size:9px;padding:9px 10px;bottom:4px;border-radius:8px;line-height:1.3;text-align:center}
.companion-wrap[data-idle=look] .pet-body{animation:pet-look 2.2s ease-in-out}
.companion-wrap[data-idle=hop] .pet-body{animation:pet-hop .65s ease-in-out 3}
.companion-wrap[data-idle=wave] .pet-arm{transform-origin:var(--arm-origin,76px 183px);animation:wave .55s ease-in-out 4}
.companion-wrap[data-idle=stretch] .pet-body{animation:pet-stretch 2.2s ease-in-out}
html[data-walking=true] .companion .pet-body{animation:pet-walk .44s ease-in-out infinite!important}

@keyframes wheel-in{from{opacity:0;transform:scale(.85);transform-origin:50% 65%}to{opacity:1;transform:scale(1)}}
@keyframes pet-look{25%{transform:rotate(-7deg) translateX(-4px)}65%{transform:rotate(7deg) translateX(4px)}}
@keyframes pet-hop{40%{transform:translateY(-20px) scale(.98,1.03)}75%{transform:translateY(0) scale(1.06,.94)}}
@keyframes pet-stretch{45%{transform:scale(1.09,.89)}75%{transform:scale(.97,1.07) translateY(-5px)}}
@keyframes pet-walk{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(-2deg)}75%{transform:translateY(-1px) rotate(2deg)}}

.unread-badge{position:absolute;top:32px;right:7px;z-index:6;min-width:26px;height:26px;padding:0 6px;border:2px solid #fff;border-radius:20px;display:flex;align-items:center;justify-content:center;background:#e84158;color:#fff;font:700 12px/1 -apple-system,BlinkMacSystemFont,sans-serif;box-shadow:0 2px 7px #6a243e40;animation:badge-appear .25s ease-out}
.companion .unread-badge{top:20px;right:0;min-width:23px;height:23px;font-size:11px;padding:0 5px}
.companion-wrap.attention .pet-art{animation:message-arrival .8s ease-in-out 5}
.companion-wrap.attention .pet-indicator{animation:indicator-notice .65s ease-in-out 6}
@keyframes badge-appear{from{opacity:0;scale:.5}to{opacity:1;scale:1}}
@keyframes message-arrival{30%{transform:translateY(-13px) rotate(-5deg)}65%{transform:translateY(-3px) rotate(5deg)}}
@keyframes indicator-notice{50%{transform:translateY(-4px) scale(1.1)}}
.companion .companion-wrap{cursor:grab;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}
.companion .companion-wrap:not(.composing):not(.reading-message),.companion .pet-indicator,.companion .pet-button{touch-action:none}
.companion .pet-indicator,.companion .pet-button{cursor:grab}
.companion .message-reader,.companion textarea,.companion input{cursor:text;user-select:text;-webkit-user-select:text}
.dragging-pet .companion *{cursor:grabbing!important;animation:none!important}

:root{--pair-bg:#e9eedf;--pair-border:#d7ddcd;--pair-footer:#e3e9d9}
html[data-theme=lavender]{--pair-bg:#eee9f4;--pair-border:#d9cfe4;--pair-footer:#e5dced}
html[data-theme=peach]{--pair-bg:#f5e7dc;--pair-border:#e5d2c1;--pair-footer:#efddd0}
.partner-panel{background:var(--pair-bg);border-color:var(--pair-border)}
.stage-footer{background:var(--pair-footer);border-color:var(--pair-border)}
.stage-orbit{border-color:var(--pair-border)}
.companion .pet-indicator:not(.is-count){background:var(--pair-bg)}
.compose-trigger{background:#eae6ee;color:#5c5472;border:1px solid #d9d3e2;font-size:11px}
.message-text{white-space:pre-wrap;overflow-wrap:anywhere}
.speech h2.message-text{max-height:220px;overflow:auto;font-size:23px;line-height:1.35}
.history-item p{overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
textarea{font:inherit;resize:vertical;border:1px solid #d8dbcc;border-radius:8px;background:#fdfcf7;color:var(--ink);width:100%;padding:12px;font-size:13px;line-height:1.6;min-height:105px;max-height:220px}
textarea:focus{outline:2px solid #a5b693}
.message-composer{position:relative;text-align:left}
.message-composer h2{font:400 27px/1.2 var(--serif);margin:14px 0;letter-spacing:-.7px}
.message-composer label{margin-top:16px}
.message-composer .close-dialog{position:absolute;right:-5px;top:-9px;background:none;font-size:24px;color:#8b9384}
.compose-meta{display:flex;justify-content:space-between;gap:10px;font-size:9px;color:#929887;margin-top:5px}
.compose-emojis{display:flex;gap:7px;margin-top:13px}
.compose-emojis button{height:31px;width:35px;border:1px solid transparent;border-radius:7px;background:#eeede4;font-size:20px;padding:2px}
.compose-emojis button.selected{background:#e3ead9;border-color:#8a9f75}
.companion .companion-wrap.composing{width:380px;height:500px}
.companion .message-composer{position:absolute;top:6px;left:12px;right:12px;background:#fbfaf5;border:1px solid #d5ddcd;border-radius:16px;padding:19px 20px;box-shadow:0 5px 22px #223e3024;z-index:7}
.companion .message-composer textarea{min-height:93px;max-height:115px;resize:none;font-size:12px}
.companion .message-composer h2{font-size:24px;margin:10px 0}
.companion .message-composer label{margin:9px 0 7px}
.companion .message-composer .button{margin-top:12px;padding:11px}
.companion .message-composer .form-error{font-size:10px;line-height:1.3;margin-top:6px}
.companion .message-composer .close-dialog{top:7px;right:9px}
.pet-name-label{position:absolute;bottom:1px;left:10px;right:10px;text-align:center;font-size:9px;line-height:13px;color:#65735b;pointer-events:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.pet-name-label:empty{display:none}
.custom-attention .tiny-speech strong{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere;max-height:105px;line-height:1.45}
.wheel-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;max-height:42px}
.companion .companion-wrap.reading-message{height:560px}
.reading-message .pie-menu{top:auto;height:340px;bottom:0}
.message-reader{position:absolute;top:8px;left:13px;right:13px;padding:15px 18px;border:1px solid #d5ddcd;border-radius:15px;background:#fbfaf5;text-align:left;box-shadow:0 4px 18px #223e3020}
.message-reader>span{display:block;font-size:10px;color:#8b9380;margin-bottom:9px}
.message-reader p{font-size:13px;line-height:1.65;max-height:145px;overflow:auto;color:#3d5040}
.pair-settings-dialog{max-width:720px;max-height:90vh;overflow:auto}
.pair-member-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin-top:20px}
.pair-member-card{background:#eeeee4;border:1px solid #daddcf;border-radius:12px;padding:17px;text-align:left;min-width:0}
.settings-pet-preview{height:83px;text-align:center}
.settings-pet-preview .pet-art{width:80px;height:83px}
.pair-member-card label{margin-top:13px}
.pair-member-card input{padding:10px 11px}
.member-pets{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.member-pets button{font-size:10px;padding:9px 7px;border:1px solid #d3d7c9;border-radius:6px;background:#f8f8f1}
.member-pets button.selected{border-color:#819873;background:#dfe8d6}
.theme-options{display:flex;gap:8px}
.theme-option{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid #d3d7c9;background:#f6f5ed;border-radius:7px;padding:10px;font-size:11px}
.theme-option.selected{border-color:#819873;box-shadow:inset 0 0 0 1px #819873}
.theme-swatch{height:15px;width:15px;border-radius:50%;display:inline-block;border:1px solid #33442d24}
.theme-swatch.sage{background:#c4d4b0}.theme-swatch.lavender{background:#cab4dc}.theme-swatch.peach{background:#e9bc9e}
@media(max-width:720px){.header-actions{flex-wrap:wrap;justify-content:flex-end;max-width:240px}.header-actions .button{font-size:9px;padding:9px}.pair-member-grid{gap:10px}.pair-member-card{padding:12px}.theme-option{padding:9px 5px;font-size:10px}.pair-settings-dialog h2{font-size:27px}}
@media(max-width:420px){.pair-member-grid{grid-template-columns:1fr}.settings-pet-preview{height:65px}.settings-pet-preview .pet-art{height:65px}}

.companion .companion-wrap.context-open{min-width:250px;min-height:500px}
.pet-context-menu{position:absolute;bottom:143px;left:50%;transform:translateX(-50%);z-index:60;width:214px;padding:5px;border:1px solid #dedbd0;border-radius:11px;background:#fffdf8fa;box-shadow:0 7px 24px #273d3033;cursor:default;text-align:left}
.pet-context-menu>button{display:flex;align-items:center;gap:8px;width:100%;padding:10px 9px;border-radius:7px;background:transparent;font-size:12px;text-align:left;color:#3e5141}
.pet-context-menu>button:hover,.pet-context-menu>button:focus-visible{background:#e7eddf;outline:none}
.pet-context-menu>button:nth-last-child(2),.pet-context-menu>button:last-child{margin-top:3px;border-top:1px solid #ebe8df;border-top-left-radius:0;border-top-right-radius:0}
.context-check{width:16px;flex:none;text-align:center;font-size:14px;font-weight:650;color:#5b7955}
.companion .companion-wrap.is-collapsed{width:64px;height:64px;min-height:64px}
.companion .companion-wrap.is-collapsed.context-open{min-width:250px;min-height:290px}
.is-collapsed .pet-context-menu{bottom:72px}
.pet-bubble{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);display:grid;place-items:center;width:48px;height:48px;border:2px solid #fffdf8;border-radius:50%;background:linear-gradient(145deg,#edf1e5,#dce4d1);box-shadow:0 3px 12px #263d3130;color:#52664c;font-size:18px;font-weight:700;cursor:grab;touch-action:none;user-select:none}
.pet-bubble.has-unread{background:linear-gradient(145deg,#f17b89,#db405d);color:white}
.pet-bubble:hover{box-shadow:0 4px 16px #263d3145}
.pet-bubble,.unread-badge{line-height:1;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
.summon-trigger{margin-top:8px;background:transparent;border:1px solid #d7dccd;color:#65755d;font-size:10px}
.revealed .pet-art{animation:pet-return .6s ease-out both}
@keyframes pet-return{0%{opacity:0;scale:.6;translate:0 14px}55%{opacity:1;scale:1.06;translate:0 -5px}100%{opacity:1;scale:1;translate:0 0}}
.stay-put .pet-button[data-mood=idle]:not(.sending-source):not(.petted) .pet-body,.stay-put .pet-button[data-mood=idle] .pet-tail{animation:none}

.companion .companion-wrap.sending-message:not(.wheel-open):not(.composing){width:330px;min-height:270px}
.send-animation{position:fixed;inset:0;pointer-events:none;z-index:50;isolation:isolate;overflow:visible}
.send-animation-compact{position:absolute}
.send-trail{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:0;animation:send-trail-glow 2.1s ease-out both;animation-delay:var(--send-elapsed)}
.send-trail path{fill:none;stroke:#d9a2ad;stroke-width:2;stroke-dasharray:3 7;stroke-linecap:round}
.send-parcel{position:absolute;left:var(--send-x);top:var(--send-y);display:grid;place-items:center;width:44px;height:44px;border:1px solid #fff4ec;border-radius:15px;background:linear-gradient(145deg,#fffdf7,#ffe8e9);font-size:26px;box-shadow:0 5px 20px #ae5c7733,0 0 0 5px #fff9f777;opacity:0;animation:send-parcel-flight 2.1s cubic-bezier(.24,.65,.35,1) both;animation-delay:var(--send-elapsed);will-change:transform,opacity}
.send-parcel:after{content:'↗';position:absolute;right:-4px;bottom:-3px;display:grid;place-items:center;width:17px;height:17px;border:2px solid white;border-radius:50%;background:#648575;color:white;font-size:11px;font-weight:700}
.send-halo,.send-arrival-ring{position:absolute;left:var(--send-x);top:var(--send-y);width:55px;height:55px;border:2px solid #e5a3b0;border-radius:50%;opacity:0;animation:send-source-ring 2.1s ease-out both;animation-delay:var(--send-elapsed)}
.send-arrival-ring{left:var(--send-target-x);top:var(--send-target-y);border-color:#a3bd8c;animation-name:send-target-ring}
.send-sparkle{position:absolute;left:var(--spark-x);top:var(--spark-y);color:#d78197;font-size:18px;opacity:0;animation:send-sparkle-drift 1.6s ease-out both;animation-delay:var(--spark-delay)}
.send-sparkle:nth-of-type(5){color:#d6ad6d;font-size:15px}
.send-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.my-pet.sending-source .pet-body,.companion .sending-source .pet-body{animation:send-pet-cheer 2.1s ease-in-out both;animation-delay:var(--send-elapsed)}
.my-pet.sending-source .pet-arm,.companion .sending-source .pet-arm{transform-origin:var(--arm-origin,76px 183px);animation:send-pet-wave 2.1s ease-in-out both;animation-delay:var(--send-elapsed)}
@keyframes send-parcel-flight{0%{opacity:0;transform:translate(-50%,-50%) scale(.35) rotate(-22deg)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.12) rotate(-10deg)}35%{opacity:1;transform:translate(calc(-50% + var(--send-dx)*.22),calc(-50% + var(--send-dy)*.22 - 62px)) scale(1.02) rotate(-12deg)}75%{opacity:1;transform:translate(calc(-50% + var(--send-dx)*.88),calc(-50% + var(--send-dy)*.88 - 25px)) scale(.9) rotate(13deg)}90%{opacity:1;transform:translate(calc(-50% + var(--send-dx)),calc(-50% + var(--send-dy))) scale(.65) rotate(4deg)}100%{opacity:0;transform:translate(calc(-50% + var(--send-dx)),calc(-50% + var(--send-dy) - 10px)) scale(.25)}}
@keyframes send-source-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}10%{opacity:.7}45%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}}
@keyframes send-target-ring{0%,58%{opacity:0;transform:translate(-50%,-50%) scale(.5)}72%{opacity:.65}100%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}}
@keyframes send-trail-glow{0%,10%{opacity:0}30%,70%{opacity:.7}100%{opacity:0}}
@keyframes send-sparkle-drift{0%,15%{opacity:0;transform:translateY(10px) scale(.3) rotate(-12deg)}40%{opacity:.9;transform:translateY(-4px) scale(1.1) rotate(8deg)}100%{opacity:0;transform:translateY(-37px) scale(.5) rotate(20deg)}}
@keyframes send-pet-cheer{0%,45%,100%{transform:translateY(0) rotate(0)}12%{transform:translateY(2px) scale(1.04,.96)}25%{transform:translateY(-13px) rotate(-5deg)}34%{transform:translateY(-4px) rotate(4deg)}59%{transform:translateY(-6px) rotate(3deg)}76%{transform:translateY(0)}}
@keyframes send-pet-wave{0%,10%,75%,100%{transform:rotate(0)}28%,53%{transform:rotate(calc(65deg * var(--arm-side,1)))}40%,65%{transform:rotate(calc(20deg * var(--arm-side,1)))}}
@media(prefers-reduced-motion:reduce){.send-trail,.send-halo,.send-arrival-ring,.send-sparkle{display:none}.send-parcel{animation:none!important;opacity:1;left:var(--send-target-x);top:var(--send-target-y);transform:translate(-50%,-50%)}}

.kiss-rain{position:fixed;inset:0;z-index:1000;overflow:hidden;pointer-events:none;user-select:none}
.kiss-rain>span{position:absolute;left:var(--kiss-x);top:-85px;font-size:var(--kiss-size);line-height:1;opacity:0;filter:drop-shadow(0 3px 3px #ad28582b);animation:kiss-fall var(--kiss-duration) linear var(--kiss-delay) both;will-change:transform,opacity}
@keyframes kiss-fall{0%{opacity:0;transform:translate3d(0,0,0) rotate(calc(var(--kiss-turn)*-1))}12%,80%{opacity:1}100%{opacity:0;transform:translate3d(var(--kiss-drift),calc(100vh + 170px),0) rotate(var(--kiss-turn))}}
.companion-wrap[data-trick=dance] .pet-body,.hero-pet[data-trick=dance] .pet-body{animation:pet-disco .7s ease-in-out 6!important;transform-origin:120px 245px}
.companion-wrap[data-trick=dance] .pet-arm,.hero-pet[data-trick=dance] .pet-arm{animation:wave .35s ease-in-out 12!important;transform-origin:var(--arm-origin,76px 183px)}
.companion .companion-wrap[data-trick=run] .pet-body{animation:pet-walk .18s ease-in-out infinite!important}
.companion-root:not(.native-companion) .companion-wrap[data-trick=run]{animation:pet-sprint-lap 10s linear;animation-delay:var(--trick-elapsed,0ms)}
@keyframes pet-disco{0%,100%{transform:rotate(-8deg) translateY(0)}25%{transform:rotate(8deg) translateY(-9px) scale(.98,1.04)}50%{transform:rotate(0) translateY(0) scale(1.06,.94)}75%{transform:rotate(-8deg) translateY(-7px)}}
@keyframes pet-sprint-lap{0%,100%{transform:translateX(0)}25%{transform:translateX(var(--run-range))}60%{transform:translateX(calc(var(--run-range)*-1))}85%{transform:translateX(calc(var(--run-range)*.4))}}
@media(prefers-reduced-motion:reduce){.kiss-rain>span{display:none}.kiss-rain>span:nth-child(-n+8){display:block;top:calc(12% + var(--kiss-x)*.65);opacity:.8;animation:none!important;transform:none}.companion-wrap[data-trick] .pet-body,.companion-wrap[data-trick] .pet-arm,.hero-pet[data-trick] .pet-body,.hero-pet[data-trick] .pet-arm,.companion-root:not(.native-companion) .companion-wrap[data-trick=run]{animation:none!important}}

/* Independently animated parts give the whole character weight and follow-through. */
.pet-head,.pet-torso,.pet-ears,.pet-arm,.pet-foot,.pet-tail,.pet-shadow{transform-box:view-box}
.pet-head{transform-origin:120px 154px;animation:pet-head-idle 4.2s ease-in-out infinite}
.pet-torso{transform-origin:120px 220px;animation:pet-torso-breathe 3.8s ease-in-out infinite}
.pet-ears{transform-origin:120px 88px;animation:pet-ear-follow 4.2s ease-in-out infinite}
.pet-arm{--arm-side:1;--arm-origin:74px 181px;transform-origin:var(--arm-origin);animation:pet-arm-rest 3.8s ease-in-out infinite}
.pet-arm-right{--arm-side:-1;--arm-origin:165px 181px}
.pet-foot{transform-origin:85px 243px;animation:pet-foot-rest 3.8s ease-in-out infinite}
.pet-foot-right{transform-origin:155px 243px;animation-delay:-1.9s}
.pet-shadow{transform-origin:120px 252px;animation:pet-shadow-breathe 3.8s ease-in-out infinite}
@keyframes pet-head-idle{0%,100%{transform:rotate(-2deg) translateY(0)}35%{transform:rotate(2.5deg) translateY(-2px)}70%{transform:rotate(-1deg) translateY(1px)}}
@keyframes pet-torso-breathe{50%{transform:scale(1.025,.985) translateY(1px)}}
@keyframes pet-ear-follow{30%{transform:rotate(-3deg)}65%{transform:rotate(3deg)}}
@keyframes pet-arm-rest{25%{transform:rotate(calc(-4deg * var(--arm-side)))}65%{transform:rotate(calc(7deg * var(--arm-side))) translateY(-1px)}}
@keyframes pet-foot-rest{50%{transform:rotate(3deg) translateY(-1px)}}
@keyframes pet-shadow-breathe{50%{transform:scaleX(.95);opacity:.8}}
.companion-wrap[data-idle=look] .pet-head{animation:pet-curious 2.2s ease-in-out}
.companion-wrap[data-idle=wave] .pet-head{animation:pet-head-bop .55s ease-in-out 4}
.pet-button[data-mood=hug] .pet-arm,.pet-button[data-mood=kiss] .pet-arm{animation:wave .75s ease-in-out infinite;transform-origin:var(--arm-origin)}
.pet-button[data-mood=hug] .pet-head,.pet-button[data-mood=kiss] .pet-head{animation:pet-head-bop .75s ease-in-out infinite}
@keyframes pet-curious{25%{transform:rotate(-10deg) translateX(-3px)}65%{transform:rotate(8deg) translateX(3px)}}
@keyframes pet-head-bop{50%{transform:rotate(5deg) translateY(-4px)}}
html[data-walking=true] .companion .pet-foot,.companion-wrap[data-trick=run] .pet-foot{animation:pet-step .42s ease-in-out infinite!important}
html[data-walking=true] .companion .pet-foot-right,.companion-wrap[data-trick=run] .pet-foot-right{animation-delay:-.21s!important}
html[data-walking=true] .companion .pet-arm,.companion-wrap[data-trick=run] .pet-arm{animation:pet-arm-stride .42s ease-in-out infinite!important}
html[data-walking=true] .companion .pet-arm-right,.companion-wrap[data-trick=run] .pet-arm-right{animation-delay:-.21s!important}
html[data-walking=true] .companion .pet-head,.companion-wrap[data-trick=run] .pet-head{animation:pet-head-bop .42s ease-in-out infinite!important}
@keyframes pet-step{0%,100%{transform:rotate(-12deg) translateY(0)}50%{transform:rotate(18deg) translateY(-9px)}}
@keyframes pet-arm-stride{0%,100%{transform:rotate(-22deg)}50%{transform:rotate(22deg)}}
.companion-wrap[data-trick=dance] .pet-head,.hero-pet[data-trick=dance] .pet-head{animation:pet-dance-head .7s ease-in-out 6!important}
.companion-wrap[data-trick=dance] .pet-torso,.hero-pet[data-trick=dance] .pet-torso{animation:pet-torso-breathe .35s ease-in-out 12!important}
.companion-wrap[data-trick=dance] .pet-foot,.hero-pet[data-trick=dance] .pet-foot{animation:pet-step .35s ease-in-out 12!important}
.companion-wrap[data-trick=dance] .pet-foot-right,.hero-pet[data-trick=dance] .pet-foot-right{animation-delay:-.175s!important}
.companion-wrap[data-trick=dance] .pet-ears,.hero-pet[data-trick=dance] .pet-ears{animation:pet-ear-follow .35s ease-in-out 12!important}
@keyframes pet-dance-head{25%{transform:rotate(-9deg) translateY(2px)}75%{transform:rotate(9deg) translateY(-3px)}}
.sending-source .pet-head{animation:pet-head-bop .52s ease-in-out 4;animation-delay:var(--send-elapsed)}
.sending-source .pet-foot{animation:pet-step .52s ease-in-out 4;animation-delay:var(--send-elapsed)}
.sending-source .pet-foot-right{animation-delay:calc(var(--send-elapsed) - .26s)}
.stay-put:not([data-trick]) .pet-button[data-mood=idle]:not(.sending-source):not(.petted) :is(.pet-head,.pet-torso,.pet-ears,.pet-arm,.pet-foot,.pet-shadow){animation:none}
@media(prefers-reduced-motion:reduce){#app .pet-art *,#setup .pet-art *{animation:none!important;transition:none!important}}

/* Receiving a remote action survives state updates without restarting its timeline. */
[data-trick] :is(.pet-body,.pet-arm,.pet-head,.pet-torso,.pet-foot,.pet-ears){animation-delay:var(--trick-elapsed,0ms)!important}
[data-trick=run] :is(.pet-arm-right,.pet-foot-right){animation-delay:calc(var(--trick-elapsed,0ms) - 150ms)!important}
[data-trick=dance] .pet-foot-right{animation-delay:calc(var(--trick-elapsed,0ms) - 175ms)!important}
.hero-pet[data-trick=run] .pet-body{animation:pet-walk .18s ease-in-out infinite!important}
.hero-pet[data-trick=run] .pet-foot{animation:pet-step .42s ease-in-out infinite!important}
.hero-pet[data-trick=run] .pet-arm{animation:pet-arm-stride .42s ease-in-out infinite!important}
.hero-pet[data-trick=run] .pet-head{animation:pet-head-bop .42s ease-in-out infinite!important}
.embedded-companion .companion-wrap{max-width:100vw;margin-bottom:22px}
.embedded-companion .companion-wrap.wheel-open,.embedded-companion .companion-wrap.composing{width:min(380px,100vw)}
.embedded-companion .companion-wrap.reading-message{height:min(560px,calc(100vh - 8px))}
.embedded-companion .message-reader p{max-height:min(145px,calc(100vh - 426px))}
.embedded-companion .pie-option{width:min(128px,36vw)}
.embedded-companion .companion-wrap.context-open{min-width:min(250px,100vw)}
@media(prefers-reduced-motion:reduce){html [data-trick] :is(.pet-body,.pet-arm,.pet-head,.pet-torso,.pet-foot,.pet-ears){animation:none!important}}

.wheel-inbox{position:absolute;left:12px;bottom:12px;max-width:110px;padding:7px 10px;border-radius:15px;background:#fffdf4e8;border:1px solid #ced7c1;font-size:9px;color:#5f7555;z-index:6}
.pet-button[data-mood=kiss] .pet-hearts{display:block;animation:float 2.4s ease-in-out infinite}

/* Physical travel comes from native window geometry (or the development stage). */
html[data-direction=left]:is([data-motion=walk],[data-motion=run],[data-motion=jump],[data-motion=fall]) .companion .pet-art{scale:-1 1}
html[data-motion=run] .companion .pet-body{animation:pet-run-body .22s ease-in-out infinite!important}
html[data-motion=run] .companion :is(.pet-foot,.pet-arm){animation-duration:.24s!important}
html[data-motion=run] .companion :is(.pet-foot-right,.pet-arm-right){animation-delay:-.12s!important}
html[data-motion=jump] .companion .pet-body{animation:pet-leap-pose .8s ease-out both!important}
html[data-motion=jump] .companion .pet-arm{animation:pet-air-arms .65s ease-out both!important;transform-origin:var(--arm-origin)}
html[data-motion=jump] .companion .pet-foot{animation:none!important;transform:rotate(-16deg) translateY(-9px)}
html[data-motion=jump] .companion .pet-ears{animation:pet-air-ears .5s ease-in-out infinite alternate!important}
html[data-motion=fall] .companion .pet-body{animation:pet-fall-pose .45s ease-out both!important}
html[data-motion=fall] .companion .pet-arm{animation:none!important;transform:rotate(calc(-60deg * var(--arm-side)));transform-origin:var(--arm-origin)}
html[data-motion=fall] .companion .pet-foot{animation:pet-air-feet .35s ease-in-out infinite alternate!important}
html[data-motion=land] .companion .pet-body{animation:pet-landing .45s ease-out both!important;transform-origin:120px 252px}
html[data-motion=sit] .companion .pet-body{animation:pet-sit .5s ease-out both!important;transform-origin:120px 252px}
html[data-motion=sit] .companion .pet-foot{animation:none!important;transform:translateY(2px) rotate(-8deg)}
html[data-motion=sleep] .companion .pet-body{animation:pet-nap 2.4s ease-in-out infinite!important;transform-origin:120px 252px}
html[data-motion=sleep] .companion .pet-head{animation:none!important;transform:rotate(9deg) translateY(8px)}
html[data-motion=sleep] .companion .pet-eyes{animation:none!important;scale:1 .12;transform-origin:120px 130px}
html:is([data-motion=sit],[data-motion=sleep]) .companion :is(.pet-arm,.pet-foot,.pet-ears){animation:none!important}
.pet-dust,.pet-sleep{display:none;pointer-events:none}
html:is([data-motion=run],[data-motion=land]) .pet-dust{display:block}
.pet-dust>ellipse{animation:pet-dust-puff .55s ease-out infinite;transform-origin:70px 250px}
.pet-dust>ellipse:nth-child(2){animation-delay:-.2s}.pet-dust>ellipse:nth-child(3){animation-delay:-.4s}
html[data-motion=sleep] .pet-sleep{display:block}
.pet-sleep>text{animation:pet-snooze 2.4s ease-in-out infinite}.pet-sleep>text:nth-child(2){animation-delay:-.8s}.pet-sleep>text:nth-child(3){animation-delay:-1.6s}
@keyframes pet-run-body{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-4px) rotate(-3deg)}75%{transform:translateY(-1px) rotate(3deg)}}
@keyframes pet-leap-pose{0%{transform:scale(1.08,.9)}25%{transform:scale(.94,1.07) rotate(-8deg)}100%{transform:scale(1) rotate(-3deg)}}
@keyframes pet-air-arms{to{transform:rotate(calc(78deg * var(--arm-side)))}}
@keyframes pet-air-ears{to{transform:rotate(-6deg) translateY(4px)}}
@keyframes pet-fall-pose{to{transform:scale(.98,1.04) rotate(4deg)}}
@keyframes pet-air-feet{to{transform:rotate(14deg) translateY(-6px)}}
@keyframes pet-landing{0%{transform:scale(.94,1.06)}35%{transform:scale(1.15,.82)}70%{transform:scale(.98,1.03)}100%{transform:scale(1)}}
@keyframes pet-sit{to{transform:translateY(8px) scale(1.04,.92)}}
@keyframes pet-nap{0%,100%{transform:translateY(9px) scale(1.05,.9)}50%{transform:translateY(7px) scale(1.07,.92)}}
@keyframes pet-dust-puff{from{opacity:.7;transform:translateX(0) scale(.6)}to{opacity:0;transform:translateX(-20px) translateY(-4px) scale(1.4)}}
@keyframes pet-snooze{0%,100%{opacity:0;translate:0 5px}40%{opacity:.8}80%{opacity:0;translate:4px -12px}}

.desktop-preview #app{position:relative;z-index:2;pointer-events:none}
.desktop-preview .companion-wrap{position:absolute!important;transform:translateX(-50%);margin:0!important;pointer-events:auto}
.desktop-preview .companion-wrap[data-trick=run]{animation:none!important}
.preview-world{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.preview-window{position:absolute;height:130px;border:1px solid #cbd4c1;border-top:2px solid #9eaf8d;border-radius:9px;background:#fefdf8b8;box-shadow:0 8px 22px #53644a0c;pointer-events:auto}
.preview-titlebar{height:30px;display:flex;align-items:center;gap:5px;padding:0 10px;border-bottom:1px solid #e0e5d6;cursor:grab;touch-action:none;color:#8b967d;font-size:9px;user-select:none}
.preview-titlebar:active{cursor:grabbing}.preview-window-handle{flex:1;display:flex;align-items:center;gap:5px}.preview-window-handle>i{width:5px;height:5px;border-radius:50%;background:#c4cdb5}.preview-window-handle>span{margin-left:4px}.preview-titlebar>button{margin-left:auto;background:transparent;color:#89967c;font-size:17px;padding:0 0 3px 9px}
.preview-lines{padding:20px 16px;display:grid;gap:10px}.preview-lines>i{height:4px;width:75%;border-radius:3px;background:#e3e8db}.preview-lines>i:nth-child(2){width:55%}.preview-lines>i:nth-child(3){width:66%}
@media(prefers-reduced-motion:reduce){.pet-dust,.pet-sleep{display:none!important}html .companion :is(.pet-body,.pet-arm,.pet-foot,.pet-ears,.pet-head,.pet-eyes){animation:none!important;transform:none!important;scale:none!important}}

/* Small desktop companion; window ledges use an unobtrusive miniature form. */
.desktop-install-steps{padding-left:24px;line-height:1.65;margin:22px 0}.desktop-install-steps li{padding:5px 0 5px 6px}.desktop-setup-dialog a.button{text-align:center;text-decoration:none;margin-top:12px}.connection-code{padding:18px;border-radius:12px;background:#eef0e5;display:flex;justify-content:space-between;gap:18px;margin:20px 0}.connection-code strong{letter-spacing:.15em}.desktop-connection-status{padding:16px;background:#eef0e5;border-radius:12px}
.companion .companion-wrap{transition:width .22s ease,height .22s ease}
.companion .pet-button{transition:width .22s ease,height .22s ease,bottom .22s ease}
.pet-name-label{transition:opacity .18s ease,visibility .18s ease}
html:is([data-perched=true],[data-parked=true]) .companion .pet-name-label{opacity:0;visibility:hidden}
html:is([data-perched=true],[data-parked=true]) .companion .companion-wrap{--companion-pet-height:70px}
html:is([data-perched=true],[data-parked=true]) .companion .companion-wrap:not(.is-collapsed):not(.wheel-open):not(.composing):not(.context-open):not(.has-signal):not(.sending-message){width:84px;height:88px}
html:is([data-perched=true],[data-parked=true]) .companion .companion-wrap:not(.is-collapsed):not(.wheel-open):not(.composing):not(.context-open):not(.has-signal):not(.sending-message):has(.pet-indicator){height:112px}
html:is([data-perched=true],[data-parked=true]) .companion .pet-button{width:60px;height:70px;bottom:5px}
html:is([data-perched=true],[data-parked=true]) .companion .pet-indicator{width:24px;height:24px;min-width:24px;font-size:17px;bottom:80px}
html:is([data-perched=true],[data-parked=true]) .companion .pet-indicator.is-count{width:max-content;padding:0 4px;font-size:10px}
html:is([data-perched=true],[data-parked=true]) .companion :is(.wheel-open,.context-open) .pet-button{width:84px;height:98px}
html:is([data-perched=true],[data-parked=true]) .companion .wheel-open .pet-button{bottom:63px}
html:is([data-perched=true],[data-parked=true]) .companion .wheel-open .pet-indicator{bottom:166px}
@media(prefers-reduced-motion:reduce){.companion .companion-wrap,.companion .pet-button,.pet-name-label{transition:none!important}}
