.agent-dock-rail {
  position: fixed;
  z-index: 18;
  top: var(--agent-dock-top);
  right: 0;
  bottom: var(--cc-visual-viewport-bottom, 0px);
  max-height: calc(var(--cc-visual-viewport-height, 100dvh) - var(--agent-dock-top));
  padding-right: env(safe-area-inset-right, 0px);
  display: flex;
  width: var(--agent-pane-width, 0);
  min-width: 0;
  overflow: visible;
  border-left: 1px solid var(--ui-line);
  background: var(--ui-panel);
  box-shadow: -1rem 0 2.5rem rgb(0 0 0 / 0.12);
}

.agent-dock-rail[hidden] {
  display: none;
}

.agent-dock-columns {
  display: flex;
  min-width: 0;
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
}

.agent-dock-region-resize {
  position: absolute;
  z-index: 7;
  top: 0;
  bottom: 0;
  left: -13px;
  width: 26px;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: ew-resize;
  touch-action: none;
}

.agent-dock-region-resize::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 12px;
  width: 2px;
  background: transparent;
  transition: background var(--speed, 140ms) ease;
}

.agent-dock-region-resize:hover::after,
.agent-dock-region-resize:focus-visible::after,
body.dock-region-resizing .agent-dock-region-resize::after {
  background: var(--ui-accent);
}

.agent-dock-region-resize:focus-visible {
  outline: 0;
}

.agent-dock-region-resize[hidden] {
  display: none;
}

.agent-session-column {
  position: relative;
  display: flex;
  min-width: 17.5rem;
  max-width: none;
  flex: 0 0 var(--dock-column-width, 30rem);
  flex-direction: column;
  border-left: 1px solid var(--ui-line);
  background: var(--ui-bg);
}

.agent-session-column[data-dock-first] {
  border-left: 0;
}

.agent-session-column.is-active {
  box-shadow: inset 0 2px 0 var(--ui-accent);
}

.agent-session-column__resize {
  position: absolute;
  z-index: 4;
  top: 0;
  bottom: 0;
  right: -4px;
  width: 8px;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: ew-resize;
  touch-action: none;
}

.agent-session-column[data-dock-last] .agent-session-column__resize {
  display: none;
}

.agent-dock-columns.is-resizing iframe {
  pointer-events: none;
}

.agent-session-column__resize:focus-visible,
.agent-session-column__resize:hover {
  background: color-mix(in srgb, var(--ui-accent) 55%, transparent);
  outline: 0;
}

.agent-session-column__header {
  display: grid;
  min-height: 4.75rem;
  flex: 0 0 auto;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.35rem 0.5rem;
  align-items: center;
  border-bottom: 1px solid var(--ui-line);
  padding: 0.6rem 0.65rem;
  background: var(--ui-panel);
  cursor: grab;
}

.agent-session-column__identity {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.15rem 0.45rem;
  align-items: center;
}

.agent-session-column__identity .dot {
  grid-row: 1 / span 2;
}

.agent-session-column__identity strong,
.agent-session-column__identity small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.agent-session-column__identity strong {
  color: var(--ui-text);
  font-size: 0.78rem;
}

.agent-session-column__identity small {
  color: var(--ui-text-soft);
  font-size: 12px;
}

.agent-session-column__actions {
  grid-column: 1;
  grid-row: 2;
  display: flex;
  gap: 0.2rem;
  align-items: center;
}

.agent-session-column__overflow {
  position: relative;
}

.agent-session-column__overflow > summary {
  display: grid;
  place-items: center;
  min-width: 1.85rem;
  list-style: none;
  cursor: pointer;
}

.agent-session-column__overflow > summary::-webkit-details-marker {
  display: none;
}

/* Dock polish (doc 65): top-layer popover on the T251c contract (same grammar as
   .agent-launch-model-popover and .file-reference-picker) — position:fixed
   with inset:auto/margin:0 so runtime/popover-positioning.js owns placement,
   and the top layer means .agent-dock-columns' overflow-x:auto can no longer
   clip it. Previously `position:absolute; z-index:20`, which stayed inside
   that scroll container's clip. */
