/* ═══ Mocca — Assistant panel (B27, Pablo 2026-07-08) ═══
   Pablo-only Claude assistant. Now a SHELL PANEL — docks full-height on
   the trailing edge exactly like the Filters / Sort / Component-edit
   panels (C9). Reuses the chat vocabulary: threads, markdown, file
   upload, reply/quote, timestamps + avatars (C6). Adds an on-screen
   element picker with a neon traveling-gradient hover outline (C5).
   Rides the app tokens so it re-skins with theme + design system. */

/* ── launch buttons ──────────────────────────────────────────────── */
/* The top-bar launcher is a real `.nav-pill` (C11) — styling comes from
   shell.css, so it matches search/filter/sort/alerts exactly. We only
   size the inline brain SVG to sit like a Material glyph. */
.ast-brain-ic{ display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto; }
.nav-pill .ast-brain-ic svg{ width:20px;height:20px;display:block; }

/* Side-panel launcher (on filter/editor headers) keeps a compact chip. */
.ast-launch-panel{
  width:30px;height:30px;border-radius:8px;flex:0 0 auto;
  display:inline-grid;place-items:center;cursor:pointer;
  border:1px solid var(--border);background:var(--bg-1);color:var(--accent-text);
  transition:border-color var(--mk-t-fast),background var(--mk-t-fast),transform var(--mk-t-fast);
}
.ast-launch-panel svg{ width:17px;height:17px; }
.ast-launch-panel:hover{ border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px); }
.ast-launch-lbl{ display:none; }
/* C3 (Pablo B30): on desktop the launcher becomes a labelled pill. */
@media (min-width:901px){
  .ast-launch-panel{ width:auto;padding:0 11px;gap:6px;grid-auto-flow:column;height:30px; }
  .ast-launch-panel .ast-launch-lbl{ display:inline;font:600 12px var(--mk-font-ui);color:var(--fg-1); }
}

/* ── the panel: docks like .filter-panel ─────────────────────────── */
.ast-panel{
  position:fixed;top:0;bottom:0;inset-inline-end:0;z-index:1400;
  width:min(var(--mk-panel-w, 560px),100vw);display:flex;flex-direction:column;
  background:var(--bg-1);border-inline-start:1px solid var(--border);
  box-shadow:-24px 0 64px rgba(13,37,48,.20);
  transform:translateX(110%);transition:transform .3s cubic-bezier(.32,.72,.28,1);
  will-change:transform;
}
html[dir="rtl"] .ast-panel{ transform:translateX(-110%); }
/* B33 C9 (Pablo 2026-07-11): the assistant panel behaves like every other
   panel shell — while open, the outside dims + blurs (same scrim treatment
   as .panel-scrim) and an outside click closes it. Suppressed while picking.
   B48 (Pablo 2026-08-11: "the rest of the screen should be covered by a layer
   of opacity") — the dim USED to be a `position:fixed` `::before` INSIDE the
   panel. That can never work here: `.ast-panel` carries `will-change:transform`,
   which makes it a CONTAINING BLOCK for fixed-position descendants, so the
   pseudo resolved `inset:0` against the panel box (measured 559×820 in a
   1280×820 viewport) instead of the viewport — and at `z-index:-1` that strip
   sat behind the panel's own opaque background, i.e. invisible. Removing
   will-change is not enough either: the open TRANSITION re-establishes the
   containing block for its whole 300ms. The dim is now a real body-level
   sibling (`.ast-scrim`), which is also how every sections.js panel does it. */
.ast-panel.open{ transform:none !important; }
.ast-scrim{
  position:fixed; inset:0; z-index:1399;
  background:var(--scrim); opacity:0; pointer-events:none;
  transition:opacity 200ms var(--mk-ease);
  backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px);
}
.ast-scrim.open{ opacity:1; pointer-events:auto; }
body.ast-picking .ast-scrim{ opacity:0 !important; pointer-events:none !important; }
@media (max-width:600px){
  .ast-panel{ inset-inline-start:0;width:100%;border:0; }
}
/* While picking an on-screen element the panel slides away but stays mounted. */
body.ast-picking .ast-panel{ transform:translateX(110%) !important;pointer-events:none; }
html[dir="rtl"] body.ast-picking .ast-panel{ transform:translateX(-110%) !important; }
/* B64-05 (Pablo: "The assistant panel on the tablet view is not seen like a
   bottom sheet slide-up, that is not consistent. Remember that panels are seen
   as: side panels in desktop, slide-up bottom sheets in tablet (top corners a
   bit rounded) and as a full screen panel in mobile (both orientations)").
   The assistant is the one panel that does not carry `.filter-panel`, so the
   B59 tablet band in panels.css never reached it. Same band, same numbers as
   `.filter-panel` there (601–1024 wide AND ≥600 tall), so the two can't drift. */
