/* ⚠ EVERY FONT SIZE HERE IS A RUNG, NOT A NUMBER. This file was written before the console
   type scale merged, so it arrived carrying 42 pixel literals — including eight 12.5px, the
   exact half-pixel drift the scale removed. They were converted on merge with the same
   mapping the original migration used, so zone 4's panel reads at the same sizes as the rest
   of the console rather than at a second set that agrees today and drifts tomorrow.
   ⚠ Reach for a rung by role; the console is token-only. See CONSOLE.md § 6b. */

/* console_panel.css: ZONE 4'S INTERIOR, declared once for every station that renders it.
 *
 * The detail panel has two views (the named-views amendment, analysis console
 * support-parity rebuild ADR, Amendment 2026-08-29) and this file owns the inside of
 * both: the TURN evidence block, and the CUSTOMER panel below it.
 *
 * ⚠ IT WAS `console_evidence.css` FOR HALF A DAY, covering the evidence block alone,
 * and was renamed when the customer panel followed it here. The rename is the honest
 * one: two shared stylesheets whose contents are both "zone 4's interior" would be
 * the split this file exists to prevent, one level up.
 *
 * ── THE TURN VIEW ─────────────────────────────────────────────────────────────
 *
 * The three section renderers (classification, tool use, what Ralph read) have been
 * shared since the one-evidence-renderer decision (internal Ralph console surface ADR,
 * Decision 17). Their CSS was not: every rule below lived TWICE, once in
 * analysis_workspace.css and once in internal_workspace.css. This file is the CSS half of
 * that decision, moved when a THIRD caller arrived (the named-views amendment, analysis
 * console support-parity rebuild ADR, Amendment 2026-08-29), modelled rule for rule on
 * what the transcript already did (the transcript CSS goes single-origin with its markup,
 * conversation-artifact single-transcript ADR, Decision 9).
 *
 * WHY NOW. The two copies were measured before the move and were byte-identical, zero
 * differences. A copy that has not yet drifted is the cheapest possible moment to remove
 * one. The transcript's copies were unified AFTER they diverged, and the bill was three
 * trailing-line families rendering unstyled on the ticket page for a day.
 *
 * SCOPE. Every selector hangs off `.ev-block`, the wrapper the shared renderer writes
 * around the whole labeled block, and NEVER off a `[data-workspace]` attribute. No station
 * may own these rules.
 *
 * THE SPECIFICITY TRAP, which is why a check enforces the absence rather than trusting it.
 * A workspace-scoped copy of any selector in this file outranks the copy here and silently
 * wins for that station alone, leaving the evidence panel as two panels with this file
 * still looking authoritative. Neither workspace stylesheet may declare an
 * evidence-interior selector; `_verify_detail_panel_views.py` reads all three and reddens
 * on the first one, with its selector set DERIVED from this file so a rule added here
 * tomorrow is protected the day it lands.
 *
 * TWO LABEL CLASSES, RENAMED IN THE MOVE, and the rename is the point rather than tidying.
 * The block's labels used to be `.plabel` and `.plabel plabel-sub`, taking their base from
 * the STATION's `.plabel` rule, which is 11px on the two ticket-page panels and 10px in
 * Support. Sharing the markup without renaming would therefore have rendered the same
 * evidence block a size smaller in Support than in Analysis, silently, on the day it
 * shipped. They are `.ev-label` and `.ev-label-sub` here, declaring the merged result in
 * full, so the block owns its own labels and no station can resize them by accident.
 * `.plabel` itself stays in each workspace: it still names Contact, Handoff notes and the
 * eval linkage, which ARE the station's.
 *
 * THE GENERIC DISCLOSURE RULES ARE HERE TOO, and they are the ones a rule-by-rule reading
 * of the `.ev-` namespace would have missed. The evidence folds are `<details>`, and their
 * marker styling lived in a generic `.detail details > summary` rule in each workspace,
 * outside the `.ev-` namespace entirely. Support has no such rule, so moving only the
 * `.ev-` rules would have shipped the folds there with the browser's default triangle.
 * They are scoped to `.ev-block` so they cannot restyle any other disclosure on the page,
 * and they sit ABOVE the `.ev-doc`/`.ev-tool-item` overrides exactly as they did in the
 * source files, because those overrides are written to beat them.
 *
 * ONE SECTION HERE IS NOT `.ev-block`, and it is marked as such below: the SELECTION
 * FRAME, the black line that encloses the selected exchange and reaches this panel (the
 * per-turn analysis evidence ADR, Amendment 2026-08-29). It styles `.msgs`, so it is
 * rooted there exactly as console_render.css requires of anything that does. It arrived in
 * analysis_workspace.css hours before this file existed, while one station selected turns;
 * two do now, so it sits beside the panel it points at rather than in one of the two
 * stations that draw it.
 *
 * Served at /assets/evidence.css by console_assets.py (no-cache, like the renderer it
 * styles) and linked once from console_shell.html, before any workspace stylesheet.
 * Loaded for every workspace, including those that render no evidence; the rules match
 * nothing there, and a per-workspace opt-in is a list a future station could be left off
 * of, which is the original defect in a new coat.
 */