.agent-session-column__menu {
  position: fixed;
  z-index: 2147483647;
  inset: auto;
  margin: 0;
  display: grid;
  width: 13rem;
  gap: 0.25rem;
  padding: 0.4rem;
  border: 1px solid var(--ui-line-strong);
  border-radius: 10px;
  /* Operator round (2026-09-06): this read var(--ui-panel) and rendered
     see-through in DARK mode only. #agent-dock sets --ui-panel:var(--ui-glass)
     so the whole column reads as one glass surface (dock-visual.css), and this
     menu — a DESCENDANT — inherited that override. Glass is designed to sit on
     the column's own blurred backdrop; a top-layer popover has no such backdrop,
     so content behind simply bled through. Light was fine only by accident:
     light's --ui-glass is the opaque #fcfbf7, dark's is rgba(255,255,255,.028).
     Floating surfaces take the elevated token, which no scope overrides — the
     same choice .file-reference-picker already made. */
  background: var(--ui-raised);
  box-shadow: var(--ui-shadow-sm);
}

.agent-session-column__menu[hidden] {
  display: none;
}

.agent-session-column__menu:popover-open {
  display: grid;
}

.agent-session-column__menu .button {
  display: grid;
  justify-items: start;
  width: 100%;
  text-align: left;
}

.agent-session-column__menu small {
  color: var(--ui-text-soft);
  font-size: 12px;
}

.agent-session-column__menu [data-dock-end]:hover {
  background: var(--ui-danger-soft);
  color: var(--ui-danger);
}

.agent-session-column__result {
  grid-column: 1;
  min-height: 0.75rem;
  color: var(--ui-text-soft);
  font-size: 12px;
}

.agent-session-column[data-ended="true"] .agent-session-column__header {
  background: var(--ui-surface-soft);
}

.agent-session-column__actions .button {
  min-height: 1.85rem;
  padding: 0.3rem 0.42rem;
  font-size: 0.75rem;
}

/* AR34 (doc 65 round 18): full-view is now an icon button (files preview
   toolbar's own expand/compress grammar, multi-dock-support.js's
   fullViewControlMarkup) — square, centred, matching the overflow
   summary's own icon-button convention above. "‹ sessions" (retiring the
   floating "+ Agent" column button) stays a text link at the row's shared
   height/font, first in the row where "+ Agent" used to sit. */
.agent-session-column__icon-action {
  display: grid;
  place-items: center;
  min-width: 1.85rem;
  padding: 0.3rem;
}
.agent-session-column__icon-action .ui-icon {
  width: 18px;
  height: 18px;
}
.agent-session-column__sessions-link {
  color: var(--ui-text-soft);
}
.agent-session-column__sessions-link:hover {
  color: var(--ui-text);
}

.agent-session-column__close {
  min-width: 1.85rem;
  border-color: var(--ui-line-strong);
  font-size: 1rem;
  line-height: 1;
}

.agent-session-column__frame {
  min-height: 0;
  width: 100%;
  flex: 1 1 auto;
  border: 0;
  background: var(--ui-bg);
}

.agent-launch-column {
  background: var(--ui-panel);
}

/* AR32 (doc 65 round 5): operator override of T484's overlay model — the
   launch column is no longer a position:fixed drawer sliding in via
   transform over everything; it is a genuine flex child of
   #agent-dock-columns, sized by the SAME .agent-session-column rule above
   (flex:0 0 var(--dock-column-width)), exactly like body.multi-agent-
   workspace already treated it below. Opening it pushes the shell through
   the real mechanism a docked session already uses — multi-dock-push.css's
   "dock" grid track reads --agent-pane-width (multi-dock.js
   updateShell(), no longer zeroed for a launch-only state) and transitions
   that track's width, choreographed by MultiDockLaunchMotion
   (multi-dock-launch-motion.js) via openLauncher()/closeLauncher(). Paint
   (color/blur/typography) stays owned by dock-visual.css. Below 821px,
   multi-dock-phone.css's own sheet is untouched — it already forced
   position:relative/flex:0 0 100% over whatever this file set, which is
   now the same thing it always resolved to. */

.agent-launch-column .agent-session-column__header {
  grid-template-columns:minmax(0,1fr) auto;
  min-height:0;
  padding:1.125rem 1.25rem .875rem;
}

.agent-launch-column .agent-session-column__close {
  grid-column:2;
  grid-row:1;
  align-self:center;
}

