/* PetAi Agent — floating helper present on every page. Uses the app's theme
   tokens so it matches whatever palette/mode the user has chosen. */
#petAgentBtn{position:fixed;right:20px;bottom:20px;z-index:9000;width:66px;height:66px;border-radius:50%;
  border:none;cursor:grab;touch-action:none;background:linear-gradient(135deg,var(--teal,#12716a),var(--teal-ink,#0c5751));
  color:var(--on-accent);box-shadow:0 6px 20px rgba(0,0,0,.28);font-size:calc(var(--fs) * 2.133);display:flex;align-items:center;justify-content:center;
  transition:transform .15s ease,box-shadow .15s ease}
#petAgentBtn:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 10px 28px rgba(0,0,0,.34)}
#petAgentBtn.dragging{cursor:grabbing;transition:none;transform:none;box-shadow:0 12px 30px rgba(0,0,0,.4)}
#petAgentBtn .dot{position:absolute;top:7px;right:9px;width:10px;height:10px;border-radius:50%;background:var(--red);display:none}
/* avatar box fills the round launcher: the 🤖 emoji, or a Lottie SVG clipped to the circle */
#petAgentBtn .pa-av{width:100%;height:100%;display:flex;align-items:center;justify-content:center;line-height:1;pointer-events:none}
#petAgentBtn .pa-av svg{width:104%;height:104%;display:block}

/* avatar picker: a small gallery over the panel body, opened by the 🎨 header button */
#paAvatarGallery{display:none;position:absolute;left:0;right:0;top:46px;bottom:0;z-index:6;
  background:var(--card,#fff);color:var(--ink,#1f2328);padding:12px;overflow:auto;flex-direction:column;gap:10px}
#paAvatarGallery.open{display:flex}
#paAvatarGallery .pa-av-top{display:flex;align-items:center;justify-content:space-between}
#paAvatarGallery .pa-av-close{background:transparent;border:none;font-size:calc(var(--fs) * 1.067);cursor:pointer;color:inherit}
.pa-av-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pa-av-tile{position:relative;border:1px solid var(--line,#e6e8eb);border-radius:10px;padding:8px 6px;
  text-align:center;cursor:pointer;background:transparent}
.pa-av-tile:hover{border-color:var(--teal,#12716a)}
.pa-av-tile.sel{border-color:var(--teal,#12716a);box-shadow:0 0 0 2px var(--teal,#12716a) inset}
.pa-av-prev{width:54px;height:54px;margin:0 auto;border-radius:50%;overflow:hidden;
  background:linear-gradient(135deg,var(--teal,#12716a),var(--teal-ink,#0c5751));display:flex;align-items:center;justify-content:center;font-size:calc(var(--fs) * 1.733);color:var(--on-accent,#fff)}
.pa-av-prev svg{width:104%;height:104%;display:block}
.pa-av-lab{font-size:calc(var(--fs) * .733);margin-top:5px;color:var(--muted,#6b7178);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pa-av-del{position:absolute;top:3px;right:3px;width:18px;height:18px;border:none;border-radius:50%;
  background:rgba(0,0,0,.45);color:#fff;font-size:calc(var(--fs) * .733);line-height:1;cursor:pointer;display:none}
.pa-av-tile:hover .pa-av-del{display:block}
.pa-av-add{display:block;text-align:center;border:1px dashed var(--line,#c8ccd1);border-radius:8px;
  padding:9px;cursor:pointer;font-size:calc(var(--fs) * .867);color:var(--teal,#12716a)}
.pa-av-add:hover{background:color-mix(in srgb,var(--teal) 6%,transparent)}
.pa-av-msg{font-size:calc(var(--fs) * .8);color:var(--red,#c0392b);min-height:14px}
.pa-av-note{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178)}

/* Connect-a-phone panel: same slide-over frame as the avatar gallery. */
#paPhonePanel{display:none;position:absolute;left:0;right:0;top:46px;bottom:0;z-index:6;
  background:var(--card,#fff);color:var(--ink,#1f2328);padding:12px;overflow:auto;flex-direction:column;gap:10px}
#paPhonePanel.open{display:flex}
#paPhonePanel .pa-av-top{display:flex;align-items:center;justify-content:space-between}
#paPhonePanel .pa-av-close{background:transparent;border:none;font-size:calc(var(--fs) * 1.067);cursor:pointer;color:inherit}
.pa-ph-toggle{display:flex;align-items:center;gap:8px;font-size:calc(var(--fs) * .867);cursor:pointer}
.pa-ph-qr{align-self:center;width:220px;max-width:100%;min-height:6px}
.pa-ph-qr svg{display:block;background:#fff;border-radius:8px;padding:6px;box-sizing:border-box}
.pa-ph-addr{font-size:calc(var(--fs) * .8);color:var(--ink,#1f2328);text-align:center}
.pa-ph-msg{font-size:calc(var(--fs) * .8);color:var(--muted,#6b7178);min-height:14px;text-align:center}
.pa-ph-actions{display:flex;justify-content:center;gap:8px}
.pa-ph-btn{border:1px solid var(--line,#c8ccd1);background:transparent;border-radius:8px;
  padding:6px 12px;font-size:calc(var(--fs) * .8);cursor:pointer;color:var(--teal,#12716a)}
.pa-ph-btn:hover{background:color-mix(in srgb,var(--teal) 6%,transparent)}
/* Paired phones (slice 21): one row per phone, its name and last seen, Chat only and Revoke. */
.pa-ph-devs{display:flex;flex-direction:column;gap:6px;font-size:calc(var(--fs) * .867);border-top:1px solid var(--line,#c8ccd1);padding-top:10px}
.pa-ph-devlist{display:flex;flex-direction:column;gap:6px}
.pa-ph-dev{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.pa-ph-devwho{display:flex;flex-direction:column;min-width:0}
.pa-ph-devwho b{overflow-wrap:anywhere}
.pa-ph-devsub{font-size:calc(var(--fs) * .8);color:var(--muted,#6b7178)}
.pa-ph-devact{display:flex;align-items:center;gap:8px}
.pa-ph-devscope{font-size:calc(var(--fs) * .8);display:flex;align-items:center;gap:4px;cursor:pointer}

/* Overlay mode: the floating desktop avatar. The page (templates/overlay.html) is
   transparent and always-on-top, so only the round bot — bigger, so its face reads
   over other apps — and its panel are painted. The window itself is dragged by
   pywebview via the .pywebview-drag-region handles below; opening the panel grows it.
   The avatar sits at the window's top-left so, when the window grows to fit the open
   panel (down and to the right), the bot stays put and the panel unfurls beside it. */
.pa-overlay{background:transparent}
.pa-overlay #petAgentBtn{left:8px;top:8px;right:auto;bottom:auto;width:100px;height:100px;font-size:calc(var(--fs) * 3.333);
  cursor:pointer;box-shadow:0 6px 16px rgba(0,0,0,.4)}
.pa-overlay #petAgentBtn:hover{transform:scale(1.05)}
.pa-overlay #petAgentBtn .dot{top:12px;right:14px;width:13px;height:13px}
/* Drag handles: the avatar and the panel header move the window, but must not select
   their own text; the chat body and input stay selectable (text_select=True removed
   pywebview's global user-select:none). */
.pa-overlay #petAgentBtn.pywebview-drag-region,
.pa-overlay #petAgentPanel .pa-head.pywebview-drag-region{-webkit-user-select:none;user-select:none}
.pa-overlay #petAgentPanel .pa-body,
.pa-overlay #petAgentPanel #paInput{-webkit-user-select:text;user-select:text;cursor:auto}
#petAgentBtn.busy .dot{display:block;animation:petBlink 1s infinite}
@keyframes petBlink{0%,100%{opacity:1}50%{opacity:.3}}

/* Panel mode: the floating bot's chat panel rendered as a full-window page
   (templates/panel.html) — the window IS the panel. No floating launcher, and no
   rounded floating card: the panel fills the window edge to edge, so a small
   always-on-top window docked to the desktop avatar shows the exact console bot
   (same avatar, chips, header buttons and theme) rather than a hand-built Tk box. */
.pa-panel{background:var(--card,#fff)}
.pa-panel #petAgentBtn{display:none}
.pa-panel #petAgentPanel{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;
  border:none;border-radius:0;box-shadow:none}
#petAgentPanel{position:fixed;right:20px;bottom:88px;z-index:9000;width:min(420px,calc(100vw - 40px));
  height:min(620px,calc(100vh - 120px));display:none;flex-direction:column;background:var(--card,#fff);color:var(--ink,#1f2328);
  border:1px solid var(--line,#dcdad3);border-radius:16px;box-shadow:0 24px 64px rgba(0,0,0,.36);overflow:hidden}
#petAgentPanel.open{display:flex}
.pa-head{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;row-gap:2px;padding:12px 14px;border-bottom:1px solid var(--line,#dcdad3);
  background:linear-gradient(135deg,var(--teal-wash,#e4efee),transparent)}
.pa-head .pa-logo{width:26px;height:26px;border-radius:7px;background:var(--teal,#12716a);color:var(--on-accent,#fff);display:flex;
  align-items:center;justify-content:center;font-weight:700;font-size:calc(var(--fs) * .933)}
.pa-head b{font-size:calc(var(--fs) * .933)}.pa-head .pa-sub{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178)}
.pa-head .grow{flex:1}
.pa-head button{flex:0 0 auto;background:transparent;border:none;color:var(--muted,#6b7178);cursor:pointer;font-size:calc(var(--fs) * 1.067);padding:4px 6px;border-radius:6px}
.pa-head button:hover{background:var(--card2,#faf9f6)}
.pa-body{flex:1;overflow-y:auto;padding:12px 12px 4px;display:flex;flex-direction:column;gap:10px}
.pa-msg{max-width:92%;font-size:calc(var(--fs) * .9);line-height:1.5;border-radius:12px;padding:8px 11px;word-wrap:break-word}
.pa-msg.user{white-space:pre-wrap;align-self:flex-end;background:var(--teal,#12716a);color:var(--on-accent,#fff);border-bottom-right-radius:4px}
.pa-msg.ai{align-self:flex-start;background:var(--card2,#faf9f6);border:1px solid var(--line,#dcdad3);border-bottom-left-radius:4px}
.pa-msg.ai code{background:var(--code-inline,#eceae4);padding:1px 5px;border-radius:4px;font-family:var(--mono,monospace);font-size:calc(var(--fs) * .8)}
.pa-msg.ai pre{background:var(--code-inline,#eceae4);padding:8px;border-radius:8px;overflow-x:auto;font-size:calc(var(--fs) * .8)}
.pa-tools{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);align-self:flex-start;margin:-4px 0 0 2px}
/* a file the Agent made (make_document): a download chip under the reply */
.pa-files{align-self:flex-start;display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 0 2px;max-width:100%}
.pa-file{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:6px 10px;border:1px solid var(--line,#dcdad3);
  border-radius:16px;font-size:calc(var(--fs) * .8);text-decoration:none;background:var(--card,#fff);color:var(--ink,#1f2328);margin-top:6px}
.pa-file b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.pa-file:hover{border-color:var(--teal,#12716a);color:var(--teal-ink,#0c5751)}
.pa-file-meta{color:var(--muted,#6b7178);white-space:nowrap}
.pa-file-get{color:var(--teal,#12716a);font-weight:600;white-space:nowrap}
.pa-act{align-self:stretch;border:1px solid var(--line,#dcdad3);border-left:3px solid var(--teal,#12716a);border-radius:10px;
  padding:9px 11px;font-size:calc(var(--fs) * .833);background:var(--card2,#faf9f6)}
.pa-act.danger{border-left-color:var(--red,#d24b38)}
.pa-act .why{font-size:calc(var(--fs) * .8);line-height:1.4;color:var(--muted,#6b7178);margin:3px 0 4px}
.pa-act .warn{font-size:calc(var(--fs) * .8);line-height:1.4;font-weight:600;color:var(--red,#d24b38);margin:3px 0 4px}
.pa-act .k{font-size:calc(var(--fs) * .7);text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#6b7178)}
.pa-act .cmd{font-family:var(--mono,monospace);font-size:calc(var(--fs) * .767);background:var(--code-inline,#eceae4);padding:6px 8px;border-radius:6px;margin:6px 0;white-space:pre-wrap;word-break:break-all}
.pa-act .row{display:flex;gap:7px;margin-top:6px}
/* G5.1 (JARVIS): organize_folder's plan table */
.pa-org{margin:6px 0}
.pa-org-sum{font-size:calc(var(--fs) * .833);margin-bottom:5px}
.pa-org-wrap{max-height:260px;overflow:auto;border:1px solid var(--line,#dcdad3);border-radius:6px}
.pa-org-tbl{width:100%;border-collapse:collapse;font-size:calc(var(--fs) * .8)}
.pa-org-tbl th{position:sticky;top:0;background:var(--code-inline,#eceae4);text-align:left;font-weight:600;padding:4px 7px}
.pa-org-tbl td{padding:3px 7px;border-top:1px solid var(--line,#dcdad3);word-break:break-all;vertical-align:top}
.pa-org-note{font-size:calc(var(--fs) * .767);color:var(--muted,#6b7178);margin-top:4px;line-height:1.4}
.pa-btn{font:600 calc(var(--fs) * .8) var(--sans,system-ui);padding:6px 12px;border-radius:7px;border:1px solid var(--teal,#12716a);
  background:var(--teal,#12716a);color:var(--on-accent,#fff);cursor:pointer}
.pa-btn.ghost{background:transparent;color:var(--ink,#1f2328);border-color:var(--line,#dcdad3)}
.pa-btn:disabled{opacity:.5;cursor:default}
.pa-foot{border-top:1px solid var(--line,#dcdad3);padding:9px 10px;display:flex;gap:7px;align-items:flex-end}
.pa-foot textarea{flex:1;resize:none;min-height:38px;max-height:120px;font:calc(var(--fs) * .9) var(--sans,system-ui);padding:8px 10px;
  border:1px solid var(--line,#dcdad3);border-radius:9px;background:var(--paper,#f3f2ee);color:var(--ink,#1f2328)}
.pa-foot textarea:focus{outline:none;border-color:var(--teal,#12716a)}
.pa-send{width:38px;height:38px;border-radius:9px;border:none;background:var(--teal,#12716a);color:var(--on-accent,#fff);cursor:pointer;font-size:calc(var(--fs) * 1.067);flex:none}
.pa-send:disabled{opacity:.5}
.pa-empty{color:var(--muted,#6b7178);font-size:calc(var(--fs) * .867);text-align:center;margin:auto;padding:0 16px;line-height:1.6}
.pa-chip{display:inline-block;margin:3px;padding:5px 10px;border:1px solid var(--line,#dcdad3);border-radius:16px;
  font-size:calc(var(--fs) * .8);cursor:pointer;background:var(--card,#fff);color:var(--ink,#1f2328)}
.pa-chip:hover{border-color:var(--teal,#12716a);color:var(--teal-ink,#0c5751)}
/* attach button + pending-attachment chips */
.pa-clip{width:38px;height:38px;border-radius:9px;border:1px solid var(--line,#dcdad3);background:var(--paper,#f3f2ee);
  color:var(--muted,#6b7178);cursor:pointer;font-size:calc(var(--fs) * 1.133);flex:none}
.pa-clip:hover{border-color:var(--teal,#12716a);color:var(--teal-ink,#0c5751)}
.pa-atts{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0}
.pa-att{display:inline-flex;align-items:center;gap:5px;max-width:180px;padding:4px 8px;border:1px solid var(--line,#dcdad3);
  border-radius:14px;font-size:calc(var(--fs) * .767);background:var(--card2,#faf9f6);color:var(--ink,#1f2328);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pa-att-x{border:none;background:transparent;color:var(--muted,#6b7178);cursor:pointer;font-size:calc(var(--fs) * .733);padding:0;line-height:1}
.pa-att-x:hover{color:var(--red,#d24b38)}
/* a chip whose file is still being read, and a brief flash if Send is pressed then */
.pa-att.loading{opacity:.6}
.pa-atts.reading{animation:petAttReading .7s ease}
@keyframes petAttReading{0%,100%{background:transparent}50%{background:var(--teal-wash,#e4efee)}}
/* G5.1 slice 11: the camera button and the picture waiting to go with the next question */
.pa-cam{margin-left:4px}
.pa-cam:disabled{opacity:.5;cursor:wait}
.pa-cambox{display:flex;gap:8px;align-items:flex-start;padding:8px 10px 0}
.pa-cambox img{width:96px;max-height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line,#dcdad3);flex:none}
.pa-camside{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.pa-camctl{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.pa-camctl select{max-width:160px;font-size:calc(var(--fs) * .733);padding:2px 4px;border-radius:6px;background:var(--card,#fff);
  color:var(--ink,#1f2328);border:1px solid rgba(127,127,127,.35)}
.pa-cammsg{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);line-height:1.35}
.pa-cammsg.bad{color:var(--red,#d24b38)}

/* Reform C1: the Agent's own model menu + "answered by" line */
#petAgentPanel .pa-modelbar{display:flex;align-items:center;gap:6px;padding:4px 10px;border-bottom:1px solid rgba(127,127,127,.25);font-size:calc(var(--fs) * .733)}
#petAgentPanel .pa-modellab{opacity:.7}
#petAgentPanel #paModel{flex:1;min-width:0;font-size:calc(var(--fs) * .733);padding:2px 4px;border-radius:6px;background:var(--card,#fff);color:var(--ink,#1f2328);border:1px solid rgba(127,127,127,.35)}
#petAgentPanel #paModel option,#petAgentPanel #paModel optgroup{background:var(--card,#fff);color:var(--ink,#1f2328)}
#petAgentPanel .pa-model{font-size:calc(var(--fs) * .667);opacity:.6;margin:-4px 10px 6px;text-align:right}
/* Reform G3: where that answer came from - this PC, a provider's API, or the gateway */
#petAgentPanel .pa-tier{display:inline-block;margin-left:3px;padding:0 5px;border-radius:6px;
  border:1px solid rgba(127,127,127,.45);font-size:calc(var(--fs) * .6);line-height:13px;vertical-align:1px}
#petAgentPanel .pa-tier.local{border-color:var(--teal,#12716a);color:var(--teal,#12716a)}
#petAgentPanel .pa-tier.node{border-color:var(--amber);color:var(--amber)}

/* Reform C2: JARVIS toggle + mic button */
#petAgentPanel #paJarvis.on{background:var(--teal,#12716a);color:var(--on-accent,#fff);border-radius:8px}
#petAgentPanel .pa-mic{background:transparent;border:none;font-size:calc(var(--fs) * 1.2);cursor:pointer;padding:0 4px;align-self:flex-end}
#petAgentPanel .pa-mic.on{color:var(--red);animation:pa-mic-pulse 1s ease-in-out infinite}
#petAgentPanel .pa-mic.rec{color:var(--red);animation:pa-mic-pulse .7s ease-in-out infinite}   /* recording for the transcribe fallback */
#petAgentPanel .pa-mic.busy{opacity:.5;animation:none}                                       /* transcribing */
@keyframes pa-mic-pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* Reform C3: Worker's mode (teams of bots + routines) */
#paTeamsPanel{display:none;position:absolute;left:0;right:0;top:46px;bottom:0;z-index:6;
  background:var(--card,#fff);color:var(--ink,#1f2328);padding:12px;overflow:auto;flex-direction:column;gap:10px}
#paTeamsPanel.open{display:flex}
#paTeamsPanel .pa-av-top{display:flex;align-items:center;justify-content:space-between}
#paTeamsPanel .pa-av-close{background:transparent;border:none;font-size:calc(var(--fs) * 1.067);cursor:pointer;color:inherit}

/* Toolbox panel (Hermes parity H1) */
#paToolsPanel{display:none;position:absolute;left:0;right:0;top:46px;bottom:0;z-index:6;
  background:var(--card,#fff);color:var(--ink,#1f2328);padding:12px;overflow:auto;flex-direction:column;gap:10px}
#paToolsPanel.open{display:flex}
#paToolsPanel .pa-av-top{display:flex;align-items:center;justify-content:space-between}
#paToolsPanel .pa-av-close{background:transparent;border:none;font-size:calc(var(--fs) * 1.067);cursor:pointer;color:inherit}
.pa-tl-intro{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178)}
.pa-tl-groups{display:flex;flex-direction:column;gap:2px}
.pa-tl-row{display:flex;gap:9px;align-items:flex-start;padding:8px 4px;border-bottom:1px solid rgba(127,127,127,.15);cursor:pointer}
.pa-tl-notes{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:2px 4px 8px 29px;font-size:calc(var(--fs) * .8)}
.pa-tl-notes-btn{font:inherit;font-size:calc(var(--fs) * .8);padding:3px 9px;border-radius:7px;border:1px solid rgba(127,127,127,.35);background:transparent;color:inherit;cursor:pointer}
.pa-tl-notes-btn:hover{border-color:var(--teal,#12716a)}
.pa-tl-notes-msg{opacity:.75}
/* G5.1 slice 14: Toolbox > Messaging (WhatsApp Web link state and contacts) */
.pa-tl-msg{flex-direction:column;align-items:stretch;gap:6px}
.pa-tl-msg>.pa-tl-notes-btn{align-self:flex-start}
.pa-tl-msg-state{opacity:.8;line-height:1.4}
.pa-tl-msg-list{display:flex;flex-direction:column}
.pa-tl-msg-who{flex:1 1 auto;min-width:0;word-break:break-word}
.pa-tl-msg .pa-tl-mcpadd{margin-top:2px}
.pa-tl-msg .pa-tl-mcpadd input{flex:1 1 150px;min-width:0;font:inherit;font-size:calc(var(--fs) * .8);padding:4px 7px;border-radius:7px;border:1px solid var(--line,#c8ccd1);background:transparent;color:inherit}
.pa-tl-row input{margin-top:2px;width:16px;height:16px;flex:0 0 auto;accent-color:var(--teal,#12716a);cursor:pointer}
.pa-tl-txt{font-size:calc(var(--fs) * .867);line-height:1.3}
.pa-tl-desc{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);margin-top:2px}
.pa-tl-count{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);text-align:right;margin-top:2px}
#petAgentPanel .pa-tl-pick{cursor:default}
#petAgentPanel .pa-tl-pick .pa-tl-txt{flex:1;min-width:0}
#petAgentPanel .pa-tl-picksel{display:block;width:100%;max-width:100%;margin-top:6px;box-sizing:border-box}
.pa-tl-memhead{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding-top:8px;border-top:1px solid rgba(127,127,127,.25)}
.pa-tl-memclear{border:1px solid var(--line,#c8ccd1);background:transparent;color:var(--muted,#6b7178);border-radius:7px;padding:3px 9px;font-size:calc(var(--fs) * .733);cursor:pointer}
.pa-tl-memnote{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);margin-top:2px}
.pa-tl-mem{display:flex;flex-direction:column;gap:3px;margin-top:6px}
.pa-tl-profile{font-size:calc(var(--fs) * .8);background:color-mix(in srgb,var(--teal) 8%,transparent);border-radius:8px;padding:7px 9px;margin-bottom:4px;line-height:1.5}
.pa-tl-memempty{font-size:calc(var(--fs) * .8);color:var(--muted,#6b7178);padding:4px 0}
.pa-tl-memrow{display:flex;align-items:flex-start;gap:8px;padding:5px 0;border-bottom:1px solid rgba(127,127,127,.12)}
.pa-tl-memtxt{flex:1;font-size:calc(var(--fs) * .8);line-height:1.35}
.pa-tl-skuses{color:var(--muted,#6b7178);font-size:calc(var(--fs) * .733)}
.pa-tl-memx{background:transparent;border:none;color:var(--muted,#6b7178);font-size:calc(var(--fs) * .867);cursor:pointer;flex:0 0 auto;padding:0 2px}
.pa-tl-mcpadd{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.pa-tl-mcpin{flex:1;min-width:100px;padding:5px 7px;border-radius:7px;border:1px solid var(--line,#c8ccd1);
  background:var(--card,#fff);color:var(--ink,#1f2328);font-size:calc(var(--fs) * .8)}
.pa-tl-mcpwide{flex:1 0 100%}
.pa-tl-mcpbtn{border:1px solid var(--line,#c8ccd1);background:var(--teal,#12716a);color:var(--on-accent,#fff);border-radius:7px;
  padding:5px 12px;font-size:calc(var(--fs) * .8);cursor:pointer}
.pa-tl-mcpmsg{flex:1 0 100%;font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);min-height:14px}
.pa-tl-mcpmsg.bad,.pa-tl-mcpbad{color:var(--red,#b3261e)}
.pa-tl-trjsw{display:flex;gap:8px;align-items:center;margin-top:7px;font-size:calc(var(--fs) * .867);cursor:pointer}
.pa-tl-trjsw input{width:16px;height:16px;flex:0 0 auto;accent-color:var(--teal,#12716a);cursor:pointer}
/* G5.1 slice 28: the config another app pastes in (Toolbox > MCP > Share PetAi with other apps) */
.pa-tl-sharecfg{margin:6px 0 0;padding:7px 8px;border:1px solid var(--line,#c8ccd1);border-radius:7px;
  background:var(--card,#fff);color:var(--ink,#1f2328);font-size:calc(var(--fs) * .733);white-space:pre-wrap;word-break:break-all;
  max-height:180px;overflow:auto;user-select:all}
/* Reform G4: the Permissions list under the tool groups */
.pa-tl-permask{font-size:calc(var(--fs) * .8);font-weight:600;margin-top:6px}
.pa-tl-permlist{margin-bottom:8px}
.pa-tl-permro{overflow-wrap:anywhere;margin:4px 0}
.pa-tl-trjcount{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);margin-top:3px}
.pa-tl-trjbatch{flex:1 0 100%;min-height:52px;resize:vertical;padding:6px 8px;border-radius:7px;
  border:1px solid var(--line,#c8ccd1);background:var(--card,#fff);color:inherit;font:inherit;font-size:calc(var(--fs) * .8)}
.pa-ctl{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:4px 10px 0}
.pa-ctlb{border:1px solid var(--line,#c8ccd1);background:transparent;color:var(--muted,#6b7178);
  border-radius:7px;padding:3px 9px;font-size:calc(var(--fs) * .733);cursor:pointer}
.pa-ctlb:hover{color:var(--ink,#1f2328);border-color:var(--teal,#12716a)}
.pa-ctlmsg{flex:1;font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);min-height:14px}
.pa-ctlmsg.bad{color:var(--red,#b3261e)}
/* G5.1 slice 8: how full the model's context window is, beside Shorten, and the quiet note */
.pa-ctx{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);border:1px solid var(--line,#c8ccd1);border-radius:7px;
  padding:2px 7px;font-variant-numeric:tabular-nums;cursor:default;white-space:nowrap}
.pa-ctx.mid{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 60%,transparent)}
.pa-ctx.hi{color:var(--red,#b3261e);border-color:var(--red,#b3261e)}
#petAgentPanel .pa-ctxnote{font-size:calc(var(--fs) * .7);font-style:italic;opacity:.6;margin:-4px 10px 4px;text-align:right}
.pa-tl-use{display:flex;flex-direction:column;gap:3px;margin-top:6px}
.pa-tl-usehead{font-size:calc(var(--fs) * .8);line-height:1.4}
.pa-tl-useins{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);line-height:1.45}
/* Reform G3: the Activity rows keep "Show turn" on one line beside the text */
.pa-tl-memrow .pa-tl-memclear{flex:0 0 auto;white-space:nowrap}
/* Reform G5: Undo on a turn's newest file-tool row, "Undone" once it was */
.pa-tl-memrow .pa-tl-undo{border-color:var(--teal,#12716a);color:var(--teal-ink,#0c5751)}
.pa-tl-memrow .pa-tl-undo:disabled{opacity:.6;cursor:default}
.pa-tl-undone{flex:0 0 auto;white-space:nowrap;font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);padding:3px 2px}
/* the Undo result sentence above the list; a block of its own, since the Toolbox is a flex column */
.pa-tl-actmsg{font-size:calc(var(--fs) * .733);line-height:1.4;color:var(--muted,#6b7178);margin-top:4px;overflow-wrap:anywhere}
.pa-tl-actmsg:empty{display:none}
.pa-tl-actmsg.bad{color:var(--red,#b3261e)}
/* Reform G4b: pinned notes, the kind filter and the inline edit in the Memory card */
.pa-tl-mempinned{background:color-mix(in srgb,var(--teal) 7%,transparent);border-radius:6px;padding-left:5px;padding-right:3px}
.pa-tl-mempin{font-size:calc(var(--fs) * .733)}
.pa-tl-memkind{display:flex;gap:6px;align-items:center;font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);margin-bottom:2px}
.pa-tl-memkind .pa-tl-mcpin{flex:0 1 auto;width:auto;min-width:0;max-width:70%}
.pa-tl-memedit{flex:1;min-width:0;margin-top:0}
.pa-tm-intro,.pa-tm-note{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178)}
.pa-tm-teams{display:flex;flex-wrap:wrap;gap:6px}
.pa-tm-chip{border:1px solid var(--line,#e6e8eb);background:transparent;color:inherit;border-radius:14px;
  padding:4px 10px;font-size:calc(var(--fs) * .8);cursor:pointer}
.pa-tm-chip.on{border-color:var(--teal,#12716a);background:var(--teal,#12716a);color:var(--on-accent,#fff)}
.pa-tm-newteam,.pa-tm-newrt{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pa-tm-newteam input,.pa-tm-newrt input,.pa-tm-newrt select{flex:1;min-width:80px;padding:5px 7px;border-radius:7px;
  border:1px solid var(--line,#c8ccd1);background:var(--card,#fff);color:var(--ink,#1f2328);font-size:calc(var(--fs) * .8)}
#paTeamsPanel button{border:1px solid var(--line,#c8ccd1);background:var(--teal,#12716a);color:var(--on-accent,#fff);
  border-radius:7px;padding:5px 10px;font-size:calc(var(--fs) * .8);cursor:pointer}
#paTeamsPanel button.ghost,#paTeamsPanel .pa-tm-chip{background:transparent;color:inherit}
.pa-tm-h{display:flex;align-items:center;justify-content:space-between;margin-top:4px}
.pa-tm-open{font-size:calc(var(--fs) * .8);color:var(--teal-ink,#5eead4);text-decoration:none}
.pa-tm-open:hover{text-decoration:underline}
.pa-tm-empty{font-size:calc(var(--fs) * .8);color:var(--muted,#6b7178);padding:6px 0}
.pa-tm-bot{display:flex;align-items:center;gap:6px;padding:5px 0;border-bottom:1px solid rgba(127,127,127,.15)}
.pa-tm-role{font-size:calc(var(--fs) * .667);text-transform:uppercase;letter-spacing:.03em;color:var(--muted,#6b7178);
  border:1px solid var(--line,#e6e8eb);border-radius:5px;padding:1px 5px}
.pa-tm-role.mgr{color:var(--on-accent,#fff);background:var(--teal,#12716a);border-color:var(--teal,#12716a)}
.pa-tm-bn{flex:1;font-size:calc(var(--fs) * .867);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pa-tm-edit{font-size:calc(var(--fs) * .733) !important;padding:2px 8px !important}
.pa-tm-del,.pa-tm-rtdel{background:transparent !important;color:var(--muted,#6b7178) !important;border:none !important;font-size:calc(var(--fs) * .867) !important}
.pa-tm-addbot{width:100%;margin-top:8px;background:transparent !important;color:var(--teal,#12716a) !important;border:1px dashed var(--line,#c8ccd1) !important}
.pa-tm-profile{border:1px solid var(--line,#e6e8eb);border-radius:9px;padding:9px;margin-top:8px;display:flex;flex-direction:column;gap:7px}
.pa-tm-ph{font-weight:600;font-size:calc(var(--fs) * .8)}
.pa-tm-profile label{display:flex;flex-direction:column;gap:3px;font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178)}
.pa-tm-profile input,.pa-tm-profile select,.pa-tm-profile textarea{padding:5px 7px;border-radius:7px;
  border:1px solid var(--line,#c8ccd1);background:var(--card,#fff);color:var(--ink,#1f2328);font-size:calc(var(--fs) * .8);font-family:inherit}
.pa-tm-profile textarea{min-height:64px;resize:vertical}
.pa-tm-hint{opacity:.7;font-weight:400}
.pa-tm-pfbtns{display:flex;gap:6px}
/* H5: the per-team "workers may use tools" switch, above the goal box so it is seen
   before Run, not after. The hint wraps onto its own line under the label. */
.pa-tm-tools{display:block;font-size:calc(var(--fs) * .8);font-weight:600;margin-top:10px;line-height:1.45}
.pa-tm-tools input{margin-right:6px;vertical-align:-1px}
.pa-tm-tools .pa-tm-hint{display:block;font-size:calc(var(--fs) * .733);margin-top:2px}
.pa-tm-extra{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178)}
.pa-tm-run{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.pa-tm-run textarea{min-height:52px;resize:vertical;padding:6px 8px;border-radius:8px;
  border:1px solid var(--line,#c8ccd1);background:var(--card,#fff);color:var(--ink,#1f2328);font-size:calc(var(--fs) * .8);font-family:inherit}
/* what a team run follows: a skill (Auto by default) and a ready-made automation, beside its goal */
.pa-tm-follow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pa-tm-follow select{max-width:100%;padding:4px 6px;border-radius:7px;border:1px solid var(--line,#c8ccd1);
  background:var(--card,#fff);color:var(--ink,#1f2328);font-size:calc(var(--fs) * .8)}
.pa-tm-follow button{font-size:calc(var(--fs) * .733) !important;padding:3px 8px !important}
.pa-tm-tpl{font-size:calc(var(--fs) * .733);color:var(--teal,#12716a);display:inline-flex;align-items:center;gap:4px;max-width:100%}
.pa-tm-tpl[hidden]{display:none}
.pa-tm-x{background:transparent !important;color:inherit !important;border:0 !important;padding:0 2px !important;cursor:pointer}
.pa-tm-pfskill{display:flex;gap:6px}
.pa-tm-pfskill input{flex:1;min-width:0}
.pa-tm-transcript{margin-top:8px;display:flex;flex-direction:column;gap:8px}
.pa-tm-working{font-size:calc(var(--fs) * .8);color:var(--muted,#6b7178)}
.pa-tm-err{font-size:calc(var(--fs) * .8);color:var(--red,#c0392b)}
.pa-tm-advice,.pa-tm-summary{font-size:calc(var(--fs) * .8);background:color-mix(in srgb,var(--teal) 8%,transparent);border-radius:8px;padding:7px 9px}
.pa-tm-step{border:1px solid var(--line,#e6e8eb);border-radius:8px;padding:7px 9px}
.pa-tm-step.bad{border-color:var(--red)}
.pa-tm-slab{font-size:calc(var(--fs) * .8);font-weight:600;display:flex;gap:6px;align-items:center}
.pa-tm-mu{font-size:calc(var(--fs) * .667);color:var(--muted,#6b7178);font-weight:400}
.pa-tm-task{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);margin:2px 0 4px}
.pa-tm-sout{font-size:calc(var(--fs) * .8);word-break:break-word}
.pa-tm-status{margin-top:4px}
/* G5.2 part 12: a team run working on the PC, its steps as they come, with Stop */
.pa-runbar.pa-tm-live{margin:0}
/* G5.2 part 11: the steps a run left waiting for his OK, and the ones it did not do */
.pa-tm-waiting{margin-top:8px}
.pa-tm-wait{font-size:calc(var(--fs) * .8);font-weight:600;color:var(--amber);margin-bottom:4px}
.pa-tm-held{font-size:calc(var(--fs) * .8);color:var(--amber);margin-top:6px}
/* G5.2 part 13: a team's chat with its Manager, and a bot's own chat */
.pa-tm-hbtns{display:flex;gap:6px;align-items:center}
.pa-tm-chat{border:1px solid var(--line,#e6e8eb);border-radius:9px;padding:9px;margin-top:8px;display:flex;flex-direction:column;gap:7px}
.pa-tm-chatmsgs{display:flex;flex-direction:column;gap:8px;max-height:380px;overflow-y:auto}
.pa-tm-chat .pa-tm-mu{align-self:flex-start;margin-top:-4px}
.pa-tm-hand{font-style:italic}
.pa-tm-done{color:var(--teal,#12716a);font-weight:600;font-size:calc(var(--fs) * .8)}
.pa-tm-cap{color:var(--amber);font-size:calc(var(--fs) * .8)}
.pa-tm-routines{border-top:1px solid rgba(127,127,127,.2);padding-top:8px;display:flex;flex-direction:column;gap:6px}
.pa-tm-rt{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap}
.pa-tm-rtn{font-size:calc(var(--fs) * .8);flex:1;min-width:120px}
.pa-tm-rtb{display:flex;gap:4px}
.pa-tm-rtrun,.pa-tm-rttog{font-size:calc(var(--fs) * .733) !important;padding:3px 8px !important}
.pa-tm-iv{display:flex;align-items:center;gap:4px;font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178)}
/* H6: a routine's schedule read back, its next run, and what its last run produced. The
   preview line turns green when the server understood the schedule and red when it did not,
   so a typo is visible before the routine is saved. */
.pa-tm-rtnext{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);margin-top:1px}
.pa-tm-rtlast{font-size:calc(var(--fs) * .733);margin-top:1px;opacity:.9}
.pa-tm-rtprev{flex-basis:100%;font-size:calc(var(--fs) * .733);min-height:14px;color:var(--muted,#6b7178)}
.pa-tm-rtprev.ok{color:var(--teal,#12716a)}
.pa-tm-rtprev.bad{color:var(--red,#b3261e)}

/* ---------- JARVIS's inline status strip (Reform C follow-up) ----------
   No separate window: when JARVIS is on it listens and answers in the normal Agent chat, and this
   small strip in the panel shows what the mic is doing (listening / heard / thinking / speaking). */
.pa-jvbar{display:flex;align-items:center;gap:8px;padding:6px 12px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--teal) 10%,transparent);font-size:calc(var(--fs) * .833);}
.pa-jvbar .pa-jvdot{width:8px;height:8px;border-radius:50%;background:var(--teal);flex:0 0 auto;animation:paJvPulse 1.6s infinite;}
.pa-jvbar .pa-jvlvl{flex:0 0 auto;width:40px;height:6px;border-radius:3px;background:color-mix(in srgb,var(--teal) 16%,transparent);overflow:hidden;}
.pa-jvbar .pa-jvlvlbar{height:100%;width:0;background:color-mix(in srgb,var(--teal) 55%,transparent);transition:width .07s linear;}
.pa-jvbar .pa-jvlvlbar.on{background:var(--teal);}
.pa-jvbar .pa-jvstate{font-weight:600;color:var(--teal-ink);flex:0 0 auto;}
.pa-jvbar .pa-jvinterim{color:var(--muted,#6b7178);flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
@keyframes paJvPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--teal) 50%,transparent);}70%{box-shadow:0 0 0 6px color-mix(in srgb,var(--teal) 0%,transparent);}100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--teal) 0%,transparent);}}

/* Where commands run (H9): one row per place, with the reason it can or can't be used. */
.pa-tl-term { display: flex; flex-direction: column; gap: 6px; margin: 4px 0 8px; }
.pa-tl-termrow { display: flex; align-items: flex-start; gap: 8px; font-size: calc(var(--fs) * .867); cursor: pointer; }
.pa-tl-termrow input { margin-top: 3px; }
.pa-tl-termtext { display: block; }
.pa-tl-termwhy { opacity: .72; font-size: calc(var(--fs) * .8); margin-top: 1px; }
.pa-tl-termwhy.bad { color: var(--red); opacity: .95; }
/* G5.1 slice 3: the Search engine card's rows (a key box wraps under its name) */
.pa-tl-srow{flex-wrap:wrap;align-items:center}
.pa-tl-srow .pa-tl-memtxt{flex:1 1 100%}
.pa-tl-srow .pa-tl-mcpin{flex:1 1 140px}
/* G5.1 slice 4: the steps of the answer the PC is working on, live, with Stop */
.pa-runbar{margin:4px 10px 0;padding:6px 8px;border:1px solid var(--line,#c8ccd1);border-radius:8px;font-size:calc(var(--fs) * .733);
  color:var(--muted,#6b7178);background:rgba(127,127,127,.06)}
.pa-runsteps{display:flex;flex-direction:column;gap:2px;max-height:90px;overflow:auto}
.pa-runstep{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pa-runrow{display:flex;align-items:center;gap:6px;margin-top:4px}
.pa-runstate{flex:1;min-width:0}
.pa-runbar .pa-ctlb:disabled{opacity:.6;cursor:default}
/* G5.1 slice 5: the Research form under the header, and a research's progress in the run bar */
.pa-rsform{margin:6px 10px 0;padding:8px;border:1px solid var(--line,#c8ccd1);border-radius:8px;font-size:calc(var(--fs) * .8);
  background:rgba(127,127,127,.06);display:flex;flex-direction:column;gap:6px}
.pa-rshead{font-weight:600;color:var(--ink,#1f2328)}
.pa-rsform input,.pa-rsform select{font:inherit;color:var(--ink,#1f2328);background:var(--card,#fff);
  border:1px solid var(--line,#c8ccd1);border-radius:6px;padding:5px 7px;min-width:0}
.pa-rsform input{width:100%;box-sizing:border-box}
.pa-rsrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pa-rsrow select{flex:1 1 140px}
.pa-rsnote{color:var(--muted,#6b7178);font-size:calc(var(--fs) * .733);line-height:1.4}
.pa-rsprog{margin-bottom:5px}
.pa-rsline{color:var(--ink,#1f2328);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pa-rsbar{height:4px;margin-top:4px;border-radius:2px;background:rgba(127,127,127,.2);overflow:hidden}
.pa-rsbar i{display:block;height:100%;background:var(--teal,#12716a);transition:width .4s}
.pa-msg .pa-h{display:inline-block;margin-top:4px}
/* G5.1 slice 6: a chat about a saved research report, and a report's link to the library */
#petAgentPanel .pa-discbar a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;font-weight:600;text-decoration:none}
#petAgentPanel .pa-discbar a:hover{text-decoration:underline}
#petAgentPanel .pa-rslink{font-size:calc(var(--fs) * .767);margin:-2px 0 6px 4px}
#petAgentPanel .pa-rslink a{color:inherit;opacity:.8}
/* G5.1 slice 16: an incognito chat (the dark-glasses button) */
#petAgentPanel #paIncog.on{background:var(--sidebar,#20242a);color:var(--sidebar-ink,#d6dbe0);border-radius:8px}
#petAgentPanel .pa-incbar{background:var(--sidebar,#20242a);color:var(--sidebar-ink,#d6dbe0)}
#petAgentPanel .pa-incbar .pa-modellab{color:var(--sidebar-ink,#d6dbe0)}
#petAgentPanel .pa-incnote{flex:1;min-width:0;font-size:calc(var(--fs) * .767);line-height:1.35;opacity:.9}
#petAgentPanel.pa-incognito .pa-body{background-image:linear-gradient(rgba(59,63,70,.06),rgba(59,63,70,.06))}
/* G5.1 slice 17: the model's thinking, collapsed above its answer */
.pa-think{align-self:flex-start;max-width:92%;font-size:calc(var(--fs) * .767);color:var(--muted,#6b7178);
  border-left:2px solid var(--line,#dcdad3);padding:1px 0 1px 8px;margin:0 0 -2px}
.pa-think>summary{cursor:pointer;list-style:none;user-select:none;-webkit-user-select:none}
.pa-think>summary::-webkit-details-marker{display:none}
.pa-think>summary::before{content:"\25B8\00a0"}
.pa-think[open]>summary::before{content:"\25BE\00a0"}
.pa-thinktext{white-space:pre-wrap;word-wrap:break-word;margin-top:4px;max-height:240px;overflow:auto;line-height:1.45}
/* G5.1 slice 25: "Teach my local model this" under an answer another model rescued */
#petAgentPanel .pa-teach{margin:-2px 0 6px 4px}
#petAgentPanel .pa-teachchip{margin:0;font-size:calc(var(--fs) * .767)}
#petAgentPanel .pa-teachnote{font-size:calc(var(--fs) * .733);line-height:1.4;opacity:.75;margin:4px 0}
#petAgentPanel .pa-teachnote.bad{color:var(--red,#b42318);opacity:1}
#petAgentPanel .pa-teachform{border:1px solid var(--line,#dcdad3);border-radius:10px;padding:8px;margin-top:6px}
#petAgentPanel .pa-teachlab{display:block;font-size:calc(var(--fs) * .733);font-weight:600;margin:6px 0 2px}
#petAgentPanel .pa-teachin{display:block;width:100%;box-sizing:border-box;font:inherit;font-size:calc(var(--fs) * .8);
  border:1px solid var(--line,#dcdad3);border-radius:6px;padding:5px 7px;background:transparent;color:inherit;resize:vertical}
#petAgentPanel .pa-teachbar{display:flex;gap:6px;margin-top:8px}
/* G5.2 part 2: answers drawn by static/markdown.js (the same renderer as the main chat). Line
   breaks come from the HTML now, so only his own messages and the small fallback renderer keep
   pre-wrap (no double spacing in lists). */
.pa-lite{white-space:pre-wrap}
.pa-msg.ai>:first-child,.pa-tm-md>:first-child{margin-top:0}
.pa-msg.ai>:last-child,.pa-tm-md>:last-child{margin-bottom:0}
.pa-msg.ai p,.pa-tm-md p{margin:.4em 0}
.pa-msg.ai h2,.pa-msg.ai h3,.pa-msg.ai h4,.pa-tm-md h2,.pa-tm-md h3,.pa-tm-md h4{margin:.7em 0 .3em;line-height:1.3;font-weight:650}
.pa-msg.ai h2,.pa-tm-md h2{font-size:1.15em}.pa-msg.ai h3,.pa-tm-md h3{font-size:1.06em}.pa-msg.ai h4,.pa-tm-md h4{font-size:1em}
.pa-msg.ai ul,.pa-msg.ai ol,.pa-tm-md ul,.pa-tm-md ol{margin:.3em 0 .5em;padding-left:1.35em}
.pa-msg.ai li,.pa-tm-md li{margin:.15em 0}
.pa-msg.ai li>ul,.pa-msg.ai li>ol,.pa-tm-md li>ul,.pa-tm-md li>ol{margin:.1em 0 .15em}
.pa-msg.ai blockquote,.pa-tm-md blockquote{margin:.45em 0;padding:.25em .8em;border-left:3px solid var(--teal,#12716a);color:var(--muted,#6b7178)}
.pa-msg.ai hr,.pa-tm-md hr{border:0;border-top:1px solid var(--line,#dcdad3);margin:.7em 0}
.pa-msg.ai table,.pa-tm-md table{border-collapse:collapse;margin:.5em 0;font-size:.95em;max-width:100%;display:block;overflow-x:auto}
.pa-msg.ai th,.pa-msg.ai td,.pa-tm-md th,.pa-tm-md td{border:1px solid var(--line,#dcdad3);padding:4px 8px;text-align:left;vertical-align:top}
.pa-msg.ai th,.pa-tm-md th{background:rgba(127,127,127,.08);font-weight:600}
.pa-msg.ai a,.pa-tm-md a{color:var(--teal-ink,#0d5c56)}
.pa-msg.ai strong,.pa-tm-md strong{font-weight:650}
.pa-msg.ai pre,.pa-tm-md pre{white-space:pre;margin:.45em 0}
.pa-tm-md code{background:var(--code-inline,#eceae4);padding:1px 5px;border-radius:4px;font-family:var(--mono,monospace);font-size:calc(var(--fs) * .767)}
.pa-tm-md pre{background:var(--code-inline,#eceae4);padding:8px;border-radius:8px;overflow-x:auto;font-size:calc(var(--fs) * .767);font-family:var(--mono,monospace)}
.pa-tm-advice .pa-tm-md,.pa-tm-summary .pa-tm-md{margin-top:2px}
/* G5.2 part 2: Copy under each answer, and on his own message when the pointer is over it */
.pa-msgacts{display:flex;gap:6px;margin-top:-7px}
.pa-msgacts.ai{align-self:flex-start}
.pa-msgacts.user{align-self:flex-end;opacity:0;transition:opacity .15s}
.pa-msg.user:hover+.pa-msgacts.user,.pa-msgacts.user:hover,.pa-msgacts.user:focus-within{opacity:1}
.pa-tm-step .pa-msgacts,.pa-tm-summary .pa-msgacts{margin-top:4px}
.pa-copy{background:transparent;border:1px solid var(--line,#dcdad3);color:var(--muted,#6b7178);border-radius:6px;
  font-size:calc(var(--fs) * .733);line-height:1.4;padding:1px 8px;cursor:pointer}
.pa-copy:hover{background:var(--card2,#faf9f6);color:var(--ink,#1f2328)}
/* G5.2 part 10: Read aloud under an answer, and the reading bar over the box while it reads */
.pa-msgacts .ps-ctl{display:inline-flex;gap:6px}
.pa-msgacts .ps-ctl.ps-on .pa-copy{border-color:var(--teal,#12716a);color:var(--ink,#1f2328)}
.pa-readbar{display:flex;align-items:center;gap:6px;margin:4px 10px 0;padding:5px 8px;border:1px solid var(--line,#c8ccd1);
  border-radius:8px;font-size:calc(var(--fs) * .767);color:var(--muted,#6b7178);background:rgba(127,127,127,.06)}
.pa-readbar .pa-readstate{flex:1;min-width:0;font-weight:600;color:var(--ink,#1f2328)}
/* G5.2 part 8: Edit on his message turns it into a box with Cancel and Send */
.pa-editbox{align-self:flex-end;width:92%;display:flex;flex-direction:column;gap:5px}
.pa-editarea{width:100%;box-sizing:border-box;resize:vertical;font:inherit;font-size:calc(var(--fs) * .9);line-height:1.45;
  padding:7px 9px;border:1px solid var(--teal,#12716a);border-radius:10px;background:var(--card,#fff);color:var(--ink,#1f2328)}
.pa-editnote{font-size:calc(var(--fs) * .767);color:var(--muted,#6b7178)}
.pa-editbtns{display:flex;gap:6px;justify-content:flex-end}
.pa-editsend{border-color:var(--teal,#12716a);color:var(--teal-ink,#0d5c56)}
/* G5.2 part 5: saved Agent chats. The 🗂 list under the header, the summary note under the
   meter, and the line under an answer a new model gave after reading the earlier chat */
.pa-chats{margin:6px 10px 0;padding:8px;border:1px solid var(--line,#c8ccd1);border-radius:8px;font-size:calc(var(--fs) * .8);
  background:rgba(127,127,127,.06);display:flex;flex-direction:column;gap:6px}
.pa-chatshead{display:flex;align-items:center;gap:6px;color:var(--ink,#1f2328)}
.pa-chatshead .grow{flex:1}
.pa-chatlist{display:flex;flex-direction:column;gap:3px;max-height:220px;overflow:auto}
.pa-chatrow{display:flex;align-items:stretch;gap:4px;border-radius:6px}
.pa-chatrow.cur{background:color-mix(in srgb,var(--teal) 12%,transparent)}
.pa-chatopen{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;
  border:0;background:transparent;color:var(--ink,#1f2328);font:inherit;padding:4px 6px;border-radius:6px;cursor:pointer}
.pa-chatopen:hover{background:rgba(127,127,127,.12)}
.pa-chattitle{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.pa-chatmeta{font-size:calc(var(--fs) * .7);color:var(--muted,#6b7178)}
.pa-chatact{border:0;background:transparent;color:var(--muted,#6b7178);cursor:pointer;padding:0 6px;border-radius:6px;font-size:calc(var(--fs) * .8)}
.pa-chatact:hover{color:var(--ink,#1f2328);background:rgba(127,127,127,.12)}
.pa-chatnone{color:var(--muted,#6b7178);padding:4px 2px}
.pa-chatsmsg{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);min-height:0}
.pa-chatsmsg.bad{color:var(--red,#b3261e)}
#petAgentPanel .pa-memnote{font-size:calc(var(--fs) * .7);color:var(--muted,#6b7178);padding:2px 10px 0}
#petAgentPanel .pa-handover{font-size:calc(var(--fs) * .7);font-style:italic;opacity:.7;margin:-4px 10px 6px;text-align:right}

/* G5.2 part 14: "Before we start, I need:" (static/intake.js), in the Workers panel and on /schedule */
.pi-form{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px;font-size:calc(var(--fs) * .833)}
.pi-title{font-weight:700;font-size:calc(var(--fs) * .867)}
.pi-note{opacity:.8}
.pi-q{display:flex;flex-direction:column;gap:4px}
.pi-ask{font-weight:600}
.pi-opt,.pi-why{opacity:.7;font-weight:400}
.pi-why{font-size:calc(var(--fs) * .767)}
.pi-a{width:100%;box-sizing:border-box;padding:6px 8px;border-radius:8px;border:1px solid var(--line);background:transparent;color:inherit;font:inherit}
.pi-err{color:var(--red,#c0392b);font-size:calc(var(--fs) * .767)}
.pi-checks{display:flex;flex-direction:column;gap:4px}
.pi-check{display:block;padding:5px 8px;border-radius:8px;line-height:1.4}
.pi-check.ok{background:color-mix(in srgb,var(--teal) 12%,transparent)}
.pi-check.bad{background:color-mix(in srgb,var(--red) 12%,transparent)}
.pi-mark{font-weight:700}
.pi-msg{font-size:calc(var(--fs) * .767);opacity:.8;min-height:0}
.pi-btns{display:flex;gap:6px;flex-wrap:wrap}
.pi-btns button{padding:6px 12px;border-radius:8px;cursor:pointer}
.pi-start[disabled]{opacity:.5;cursor:not-allowed}
.pa-tm-rtneeds{font-size:calc(var(--fs) * .767);color:var(--amber);margin-top:2px}

/* Screen recorder (agent-recorder.js): same slide-over frame as the phone panel. */
#paRecPanel{display:none;position:absolute;left:0;right:0;top:46px;bottom:0;z-index:6;background:var(--card,#fff);color:var(--ink,#1f2328);padding:12px;overflow-y:auto;overscroll-behavior:contain;flex-direction:column;gap:10px}
#paRecPanel.open{display:flex}
#paRecPanel .pa-av-top{display:flex;align-items:center;justify-content:space-between}
#paRecPanel .pa-av-close{background:transparent;border:none;font-size:calc(var(--fs) * 1.067);cursor:pointer;color:inherit}
.rc-box{border:1px solid var(--line,#e6e8eb);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px}
.rc-h{font-weight:600;font-size:calc(var(--fs) * .867)}
.rc-prev{position:relative;background:rgba(0,0,0,.88);border-radius:8px;aspect-ratio:16/9;overflow:hidden}
.rc-prev video{width:100%;height:100%;object-fit:contain;display:block}
.rc-cam{position:absolute;border:2px solid var(--teal,#12716a);border-radius:50%;overflow:hidden;cursor:move;touch-action:none;box-shadow:0 2px 10px rgba(0,0,0,.5)}
.rc-cam[hidden]{display:none}
.rc-cam video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.rc-cam-rs{position:absolute;right:-3px;bottom:-3px;width:18px;height:18px;background:var(--teal,#12716a);border:2px solid #fff;border-radius:50%;cursor:nwse-resize}
.rc-none{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(127,127,127,.95);font-size:calc(var(--fs) * .8)}
.rc-none[hidden]{display:none}
.rc-src{font-size:calc(var(--fs) * .8);color:var(--muted,#6b7178);min-height:1em}
.rc-hint{font-size:calc(var(--fs) * .733);color:var(--muted,#6b7178);line-height:1.4}
.rc-btn{font:inherit;font-size:calc(var(--fs) * .867);cursor:pointer;border:1px solid var(--line,#d5d9de);background:var(--card,#fff);color:inherit;border-radius:8px;padding:7px 12px}
.rc-btn.main{background:var(--teal,#12716a);color:var(--on-accent,#fff);border-color:transparent}
.rc-btn.rec{background:var(--red,#d92d20);color:var(--on-accent,#fff);border-color:transparent;font-weight:600}
.rc-btn:disabled{opacity:.45;cursor:default}
.rc-ctl{display:flex;gap:8px;flex-wrap:wrap}
.rc-ctl .rc-btn{flex:1 1 auto}
.rc-time{font-variant-numeric:tabular-nums;text-align:center;font-size:calc(var(--fs) * 1.2);font-weight:600}
.rc-msg{font-size:calc(var(--fs) * .8);min-height:1em;text-align:center}
.rc-msg.err{color:var(--red,#c0392b)}
.rc-out{font-size:calc(var(--fs) * .8);display:flex;flex-direction:column;gap:4px}
.rc-out a,.rc-item a{color:var(--teal,#12716a);font-weight:600}
.rc-ch{display:grid;grid-template-columns:110px 1fr 70px;gap:8px;align-items:center;font-size:calc(var(--fs) * .8)}
.rc-meter{height:8px;border-radius:5px;background:var(--line,#e6e8eb);overflow:hidden}
.rc-meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--teal,#12716a),var(--amber,#d4a017) 75%,var(--red,#d92d20))}
.rc-sel{font:inherit;font-size:calc(var(--fs) * .8);max-width:100%;padding:4px 6px;border-radius:6px;border:1px solid var(--line,#d5d9de);background:var(--card,#fff);color:inherit}
.rc-row{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:calc(var(--fs) * .8);margin-top:6px}
.rc-chk{display:flex;gap:8px;align-items:flex-start;font-size:calc(var(--fs) * .8);margin-top:6px}
.rc-list{display:flex;flex-direction:column;gap:6px}
.rc-item{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:calc(var(--fs) * .8)}
.rc-nm{flex:1 1 100%;overflow-wrap:anywhere}
.rc-sm{font:inherit;font-size:calc(var(--fs) * .733);cursor:pointer;border:1px solid var(--line,#d5d9de);background:transparent;color:inherit;border-radius:6px;padding:2px 8px}
#rcCount{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;font-size:30vmin;font-weight:700;color:var(--on-accent,#fff);text-shadow:0 0 30px rgba(0,0,0,.6);background:rgba(0,0,0,.28);z-index:2147483000;pointer-events:none}
#rcPill{position:fixed;left:16px;bottom:16px;z-index:2147482000;display:flex;align-items:center;gap:8px;background:var(--card,#fff);color:var(--ink,#1f2328);border:1px solid var(--line,#d5d9de);border-radius:999px;padding:6px 8px 6px 12px;font-size:calc(var(--fs) * .867);box-shadow:0 4px 18px rgba(0,0,0,.4);cursor:grab;touch-action:none;user-select:none}
#rcPill i{width:10px;height:10px;border-radius:50%;background:var(--red,#ff3b30);animation:rcBlink 1.2s infinite}
#rcPill.paused i{animation:none;background:var(--amber,#d4a017)}
#rcPill span{font-variant-numeric:tabular-nums;min-width:38px}
#rcPill button{font:inherit;border:0;background:rgba(127,127,127,.25);color:inherit;border-radius:50%;width:26px;height:26px;cursor:pointer}
@keyframes rcBlink{50%{opacity:.25}}
