/* target-layout shell rebuild.
   Hand-authored from a historical reference implementation extract; do not paste
   reference implementation compiled CSS or brand assets here. */

:root {
  /* Agents layout-shell locals only. The color-system tokens this shell once
     referenced (--color-bg-container / --color-border-tertiary /
     --color-text-quaternary) were consolidated into maka-tokens.css alongside
     the --background family they alias; the dead --color-* / --color-fill-* /
     settings-nav strata were removed (Round C, zero consumers). See the token
     README at the top of maka-tokens.css. */

  /* Flat neutral shell/backplate. This must never be a gradient; the
     white content surface reads through radius + shadow on top. */
  --agents-layout-bg: var(--surface-canvas);
  --agents-content-area-bg: var(--color-bg-container);
  /* reference layout-derived values (2026-06-20 WAWQAQ ef6b2852).
     The original 8px/12px we shipped at 7013f0f read too loose vs the
     real bundle's 4px gap + 6px radius.
     PR-CHAT-CHROME-FIX-1 (WAWQAQ msg `4a1b8c13`): bumped radius
     6 → 12 so the floating surface's bottom corners actually read.
     6px was geometrically present but optically invisible against a
     same-color shell. */
  --agents-content-area-gap: 4px;
}

[data-agents-page] {
  --sidebar-width: 240px;
  position: relative;
}

.agents-layout-root {
  height: 100dvh;
  background: var(--agents-layout-bg);
}

.agents-layout-body {
  min-height: 0;
}

/* Justified: the Agents shell reuses shared sidebar/session-panel primitives,
   but this surface must read as a transparent rail. Keep these `!important`
   resets until the primitive chrome is split from layout. */
.agents-sidebar {
  background: transparent !important;
  contain: layout paint style;
  flex-shrink: 0;
}

.agents-sidebar[data-resizing="true"] {
  box-shadow: none !important;
}

.agents-layout-root aside[data-settings-nav-column].agents-sidebar > div {
  background: transparent;
}

.maka-session-panel.agents-sidebar {
  background: transparent !important;
  contain: layout paint style;
}

/* `.agents-parchment-paper-surface` is reused by the composer body. The bare
   class drops its border; Astryx ChatComposer owns composer chrome. */
.agents-parchment-paper-surface {
  border: 0;
  background-color: var(--agents-content-area-bg);
  box-shadow: none;
}

.agents-chat-panel {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
}

.agents-chat-view-root {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
}