/* T485 (doc 57/65): the form is now the prototype's outer split — a
   non-scrolling flex column whose scrollable content (.__body, ~.ld-body)
   and pinned action bar (.__footer, ~.ld-foot) are distinct siblings, not
   one flat flex-gap list. Composition/rhythm complaint fix: sections are
   separated by their own .agent-launch-eyebrow margins (dock-visual.css),
   not a uniform tiny gap. */
.agent-launch-column__form {
  position:relative;
  min-height:0;
  flex:1;
  display:flex;
  flex-direction:column;
  max-height:var(--cc-visual-viewport-height,100dvh);
  container-type:inline-size;
  container-name:launch-column;
}

.agent-launch-column__body {
  min-height:0;
  flex:1;
  display:flex;
  flex-direction:column;
  overflow-y:auto;
  padding:1rem 1.25rem 1.5rem;
}

.agent-launch-column__form.is-image-dragging {
  background:var(--ui-accent-faint);
  outline:1px dashed var(--ui-accent);
  outline-offset:-.45rem;
}

.agent-launch-column__form .file-reference-chips {
  margin:0;
}

.agent-launch-column__form .composer-attachment-tray {
  margin:0;
}

.agent-launch-column__form .file-reference-picker {
  position:fixed;
  z-index:2147483647;
  inset:auto;
  width:min(30rem, calc(100vw - 1rem));
  margin:0;
  max-height:min(18rem,45vh);
}

/* Prototype .goal-composer: one bordered glass card holding the attachment
   tray, chips, and textarea together — the textarea itself is borderless. */
.agent-launch-column__composer {
  position:relative;
  min-height:0;
  display:flex;
  flex-direction:column;
  border:1px solid var(--ui-line);
  border-radius:.8125rem;
  background:var(--ui-panel);
}

.agent-launch-column__composer:focus-within {
  border-color:color-mix(in srgb, var(--ui-accent) 45%, transparent);
}

.agent-launch-column__form textarea {
  height:6rem;
  min-height:6rem;
  /* No CSS cap: the launch controls measure the real space and own the
     field's height. A CSS max-height that disagrees with that measurement
     (the old self-referential calc(100% - 10rem)) clamps the box while
     the JS gates the internal scroll — text becomes unreachable. */
  max-height:none;
  flex:0 0 auto;
  resize:none;
  border:none;
  border-radius:inherit;
  background:transparent;
  color:var(--ui-text);
  padding:.8125rem .9375rem;
  font:inherit;
  line-height:1.55;
}

.agent-launch-column__form textarea:focus,
.agent-launch-model-pill:focus-visible,
.agent-launch-model-search:focus {
  outline:2px solid var(--ui-accent);
  outline-offset:2px;
}

/* T486 (doc 57/65 round 4): the toolbar (@file + "accepts follow-ups") sits
   directly under the engine/model card with no .agent-launch-eyebrow label
   of its own to carry the 18px section gap (dock-visual.css), so it read as
   cluttered against the card above it. Give it the same top margin an
   eyebrow would have provided, matching the prototype's section rhythm. */
.agent-launch-column__toolbar {
  display:flex;
  align-items:center;
  flex-wrap:nowrap;
  gap:var(--ui-space-2);
  min-width:0;
  margin-top:1.125rem;
}

.agent-launch-column__toolbar > .composer-attach-button,
.agent-launch-column__toolbar > [data-launch-file] {
  flex:0 0 auto;
}

.agent-launch-column__footer {
  flex:0 0 auto;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.6875rem;
  min-width:0;
  padding:.875rem 1.25rem 1.125rem;
  border-top:1px solid var(--ui-line-soft);
}

.agent-launch-column__model {
  position:relative;
  min-width:0;
}

.agent-launch-persistence {
  display:inline-flex;
  flex:0 0 auto;
  align-items:center;
  gap:.35rem;
  color:var(--ui-muted);
  font-size:.72rem;
  white-space:nowrap;
  cursor:default;
  margin:0;
}

.agent-launch-model-pill {
  width:100%;
  max-width:100%;
  min-height:3.4375rem;
  justify-content:flex-start;
  border-color:var(--ui-line);
  background:var(--ui-input);
}

.agent-launch-model-pill .model-picker-caret {
  margin-left:auto;
}

/* Prototype .engine-line: stacked engine name (bold) over model name (mono,
   muted) — see dock-visual.css for the type values, this is layout only. */