.ev-block details > summary { cursor:pointer; font-size:var(--text-tiny); letter-spacing:.1em; font-weight:700; text-transform:uppercase; color:var(--ink-500); list-style:none; }

.ev-block details > summary::-webkit-details-marker { display:none; }

.ev-block details > summary::before { content:"\25B8 "; color:var(--flex-blue-500); }

.ev-block details[open] > summary::before { content:"\25BE "; }

/* The block's own labels. Merged from the station `.plabel` base they used to ride plus
   the `.plabel-sub` override, so the block renders identically in every station.
   ⚠ NO ONE-SIDED BORDER ANYWHERE IN THIS FILE (design rule 7, Connor: "I hate accent
   stripes"). The section label carried a three-pixel blue left rule from the day it was
   built until 2026-09-03 — an accent stripe live in production, predating the rule and
   named by the Prompt workspace ADR as its own fix — and the not-captured boxes below
   carried a warning-coloured one. All gone; `_verify_detail_panel_views.py` pins that this
   file declares no `border-left` or `border-right` at all. */
.ev-block .ev-label { font-family:var(--font-display); font-size:var(--text-meta); font-weight:700; letter-spacing:.16em;
    color:#000000; text-transform:uppercase; margin-bottom:12px; }

/* TWO RUNGS, and the difference is theirs to carry now that the stripe is gone (the
   per-turn input record ADR, Decision 5; settled on Connor's eye 2026-09-03): the parent
   label 12px bold black, the section label 11px regular grey. The parent is also drawn
   ABOVE a group — `.ev-group` — so "What Ralph read" reads as the head of its two children. */
.ev-block .ev-label-sub { font-family:var(--font-display); text-transform:uppercase;
    font-size:var(--text-tiny); font-weight:400; color:var(--ink-500); letter-spacing:.14em; margin:0 0 9px;
    line-height:1.4; }

.ev-block .ev-label.ev-group { margin-top:26px; }

.ev-block .ev-sec { margin-bottom:22px; }

.ev-block .ev-sec:last-child { margin-bottom:0; }

/* ⚠ THE THREE-LINE CAP IS BELT AND BRACES, and the belt is the max-height rather than the
   clamp. `-webkit-line-clamp` needs `display:-webkit-box`, and current Chrome NORMALISES
   that value away: an element carrying it computes `display:flow-root`, so the clamp never
   applies. Measured in the browser on 2026-08-29, including on a bare element with the
   declaration inline, which is what proves it is the engine and not this file. The visible
   symptom is nasty and easy to misread as a layout bug of its own: the box keeps a
   three-ish-line height while the text keeps flowing, so the TOP HALF OF A FOURTH LINE
   bleeds out under the bottom border.

   ⚠ This is NOT new here. The same rule, with the same effect, has been on the Analysis
   ticket page since the panel was built; moving it to one origin is what put it in front
   of a second station and got it noticed. Recorded so nobody re-derives it as a
   regression of the move.

   So the height is pinned instead: `line-height` is declared rather than inherited (it was
   1.55 by inheritance, and a cap computed from a value that can change upstream is a cap
   waiting to drift), and `max-height` is exactly three of those lines plus the padding and
   borders — `box-sizing` is border-box here, so the cap includes them. The clamp is KEPT
   for the engines that honour it, where it also gives the ellipsis; where it is ignored the
   text is cut at a clean line boundary instead of halfway through one. */
.ev-block .ev-turn-q { font-size:var(--text-label); line-height:1.55; color:var(--ink-900); font-style:italic;
    background:#e6f4fb; border:1px solid #8dcdee; border-radius:var(--radius-tag); padding:8px 12px;
    margin:0 0 18px; max-width:none; }

/* The clamp's own box. Three lines and an ellipsis, with nothing left to overflow the
   padded parent. `max-height` backs it up for any engine that ignores the clamp: it is
   exactly three lines, so the text is cut at a line boundary rather than through one. */
.ev-block .ev-turn-q .ev-turn-q-t { display:-webkit-box; -webkit-line-clamp:3;
    -webkit-box-orient:vertical; overflow:hidden; max-height:calc(1.55em * 3); }

.ev-block .ev-hint { font-size:var(--text-meta); color:var(--ink-500); margin:0; line-height:1.55; }

.ev-block .ev-absent { font-size:var(--text-meta); color:var(--ink-500); margin:2px 0 0; line-height:1.5; }

.ev-block .ev-absent-inline { font-size:var(--text-meta); color:var(--ink-400); font-style:italic; }

/* The not-captured boxes say it by fill alone (absence is labeled, per-turn analysis evidence
   ADR, Decision 9); the warning-coloured left edge they carried until 2026-09-03 was a stripe. */
.ev-block .ev-vintage { background:var(--attn-bg); color:var(--attn-fg); padding:7px 9px; border-radius:var(--radius-inset); }

.ev-block .ev-line { font-size:var(--text-label); color:var(--ink-800); padding:3px 0; line-height:1.5; }

.ev-block .ev-line .ev-k { color:var(--ink-500); }

.ev-block .ev-vintage-inline { background:var(--attn-bg); color:var(--attn-fg); padding:1px 6px; border-radius:var(--radius-tag); }

.ev-block .ev-tools { list-style:none; margin:4px 0 0; padding:0; }

.ev-block .ev-tools li { padding:5px 0; border-top:1px solid var(--ink-50); font-size:var(--text-meta); }

.ev-block .ev-tools li:first-child { border-top:none; }

.ev-block .ev-tool-item { border-top:1px solid var(--ink-50); padding:7px 0; }

.ev-block .ev-tool-item:first-child { border-top:none; }

.ev-block .ev-tool-item > summary { text-transform:none; letter-spacing:0; font-weight:400; font-size:var(--text-meta); color:var(--ink-800); }

/* The tool's name reads as words (`escalate to human`), so it is set in the panel's own face,
   not monospace: a person reads a name, not a symbol (design rule 1, 2026-09-05). */
.ev-block .ev-tool { font-size:var(--text-meta); color:var(--ink-800); font-weight:600; }

.ev-block .ev-outcome { font-size:var(--text-micro); letter-spacing:.08em; text-transform:uppercase; font-weight:700; color:var(--ink-500); margin-left:7px; border-radius:var(--radius-pill); padding:1px 7px; background:var(--ink-50); }

.ev-block .ev-outcome.ev-good { background:var(--success-soft); color:var(--success-600); }

.ev-block .ev-outcome.ev-warn { background:var(--attn-bg); color:var(--attn-fg); }

.ev-block .ev-outcome.ev-bad { background:var(--danger-soft); color:var(--danger); }

.ev-block .ev-by { font-size:var(--text-micro); letter-spacing:.08em; text-transform:uppercase; color:var(--ink-400); border:1px solid var(--border); border-radius:var(--radius-pill); padding:1px 6px; margin-left:5px; }

.ev-block .ev-io { margin:7px 0 2px 14px; }

.ev-block .ev-io-k { font-size:var(--text-micro); letter-spacing:.12em; text-transform:uppercase; font-weight:700; color:var(--flex-blue-700); margin:7px 0 3px; }

.ev-block .ev-pre { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:var(--text-tiny); line-height:1.5; color:var(--ink-700); background:var(--ink-25); border:1px solid var(--ink-100); border-radius:var(--radius-inset); padding:9px 11px; margin:0; max-height:260px; overflow:auto; white-space:pre-wrap; word-break:break-word; }

.ev-block .ev-docs { margin-top:2px; }

/* Three rows open, the rest behind one control (dated correction 2026-09-03 on the clutter
   decision, per-turn analysis evidence ADR, Decision 10). The hidden block rides the shell's
   `[hidden]` idiom, so nothing is declared for it here except its first row's rule: that
   row is a `:first-child` of the block and would otherwise drop the separator between row
   three and row four. The control is a button drawn as the underlined text the turn-view
   mockup settled on Connor's eye (2026-09-02), at the label rung — "See all 10" is a
   glance, not a sentence (design rule 5). */
.ev-block .ev-docs-more > .ev-doc:first-child { border-top:1px solid var(--ink-50); }

.ev-block .ev-seeall { display:inline-block; margin:8px 0 0; padding:0; border:none; background:none; font:inherit; font-size:var(--text-label); color:var(--ink-600); text-decoration:underline; text-underline-offset:2px; cursor:pointer; }

.ev-block .ev-seeall:hover { color:var(--ink-900); }

.ev-block .ev-doc { border-top:1px solid var(--ink-50); }

.ev-block .ev-doc:first-child { border-top:none; }

.ev-block .ev-doc > summary { display:flex; gap:9px; align-items:flex-start; text-transform:none; letter-spacing:0; font-weight:400; padding:7px 0; border-radius:var(--radius-inset); }

.ev-block .ev-doc > summary::before { content:none; }

.ev-block .ev-doc > summary:hover { background:var(--flex-blue-50); }

.ev-block .ev-doc[open] > summary { background:var(--flex-blue-50); }

.ev-block .ev-rank { font-size:var(--text-tiny); font-weight:700; color:var(--flex-blue-600); background:var(--flex-blue-50); border-radius:var(--radius-inset); min-width:20px; text-align:center; padding:2px 0; flex:0 0 auto; }

  /* A row lit by a citation mark in the thread, or a row whose badge lights the marks (the
     per-turn analysis evidence ADR, Amendment 2026-09-17, Decision 16): the attention
     family's fill on the summary and the badge, nothing else. */
.ev-block .ev-doc.ev-lit > summary { background:var(--attn-bg); }

.ev-block .ev-doc.ev-lit .ev-rank { background:var(--attn-bg); color:var(--attn-fg); }

.ev-block .ev-doc-main { min-width:0; flex:1 1 auto; }

.ev-block .ev-doc-title { display:block; font-size:var(--text-label); color:var(--ink-800); line-height:1.35; }

.ev-block .ev-doc[open] .ev-doc-title { font-weight:700; }

.ev-block .ev-doc-meta { display:flex; align-items:center; gap:6px; margin-top:4px; }

.ev-block .ev-type { font-size:var(--text-micro); letter-spacing:.1em; text-transform:uppercase; font-weight:700; border-radius:var(--radius-pill); padding:1px 7px; background:var(--ink-50); color:var(--ink-500); }

.ev-block .ev-type-faq { background:#ede7fb; color:#5b3fb0; }

.ev-block .ev-type-video { background:#fde8ee; color:#a8214a; }

.ev-block .ev-type-product { background:var(--flex-blue-50); color:var(--flex-blue-700); }

.ev-block .ev-type-pdf { background:var(--attn-bg); color:var(--attn-fg); }

.ev-block .ev-type-web { background:var(--success-soft); color:var(--success-600); }

.ev-block .ev-goto { font-size:var(--text-micro); letter-spacing:.08em; font-weight:700; text-decoration:none; color:var(--flex-blue-700); border:1px solid var(--flex-blue-200); border-radius:var(--radius-pill); padding:1px 8px; white-space:nowrap; }

.ev-block .ev-goto:hover { background:var(--flex-blue-500); color:#fff; border-color:var(--flex-blue-500); }

.ev-block .ev-doc-body { padding:2px 0 10px 29px; }

.ev-block .ev-passage { max-height:320px; }

.ev-block .ev-doc-id { margin-top:6px; font-size:var(--text-micro); color:var(--ink-400); }

.ev-block .ev-doc-id code { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; word-break:break-all; }

.ev-block .ev-doc-id .unres { font-style:italic; text-decoration:underline; }


/* ── The selection frame (NOT `.ev-block`; see the header) ────────────────────────────
   The selected exchange is enclosed by ONE black line with a connector reaching this
   panel (the per-turn analysis evidence ADR, Amendment 2026-08-29). Rooted at `.msgs`,
   never at a `[data-workspace]`, because two stations select turns now.

   The layer is absolutely positioned inside the scroller and inert to the pointer: it
   scrolls with the transcript, and a click through it still selects the turn under it. */
/* ⚠ THE FRAME'S RULES ARE NOT HERE. `.msgs .turn-frame` and `.msgs .turn-frame path` are
   the TRANSCRIPT's, and the transcript's CSS is single-origin in console_render.css (the
   conversation-artifact single-transcript ADR, Decision 9). This file carried copies of both
   until 2026-08-30 — written for the drawn-box design, with `stroke:#000000` — and because
   this stylesheet loads after the renderer's, the hardcoded black WON: the connector rendered
   black against a `var(--border)` grey box, which is what Connor saw. The rules were deleted
   rather than recoloured; one copy in the transcript's own file is the fix, and matching two
   copies would only have agreed until the next edit. */


/* ── THE CUSTOMER VIEW ───────────────────────────────────────────────────────────────
 *
 * ⚠ SHARED FOR THE SAME REASON AS EVERYTHING ELSE IN THIS FILE, and it is the biggest of
 * them. Connor asked for the Customer | Turn toggle in every zone-4 panel, which means the
 * Analysis ticket page renders the customer panel it never had. Measured first: that view
 * is 14 functions, five module variables, three write routes and the rules below, every
 * one of them Support's. Copying them into a second station would have reproduced, in one
 * move, the exact defect this change spent its life retiring in the transcript, the
 * evidence block and the selection frame.
 *
 * ⚠ `.plabel` AND `.pdiv` ARE NOT HERE. They are the STATION's: the Contact and Handoff
 * notes headings in Support, the eval linkage label on the ticket page, and they sit at
 * different sizes on purpose (11px on the ticket pages, 10px in Support). The same line
 * the evidence block's labels drew when they were renamed to `.ev-label` rather than
 * moved — a shared block must not inherit a value a station is free to change.
 */
.detail .pident { display:flex; flex-direction:column; align-items:center; text-align:center; }

.detail .pav { width:64px; height:64px; border-radius:var(--radius-pill); background:var(--flex-blue-500); color:#fff; display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:700; font-size:var(--text-display); }

.detail .pname { font-size:var(--text-display); font-weight:700; color:var(--ink-900); margin-top:14px; max-width:100%; overflow:hidden; text-overflow:ellipsis; }

.detail .psub { font-size:var(--text-meta); color:var(--ink-400); margin-top:2px; }

.detail .pactions { display:flex; gap:8px; margin-top:18px; }

.detail .pbtn { flex:1; height:34px; border:1px solid var(--border-strong); border-radius:var(--radius-control); background:var(--ink-0); color:var(--ink-700); font-size:var(--text-meta); font-weight:600; cursor:pointer; text-decoration:none; display:flex; align-items:center; justify-content:center; transition:all .15s; }

.detail .pbtn:hover { border-color:var(--ink-900); }

.detail .pbtn[aria-disabled="true"] { opacity:.5; cursor:default; pointer-events:none; }

.detail .prow { display:flex; align-items:center; gap:10px; font-size:var(--text-label); color:var(--ink-700); margin-bottom:11px; }

.detail .prow:last-child { margin-bottom:0; }

.detail .prow .ic { color:var(--ink-400); flex:0 0 auto; }

.detail .prow .ptext { min-width:0; word-break:break-word; }

.detail .prow .psubline { color:var(--ink-400); font-size:var(--text-meta); margin-top:1px; }

.detail .porder { margin-top:22px; padding-top:18px; border-top:1px solid var(--border); }

.detail .pordcard { display:flex; flex-direction:column; gap:3px; }

.detail .pordtop { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }

.detail .pordnum { font-weight:600; color:var(--ink-900); font-size:var(--text-label); }

.detail .pordtotal { font-weight:600; color:var(--ink-900); font-size:var(--text-label); flex:0 0 auto; }

.detail .pordstatus { color:var(--ink-400); font-size:var(--text-meta); }

.detail .pordplaced { color:var(--ink-400); font-size:var(--text-meta); margin-top:4px; }

.detail .plifetime { margin-top:12px; font-size:var(--text-label); color:var(--ink-700); }

/* The Cart section (the Details Cart section, storefront cart observation ADR, Decision 9):
   newest-snapshot state beside the transcript's cart event lines. Same quiet register as the
   order block above; thumbnails are the shopper's own cart images off the Shopify CDN.
   ⚠ Moved here from support_workspace.css on 2026-08-30 with the Customer view's second
   station: it had been the one part of the view whose CSS stayed behind, so the Analysis
   ticket page would have drawn the cart unstyled with every check green. */
.detail .pcart-sub { font-weight:600; color:var(--ink-900); font-size:var(--text-label); }
.detail .pcart-when { color:var(--ink-400); font-size:var(--text-meta); margin-top:2px; }
.detail .pcart-empty { color:var(--ink-400); font-size:var(--text-label); }
.detail .pcart-item { display:flex; align-items:center; gap:10px; margin-top:10px; }
.detail .pcart-img { width:36px; height:36px; border-radius:var(--radius-inset); object-fit:cover; border:1px solid var(--border); background:var(--ink-25); flex:0 0 auto; }
.detail .pcart-img-none { display:inline-block; }
.detail .pcart-item-text { min-width:0; }
.detail .pcart-title { font-size:var(--text-label); color:var(--ink-900); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.detail .pcart-price { font-size:var(--text-meta); color:var(--ink-400); margin-top:1px; }
.detail .pcart-more { margin-top:8px; font-size:var(--text-meta); color:var(--ink-400); }





























/* ── What the turn fed the model (the per-turn input record ADR, Decisions 5 and 6) ────
   The prompt list: stacked rows, the name over its detail in grey, in a hairline box. The
   button below it opens the drawer. The drawer covers its host (the thread zone in
   Analysis, the bench's frame column on the Internal bench), flat on the page: a hairline
   border, no shadow (design rule 8), no one-sided rule anywhere (design rule 7). */
.ev-block .ev-parts { border:1px solid var(--border); border-radius:var(--radius-control); overflow:hidden; }

.ev-block .ev-part { display:flex; flex-direction:column; gap:1px; padding:7px 10px; border-top:1px solid var(--ink-50); font-size:var(--text-label); }

.ev-block .ev-part:first-child { border-top:none; }

.ev-block .ev-part-sys { background:var(--ink-25); }

.ev-block .ev-part-n { color:var(--ink-800); }

.ev-block .ev-part-d { color:var(--ink-500); font-size:var(--text-label); }

.ev-block .ev-open-turn { display:block; width:100%; margin-top:12px; padding:9px 12px; border:1px solid var(--ink-900);
    border-radius:var(--radius-control); background:#fff; font:inherit; font-size:var(--text-label); font-weight:600;
    color:var(--ink-900); text-align:center; cursor:pointer; }

.ev-block .ev-open-turn:hover { background:var(--ink-25); }

.ev-block .ev-withheld { margin:0; }

.ev-drawer { position:absolute; inset:0; z-index:5; background:#fff; border:1px solid var(--border);
    display:flex; flex-direction:column; min-width:0; }

.ev-drawer .ev-dh { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:0 22px;
    min-height:var(--headbar-h, 74px); border-bottom:1px solid var(--border); flex:none; }

.ev-drawer .ev-dh-title { font-weight:700; font-size:var(--text-head); }

.ev-drawer .ev-dh-sub { font-size:var(--text-meta); color:var(--ink-400); display:flex; gap:7px; align-items:center; margin-top:1px; }

.ev-drawer .ev-dh-sub .sep { width:3px; height:3px; border-radius:var(--radius-pill); background:var(--ink-300); display:inline-block; }

.ev-drawer .ev-dh-x { width:28px; height:28px; border:1px solid var(--border); border-radius:var(--radius-control); background:#fff;
    font:inherit; color:var(--ink-500); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; }

.ev-drawer .ev-dh-fold { display:flex; align-items:center; gap:14px; }

.ev-drawer .ev-dbody { overflow:auto; padding:18px 22px 40px; flex:1; min-height:0; }

/* The drawer's BODY is the shared slot component (console_slots.css): the slot list on the
   left, the slots on the right, exactly as the Prompt page draws them (the per-turn input
   record ADR, Amendment 2026-09-08, Decision 11). Nothing below styles a slot — only what a
   slot's body holds on this reader: the excerpts, the history rows, the link. The boxed
   blocks, the uppercase role labels and the per-block fold rules retired with that amendment. */
.ev-drawer .ev-passage { white-space:pre-wrap; font:inherit; font-size:var(--text-prose); line-height:1.6;
    color:var(--ink-800); padding:4px 0 10px; margin:0; }

.ev-drawer .ev-src { border-top:1px solid var(--ink-50); }

.ev-drawer .ev-src:first-child { border-top:none; }

.ev-drawer .ev-src-h { font-size:var(--text-label); font-weight:700; padding:8px 0 0; }

.ev-drawer .ev-hist-row { font-size:var(--text-prose); line-height:1.55; padding:4px 0; white-space:pre-wrap; }

.ev-drawer .ev-hist-who { display:inline-block; min-width:76px; color:var(--ink-500); }

.ev-drawer .ev-goto-prompt { color:var(--ink-600); text-decoration:underline; text-underline-offset:2px; }

.ev-drawer .ev-absent { font-size:var(--text-prose); color:var(--ink-500); margin:0; padding:4px 0; line-height:1.5; }
