/* ===== Companions (Rock & Nova): alive, cross-browser ===== */
.pet{transform:translateX(var(--wx,0px));transition:transform .45s cubic-bezier(.2,1.3,.4,1),opacity .3s}
.pet.walk{transition:transform 2.5s ease-in-out,opacity .3s}
.pet.away{transform:translateX(var(--awayx,130%));opacity:0;pointer-events:none}
[dir=rtl] .pet{--awayx:-130%}
.pet .pwx{transform-origin:bottom center;transform:translateY(calc(var(--amp,0)*-9px)) scale(calc(1 + var(--amp,0)*.035));transition:transform .08s linear;height:100%}
.pet .pimg{animation:none!important;transform:translate(var(--lx,0px),var(--ly,0px)) rotate(var(--lr,0deg))!important;transition:transform .25s ease-out,filter .3s}
.pet.walk .pimg{animation:bob .32s ease-in-out infinite!important}
@keyframes bob{50%{margin-bottom:9px}}
.pet[data-st=listen] .aura{opacity:.75;animation:ap 1s infinite}
.pet[data-st=speak] .aura{opacity:.8;animation:ap .5s infinite}
.pet[data-st=think] .pb::after{content:'';display:inline-block;width:1em;animation:dots 1s steps(4) infinite;overflow:hidden;vertical-align:bottom}
@keyframes dots{from{width:0}to{width:1.2em}}
.pw{touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
.pimg{-webkit-user-drag:none}
.pl{z-index:30}
.pl.lone{bottom:auto;top:10px;inset-inline-end:60px}
.pl.lone button:not(#pm){display:none}
.pl.lone #pm{width:34px;height:30px;padding:0;border-radius:99px}
.pl button img{pointer-events:none}
.pp select{max-width:120px}
.pb{white-space:pre-wrap;overflow-wrap:anywhere}

/* ===== Code workspace ===== */
.pv{height:380px;resize:vertical;margin-top:0!important}
.pv.full{position:fixed;inset:44px 0 0 0;width:100%;height:calc(100% - 44px);z-index:50;margin:0;border-radius:0;border:0}
.floatbtn{position:fixed!important;top:8px;inset-inline-end:12px;z-index:60}
.cbar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:10px 0 4px}
.ccon{background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:8px 10px;font:13px ui-monospace,Menlo,Consolas,monospace;max-height:240px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;text-align:left;min-height:34px;margin:0}
.ccon.bad{border-color:#e11d48}
.cl{padding:1px 0;border-bottom:1px dashed var(--bd)}.cl.error{color:#fb7185}.cl.warn{color:#f59e0b}
textarea.ed{tab-size:2;white-space:pre;overflow:auto}

/* ===== Rooms ===== */
.rwrap{display:grid;grid-template-columns:minmax(0,1fr) 310px;height:100%}
.rmain{display:flex;flex-direction:column;min-width:0;height:100%}
.rhead{display:flex;gap:8px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--bd);flex-wrap:wrap}
.rmsgs{flex:1;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.rm{max-width:min(640px,92%);align-self:flex-start}.rm.me{align-self:flex-end}
.rn{font-size:11px;color:var(--mut);margin-bottom:2px}.rn span{opacity:.7;margin-inline-start:6px}
.rb{background:var(--p2);padding:8px 14px;border-radius:14px;line-height:1.85;overflow-wrap:anywhere}
.rm.me .rb{background:var(--a1);color:#fff}
.rm.ai .rb{background:var(--p);border:1px solid var(--a1)}
.rb pre{background:var(--bg);color:var(--tx);border:1px solid var(--bd);border-radius:10px;padding:10px;overflow:auto;white-space:pre;text-align:left;margin:0}
.rb .cb{color:var(--tx)}
.rsys{align-self:center;font-size:12px;color:var(--mut)}
.rtyp{min-height:18px;padding:0 16px;font-size:12px}
.rcomp{display:flex;gap:6px;padding:10px 16px;border-top:1px solid var(--bd);align-items:flex-end}
.rcomp textarea{flex:1;min-height:42px;max-height:160px;resize:none}
.rside{overflow:auto;padding:12px;display:grid;gap:10px;align-content:start;border-inline-start:1px solid var(--bd)}
.rmem,.rfile{display:flex;justify-content:space-between;gap:6px;padding:4px 0;font-size:13px;align-items:center}
.rfile>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rmem a,.rfile a{cursor:pointer;color:var(--a1);font-size:12px}
@media(max-width:900px){.rwrap{grid-template-columns:1fr;overflow:auto;height:100%}.rmain{height:auto;min-height:78vh}.rside{border-inline-start:0;border-top:1px solid var(--bd)}}
.rfile a,.rmem a{margin-inline-start:6px}