.agent-launch-model-text {
  display:flex;
  flex-direction:column;
  min-width:0;
  flex:1;
  gap:.09375rem;
  text-align:left;
}

.agent-launch-model-engine-name,
.agent-launch-model-pill .model-picker-name {
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.agent-launch-model-mark {
  display:inline-flex;
  width:2rem;
  height:2rem;
  min-width:2rem;
  align-items:center;
  justify-content:center;
}

.agent-launch-model-mark .engine-chip,
.agent-launch-model-option__engine .engine-chip {
  border:0;
  padding:0;
  background:transparent;
}

.agent-launch-model-mark .engine-label,
.agent-launch-model-option__engine .engine-label {
  display:none;
}

.agent-launch-model-popover {
  position:fixed;
  z-index:2147483647;
  inset:auto;
  width:min(32rem, calc(100vw - 1rem));
  margin:0;
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  max-height:min(30rem,60vh);
  gap:.35rem;
  overflow:hidden;
  border:1px solid var(--ui-accent);
  /* T486: --ui-radius-lg never existed and this fallback (.75rem = 12px)
     already matched the prototype's --ui-radius-sm (mf.css) for a medium
     floating panel — use the real token now that it is defined. */
  border-radius:var(--ui-radius-sm);
  padding:.45rem;
  background:var(--ui-raised);
  box-shadow:var(--ui-shadow);
}

.agent-launch-model-popover[hidden] {
  display:none;
}

.agent-launch-model-popover:popover-open,
.agent-launch-column__form .file-reference-picker:popover-open {
  display:grid;
}

.agent-launch-column__form .file-reference-option {
  grid-template-columns:1rem minmax(0,1fr) auto;
}

.agent-launch-column__form .file-reference-option__copy {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  min-width:0;
  gap:.1rem;
}

.agent-launch-column__form .file-reference-option__name {
  display:flex;
  flex:1 1 auto;
  min-width:0;
  max-width:none;
  overflow:hidden;
  white-space:nowrap;
}

.agent-launch-column__form .file-reference-option__name-start {
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.agent-launch-column__form .file-reference-option__name-end {
  flex:0 0 auto;
}

.agent-launch-column__form .file-reference-option__copy small {
  overflow:hidden;
  color:var(--ui-muted);
  font-size:.75rem;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.agent-launch-column__form .file-reference-option time {
  grid-column:3;
}

.agent-launch-model-search {
  width:100%;
  min-height:2.25rem;
  border:1px solid var(--ui-line);
  /* T486: --ui-radius-md never existed and has no prototype source value
     (doc-65 audit log) — concrete literal, matching the .5rem this always
     rendered at, instead of a dangling var() ref. */
  border-radius:.5rem;
  background:var(--ui-input);
  color:var(--ui-text);
  padding:.45rem .65rem;
}

.agent-launch-model-options {
  display:grid;
  min-height:0;
  gap:1px;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}

.agent-launch-model-option {
  display:flex;
  width:100%;
  height:30px;
  min-height:30px;
  align-items:center;
  gap:.4rem;
  border:0;
  /* T486: --ui-radius-sm is now a real token (12px, prototype literal) but
     that value is scaled for medium cards/popovers, not this ~30px option
     row — using it here would round these rows far more than the prototype
     ever does (.mp-row/.ep-row, mf.css: 8px). Concrete literal instead. */
  border-radius:8px;
  padding:2px .45rem;
  background:transparent;
  color:var(--ui-text);
  text-align:left;
  cursor:pointer;
}

.agent-launch-model-option:hover,
.agent-launch-model-option:focus-visible,
.agent-launch-model-option.active {
  background:var(--ui-accent-soft);
  outline:0;
}

.agent-launch-model-option__line {
  display:flex;
  flex:1 1 auto;
  align-items:baseline;
  min-width:0;
  gap:.28rem;
  overflow:hidden;
  white-space:nowrap;
}

.agent-launch-model-option__engine-name {
  flex:0 1 auto;
  overflow:hidden;
  color:var(--ui-muted);
  font-size:.75rem;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.agent-launch-model-option__separator {
  flex:0 0 auto;
  color:var(--ui-muted);
}

.agent-launch-model-option__model {
  flex:1 1 auto;
  min-width:0;
  overflow:hidden;
  font-size:.78rem;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.agent-launch-model-option__default {
  flex:0 0 auto;
  color:var(--ui-accent);
  font-size:.65rem;
  font-weight:700;
  text-transform:uppercase;
}

.agent-launch-column__hint,
.agent-launch-column__state {
  margin:0;
  color:var(--ui-muted);
  font-size:.75rem;
}

.agent-launch-column__footer .agent-launch-column__hint {
  min-width:0;
  flex:1 1 auto;
  line-height:1.3;
  overflow-wrap:anywhere;
}

.agent-launch-column__state:empty {
  display:none;
}

.agent-launch-column__state:not(:empty) {
  margin:.75rem 0 0;
  padding:var(--ui-space-2) var(--ui-space-3);
  border:1px solid var(--ui-line);
  /* T486: --ui-radius-md never existed and has no prototype source value
     (doc-65 audit log) — concrete literal, matching the .5rem this always
     rendered at, instead of a dangling var() ref. */
  border-radius:.5rem;
  background:var(--ui-panel-soft);
}

.agent-launch-column[data-launch-stage="degraded"] .agent-launch-column__state,
.agent-launch-column[data-launch-stage="rejected"] .agent-launch-column__state {
  border-color:var(--ui-danger-line);
  background:var(--ui-danger-soft);
  color:var(--ui-danger);
}

.agent-launch-column__submit {
  flex:0 0 auto;
  min-height:2.75rem;
  min-width:5.5rem;
  margin-left:auto;
}

.agent-launch-column__submit.is-loading {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
}

.agent-launch-submit-spinner {
  width:.9rem;
  height:.9rem;
  border:2px solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  animation:agent-launch-spin .7s linear infinite;
}

@keyframes agent-launch-spin { to { transform:rotate(360deg); } }

@media (prefers-reduced-motion:reduce) {
  .agent-launch-submit-spinner { animation:none; }
}

/* T251c/T485: whenever the drawer's narrower container width squeezes the
   toolbar row, reserve a full line for the receivability note instead of
   letting it clip against the @file button. */
@container launch-column (max-width:30rem) {
  .agent-launch-column__toolbar {
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
  }

  .agent-launch-column__toolbar > .agent-launch-persistence {
    grid-column:1 / -1;
  }
}

.agent-launch-column__retry {
  align-self:flex-start;
  margin-top:.75rem;
}

.agent-launch-column__configure {
  border:0;
  background:none;
  color:var(--ui-muted);
  padding:var(--ui-space-1) 0;
  min-height:1.5rem;
  font:inherit;
  font-size:.78rem;
  font-weight:400;
  line-height:1.3;
  text-decoration:underline;
  text-underline-offset:.18rem;
  cursor:pointer;
  white-space:normal;
  text-align:left;
}

.agent-launch-column__routine {
  display:grid;
  gap:.1rem;
  min-width:0;
  border:1px solid color-mix(in srgb, var(--ui-accent) 32%, var(--ui-line));
  /* T486: --ui-radius-md never existed and has no prototype source value
     (doc-65 audit log) — concrete literal, matching the .5rem this always
     rendered at, instead of a dangling var() ref. */
  border-radius:.5rem;
  background:linear-gradient(145deg, var(--ui-accent-soft), var(--ui-panel-soft));
  color:var(--ui-text-soft);
  padding:var(--ui-space-2) var(--ui-space-3);
  font:inherit;
  line-height:1.3;
  text-align:left;
  cursor:pointer;
}

.agent-launch-column__routine-summary {
  min-width:0;
  font-size:.72rem;
}

.agent-launch-column__routine-action {
  color:var(--ui-accent);
  font-size:.78rem;
  font-weight:650;
}

.agent-launch-column__routine:hover {
  border-color:color-mix(in srgb, var(--ui-accent) 58%, var(--ui-line));
  background:var(--ui-accent-soft);
}

.agent-launch-column__routine:focus-visible {
  border-color:var(--ui-accent);
  outline:2px solid var(--ui-accent);
  outline-offset:2px;
}

.agent-dock-tabs {
  display: none;
}

.agent-dock-capacity {
  position: fixed;
  z-index: 70;
  right: max(1rem, env(safe-area-inset-right, 0px));
  bottom: calc(1rem + var(--cc-visual-viewport-bottom, 0px)
    + env(safe-area-inset-bottom, 0px));
  display: grid;
  max-width: 22rem;
  gap: 0.35rem;
  border: 1px solid var(--ui-accent);
  border-radius: 0.55rem;
  padding: 0.8rem;
  background: var(--ui-panel);
  box-shadow: var(--ui-shadow);
  color: var(--ui-text);
}

.agent-dock-capacity[hidden] {
  display: none;
}

.agent-dock-capacity span {
  color: var(--ui-text-soft);
  font-size: 0.72rem;
}

.agent-dock-capacity .button {
  justify-self: start;
  margin-top: 0.2rem;
}

body.multi-dock-open:not(.standalone) .tab-panel {
  min-width:360px;
  margin-right: var(--agent-pane-width);
}

body.multi-agent-workspace {
  padding: 0;
  overflow: hidden;
}

/* OAS2: the Agents rail pane is body-mounted like the region — it is a
   legitimate surface on the standalone workspace page (the ‹ Agents
   back-link and the topbar Agents action), so it survives this cull. */
body.multi-agent-workspace > :not(#agent-dock-rail):not(#agents-rail):not(script) {
  display: none !important;
}

body.multi-agent-workspace > #agent-dock.open {
  z-index: 80;
  display: flex !important;
}

body.multi-agent-workspace #agent-dock [hidden] {
  display: none !important;
}

body.multi-agent-workspace #agent-dock:has(#dock-picker:not([hidden])) :is(
  #dock-picker-back,
  #dock-full-view,
  #dock-brief,
  #dock-state-dot,
  #dock-state-label,
  #dock-transcript-shell,
  #dock-agent-status,
  #dock-instruct-form
) {
  display: none !important;
}

body.multi-agent-workspace #agent-dock-rail {
  inset: 0;
  width: 100%;
  border-left: 0;
  box-shadow: none;
}

body.multi-agent-workspace .agent-dock-columns {
  overflow-x: auto;
  scroll-snap-type: x proximity;
}

body.multi-agent-workspace .agent-session-column {
  min-width: 17.5rem;
  max-width: none;
  flex: 0 0 var(--dock-column-width, 30rem);
  scroll-snap-align: start;
}

body.multi-agent-workspace #agent-dock-rail.is-single-session .agent-session-column {
  min-width: 100%;
  max-width: 100%;
  flex: 0 0 100%;
}