@media (max-width:1024px) and (min-width:601px) and (min-height:600px){
  .ast-panel{
    inset-inline:0;top:auto;bottom:0;width:100%;
    height:min(92dvh, calc(100dvh - 44px));
    border-inline-start:0;border-top:1px solid var(--border);
    border-radius:20px 20px 0 0;overflow:hidden;
    box-shadow:0 -18px 48px color-mix(in srgb, var(--scrim, #0d2530) 22%, transparent);
    transform:translateY(102%);
  }
  html[dir="rtl"] .ast-panel{ transform:translateY(102%); }
  .ast-hd{ position:relative;padding-top:18px; }
  .ast-hd::after{
    content:'';position:absolute;top:7px;inset-inline-start:50%;transform:translateX(-50%);
    width:38px;height:4px;border-radius:999px;background:var(--border);
  }
  body.ast-picking .ast-panel,
  html[dir="rtl"] body.ast-picking .ast-panel{ transform:translateY(102%) !important; }
}
/* …and full screen on a landscape phone (the "both orientations" half). */
@media (max-height:599px) and (orientation:landscape){
  .ast-panel{ inset-inline-start:0;width:100%;border:0; }
}

/* ── header (mirrors .panel-hd) ──────────────────────────────────── */
.ast-hd{
  display:flex;align-items:center;gap:10px;padding:12px 14px;flex-shrink:0;
  border-bottom:1px solid var(--border);background:var(--bg-2);
}
.ast-brain{
  width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#7b5bd6));
  color:var(--accent-fg);
}
.ast-brain svg{ width:20px;height:20px; }
.ast-hd-t{ display:flex;flex-direction:column;gap:1px;min-width:0;flex:1; }
.ast-hd-t b{ font:700 13.5px var(--mk-font-ui);color:var(--fg-1); }
.ast-hd-t i{ font:600 11px var(--mk-font-ui);color:var(--fg-3);font-style:normal;display:inline-flex;align-items:center;gap:5px; }
/* provider + model selectors (C9 — two separate pills) + status dot (C8) */
.ast-hd-title{ display:flex;align-items:center;gap:6px;min-width:0; }
.ast-status-dot{ flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--mk-ok,#2f9e63) 40%,transparent);background:color-mix(in srgb,var(--mk-ok,#2f9e63) 12%,transparent);color:var(--mk-ok,#2f9e63);font:700 10px var(--mk-font-ui);letter-spacing:.02em;line-height:1;cursor:pointer;-webkit-appearance:none;appearance:none;transition:box-shadow 160ms ease,background 160ms ease,border-color 160ms ease; }
.ast-status-dot .mi{ font-size:13px; }
.ast-status-dot:hover{ box-shadow:0 0 0 3px color-mix(in srgb,var(--mk-ok,#2f9e63) 20%,transparent); }
.ast-status-dot.is-live{ background:color-mix(in srgb,var(--mk-warning,#F6A609) 16%,transparent);color:var(--mk-warning,#F6A609);border-color:color-mix(in srgb,var(--mk-warning,#F6A609) 48%,transparent); }
.ast-status-dot.is-live:hover{ box-shadow:0 0 0 3px color-mix(in srgb,var(--mk-warning,#F6A609) 28%,transparent); }
/* W-COMMENTS — the folder-connect header button; green once a folder is attached. */
.ast-iconbtn.is-connected{ color:var(--mk-ok,#2f9e63); }
.ast-iconbtn.is-connected:hover{ box-shadow:0 0 0 3px color-mix(in srgb,var(--mk-ok,#2f9e63) 20%,transparent); }
.ast-sel-row{ display:flex;align-items:center;gap:5px;min-width:0;margin-top:3px; }
.ast-sel-btn{ display:inline-flex;align-items:center;gap:4px;max-width:100%;min-width:0;padding:2px 6px 2px 8px;border-radius:999px;border:1px solid var(--border);background:var(--bg-input);cursor:pointer;font:600 10.5px var(--mk-font-ui);color:var(--fg-2); }
.ast-sel-btn:hover{ border-color:var(--accent);color:var(--accent-text); }
.ast-sel-btn .ast-sel-t{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-sel-btn .ast-sel-caret{ font-size:14px;color:var(--fg-3);flex:0 0 auto; }
.ast-prov-btn{ flex:0 0 auto; }
.ast-model-btn{ flex:0 1 auto;max-width:max-content; }
/* B44 C6 (Pablo) — the model selector took an unnecessarily large width in the
   HOSTED assistant (embedded in the wallet panel, where space is tight). Remove
   it there; model choice stays available in the full assistant panel. */
.ast-stack-hosted .ast-model-btn,.ast-stack-hosted .ast-prov-btn{ display:none; }
.ast-stack-hosted .ast-sel-row:empty{ display:none; }
.ast-model-menu{ position:fixed;z-index:1700;min-width:200px;background:var(--bg-1);border:1px solid var(--border);border-radius:11px;box-shadow:0 18px 48px rgba(13,37,48,.24);padding:5px; }
.ast-mm-sec{ font:600 10px var(--mk-font-ui);color:var(--fg-3);padding:8px 9px 4px; }
.ast-mm-item{ width:100%;display:flex;align-items:center;gap:8px;padding:7px 9px;border:0;border-radius:8px;background:none;cursor:pointer;font:600 12.5px var(--mk-font-ui);color:var(--fg-1);text-align:start; }
.ast-mm-item:hover{ background:var(--bg-input); }
.ast-mm-item.on{ background:var(--accent-soft);color:var(--accent-text); }
.ast-mm-item .ast-mm-nm{ flex:1;min-width:0; }
.ast-mm-item .mi{ font-size:16px;color:var(--accent-text); }
/* breadcrumb of nested threads (C5) */
.ast-crumbs{ display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:7px 12px;flex-shrink:0;border-bottom:1px solid var(--border);background:var(--bg-1); }
.ast-crumbs[hidden]{ display:none; }
.ast-crumb{ display:inline-flex;align-items:center;gap:4px;max-width:150px;padding:3px 8px;border-radius:999px;border:0;background:none;cursor:pointer;font:600 11px var(--mk-font-ui);color:var(--fg-3); }
.ast-crumb .mi{ font-size:13px; }
.ast-crumb:hover{ background:var(--bg-input);color:var(--fg-1); }
.ast-crumb.on{ color:var(--accent-text);background:var(--accent-soft); }
.ast-crumb .ast-crumb-t{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-crumb-sep{ font-size:14px;color:var(--fg-3);flex:0 0 auto; }
.ast-dot{ width:7px;height:7px;border-radius:999px;background:var(--mk-ok,#2f9e63);box-shadow:0 0 6px var(--mk-ok,#2f9e63); }
.ast-iconbtn{
  width:28px;height:28px;border-radius:8px;border:0;background:none;cursor:pointer;
  display:grid;place-items:center;color:var(--fg-3);flex:0 0 auto;
}
.ast-iconbtn:hover{ background:var(--bg-input);color:var(--fg-1); }
.ast-iconbtn.on{ background:var(--accent-soft);color:var(--accent-text); }
.ast-iconbtn .mi{ font-size:17px; }

/* ── threads bar (C6) ────────────────────────────────────────────── */
.ast-threads{
  display:flex;align-items:center;gap:6px;padding:8px 12px;flex-shrink:0;
  border-bottom:1px solid var(--border);background:var(--bg-1);
}
.ast-thread-cs{ position:relative;flex:1;min-width:0; }
.ast-thread-btn{
  width:100%;display:flex;align-items:center;gap:7px;padding:6px 10px;border-radius:9px;cursor:pointer;
  border:1px solid var(--border);background:var(--bg-input);color:var(--fg-1);font:600 12.5px var(--mk-font-ui);
}
.ast-thread-btn .mi{ font-size:16px;color:var(--fg-3); }
.ast-thread-btn .ast-thread-nm{ flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start; }
.ast-thread-btn .ast-thread-caret{ font-size:17px;color:var(--fg-3);margin-inline-start:auto; }
.ast-thread-menu{
  position:absolute;top:calc(100% + 5px);inset-inline:0;z-index:5;
  background:var(--bg-1);border:1px solid var(--border);border-radius:10px;
  box-shadow:0 16px 40px rgba(13,37,48,.22);padding:5px;display:none;max-height:260px;overflow-y:auto;
}
.ast-thread-cs.open .ast-thread-menu{ display:block; }
.ast-thread-item{
  display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:7px;cursor:pointer;
  font:600 12.5px var(--mk-font-ui);color:var(--fg-1);
}
.ast-thread-item:hover{ background:var(--bg-input); }
.ast-thread-item.on{ background:var(--accent-soft);color:var(--accent-text); }
.ast-thread-item .ast-ti-nm{ flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-thread-item .ast-ti-del{ width:22px;height:22px;border-radius:6px;border:0;background:none;color:var(--fg-3);cursor:pointer;display:grid;place-items:center;flex:0 0 auto; }
.ast-thread-item .ast-ti-del:hover{ background:var(--mk-err-soft,#fce8e8);color:var(--mk-err,#c0392b); }
.ast-thread-item .ast-ti-del .mi{ font-size:15px; }
.ast-thread-new{ color:var(--accent-text);border-top:1px solid var(--border);margin-top:4px;padding-top:9px; }
.ast-thread-new .mi{ font-size:16px; }

/* ── context strip (C7 — Title Case + removable chips) ───────────── */
.ast-ctx{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:9px 14px;flex-shrink:0;
  border-bottom:1px solid var(--border);background:var(--bg-1);
}
.ast-ctx-l{ display:inline-flex;align-items:center;gap:5px;font:700 11px var(--mk-font-ui);color:var(--fg-3); }
.ast-ctx-l .mi{ font-size:13px; }
.ast-chip{
  display:inline-flex;align-items:center;gap:4px;max-width:190px;
  padding:2px 4px 2px 8px;border-radius:999px;border:1px solid var(--border);background:var(--bg-input);
  font:600 11px var(--mk-font-ui);color:var(--fg-2);
}
.ast-chip .ast-chip-t{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-chip .mi{ font-size:12px;color:var(--accent-text);flex:0 0 auto; }
.ast-chip-x{ width:16px;height:16px;border-radius:999px;border:0;background:none;cursor:pointer;display:grid;place-items:center;color:var(--fg-3);flex:0 0 auto; }
.ast-chip-x:hover{ background:var(--border);color:var(--fg-1); }
.ast-chip-x .mi{ font-size:12px;color:inherit; }
.ast-chip-dim{ color:var(--fg-3);padding-inline:8px; }

/* ── messages (C6 — avatars, markdown, reply, timestamps) ────────── */
.ast-msgs{ flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:14px; }
.ast-empty{
  margin:auto;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;
  color:var(--fg-3);font:500 12.5px/1.5 var(--mk-font-ui);max-width:28ch;text-wrap:pretty;
}
.ast-empty .ast-empty-ic{ width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-text);margin-bottom:2px; }
.ast-empty .ast-empty-ic svg{ width:26px;height:26px; }
.ast-empty b{ color:var(--fg-1);font-size:14px; }

.ast-turn{ display:flex;gap:9px;align-items:flex-start; }
.ast-turn.ast-me{ flex-direction:row-reverse; }
.ast-av{ width:28px;height:28px;border-radius:9px;flex:0 0 auto;display:grid;place-items:center;font:700 10.5px var(--mk-font-ui); }
.ast-av-me{ background:var(--accent);color:var(--accent-fg); }
.ast-av-ai{ background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#7b5bd6));color:var(--accent-fg); }
.ast-av-ai svg{ width:17px;height:17px; }
.ast-col{ display:flex;flex-direction:column;gap:3px;min-width:0;max-width:82%; }
.ast-me .ast-col{ align-items:flex-end; }
.ast-bubble{
  padding:9px 12px;border-radius:14px;font:500 13px/1.5 var(--mk-font-ui);
  overflow-wrap:break-word;word-break:break-word;
}
.ast-me .ast-bubble{ background:var(--accent);color:var(--accent-fg);border-end-end-radius:5px; }
.ast-ai .ast-bubble{ background:var(--bg-2);color:var(--fg-1);border:1px solid var(--border);border-end-start-radius:5px; }
.ast-bubble p{ margin:0 0 6px; }
.ast-bubble p:last-child{ margin-bottom:0; }
.ast-bubble ul,.ast-bubble ol{ margin:4px 0;padding-inline-start:18px; }
.ast-bubble li{ margin:1px 0; }
.ast-bubble code{ font:600 12px 'JetBrains Mono',var(--mk-font-mono),ui-monospace,Menlo,monospace;background:color-mix(in srgb,var(--fg-1) 8%,transparent);padding:1px 3px;border-radius:5px; }
.ast-me .ast-bubble code{ background:rgba(255,255,255,.2); }
.ast-bubble pre{ margin:6px 0;padding:9px 11px;border-radius:9px;background:var(--bg-3,#0d2530);color:#e8eef1;overflow-x:auto; }
.ast-bubble pre code{ background:none;padding:0;color:inherit;font-size:11.5px; }
.ast-bubble a{ color:var(--accent-text);text-decoration:underline; }
.ast-me .ast-bubble a{ color:var(--accent-fg); }
.ast-bubble strong{ font-weight:700; }

.ast-reply-q{
  display:flex;align-items:center;gap:5px;padding:4px 9px;border-radius:9px;
  border-inline-start:2.5px solid var(--accent);background:var(--accent-soft);
  font:600 11px var(--mk-font-ui);color:var(--accent-text);max-width:100%;
}
.ast-reply-q .ast-rq-t{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-reply-q .mi{ font-size:13px;flex:0 0 auto; }

.ast-atts{ display:flex;flex-wrap:wrap;gap:6px; }
.ast-att{
  display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:9px;
  border:1px solid var(--border);background:var(--bg-1);font:600 11.5px var(--mk-font-ui);color:var(--fg-2);max-width:200px;
}
.ast-att .mi{ font-size:15px;color:var(--accent-text); }
.ast-att .ast-att-nm{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-att-img{ display:block;max-width:200px;max-height:150px;border-radius:10px;border:1px solid var(--border);object-fit:cover; }

.ast-meta{ display:flex;align-items:center;gap:6px;font:500 10px var(--mk-font-ui);color:var(--fg-3);padding-inline:2px; }
.ast-meta .ast-read{ display:inline-flex;align-items:center;gap:2px;color:var(--accent-text); }
.ast-meta .ast-read .mi{ font-size:12px; }
.ast-reply-btn{ border:0;background:none;cursor:pointer;color:var(--fg-3);font:600 10px var(--mk-font-ui);display:inline-flex;align-items:center;gap:2px;padding:1px 4px;border-radius:5px; }
.ast-reply-btn:hover{ background:var(--bg-input);color:var(--accent-text); }
.ast-reply-btn .mi{ font-size:12px; }

.ast-think{ display:inline-flex;gap:4px;padding:11px 13px;background:var(--bg-2);border:1px solid var(--border);border-radius:14px;border-end-start-radius:5px; }
.ast-think span{ width:6px;height:6px;border-radius:999px;background:var(--fg-3);animation:astPulse 1s ease-in-out infinite; }
.ast-think span:nth-child(2){ animation-delay:.15s; }
.ast-think span:nth-child(3){ animation-delay:.3s; }
@keyframes astPulse{ 0%,100%{opacity:.35;transform:translateY(0)} 50%{opacity:1;transform:translateY(-3px)} }

/* tool-call card (MCP edit) */
.ast-tool{ align-self:stretch;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));border-radius:12px;overflow:hidden;background:var(--bg-1);margin-inline-start:37px; }
.ast-tool-hd{ display:flex;align-items:center;gap:7px;padding:8px 11px;background:var(--accent-soft);color:var(--accent-text);font:600 11.5px var(--mk-font-mono); }
.ast-tool-hd .mi{ font-size:15px; }
.ast-tool-hd code{ font:700 11.5px var(--mk-font-mono); }
.ast-tool-badge{ margin-inline-start:auto;font:700 9px var(--mk-font-ui);letter-spacing:.08em;padding:2px 6px;border-radius:5px;background:var(--accent);color:var(--accent-fg); }
.ast-tool-bd{ padding:9px 12px;font:500 12.5px/1.5 var(--mk-font-ui);color:var(--fg-2); }
.ast-tool-apply{ display:inline-flex;align-items:center;gap:5px;margin:0 12px 10px;padding:5px 11px;border-radius:8px;cursor:pointer;border:0;background:var(--accent);color:var(--accent-fg);font:600 12px var(--mk-font-ui); }
.ast-tool-apply .mi{ font-size:15px; }
.ast-tool-apply:hover{ filter:brightness(.94); }
.ast-tool-done{ display:inline-flex;align-items:center;gap:5px;margin:0 12px 10px;color:var(--mk-ok,#2f9e63);font:600 12px var(--mk-font-ui); }
.ast-tool-done .mi{ font-size:15px; }

/* ── composer (C5 picked-element chip + C6 attachments) ──────────── */
.ast-composer{ display:flex;flex-direction:column;gap:8px;padding:10px 12px;flex-shrink:0;border-top:1px solid var(--border);background:var(--bg-2); }
.ast-pending{ display:flex;flex-direction:column;gap:6px; }
.ast-pending:empty{ display:none; }
.ast-pending-chip{
  display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:9px;
  border:1px solid var(--border);background:var(--bg-1);font:600 11.5px var(--mk-font-ui);color:var(--fg-2);
}
.ast-pending-chip.ast-pending-el{ border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:var(--accent-soft);color:var(--accent-text); }
.ast-pending-chip[data-att-prev]{ cursor:pointer; }
.ast-pending-chip[data-att-prev]:hover{ border-color:var(--accent); }
.ast-pending-chip .mi{ font-size:15px;flex:0 0 auto; }
.ast-pending-chip .ast-pc-t{ flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-pending-chip .ast-pc-x{ width:18px;height:18px;border-radius:999px;border:0;background:none;cursor:pointer;display:grid;place-items:center;color:inherit;opacity:.75;flex:0 0 auto; }
.ast-pending-chip .ast-pc-x:hover{ opacity:1;background:rgba(0,0,0,.08); }
.ast-pending-chip .ast-pc-x .mi{ font-size:13px;display:block;line-height:1; }
.ast-pending-chip .ast-pc-x{ padding:0; }
.ast-pending-chip .ast-pc-ext{ margin-inline-start:auto;display:inline-flex;align-items:center;gap:3px;font:700 10px var(--mk-font-ui);letter-spacing:.05em;color:var(--fg-3);padding:2px 7px 2px 5px;border-radius:6px;background:var(--bg-input);flex:0 0 auto; }
/* W-COMMENTS — small attachment-count badge on a queued element comment's chip. */
.ast-pending-chip .ast-pc-attn{ display:inline-flex;align-items:center;gap:2px;font:600 10px var(--mk-font-ui);color:var(--fg-3); }
.ast-pending-chip .ast-pc-attn .mi{ font-size:12px; }
.ast-pending-chip .ast-pc-ext .mi{ font-size:12px;line-height:1; }
.ast-pending-chip .ast-pc-edit{ width:18px;height:18px;border-radius:999px;border:0;background:none;cursor:pointer;display:grid;place-items:center;color:inherit;opacity:.7;flex:0 0 auto;padding:0; }
.ast-pending-chip .ast-pc-edit:hover{ opacity:1;background:rgba(0,0,0,.08); }
.ast-pending-chip .ast-pc-edit .mi{ font-size:13px;display:block;line-height:1; }
.ast-pending-chip.is-renaming .ast-att-rninp{ margin-inline-start:auto; }
/* B50-31 — the attachment's NAME is what the chip leads with (it used to show
   only the extension pill, so "the name of the attached file doesn't show up").
   It takes the free width and truncates; the extension pill stays right-aligned. */
.ast-pending-chip .ast-pc-nm{ flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600; }
/* With a name present the ext pill no longer needs to push itself over. */
.ast-pending-chip .ast-pc-nm ~ .ast-pc-ext{ margin-inline-start:0; }
/* While renaming, the input takes the name's slot (not the ext pill's). */
.ast-pending-chip.is-renaming .ast-pc-nm ~ .ast-att-rninp,
.ast-pending-chip.is-renaming .ast-att-rninp{ flex:1 1 auto;min-width:0; }
.ast-pending-chip.is-renaming .ast-pc-ext{ margin-inline-start:0; }
/* B50-29 — edit turns into save while the name is being edited. */
.ast-pending-chip .ast-pc-edit.is-saving{ opacity:1;color:var(--accent-text,var(--accent));background:var(--accent-soft); }
.ast-mm-item .ast-mm-ic{ color:var(--fg-3);flex:0 0 auto; }
.ast-pending-thumb{ width:26px;height:26px;border-radius:6px;object-fit:cover;flex:0 0 auto; }

.ast-composer-row{ display:flex;align-items:flex-end;gap:8px; }
.ast-attach-btn,.ast-send{ width:36px;height:36px;border-radius:12px;flex:0 0 auto;display:grid;place-items:center;cursor:pointer; }
.ast-attach-btn{ border:1px solid var(--border);background:var(--bg-input);color:var(--fg-3); }
.ast-attach-btn:hover{ border-color:var(--accent);color:var(--accent-text); }
.ast-attach-btn .mi{ font-size:18px; }
.ast-input{
  flex:1;min-width:0;min-height:36px;max-height:140px;overflow-y:auto;padding:8px 12px;border-radius:12px;
  border:1px solid var(--border);background:var(--bg-input);color:var(--fg-1);font:500 13px/1.45 var(--mk-font-ui);outline:none;
  white-space:pre-wrap;word-break:break-word;
}
.ast-input:focus{ border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft); }
.ast-input:empty::before{ content:attr(data-ph);color:var(--fg-3);pointer-events:none; }
.ast-input strong{ font-weight:700; } .ast-input em{ font-style:italic; } .ast-input code{ font:600 12px 'JetBrains Mono',var(--mk-font-mono),ui-monospace,Menlo,monospace;background:color-mix(in srgb,var(--fg-1) 8%,transparent);padding:1px 3px;border-radius:5px; }
.ast-input blockquote{ margin:4px 0;padding:2px 0 2px 10px;border-inline-start:2.5px solid var(--border);color:var(--fg-2); }
.ast-input ul,.ast-input ol{ margin:4px 0;padding-inline-start:20px; }
/* inserted path token from the "/" picker (C10) */
.ast-path-chip{ display:inline-flex;align-items:center;gap:3px;padding:1px 7px 1px 5px;margin:0 1px;border-radius:6px;background:var(--accent-soft);color:var(--accent-text);font:600 12px var(--mk-font-mono);vertical-align:baseline; }
.ast-path-chip .mi{ font-size:13px; }
/* "/" path picker popover (C10) */
.ast-slash{ position:fixed;z-index:1700;min-width:220px;max-width:300px;background:var(--bg-1);border:1px solid var(--border);border-radius:11px;box-shadow:0 18px 48px rgba(13,37,48,.24);padding:5px; }
.ast-slash-hd{ font:600 10px var(--mk-font-ui);color:var(--fg-3);padding:7px 9px 4px; }
.ast-slash-item{ width:100%;display:flex;align-items:center;gap:9px;padding:7px 9px;border:0;border-radius:8px;background:none;cursor:pointer;font:600 12.5px var(--mk-font-ui);color:var(--fg-1);text-align:start; }
.ast-slash-item .mi{ font-size:16px;color:var(--accent-text);flex:0 0 auto; }
.ast-slash-item .ast-slash-t{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mk-font-mono);font-size:12px; }
.ast-slash-item:hover,.ast-slash-item.on{ background:var(--accent-soft);color:var(--accent-text); }
.ast-send{ border:0;background:var(--accent);color:var(--accent-fg); }
.ast-send .mi{ font-size:18px; }
.ast-send:hover{ filter:brightness(.94); }

/* ── on-screen element picker (C5) ───────────────────────────────── */
.ast-pick-hud{
  position:fixed;z-index:1600;top:14px;inset-inline:0;margin:auto;width:max-content;max-width:calc(100vw - 28px);
  display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:999px;
  background:var(--bg-1);border:1px solid var(--border);box-shadow:0 14px 40px rgba(13,37,48,.24);
  font:600 12.5px var(--mk-font-ui);color:var(--fg-1);
}
.ast-pick-hud .mi{ font-size:17px;color:var(--accent-text); }
.ast-pick-hud .ast-pick-cancel{ border:0;background:var(--bg-input);color:var(--fg-2);cursor:pointer;border-radius:8px;padding:4px 10px;font:600 11.5px var(--mk-font-ui); }
.ast-pick-hud .ast-pick-cancel:hover{ background:var(--border); }
body.ast-picking{ cursor:crosshair; }

/* the neon traveling-gradient outline that tracks the hovered element.
   B29 C14 — standardized to the Components-Lab palette (green → cyan → violet). */
.ast-pick-outline{
  position:fixed;z-index:1590;pointer-events:none;border-radius:10px;
  padding:3px;opacity:0;transition:opacity .12s;
  background:conic-gradient(from var(--astAngle,0deg),
     #39ff14,#00e5ff 25%,#b026ff 50%,#00e5ff 75%,#39ff14);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  animation:astSpin 2.4s linear infinite;
  filter:drop-shadow(0 0 7px rgba(0,229,255,.7));
}
.ast-pick-outline.show{ opacity:1; }
/* B57 — while the pick NOTE is open, the selected element is frozen: a grey wash
   pinned over its box that also swallows pointer events (so the snapshot cannot be
   hovered or clicked while it is being described), and the same traveling-gradient
   ring, held in place instead of tracking the cursor. */
.ast-pick-frost{
  position:fixed;z-index:1588;border-radius:8px;pointer-events:auto;cursor:not-allowed;
  background:color-mix(in srgb,var(--bg-1,#fff) 62%,transparent);
  backdrop-filter:grayscale(1) saturate(.15);-webkit-backdrop-filter:grayscale(1) saturate(.15);
}
.ast-pick-ring{ opacity:1;z-index:1592; }
@supports not (backdrop-filter:grayscale(1)){
  .ast-pick-frost{ background:color-mix(in srgb,#7d8a92 34%,transparent); }
}
@property --astAngle{ syntax:'<angle>';inherits:false;initial-value:0deg; }
@keyframes astSpin{ to{ --astAngle:360deg; } }
/* fallback for engines without @property — a static bright neon border box */
@supports not (background:conic-gradient(from 1deg,#000,#000)){
  .ast-pick-outline{ background:none;border:2px solid var(--accent);box-shadow:0 0 0 2px var(--accent-soft),0 0 12px var(--accent); }
}

/* the little feedback note that appears anchored to the picked element */
.ast-pick-note{
  position:fixed;z-index:1610;width:260px;max-width:calc(100vw - 24px);
  background:var(--bg-1);border:1px solid var(--accent);border-radius:12px;
  box-shadow:0 18px 48px rgba(13,37,48,.28);padding:11px;display:flex;flex-direction:column;gap:8px;
}
.ast-pick-note-hd{ display:flex;align-items:center;gap:6px;font:700 11.5px var(--mk-font-ui);color:var(--fg-1); }
.ast-pick-note-hd .mi{ font-size:15px;color:var(--accent-text); }
.ast-pick-note-tag{ font:600 11px var(--mk-font-mono);color:var(--fg-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-pick-note textarea{
  resize:none;min-height:52px;padding:7px 9px;border-radius:9px;border:1px solid var(--border);
  background:var(--bg-input);color:var(--fg-1);font:500 12.5px/1.4 var(--mk-font-ui);outline:none;
}
.ast-pick-note textarea:focus{ border-color:var(--accent); }
.ast-pick-note-ft{ display:flex;justify-content:flex-end;gap:7px; }
.ast-pick-note-ft button{ border-radius:8px;padding:6px 12px;font:600 12px var(--mk-font-ui);cursor:pointer;border:1px solid var(--border);background:var(--bg-input);color:var(--fg-2); }
.ast-pick-note-ft .ast-pn-add{ border:0;background:var(--accent);color:var(--accent-fg); }
.ast-pick-note-ft .ast-pn-add:hover{ filter:brightness(.94); }

/* ── toast ───────────────────────────────────────────────────────── */
.ast-toast{
  position:fixed;z-index:1650;bottom:22px;inset-inline-start:50%;transform:translate(-50%,12px);
  display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border-radius:999px;
  background:var(--bg-1);border:1px solid var(--border);box-shadow:0 12px 32px rgba(13,37,48,.18);
  font:600 13px var(--mk-font-ui);color:var(--fg-1);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;
}
[dir="rtl"] .ast-toast{ transform:translate(50%,12px); }
.ast-toast.show{ opacity:1;transform:translate(-50%,0); }
[dir="rtl"] .ast-toast.show{ transform:translate(50%,0); }
.ast-toast .mi{ font-size:17px;color:var(--mk-ok,#2f9e63); }

/* ════ B28 — slide stack + hosted-in-panel + markup + attachments ════ */

/* The assistant hosts a stack of slides (chat, conversations) in BOTH
   mount modes, matching the Filters panel's slide behaviour. */
.ast-stack{ position:relative;overflow:hidden; }
.ast-panel .ast-stack{ flex:1;min-height:0;display:block; }
.ast-slide{
  position:absolute;inset:0;display:flex;flex-direction:column;min-height:0;
  background:var(--bg-1);
}
.ast-slide-chat{ z-index:1; }
.ast-slide-threads{
  z-index:2;transform:translateX(100%);
  transition:transform .3s cubic-bezier(.32,.72,.28,1);
  box-shadow:-16px 0 40px rgba(13,37,48,.14);
}
html[dir="rtl"] .ast-slide-threads{ transform:translateX(-100%); }
.ast-slide-threads.open{ transform:translateX(0); }
html[dir="rtl"] .ast-slide-threads.open{ transform:translateX(0); } /* Audit A11 — RTL specificity trap */

/* C5 — launched from a side panel, the assistant is an overlay slide that
   covers that panel's shell and slides in from the trailing edge, then a
   back-arrow pops it away (same feel as the Filters condition slides). */
.ast-stack-hosted{
  position:absolute;inset:0;z-index:60;overflow:hidden;background:var(--bg-1);
  transform:translateX(100%);transition:transform .3s cubic-bezier(.32,.72,.28,1);
  box-shadow:-20px 0 48px rgba(13,37,48,.18);
}
html[dir="rtl"] .ast-stack-hosted{ transform:translateX(-100%); }
.ast-stack-hosted.open{ transform:translateX(0); }
html[dir="rtl"] .ast-stack-hosted.open{ transform:translateX(0); } /* Audit A11 — RTL specificity trap */
body.ast-picking .ast-stack-hosted{ transform:translateX(110%) !important;pointer-events:none; }
html[dir="rtl"] body.ast-picking .ast-stack-hosted{ transform:translateX(-110%) !important; }
/* the back-arrow lead button */
.ast-back .mi{ font-size:19px; }

/* ── conversations slide (C2/C3) ─────────────────────────────────── */
.ast-thread-list{ flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px;padding:10px; }
.ast-thread-list .ast-thread-item{
  width:100%;display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:10px;
  border:1px solid transparent;background:none;cursor:pointer;text-align:start;
  font:inherit;color:var(--fg-1);
}
.ast-thread-list .ast-thread-item:hover{ background:var(--bg-input); }
.ast-thread-list .ast-thread-item.on{ background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,var(--border)); }
.ast-thread-list .ast-thread-item > .mi{ font-size:19px;color:var(--fg-3);flex:0 0 auto; }
.ast-thread-list .ast-thread-item.on > .mi{ color:var(--accent-text); }
.ast-ti-col{ display:flex;flex-direction:column;gap:1px;min-width:0;flex:1; }
.ast-ti-nm{ font:600 13px var(--mk-font-ui);color:var(--fg-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-ti-sub{ font:500 11px var(--mk-font-ui);color:var(--fg-3); }
.ast-ti-del{ width:26px;height:26px;border-radius:7px;display:grid;place-items:center;color:var(--fg-3);flex:0 0 auto;cursor:pointer; }
.ast-ti-del:hover{ background:var(--mk-err-soft,#fce8e8);color:var(--mk-err,#c0392b); }
.ast-ti-del .mi{ font-size:16px; }
.ast-thread-list .ast-thread-new{
  justify-content:flex-start;gap:8px;color:var(--accent-text);
  border:1px dashed color-mix(in srgb,var(--accent) 40%,var(--border));margin-top:6px;
}
.ast-thread-list .ast-thread-new .mi{ font-size:17px;color:var(--accent-text); }

/* ── markup toolbar (C1/C4 — mirrors the chat .cmp-fmt) ──────────── */
.ast-fmt{ display:flex;align-items:center;gap:1px;flex-wrap:wrap; }
.ast-fmt-btn{ width:28px;height:26px;border:0;background:none;border-radius:7px;cursor:pointer;display:grid;place-items:center;color:var(--fg-3); }
.ast-fmt-btn:hover{ background:var(--bg-input);color:var(--fg-1); }
/* C7 (Pablo B30): active/selected state — the caret sits inside this format. */
.ast-fmt-btn.on,.ast-fmt-btn.on:hover{ background:var(--accent-soft);color:var(--accent-text); }
.ast-fmt-btn .mi{ font-size:16px; }
.ast-fmt-sep{ width:1px;height:15px;background:var(--border);margin:0 3px;flex:0 0 auto; }
.ast-bubble del,.ast-bubble blockquote{ }
.ast-bubble blockquote{ margin:5px 0;padding:2px 0 2px 10px;border-inline-start:2.5px solid var(--border);color:var(--fg-2); }
.ast-me .ast-bubble blockquote{ border-color:rgba(255,255,255,.4); }

/* ── pick-note markup + attachments (C1) ─────────────────────────── */
.ast-pick-note{ width:300px; }
.ast-pick-note .ast-fmt{ padding:1px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:-2px 0; }
.ast-pn-atts{ display:flex;flex-direction:column;gap:6px; }
.ast-pn-atts:empty{ display:none; }
.ast-pick-note-ft{ justify-content:flex-start;align-items:center; }
.ast-pn-attbtns{ display:flex;gap:5px; }
.ast-pn-icon{ width:30px;height:30px;border-radius:8px;padding:0;border:1px solid var(--border);background:var(--bg-input);color:var(--fg-3);cursor:pointer;display:grid;place-items:center; }
.ast-pn-icon:hover{ border-color:var(--accent);color:var(--accent-text); }
.ast-pn-icon .mi{ font-size:16px; }
.ast-pn-ftspacer{ flex:1; }
/* simulated upload progress inside a pending chip */
.ast-up-bar{ position:relative;flex:0 0 46px;height:4px;border-radius:999px;background:var(--border);overflow:hidden;margin-inline-start:auto; }
.ast-up-fill{ position:absolute;inset-block:0;inset-inline-start:0;width:8%;background:var(--accent);border-radius:999px;transition:width .85s linear; }
.ast-pending-chip.is-uploading{ opacity:.9; }

/* ════ B29 — model/crumbs/slash/branch/attach-expander/path-title ════ */
/* attachment expander (+N / show less) shared across composer, chat, pick-note (C6) */
.ast-att-more{ display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border-radius:9px;border:1px dashed color-mix(in srgb,var(--accent) 40%,var(--border));background:var(--accent-soft);color:var(--accent-text);font:600 11.5px var(--mk-font-ui);cursor:pointer; }
.ast-att-more:hover{ border-style:solid; }
.ast-pending-more{ align-self:flex-start; }

/* per-message branch action (C5) */
.ast-branch-btn{ border:0;background:none;cursor:pointer;color:var(--fg-3);font:600 10px var(--mk-font-ui);display:inline-flex;align-items:center;gap:2px;padding:1px 5px;border-radius:5px; }
.ast-branch-btn:hover{ background:var(--accent-soft);color:var(--accent-text); }
.ast-branch-btn .mi{ font-size:12px; }
.ast-seed-tag{ display:inline-flex;align-items:center;gap:4px;font:600 10px var(--mk-font-ui);color:var(--fg-3);padding:2px 0; }
.ast-seed-tag .mi{ font-size:13px;color:var(--accent-text); }

/* nested-thread rows in the conversations list (C5) */
.ast-thread-list .ast-thread-item{ padding-inline-start:calc(11px + var(--depth,0) * 18px); }
.ast-ti-branch{ font-size:15px;color:var(--fg-3);flex:0 0 auto;margin-inline-start:-4px; }
.ast-ti-ic{ font-size:19px;color:var(--fg-3);flex:0 0 auto; }
.ast-thread-list .ast-thread-item.on .ast-ti-ic{ color:var(--accent-text); }

/* pick-note ancestry path title (C7) */
.ast-pn-path{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 12px var(--mk-font-ui); }
.ast-pick-note-sub{ font:500 11px var(--mk-font-ui);color:var(--fg-3);margin:-3px 0 1px; }
.ast-pn-input{ min-height:52px;max-height:120px; }

/* C8 — align the pick-note attach icons cleanly on one baseline */
.ast-pick-note-ft{ display:flex;align-items:center;gap:7px; }
.ast-pn-attbtns{ display:flex;align-items:center;gap:6px; }
.ast-pn-attbtns input[type="file"]{ display:none; }
.ast-pn-icon{ width:30px;height:30px;border-radius:8px;padding:0;border:1px solid var(--border);background:var(--bg-input);color:var(--fg-3);cursor:pointer;display:inline-grid;place-items:center;line-height:0; }
.ast-pn-icon .mi{ font-size:16px;line-height:1;display:block; }
.ast-pn-icon:hover{ border-color:var(--accent);color:var(--accent-text); }

/* B44 C20 (Pablo) — the pick-note Attach/Link icon buttons kept reading as
   misaligned (three earlier conflicting rule blocks + uneven heights vs the
   footer's Cancel/Attach buttons). One authoritative block: identical square
   icon buttons, flex-centred glyphs, all footer controls on a 32px baseline. */
.ast-pick-note-ft{ display:flex;align-items:center;gap:8px; }
.ast-pn-attbtns{ display:flex;align-items:center;gap:6px;flex:0 0 auto; }
.ast-pn-icon{ width:32px;height:32px;flex:0 0 auto;box-sizing:border-box;padding:0;
  display:inline-flex;align-items:center;justify-content:center;line-height:0;border-radius:8px; }
.ast-pn-icon .mi{ font-size:17px;line-height:1;display:block; }
.ast-pick-note-ft .ast-pn-cancel,.ast-pick-note-ft .ast-pn-add{ height:32px;box-sizing:border-box;
  display:inline-flex;align-items:center;justify-content:center;padding:0 14px; }

/* C13 — assistant top-bar pill: brain glyph sized like the other .mi icons
   so the pill's left padding matches Search / Filter / Sort exactly. */
.nav-pill.ast-launch-top .ast-brain-ic{ width:16px;height:16px; }
.nav-pill.ast-launch-top .ast-brain-ic svg{ width:16px;height:16px; }

/* W-COMMENTS — the floating launcher used on pages with no navbar pill to
   dock into (cv.html: no #navProfile, a standalone React page). A fixed
   circular FAB, bottom-inline-end, above the assistant panel/scrim but
   below any of the panel's own transient surfaces. */
.ast-launch-float{
  position:fixed; inset-block-end:20px; inset-inline-end:20px; z-index:1390;
  width:52px; height:52px; border-radius:999px; padding:0;
  display:flex; align-items:center; justify-content:center;
  background:var(--accent); color:var(--accent-fg,#fff); border:1px solid transparent;
  box-shadow:0 8px 24px -8px color-mix(in srgb, var(--accent) 60%, transparent), 0 2px 8px rgba(0,0,0,.2);
}
.ast-launch-float .np-l{ display:none; }
.ast-launch-float .ast-brain-ic{ width:22px; height:22px; }
.ast-launch-float .ast-brain-ic svg{ width:22px; height:22px; }
.ast-launch-float:hover{ filter:brightness(1.08); }

/* ── B31 C17 — Sim / Live bridge toggle (simulation is the DEFAULT) ── */
.ast-live-btn{ gap:5px; }
.ast-live-btn .ast-live-dot{ width:7px;height:7px;border-radius:50%;background:var(--fg-3);flex:0 0 auto; }
.ast-live-btn.is-live{ border-color:color-mix(in srgb,var(--mk-warning,#F6A609) 55%,var(--border));background:color-mix(in srgb,var(--mk-warning,#F6A609) 12%,transparent); }
.ast-live-btn.is-live .ast-live-dot{ background:var(--mk-warning,#F6A609);box-shadow:0 0 0 3px color-mix(in srgb,var(--mk-warning,#F6A609) 25%,transparent); }

/* ── B50-30 — the four-mode link inserter (Pablo) ──────────────────────────
   "I should be able to show an embedded HTML, show a summary of the URL metadata
   or simply select a label (or send as a raw url)". The popover stacks now: URL
   → mode row → (label) → LIVE PREVIEW → hint + Add. Shared by all three
   composers, since they all call the same fmt bar. */
/* B58 (Pablo: "This link selection looks horrible … maybe on an overlay tooltip
   or something. I don't like the whole text box having a new box appearing out of
   nowhere from below") — the modes panel is retired. What is left is a small
   overlay TOOLTIP pinned to the selection (position:fixed, placed by
   linkFromPopover): one URL row with its Add button, plus a line naming the
   selected text that becomes the link. No mode buttons, no live preview panel. */
/* B63-140 (Pablo: "The add button shouldn't be on the domain. It should be on
   the modal and they're not aligned there's a weird padding") — this popover
   used to also carry the OLDER, unrelated `.ast-urlpop` class (still used by
   the plain reference-link popover elsewhere) purely to borrow its box chrome
   (border/background/shadow). Because that rule is declared LATER in this
   file, its `align-items:center` and `padding` silently overrode this rule's
   own `stretch`/padding — the Add button never got the full-width row it was
   built for. Now self-contained: no shared class, own chrome, own alignment. */
.ast-urlpop-tip{ position:fixed;z-index:9800;display:flex;flex-direction:column;align-items:stretch;gap:6px;
  padding:8px 9px;max-width:min(380px,92vw);min-width:min(320px,88vw);
  border-radius:9px;border:1px solid var(--accent);background:var(--bg-1);box-shadow:0 8px 22px rgba(13,37,48,.14); }
.ast-urlpop-tip .mi{ font-size:15px;color:var(--accent-text); }
.ast-urlpop-tip input{ flex:1;min-width:0;height:28px;border:0;background:transparent;outline:none;
  font:500 12.5px var(--mk-font-ui);color:var(--fg-1); }
.ast-urlpop-tip .ast-up-row{ display:flex;align-items:center;gap:7px;
  border:1px solid var(--bd-1,#e3e8ec);border-radius:8px;padding:2px 4px 2px 8px;background:var(--bg-1); }
.ast-urlpop-tip .ast-up-row:focus-within{ border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft); }
.ast-urlpop-tip .ast-up-add{ flex:0 0 auto;height:26px;padding:0 11px;border:0;border-radius:7px;cursor:pointer;
  background:var(--accent);color:var(--accent-fg,#fff);font:700 11.5px var(--mk-font-ui); }
.ast-up-key{ display:flex;align-items:center;gap:5px;min-width:0;
  font:500 10.5px/1.4 var(--mk-font-ui);color:var(--fg-3); }
.ast-up-key .mi{ font-size:13px; }
.ast-up-key b{ font-weight:700;color:var(--fg-1);max-width:190px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap; }


/* ── The inserted link objects ─────────────────────────────────────────
   Both cards are contenteditable="false", so they behave as ONE object in the
   editor and in a sent message. */
.ast-lk{ text-decoration:none;color:inherit; }
.ast-lk-sum{ display:inline-flex;align-items:flex-start;gap:9px;max-width:min(380px,100%);
  margin:3px 0;padding:8px 10px;border:1px solid var(--bd-1,#e3e8ec);border-radius:10px;
  background:var(--bg-1);vertical-align:top;transition:border-color .14s ease,box-shadow .14s ease; }
.ast-lk-sum:hover{ border-color:var(--accent);box-shadow:0 4px 14px rgba(13,37,48,.09); }
.ast-lk-fav{ flex:0 0 auto;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;
  background:var(--accent-soft);color:var(--accent-text);font:800 13px var(--mk-font-ui); }
.ast-lk-fav.lg{ width:36px;height:36px;font-size:15px;border-radius:9px; }
.ast-lk-tx{ display:flex;flex-direction:column;gap:1px;min-width:0; }
.ast-lk-tx b{ font:700 12.5px var(--mk-font-ui);color:var(--fg-1);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-lk-tx i{ font:400 11.5px/1.45 var(--mk-font-ui);font-style:normal;color:var(--fg-2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.ast-lk-tx u{ text-decoration:none;font:600 10.5px var(--mk-font-ui);color:var(--fg-3);margin-top:2px; }
/* Embed: a small browser frame, so "embedded HTML" reads as embedded. */
.ast-lk-emb{ display:inline-block;max-width:min(380px,100%);margin:4px 0;vertical-align:top;
  border:1px solid var(--bd-1,#e3e8ec);border-radius:11px;overflow:hidden;background:var(--bg-1); }
.ast-lk-bar{ display:flex;align-items:center;gap:4px;padding:6px 9px;background:var(--bg-3);
  border-bottom:1px solid var(--bd-1,#e3e8ec); }
.ast-lk-bar i{ width:7px;height:7px;border-radius:50%;background:var(--fg-3);opacity:.45;flex:0 0 auto; }
.ast-lk-url{ margin-inline-start:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font:600 10.5px var(--mk-font-ui);color:var(--fg-3); }
.ast-lk-body{ display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 11px; }
.ast-lk-body b{ font:700 13px var(--mk-font-ui);color:var(--fg-1); }
.ast-lk-body i{ font:400 11.5px/1.45 var(--mk-font-ui);font-style:normal;color:var(--fg-2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.ast-lk-body > a{ margin-top:5px;padding:4px 10px;border-radius:999px;background:var(--accent-soft);
  color:var(--accent-text);font:700 10.5px var(--mk-font-ui);text-decoration:none; }
.ast-lk-body > a:hover{ background:var(--accent);color:var(--accent-fg,#fff); }

/* ── B31 C18 — inline URL popover (window.prompt is suppressed here) ── */
.ast-urlpop{
  display:flex;align-items:center;gap:7px;
  margin:6px 0 2px;padding:7px 9px;border-radius:9px;
  border:1px solid var(--accent);background:var(--bg-1);
  box-shadow:0 8px 22px rgba(13,37,48,.14);
}
.ast-urlpop .mi{ font-size:15px;color:var(--accent-text); }
.ast-urlpop input{
  flex:1;min-width:0;height:28px;border:0;background:transparent;outline:none;
  font:500 12.5px var(--mk-font-ui);color:var(--fg-1);
}
.ast-urlpop button{
  height:26px;padding:0 11px;border:0;border-radius:7px;cursor:pointer;
  background:var(--accent);color:var(--accent-fg,#fff);font:700 11.5px var(--mk-font-ui);
}

/* ── B31 C20/C28 — inline attachment rename (extension locked) ── */
.ast-att-rnb{ cursor:text; }
.ast-att-rnb:hover{ text-decoration:underline dotted; }
.ast-att-rninp{
  min-width:60px;max-width:150px;height:20px;border:0;border-bottom:1px solid var(--accent);
  background:transparent;outline:none;font:600 11.5px var(--mk-font-ui);color:var(--fg-1);padding:0;
}
.ast-att-ext{ font:600 11.5px var(--mk-font-ui);color:var(--fg-3); }


/* ── B35 C8/C7 — voice notes + context picker ── */
.ast-attach-btn.rec{ color:#d64545;border-color:#d64545; }
.ast-rec .ast-rec-dot{ color:#d64545;animation:astRecPulse 1.1s infinite; }
/* B44 C24 (Pablo) — the recording chip's Stop button hover was off-centre.
   Give it a clean, concentric round hit area with the glyph truly centred. */
.ast-rec .ast-pc-x{ width:22px;height:22px;margin-inline-start:4px;line-height:0; }
.ast-rec .ast-pc-x .mi{ font-size:16px;line-height:1; }
.ast-rec .ast-pc-x:hover{ background:color-mix(in srgb,#d64545 16%,transparent);color:#d64545; }
@keyframes astRecPulse{ 0%,100%{opacity:1} 50%{opacity:.35} }
.ast-att-voice{ gap:5px; }
.ast-chip-add{ cursor:pointer;border-style:dashed;background:transparent; }
.ast-chip-add:hover{ border-color:var(--accent,#03C9CB);color:var(--accent,#03C9CB); }
.ast-ctx{ position:relative; }
.ast-ctxpick{ position:absolute;top:calc(100% + 6px);inset-inline-start:8px;z-index:60;width:min(320px,92%);background:var(--bg-1,#fff);border:1px solid var(--bd-1,#dfe4e8);border-radius:12px;box-shadow:0 12px 34px rgba(0,0,0,.18);padding:8px;display:flex;flex-direction:column;gap:6px; }
.ast-ctxpick-in{ width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--bd-1,#dfe4e8);border-radius:8px;font:500 12.5px var(--mk-font-ui,inherit); }
.ast-ctxpick-list{ max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:2px; }
.ast-ctxpick-it{ display:flex;align-items:center;gap:8px;padding:7px 9px;border:0;background:transparent;border-radius:8px;cursor:pointer;font:600 12.5px var(--mk-font-ui,inherit);color:var(--fg-1,#22303e);text-align:start;width:100%; }
.ast-ctxpick-it:hover{ background:var(--bg-2,#f4f6f8); }
.ast-ctxpick-it .mi{ font-size:16px;color:var(--accent,#03C9CB); }

/* ── B65 W1 — attachments: ONE row of 1:1 tiles (065-011 · 070 · 154) ──
   88 px squares, a single horizontally-scrolling row with snap — never wraps
   into a second row, never grows into a tall tray on a short screen. */
.ast-tiles{ display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;
  padding:8px 8px 2px;margin:0 -2px;scrollbar-width:thin;overscroll-behavior-x:contain;flex:0 0 auto;max-width:100%; }
.ast-tiles::-webkit-scrollbar{ height:6px; }
.ast-tiles::-webkit-scrollbar-thumb{ background:var(--border);border-radius:999px; }
.ast-tile{ flex:0 0 88px;width:88px;scroll-snap-align:start;display:flex;flex-direction:column;gap:4px;position:relative;min-width:0; }
.ast-tile-sq{ all:unset;box-sizing:border-box;position:relative;width:88px;height:88px;border-radius:12px;overflow:hidden;cursor:zoom-in;
  border:1px solid var(--border);background:linear-gradient(160deg,var(--bg-1),var(--bg-3,var(--bg-2)));display:grid;place-items:center;
  transition:border-color var(--mk-t-fast),box-shadow var(--mk-t-fast); }
.ast-tile-sq:hover{ border-color:var(--accent);box-shadow:0 6px 18px -8px rgba(13,37,48,.35); }
.ast-tile-sq:focus-visible{ outline:2px solid var(--accent);outline-offset:2px; }
.ast-tile.is-comment .ast-tile-sq{ border-color:color-mix(in srgb,var(--accent) 50%,var(--border)); }
.ast-tile-img{ position:absolute;inset:0;background:var(--bg-2) center/cover no-repeat; }
.ast-tile-mini{ position:absolute;left:50%;top:50%;transform-origin:50% 50%;pointer-events:none;display:block;overflow:hidden;
  box-sizing:border-box;border-radius:6px;box-shadow:0 4px 12px -6px rgba(0,0,0,.35); }
.ast-tile-mini *{ pointer-events:none !important;animation:none !important;transition:none !important; }
.ast-tile-field{ display:inline-block;min-width:40px;padding:2px 6px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input); }
.ast-tile-shot{ position:absolute;inset:12px;border-radius:8px;background:var(--bg-1);border:1px solid var(--border);display:flex;flex-direction:column;gap:5px;padding:8px; }
.ast-tile-shot i{ display:block;height:6px;border-radius:3px;background:var(--bg-3,var(--border)); }
.ast-tile-shot i:first-child{ width:70%;background:var(--accent-soft); }
.ast-tile-shot i:last-child{ width:50%; }
.ast-tile-file{ display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--fg-2);font:700 11px var(--mk-font-ui);text-transform:none; }
.ast-tile-file .mi{ font-size:30px;color:var(--accent-text); }
.ast-tk-file .ast-tile-file .mi{ color:var(--mk-err,#d64545); }
.ast-tile-kind{ position:absolute;inset-inline-start:5px;bottom:5px;height:18px;padding:0 6px;border-radius:6px;
  background:rgba(13,37,48,.74);color:#fff;font:700 10px/18px var(--mk-font-ui);display:inline-flex;align-items:center;gap:3px;max-width:calc(100% - 10px); }
.ast-tile-kind .mi{ font-size:12px;color:#fff; }
.ast-tile-note{ position:absolute;top:5px;inset-inline-start:5px;font-size:15px;color:var(--accent-text);background:var(--bg-1);border-radius:6px;padding:2px; }
.ast-tile-x{ position:absolute;top:-6px;inset-inline-end:-6px;z-index:2;width:22px;height:22px;border-radius:50%;padding:0;cursor:pointer;
  border:2px solid var(--bg-2);background:var(--fg-1);color:var(--bg-1);display:grid;place-items:center; }
.ast-tile-x .mi{ font-size:14px; }
.ast-tile-x:hover{ background:var(--mk-err,#d64545);color:#fff; }
.ast-tile-nm{ font:600 11.5px var(--mk-font-ui);color:var(--fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:5px;padding:1px 3px;outline:none;min-height:16px; }
.ast-tile-nm[contenteditable]{ cursor:text; }
.ast-tile-nm[contenteditable]:hover{ background:var(--bg-input); }
.ast-tile-nm[contenteditable]:focus{ background:var(--bg-input);color:var(--fg-1);text-overflow:clip;box-shadow:0 0 0 1.5px var(--accent); }
.ast-tile.is-uploading .ast-tile-sq{ cursor:progress; }
.ast-tile .ast-up-bar{ position:absolute;inset-inline:8px;bottom:8px;height:4px; }
/* a sent message: the row sits in the bubble column, full width of it */
.ast-col .ast-tiles-msg{ padding:2px 0 4px;margin:0; }
.ast-pending .ast-tiles-pending{ padding-top:8px; }
.ast-drop-on{ outline:2px dashed var(--accent);outline-offset:-4px; }

/* ── B65 W1 — the full-screen attachment preview (Preview layer) ── */
.ast-pv{ position:fixed;inset:0;z-index:1640;display:flex;flex-direction:column;background:rgba(8,14,20,.88);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;transition:opacity .16s ease;color:#fff; }
.ast-pv.open{ opacity:1; }
.ast-pv-hd{ display:flex;align-items:center;gap:10px;padding:max(12px,env(safe-area-inset-top)) 14px 12px; }
.ast-pv-nm{ flex:1;min-width:0;height:40px;border-radius:10px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);
  color:#fff;font:600 14px var(--mk-font-ui);padding:0 12px;outline:none; }
.ast-pv-nm:focus{ border-color:rgba(255,255,255,.55); }
.ast-pv-nm[readonly]{ border-color:transparent;background:transparent; }
.ast-pv-btn{ all:unset;box-sizing:border-box;width:42px;height:42px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;cursor:pointer;
  border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff; }
.ast-pv-btn:hover{ background:rgba(255,255,255,.18); }
.ast-pv-btn:focus-visible{ outline:2px solid #fff;outline-offset:2px; }
.ast-pv-btn .mi{ font-size:22px;color:#fff; }
.ast-pv-btn[hidden]{ display:none; }
.ast-pv-bd{ flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:14px;padding:6px 14px 10px; }
.ast-pv-st{ flex:1;min-width:0;height:100%;display:grid;place-items:center;touch-action:pan-y; }
.ast-pv-img{ max-width:100%;max-height:100%;border-radius:12px;object-fit:contain;box-shadow:0 30px 80px -30px rgba(0,0,0,.7); }
.ast-pv-doc{ width:min(900px,100%);height:100%;border:0;border-radius:12px;background:#fff; }
.ast-pv-card{ width:min(620px,100%);max-height:100%;overflow:auto;border-radius:16px;background:var(--bg-1);color:var(--fg-1);padding:18px;
  display:flex;flex-direction:column;gap:10px;box-sizing:border-box; }
.ast-pv-chip{ align-self:flex-start;display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent-text);font:700 11.5px var(--mk-font-ui); }
.ast-pv-chip .mi{ font-size:15px; }
.ast-pv-t{ font:700 16px var(--mk-font-ui);word-break:break-word; }
.ast-pv-path,.ast-pv-meta{ font:500 12.5px var(--mk-font-ui);color:var(--fg-3);word-break:break-word; }
.ast-pv-big{ font-size:48px;color:var(--accent-text); }
.ast-pv-stage{ position:relative;height:340px;max-height:50vh;border-radius:12px;border:1px solid var(--border);overflow:hidden;
  background:linear-gradient(160deg,var(--bg-2),var(--bg-3,var(--bg-2))); }
.ast-pv-note{ display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:10px;background:var(--bg-2);font:500 13px/1.45 var(--mk-font-ui); }
.ast-pv-note .mi{ font-size:17px;color:var(--accent-text); }
.ast-pv-link{ color:var(--accent-text);font:600 14px var(--mk-font-ui);word-break:break-all; }
.ast-pv-cnt{ text-align:center;color:rgba(255,255,255,.72);font:600 12.5px var(--mk-font-ui);padding:0 0 max(14px,env(safe-area-inset-bottom)); }
@media (max-width:600px){ .ast-pv-nav{ position:absolute;bottom:max(46px,calc(env(safe-area-inset-bottom) + 34px)); } .ast-pv-nav[data-pv-prev]{ inset-inline-start:16px; } .ast-pv-nav[data-pv-next]{ inset-inline-end:16px; } .ast-pv-bd{ padding-inline:10px; } }
html[dir="rtl"] .ast-pv-nav .mi{ transform:scaleX(-1); }

/* ── B65 W1 — delayed pick: the countdown HUD ── */
.ast-delay-hud{ position:fixed;z-index:1605;top:max(14px,env(safe-area-inset-top));inset-inline:0;margin:auto;width:max-content;max-width:calc(100vw - 28px);
  display:flex;align-items:center;gap:10px;height:46px;padding:0 8px 0 7px;border-radius:999px;background:var(--mk-navy-900,#0d2530);color:#fff;
  box-shadow:0 14px 40px -12px rgba(0,0,0,.6);font:600 13px var(--mk-font-ui); }
.ast-dh-ring{ --p:100;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;
  background:conic-gradient(var(--accent,#03C9CB) calc(var(--p)*1%),rgba(255,255,255,.16) 0); }
.ast-dh-n{ width:27px;height:27px;border-radius:50%;background:var(--mk-navy-900,#0d2530);display:grid;place-items:center;font:800 13px var(--mk-font-ui);font-variant-numeric:tabular-nums; }
.ast-dh-t{ white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0; }
.ast-dh-x{ all:unset;box-sizing:border-box;height:32px;padding:0 13px;border-radius:999px;border:1px solid rgba(255,255,255,.28);cursor:pointer;font:600 12px var(--mk-font-ui);flex:0 0 auto; }
.ast-dh-x:hover{ background:rgba(255,255,255,.12); }
/* B66 W1 (066-003) — the delay chips ride on the floating pick bar (not the attach menu) */
.ast-ph-t{ min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-ph-delays{ display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;padding-inline-start:10px;border-inline-start:1px solid var(--border); }
.ast-ph-delays > .mi{ font-size:15px !important;color:var(--fg-3) !important;margin-inline-end:2px; }
.ast-ph-delay{ all:unset;box-sizing:border-box;height:26px;padding:0 9px;border-radius:8px;border:1px solid var(--border);cursor:pointer;
  font:600 11.5px var(--mk-font-ui);color:var(--fg-2);font-variant-numeric:tabular-nums;display:inline-flex;align-items:center; }
.ast-ph-delay:hover,.ast-ph-delay:focus-visible{ border-color:var(--accent);color:var(--accent-text);background:var(--accent-soft); }
.ast-pick-hud .ast-pick-cancel{ flex:0 0 auto; }
@media (max-width:600px){ .ast-pick-hud{ flex-wrap:wrap;justify-content:center;border-radius:18px;row-gap:8px; } .ast-ph-t{ flex:1 1 60%;white-space:normal; } }
/* B66 W1 (066-004) — a pick that comes out of a delay keeps what is open, open: the
   assistant (dock or in-panel slide) and its scrim stay on screen to be picked. */
html body.ast-pick-keep .ast-panel.open{ transform:none !important;pointer-events:auto; }
html body.ast-pick-keep .ast-stack-hosted.open{ transform:none !important;pointer-events:auto; }
html body.ast-pick-keep .ast-scrim.open{ opacity:1 !important; }

/* ── B65 W1 — the in-panel Assistant slide reads as a slide of its panel ── */
.ast-hd-from{ font:600 12px var(--mk-font-ui);color:var(--fg-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:0 1 auto;max-width:50%; }
html[dir="rtl"] .ast-hd-from{ unicode-bidi:plaintext; text-align:right; }   /* B67 R26 (R67-106) — a Latin page name cut at its start in Arabic (R67-014) */
.ast-hd-sep{ font-size:15px !important;color:var(--fg-3);flex:0 0 auto; }
.ast-kept{ display:flex;align-items:center;gap:6px;margin:10px 12px 0;padding:6px 10px;border-radius:10px;align-self:flex-start;max-width:calc(100% - 24px);
  background:var(--accent-soft);color:var(--accent-text);font:600 12px var(--mk-font-ui);flex:0 0 auto; }
.ast-kept .mi{ font-size:16px; }
.ast-kept span:last-child{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ast-host-rel{ position:relative !important;overflow:hidden; }
/* a slide header with no actions group and no close gets the launcher at its end */
.ast-launch-panel.is-end{ margin-inline-start:auto; }
.wl-modal-hd .ast-launch-panel{ margin-inline-start:auto; }

/* ── B65 W1 — Content / Budget / Jockey bars: the assistant's own face ── */
.ast-sub-launch{ gap:6px; }
.ast-sub-launch .ast-brain-ic svg{ width:19px;height:19px;display:block; }
.ast-sub-lbl{ display:none;font:600 13px var(--mk-font-ui); }
@media (min-width:901px){
  .ast-sub-launch{ width:auto !important;padding:0 12px 0 10px !important;display:inline-flex !important;align-items:center;border-radius:999px !important; }
  .ast-sub-launch .ast-sub-lbl{ display:inline; }
}
.ast-sub-launch[hidden]{ display:none !important; }
.ast-ctxpick-it i{ margin-inline-start:auto;font:500 10.5px var(--mk-font-ui,inherit);color:var(--fg-3,#8a94a6);font-style:normal;text-transform:none;letter-spacing:.05em; }

/* B64-Q2 — while picking on a touchscreen the finger scans, it never scrolls
   or long-press-selects text; the ring follows it smoothly. */
body.ast-picking{ -webkit-user-select:none;user-select:none;-webkit-touch-callout:none; }
.ast-pick-outline.scanning{ transition:opacity .12s, left .07s linear, top .07s linear, width .07s linear, height .07s linear; }

/* B66 W1 (066-204) — Send always ends in a toast: busy · saved · error with Retry */
.ast-toast{ color:var(--fg-1,var(--fg,#0d2530)); }
.ast-toast.is-busy .mi{ color:var(--accent-text);animation:astToastSpin 1s linear infinite; }
.ast-toast.is-err .mi{ color:var(--mk-err,#d64545); }
.ast-toast.has-act{ pointer-events:auto;padding-inline-end:6px; }
.ast-toast-act{ all:unset;box-sizing:border-box;height:28px;padding:0 12px;border-radius:999px;cursor:pointer;margin-inline-start:4px;
  background:var(--accent);color:var(--accent-fg,#fff);font:700 12px var(--mk-font-ui); }
.ast-toast-act:focus-visible{ outline:2px solid var(--accent);outline-offset:2px; }
@keyframes astToastSpin{ to{ transform:rotate(360deg); } }
/* B66 W1 (066-093 · 111) — the note's Cancel/Attach travel together and wrap as one
   group, so a longer label ("Adjuntar", "إرفاق") never leaves the box */
.ast-pick-note{ width:320px; }
.ast-pick-note-ft{ flex-wrap:wrap;row-gap:8px; }
.ast-pn-acts{ display:inline-flex;align-items:center;gap:8px;margin-inline-start:auto;flex:0 0 auto;max-width:100%; }
.ast-pn-acts button{ min-width:0;white-space:nowrap; }
/* B66 W1 (066-005) — the floating launcher (CV) steps aside while the panel is open */
body.ast-dock-open .ast-launch-float{ opacity:0;pointer-events:none;transform:scale(.8); }
.ast-launch-float{ transition:opacity .18s, transform .18s; }

/* B67 R21 (R67-079) — directional icons follow the reading direction in Arabic, as the rest of the app already does (Audit A:
   "forward points to the reading direction"; .ent-open · .pe-card-chev · .cal-period .gantt-step · .fp-back-btn …). Each was
   the only one of its kind still pointing the LTR way: "go" chevrons, forward/back arrows, prev/next steppers, crumbs, twists. */
html[dir="rtl"] .ast-hd-sep,
html[dir="rtl"] .ast-back .mi{ transform:scaleX(-1); }