/* OAS2 rail-focus on the standalone workspace: the drawer pane reserves
   its width — the region narrows and the columns redistribute inside it
   (min-width still guards readability). Columns are never hidden, so a
   preserved conversation keeps its iframe state. */
body.multi-agent-workspace.rail-focus #agent-dock-rail {
  /* width (not right): the workspace rule sets width:100% alongside
     inset:0, and in that over-constrained pair width wins. */
  width: calc(100% - var(--agent-pane-width, 480px));
}

body.multi-agent-workspace.rail-focus .agent-session-column {
  flex: 1 1 0;
}

body.agent-projection-dock #session-overlay .panel-header,
body.agent-projection-dock #session-overlay .controls {
  display: none;
}

body.agent-projection-dock > :not(#session-overlay):not(script) {
  display: none !important;
}

body.agent-projection-dock #session-overlay .detail-body {
  display: flex;
  min-height: 100dvh;
  height: 100dvh;
  flex-direction: column;
  overflow: hidden;
}

body.agent-projection-dock #session-overlay .conversation {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
  overflow: hidden;
}

body.agent-projection-dock #session-overlay .transcript-shell {
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
}

body.agent-projection-dock #session-overlay :is(.transcript, .dock-transcript) {
  min-height: 0;
  height: 100%;
  overflow-y: auto;
}

body.agent-projection-dock #session-overlay :is(.composer, .dock-composer) {
  position: relative;
  flex: 0 0 auto;
}

body.multi-dock-picker-open #agent-dock.open {
  z-index: 20;
  width: min(var(--agent-dock-width, 30rem), 40vw);
  box-shadow: none;
}

body.multi-dock-picker-open #agent-dock-rail {
  right: min(var(--agent-dock-width, 30rem), 40vw);
  width: calc(var(--agent-pane-width) - min(var(--agent-dock-width, 30rem), 40vw));
}

body.multi-dock-picker-open:not(.standalone) .tab-panel {
  margin-right: var(--agent-pane-width);
}
