/**
 * @file agents-detail.css
 * @author Jouni Miikki
 * SPDX-License-Identifier: MIT
 * @description Styles for agent detail view sub-tabs (tasks, directives).
 *   Uses agd- prefix to avoid collisions with other profile styles.
 *   All colors use CSS variables from theme.css.
 * @version-history
 *   v2.100.1 -- 2026-09-27 -- .pf .pf-agd-empty and .pf-agd-solo go with their last user: the pop-out agent window is the SoloWindow component (solo-window.css, page group G9).
 *   v2.100.0 -- 2026-09-26 -- The agents list, the opened agent's head and notices, the Tasks tab's record, the
 *     rate and request-changes dialogs, the services list and the crew's model picker draw only
 *     components now (page group G1a): their rules no file writes any more go (the form field and its
 *     actions, the old empty line, the services cards, running now, the model picker's row, the tag
 *     field, the custom group's name field, zone 2 and its bar and steps, the tab panel, the URL form,
 *     the help text, the rating rows, the task memory rows, the run-mode switch).
 *   v2.99.0 -- 2026-09-26 -- The agent detail tabs (activity, contracts, data access, directives, config,
 *     messages, quality) draw only components now: the rules no file writes any more go (sub-tab bar,
 *     section header, directives, messages and command palette, data-access forms and stored keys,
 *     config upload and preview, filter pills, governance, quality lists, contracts). The rules the
 *     design lab's samples still draw stay (card grid, event-log scroll, README, scope summary, config
 *     list, review rows), as do the ones other agent files write (G1b, page migration).
 *   v2.98.0 -- 2026-09-26 -- The lines under a service's name and a review's context are the Listing's (.listing-meta): their size and colour go, their row and place stay (a unification: Jouni's decision "Meta line").
 *   v2.97.0 -- 2026-09-26 -- The configuration files are the Listing, the opened file's text the Code block: the grey boxes, the coral frame of the picked one and the preview's own frame go; the list's place and the text's height stay (a unification: Jouni's decision "File pick list").
 *   v2.96.0 -- 2026-09-26 -- The form field's grey label rule leaves the Check line alone; the grounded check line's size and colour go (a unification: Jouni's decision "Check line").
 *   v2.95.0 -- 2026-09-26 -- An agent's README and a task's Markdown memory value are the Markdown reader's small cut: their own cuts of the reader (32 rules) go, the README keeps its width and height (a unification: Jouni's decision "Small reader").
 *   v2.94.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.93.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.92.0 -- 2026-09-26 -- The configuration files are the Listing, the opened file's text the Code block: the grey boxes, the coral frame of the picked one and the preview's own frame go; the list's place and the text's height stay (a unification: Jouni's decision "File pick list").
 *   v2.91.0 -- 2026-09-26 -- The form field's grey label rule leaves the Check line alone; the grounded check line's size and colour go (a unification: Jouni's decision "Check line").
 *   v2.90.0 -- 2026-09-26 -- An agent's README and a task's Markdown memory value are the Markdown reader's small cut: their own cuts of the reader (32 rules) go, the README keeps its width and height (a unification: Jouni's decision "Small reader").
 *   v2.89.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.88.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.87.0 -- 2026-09-26 -- The form field's grey label rule leaves the Check line alone; the grounded check line's size and colour go (a unification: Jouni's decision "Check line").
 *   v2.86.0 -- 2026-09-26 -- An agent's README and a task's Markdown memory value are the Markdown reader's small cut: their own cuts of the reader (32 rules) go, the README keeps its width and height (a unification: Jouni's decision "Small reader").
 *   v2.85.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.84.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.83.0 -- 2026-09-26 -- An agent's README and a task's Markdown memory value are the Markdown reader's small cut: their own cuts of the reader (32 rules) go, the README keeps its width and height (a unification: Jouni's decision "Small reader").
 *   v2.82.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.81.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.80.0 -- 2026-09-26 -- A stored value is the Code block (css/components/code-block.css): its look goes, its place and height stay (a unification: Jouni's decision "Code block").
 *   v2.79.0 -- 2026-09-26 -- A task's memory value opened under its row is the library's JSON view: the box's grey ground, its rule, its colour and its .75rem go, its padding and scroll stay (a unification: the lead's ruling on a stored value).
 *   v2.78.0 -- 2026-09-26 -- A tag's ✗ is the Tag's remove mark (.poster-chip-x, poster.css); the older .pf-agd-tag-chip-remove rules, which the page's own rule overrode, go (a unification: Jouni's decision "Remove mark").
 *   v2.77.0 -- 2026-09-26 -- An agent's event log is the Timeline (components/Timeline.js); the two-line entry rules and the kind tag's place rule go, the scrolling box stays (a unification: Jouni's decision "Activity log").
 *   v2.76.0 -- 2026-09-26 -- Every star rating is the library's Rating stars (css/components/rating-stars.css): the coral review stars, the amber inline picker and the coral rate dialog stars go; the rate dialog's row keeps its margin, a rated row its size and its one line (a unification: Jouni's decision "Rating stars").
 *   v2.75.0 -- 2026-09-26 -- A question waiting for the person is the Object box on the page's ground, its answers the Tab with the chosen one on the sun (a unification: Jouni's decision "Question box").
 *   v2.74.0 -- 2026-09-26 -- A small heading over a group of fields, a card or a note is the Sub-heading (.sub-heading: small ink headline letters); the coral small capitals, the bold ink words and the coral headline letters go (a unification: Jouni's decision "Sub-heading").
 *   v2.73.0 -- 2026-09-26 -- A framed box is the Object box (.poster-box), the one that stands out (an opened row, the way to take first) its raised tone; a page rule keeps only its place (a unification: Jouni's decision "Box").
 *   v2.72.0 -- 2026-09-26 -- The typing box is the chat's one row (.poster-composer and its stacked cut): the field with the thick line under it, the tools as framed squares, the dark block that sends with the page's word; Messages (and its Broadcast form) and an agent's Chat tab take it; the framed field, the round-cornered tools and the box's frame go (a unification: Jouni's decision "Typing box").
 *   v2.71.0 -- 2026-09-26 -- A message is the chat's turn (components/Turn.js classes): your words bold on the sun, the other side's beside the pale coral spine, the name above the words, the time and the read marks under them with Copy and Listen, the other six actions behind one ⋯ (CardMenu inline); an agent's options are the chat's choices. The frame, the picture beside the other side, the action pill and the Chat tab's bubbles, pairing lines and small reader go; a suggested reply waiting for approval keeps its dashed box (a unification: Jouni's decision "Message").
 *   v2.70.0 -- 2026-09-26 -- A list of conversations is the chat's list (ThreadList's rows, .poster-thread): the name in bold, one quiet line with the time and the last message, the open one on the sun; a person's heading is its person tone (ThreadPerson) with the counts named; the row's archive square is the small icon button in the delete's place. Messages' rows, a broadcast's results list and an agent's Chat threads take it; their own row looks go (a unification: Jouni's decision "Conversation list").
 *   v2.69.0 -- 2026-09-26 -- The rules of the removed modules go (shared-board.js, the activity, capabilities and messages subtabs, renderRunModeBadge, renderDeliveryIndicator), 85 rules; and .pf-agd-log-entry, which never applied because a comment above it closed early (Jouni: "saat poistaa jos ne on oikeasti käyttämättömiä"). Nothing on screen changes.
 *   v2.68.0 -- 2026-09-26 -- Dead look removed: .pf-agd-search-input (nothing writes it), a move.
 *   v2.67.0 -- 2026-09-26 -- A row dragged to a new order and its grip are the library's Drag grip (css/components/drag-grip.css), moved unchanged (a move).
 *   v2.66.0 -- 2026-09-26 -- Policy issues above zero are the Facts value's warn tone (.facts-v--warn), a meaning kept as a tone of the library part.
 *   v2.65.0 -- 2026-09-26 -- What the Services tab is for is the Hint (.poster-hint); its own grey box goes (a unification: the look most tabs use).
 *   v2.64.0 -- 2026-09-26 -- The Chat tab's command palette is a folded row over the Listing (the command the inline code), no commands the quiet sentence, and Show more the action link's more tone (a unification: the look most tabs use).
 *   v2.63.0 -- 2026-09-26 -- An agent's purpose under its label is the Facts' value, its directives the thing row as it is (a unification: the look most tabs use).
 *   v2.62.0 -- 2026-09-26 -- The shared tags, memory areas, knowledge packages and skills are the Listing, a stored key the folded row (og-fold--event), a unification: the look most tabs use.
 *   v2.61.0 -- 2026-09-26 -- A crew member's and a task's place (agents[0], tasks[0]), a tool's id and a tag's memory prefix are the inline code (.code-inline), a unification: the look most tabs use for an identifier.
 *   v2.60.0 -- 2026-09-26 -- Running now is the Group heading over the Listing (cut mark-name-desc-doors), a unification: Jouni's decision Group heading and the look most tabs use for a list.
 *   v2.59.0 -- 2026-09-25 -- The GAII control's rules (pf-agd-gaii*) move to css/components/gaii-chip.css (UI consolidation phase 5, a move).
 *   v2.58.0 -- 2026-09-25 -- A row of tabs draws no rule of its own under it (the crew's Form and JSON, the activity filters), a unification: Jouni's decision Tabs and filters.
 *   v2.57.0 -- 2026-09-25 -- A field's or a directive's label is the Row label (.poster-label), a unification: Jouni's decision Row label.
 *   v2.56.0 -- 2026-09-25 -- A task memory entry's row, which opens its value in place, is the folded row (og-fold og-fold--event, the arrow for the caret), a unification: the look most tabs use.
 *   v2.55.0 -- 2026-09-25 -- A note that asks you to look or act is the Attention note (.poster-aside) in its own words; a working agent's line of figures is the Hint, a unification: Jouni's decision Attention note.
 *   v2.54.0 -- 2026-09-25 -- A list of things, one per row, is the Listing (css/components/listing.css), a unification: the look most tabs use.
 *   v2.53.0 -- 2026-09-25 -- The pictures a stored value points at are the image thumbnails (css/components/image-deliverable.css), a unification: the look most tabs use.
 *   v2.52.0 -- 2026-09-25 -- How far an agent got through Hello Integration is the meter (poster.css .poster-box--meter), a unification: the look most tabs use.
 *   v2.51.0 -- 2026-09-25 -- A dot that says a state (active, inactive, running, something unseen) is the status dot (css/components/status-dot.css), a unification: the look most tabs use.
 *   v2.50.0 -- 2026-09-25 -- The governance figures are the Facts (css/components/facts.css); a policy-issue count above zero keeps its warn colour as a tone, a unification: the look most tabs use.
 *   v2.49.0 -- 2026-09-25 -- Every row label is the Row label (.poster-label), a unification: Jouni's decision Row label.
 *   v2.48.0 -- 2026-09-25 -- Every mark button is the icon button (.poster-icon, its small cut), a unification: Jouni's decision Icon button.
 *   v2.47.0 -- 2026-09-25 -- Every small number is the Count (.poster-count tally, waiting at the limit), a unification: Jouni's decision Count.
 *   v2.46.0 -- 2026-09-25 -- Every time a thing happened or runs out is the Timestamp (.poster-time); a place keeps only its layout (a unification: Jouni's decision Timestamp).
 *   v2.45.0 -- 2026-09-25 -- Every tag is the Tag (.poster-chip), a unification: Jouni's decision Tag.
 *   v2.44.0 -- 2026-09-25 -- Every word that says a state is the Status (.poster-status fine, attention, danger), a unification: Jouni's decision Status.
 *   v2.43.0 -- 2026-09-25 -- A line that says there is nothing (none, and the more under the running tasks) is the quiet sentence (.poster-quiet); a place keeps only its margin (a unification: Jouni's decision Empty line).
 *   v2.42.0 -- 2026-09-25 -- A grey line that explains is the Hint (poster-hint, css/components/hint.css); a place keeps only its margin (a unification: the look most tabs use).
 *   v2.41.0 -- 2026-09-25 -- The structured JSON view's rules (pf-agd-json-*) move unchanged to css/components/json-view.css, the sheet of components/JsonView.js (UI consolidation phase 5, a move).
 *   v2.40.0 -- 2026-09-25 -- The ID card's figures and the custom metrics are the Facts (css/components/facts.css), a unification: the look most tabs use. The rules of pf-agd-idcard-stats, its stat, label and value, and of pf-agd-quality-custom and its row, key and value go; a count that needs a look keeps its tone. The pf-agd-info-row rule goes: no markup writes it.
 *   v2.39.0 -- 2026-09-25 -- Every drop-down is the Select field (.select-field, css/components/select-field.css); a place keeps only its width and margin (a unification: the look most tabs use).
 *   v2.39.0 -- 2026-09-25 -- Every many-line field is the Text area (.og-textarea); a place keeps only its size and margin (a unification: the look most tabs use).
 *   v2.39.0 -- 2026-09-25 -- Every one-line field is the Text field (.og-input); a place keeps only its layout (a unification: the look most tabs use).
 *   v2.38.0 -- 2026-09-25 -- Every many-line field is the Text area (.og-textarea); a place keeps only its size and margin (a unification: the look most tabs use).
 *   v2.38.0 -- 2026-09-25 -- Every one-line field is the Text field (.og-input); a place keeps only its layout (a unification: the look most tabs use).
 *   v2.37.0 -- 2026-09-25 -- Every one-line field is the Text field (.og-input); a place keeps only its layout (a unification: the look most tabs use).
 *   v2.36.0 -- 2026-09-25 -- The stat card and stat grid rules go: a row of figures is the figure strip (css/components/figure-strip.css); a place's gap stays here (UI consolidation phase 5, a unification).
 *   v2.35.0 -- 2026-09-25 -- A note's own frame, ground and corners go: it is the Attention note (.poster-aside, css/poster.css); its place (margin) stays here (Jouni's decision "Attention note", a unification).
 *   v2.33.0 -- 2026-09-25 -- The times' look is .poster-time; their rules here keep only their place (Jouni's decision "Timestamp", a unification).
 *   v2.32.0 -- 2026-09-25 -- The headings over lists wear .poster-day-title; their rules here keep only their place (Jouni's decision "Group heading", a unification).
 *   v2.31.0 -- 2026-09-25 -- .pf-agd-section-title wears .poster-label and leaves the grey section-title rule (Jouni's decision "Row label", a unification).
 *   v1.29.0 -- 2026-09-25 -- The quiet ways on are the library's action link (Jouni's decision "Action
 *     link"): the rules that restyled og-door, the classic buttons and the text buttons here go; a
 *     place's layout value moves to the new class.
 *   2026-09-25 -- The empty lines (.agd-empty, .pf-agd-empty) are the quiet sentence (.poster-quiet, Jouni's decision "Empty line"): their look goes, their place stays.
 *   2026-09-25 -- The crew view switch, the message threads, the range buttons, the board legend and the activity filters lose their rules: the tab (.poster-tab) now draws them (a unification: Jouni's decision "Tabs and filters"); the run mode buttons lose theirs the same way.
 *   2026-09-14 -- The rules for the agents page's and the card masthead's old markup leave; the poster sheets carry the new ones.
 *   2026-09-14 -- .pf-agd-solo-toast leaves; the pop-out window uses the shared .toast in theme.css.
 *   2026-09-13 -- V2y: shared B1 class owns the agent setup panel headline.
 *   2026-09-13 -- V2w: compose remaining profile section top rules from poster.css.
 *   2026-09-13 -- V2u: compose the tab strip top rule from poster.css.
 *   2026-09-13 -- V2t: compose card and section top rules from poster.css.
 *   v1.28.0 -- 2026-09-13 -- Compose top rules from poster.css; move board colours into CSS.
 *   v1.27.0 -- 2026-09-09 -- .pf-agd-crew-llm: which model an agent thinks with, on the Crew tab.
 *   v1.26.0 -- 2026-09-08 -- The new-agent panel (.pf-agd-new*): a two-column form that folds to
 *     one on a phone, the attach strip, and the waiting-proposal rows.
 *   v1.25.0 -- 2026-09-06 -- The fleet search field over the board (.pf-agd-fleet-search) and the
 *     GAII as a press-to-copy control on the agent rows (.pf-agd-gaii). The GAII ellipsizes rather
 *     than wraps: it is one unbreakable token, and a wrap costs the row a whole second line.
 *   v1.24.0 -- 2026-08-31 -- The run-mode badge (outlined, so it does not compete with the filled
 *     mode badge beside it) and the basic-agents panel.
 *   v1.23.0 -- 2026-08-29 -- Every monospace rule reads var(--font-mono) instead of a hand-typed stack (14 of them),
 *     so the mono face changes in theme.css alone.
 *   v1.22.1 -- 2026-08-29 -- .pf-agd-board-card-name reads --agd-state (set on the card) for its colour;
 *     the inline style that carried it is gone, so a skin can override it.
 *   v1.22.0 -- 2026-08-26 -- The board mini-card's ID plate opens below the card instead of over
 *     it; covering the card hid what the pointer was about to click.
 *   v1.21.0 -- 2026-08-13 -- The card-footer host link truncates instead of wrapping: a hostname is
 *     one unbreakable token, and wrapping it took the footer row from 31px to 54px at 390px.
 *   v1.20.0 -- 2026-07-17 -- Generalize the card scheme: .pf-agd-card (standalone or
 *     grid child) + .pf-agd-card-grid/--full replace the integration-only
 *     .pf-agd-prod-grid; quality section titles drop the stacked-layout margin-top.
 *   v1.19.0 -- 2026-07-17 -- Integration production view: .pf-agd-prod-grid two-column
 *     card grid (+ --full spans); .pf-agd-info-row becomes a fixed 150px-label grid so
 *     values and status dots align in one column.
 *   v1.18.0 -- 2026-07-17 -- Style unification round: pf-agd-section-label matches
 *     pf-agd-section-title (0.8rem); governance grid items stack label-over-value;
 *     "Next:" inside the zone-2 banner title is no longer uppercased; the "+ Add tag"
 *     chip is neutral (dim) until hover.
 *   v1.17.0 -- 2026-07-12 -- Add agent ID-card styles (.pf-agd-idcard*) — a hover/focus-revealed
 *     identity plate over each Shared Board mini-card (labelled GAII, issued date, last seen,
 *     task/message tallies, trust + morsels, issuer node). Absolutely positioned so reveal
 *     causes no grid layout shift; board card gains position:relative + focus-visible ring.
 *   v1.16.0 -- 2026-07-07 -- Add inline image-preview styles for stored memory values that
 *     reference image URLs (.pf-agd-memory-imgs, -img-link, -img) — e.g. crews.<agent>.images.*.
 *   v1.15.0 -- 2026-07-06 -- .pf-agd-solo-toast gets the shared toast max-width min(92vw, 40rem)
 *     + centered wrapping so long messages stay readable, incl. mobile.
 *   v1.14.0 -- 2026-07-03 -- Add Contracts sub-tab styles (.pf-agd-contracts, .agc-caps, .agc-list,
 *     .agc-row, .agc-where, .agc-org, .agc-since) — agent-side contract-engagement visibility.
 *   v1.13.0 -- 2026-06-24 -- Secretary P5 (S-A): add .pf-agd-badge--specialist (specialist agent type badge).
 *   v1.12.0 -- 2026-06-22 -- Add .pf-agd-capwrap rule so the capabilities summary
 *     ("N tools · N skills · N langs") gets the card content inset (1rem) instead of
 *     sitting flush against the edge, plus a small top gap from the tag/badge strip.
 *   v1.11.0 -- 2026-06-21 -- Add has-unseen DOT badge modifier (.pf-agd-*-badge--dot): a small
 *     round indicator replacing the old numeric change-count badge.
 *   v1.10.0 -- 2026-06-03 -- Add fleet "running now" panel styles (.pf-agd-active,
 *     -head, -empty, -list, -row, -dot, -agent, -title, -time) for the cross-agent
 *     active-tasks list between the board and the agent list. All colors tokenized
 *     (var(--success) running dot/hover, var(--card-bg)/-alt, --border, --text-dim/-muted).
 *   v1.9.0 -- 2026-06-02 -- Component unification (#24 search bar): tokenize the
 *     hardcoded hex fallbacks in .pf-agd-search-input (var(--border, #E5E7EB) ->
 *     var(--border); var(--card-bg, #FFFFFF) -> var(--card); var(--text, #1A1A2E)
 *     -> var(--text)) so the task search input flips in dark mode. Markup left in
 *     place (view-scoped task filter state; not migrated to canonical SearchBar).
 *   v1.8.0 -- 2026-06-02 -- Component unification (#21 key/value rows): tokenize the
 *     hardcoded hex fallbacks in .pf-agd-info-label/.pf-agd-info-value
 *     (var(--text-dim, #6B7280) -> var(--text-dim); var(--text, #1A1A2E) ->
 *     var(--text)) so the agent-detail info rows flip in dark mode. Markup left
 *     in place (borderless look differs from canonical .kv-row).
 *   v1.7.0 -- 2026-06-02 -- Component unification (#6 stat cards): remove .agd-stat- and
 *     .pf-agd-stat- prefixed rules; agent activity/quality stats use canonical .stat-card
 *     family. (NB: the original entry ended in "star-slash" which TERMINATED this comment
 *     block early and made the parser eat the next rule — keep raw selector globs out of
 *     comments.)
 *   v1.0.0 -- 2026-05-21 -- Initial creation for Agent Dashboard Phase 1
 *   v1.1.0 -- 2026-05-22 -- Add capability badge styles for Capabilities sub-tab
 *   v1.2.0 -- 2026-05-22 -- Add Activity sub-tab styles (stats cards, chart, jobs, event log)
 *   v1.3.0 -- 2026-05-22 -- Add Services and Messages sub-tab styles
 *   v1.6.0 -- 2026-05-22 -- Add Task Creation Builder split-panel styles
 *   v1.5.0 -- 2026-05-22 -- Add task timestamp and todo completion time styles
 *   v2.0.0 -- 2026-05-24 -- Add styles for audit fix components (status dots, config actions, URL forms, help text)
 *   v2.1.0 -- 2026-05-24 -- Add scope footer and config upload styles for F8-F16 audit fixes
 *   v2.1.0 -- 2026-05-24 -- Add webhook edit form, role badge, strengths/gaps styles for Integration tab
 *   v1.4.0 -- 2026-05-22 -- Add Task TODO list, progress, environment badges, Start button styles
 *   v2.2.0 -- 2026-05-24 -- Fix C6: remove GAII CSS, M2: compact connect content
 *   v2.3.0 -- 2026-05-24 -- Add F18 violation badge, C5 directives textarea styles
 *   v2.4.0 -- 2026-05-24 -- Add header-row flex layout for title + connect button alignment
 *   v2.5.0 -- 2026-05-31 -- Add stored-memory-key inline editor (textarea), memory-detail wrapper, in-row edit/delete action rows, and danger-tinted ghost action styles for the Data Access tab
 *   v2.6.0 -- 2026-05-31 -- Add stored-key create form layout (pf-agd-keyadd-form, vertical stack)
 *   v2.7.0 -- 2026-05-31 -- Add stored-key sort controls (pf-agd-keys-controls/sort-*) and per-key created/updated meta (pf-agd-key-meta)
 *   v2.8.0 -- 2026-05-31 -- Add pop-out button (pf-agd-popout-btn), drag-to-reorder rows (pf-agd-dnd-*), and solo pop-out window layout (pf-agd-solo*)
 *   v2.9.0 -- 2026-05-31 -- Collapsed bar two-row layout (pf-agd-collapsed-main + pf-agd-collapsed-meta divider) to stop status overflow; move drag grip into the left margin so the card border stays flush
 *   v2.10.0 -- 2026-05-31 -- Extend the drag-row drop target left over the grip gutter (padding-left + negative margin-left) so dropping on/near the handle registers; card border stays aligned
 *   v2.11.0 -- 2026-05-31 -- Add Quality tab styles (per-context review rows, duration chips, custom-metric rows)
 *   v2.12.0 -- 2026-05-31 -- Add deliverable rating control styles (star picker, current-rating row, rate modal fields)
 *   v2.13.0 -- 2026-05-31 -- Add Quality-tab "Rate deliverables" pending-list row styles
 *   v2.14.0 -- 2026-06-01 -- Add Tasks-tab max-concurrent-tasks config row styles
 *   v2.15.0 -- 2026-06-01 -- Blur-title eye is now hover-only (revealed on task-row hover/focus) to de-clutter the list; blurred rows keep their eye visible
 *   v2.16.0 -- 2026-06-01 -- Add Tasks-tab triage UI styles (bucket segments + counts, search bar, time chips, per-task triage buttons)
 *   v2.17.0 -- 2026-06-01 -- Add per-task memory entries list styles (expanded task)
 *   v2.18.0 -- 2026-06-01 -- Per-task memory entries are collapsible with pretty-printed JSON bodies
 *   v2.19.0 -- 2026-06-01 -- Structured JSON view for memory values (key/value rows, indented nested blocks, type colours)
 *   v2.20.0 -- 2026-06-01 -- Tab bar wraps (flex-wrap) instead of horizontal scroll so all 10 tabs stay visible on two rows
 *   v2.21.0 -- 2026-06-02 -- Unseen-change badges: collapsed-card mini-badge (pf-agd-change-badge) + per-tab number badges (pf-agd-tab-badge)
 *   v2.22.0 -- 2026-06-02 -- Add divider line above the tab bar (border-top + spacing) so tabs don't blend with the status row above
 *   v2.23.0 -- 2026-06-02 -- Compact .md-body styles for agent message bubbles (Markdown-rendered outbound replies)
 *   v2.24.0 -- 2026-06-02 -- Compact .md-body styles for Markdown-rendered non-JSON task memory values (pf-agd-task-memory-md)
 *   v2.25.0 -- 2026-06-03 -- Compact .md-body styles for Markdown-rendered task descriptions (pf-agd-task-desc) so long agent-authored prompts render with structure
 *   v2.11.0 -- 2026-05-31 -- Widen the solo pop-out window (and pf-agd-solo max-width) so the agent card matches the list-view width and the full tab bar fits
 *   v2.12.0 -- 2026-05-31 -- Add completed-task deliverable styles (pf-agd-deliverable*) linking a task to its agent-memory output key
 *   v2.13.0 -- 2026-05-31 -- Add per-task blur-title toggle styles (pf-agd-blur-toggle, pf-agd-task-title--blurred) for hiding sensitive titles in screen recordings
 *   v2.26.0 -- 2026-06-09 -- Add custom agent-group styles (pf-agd-cgroup-bar/header/toggle/name/empty) for the drag-to-assign "Custom groups" list mode
 *   v2.27.0 -- 2026-06-09 -- Add editable tag-strip styles (pf-agd-tag-chip--editable, pf-agd-tag-chip-remove, pf-agd-tag-add-btn/input) for inline tag add/remove in the expanded card header
 *   v2.28.0 -- 2026-06-10 -- Detail-tab stat cards: content-sized + centered as a group
 *     (labels like "Onnistumisprosentti" no longer overflow); header-row gains bottom
 *     margin so the connect button isn't flush against the description text.
 *   v2.29.0 -- 2026-08-08 -- .pf-agd-idcard-copy deleted — the GAII copy button is btn-ghost btn-sm btn-copy-inline.
 *   v2.30.0 -- 2026-09-25 -- Dead rules removed: selectors whose classes no file writes (UI consolidation phase 5, a move; the browser's reading proves only those went).
 *   v2.34.0 -- 2026-09-25 -- Every small number is the Count (.poster-count waiting or tally), a unification: Jouni's decision Count.
 *   v2.33.0 -- 2026-09-25 -- Every word that says a state is the Status (.poster-status fine, attention, danger, off), a unification: Jouni's decision Status.
 *   v2.32.0 -- 2026-09-25 -- Every tag is the Tag (.poster-chip and its tones, .poster-chips for a row), a unification: Jouni's decision Tag.
 *   v2.31.0 -- 2026-09-25 -- The hint rules go: the hints are the Hint (css/components/hint.css); the layout declarations of their places stay, on .poster-hint (UI consolidation phase 5, a unification).
 *   v2.32.0 -- 2026-09-25 -- The note rules go: the grey help notes are the Hint (css/components/hint.css); the layout declarations of their places stay, on .poster-hint (UI consolidation phase 5, a unification).
 */

/* Resource / memory area lists */

/* Group picker popup (memory tab visibility cycling) */

/* ── Capabilities sub-tab ── */

/* Badge list container */

/* Individual capability badge */

/* Type badges (MCP / skill / tool) */

/* Verified / self-reported badges */

/* Domain badge variant */

/* Language tags row */

/* Action queue support list */

/* ── Activity sub-tab ── */

/* The event log is the Timeline (components/Timeline.js); its box scrolls. */
.pf .pf-agd-event-log-scroll { max-height: 300px; overflow-y: auto; margin-bottom: 4px; }

/* Scheduled jobs badges */

/* Time range selector */

/* ── Services sub-tab ── */

/* A published service is the List's row now (agents-services-subtab.js). */

/* ── Task Creation Builder (split-panel) ── */

/* Live character counter shown under the task-creation description field. */

/* ══════════════════════════════════════════════════════════════
   Agent Detail Tab-View (Plan 4)
   All new classes use pf-agd- prefix (profile agent detail)
   ══════════════════════════════════════════════════════════════ */

/* ── Shared Agent Board ── */

/* Fleet "running now" is the List's Group over its rows now (groups-render.js ActiveTasksPanel). */

/* ── Agent ID card (hover/focus-revealed identity plate under a board mini-card) ──
   The default face (name + one figure) is untouched; the ID card is absolutely
   positioned so revealing it causes NO layout shift in the grid. It hangs BELOW
   the mini-card rather than over it: covering the card hid the very thing the
   pointer was about to click. The 1px overlap keeps the card and the plate one
   continuous hover target, so there is no gap where :hover drops. */
.pf .pf-agd-idcard {
  position: absolute;
  top: calc(100% - 1px);
  left: -3px;  /* the card's 3px state stripe: the plate's outer edges line up with the card's */
  right: -1px;
  z-index: 30;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 0.7rem 0.8rem;
  background: var(--card, #FFFFFF);
  border: 1px solid var(--agd-state, var(--border, #E5E7EB));
  border-left: 3px solid var(--agd-state, var(--text-muted, #9CA3AF));
  border-radius: var(--radius, 8px);
  box-shadow: var(--shadow-lg, 0 12px 32px rgba(0, 0, 0, 0.22));
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px) scale(0.98);
  transform-origin: top center;
  pointer-events: none;
  transition: opacity 0.16s ease, transform 0.16s ease, visibility 0.16s;
}

/* Eyebrow row: "AI Identity" + state dot, mode badge on the right */

/* Identity head: robot avatar + display name + teaching hint */

/* GAII block — the teaching centrepiece: labelled + full monospace value + copy */

/* The card's figures are the Facts (css/components/facts.css); a count that needs a look keeps its tone. */

/* Footer: issuer node + call to action */

/* Touch / coarse-pointer devices have no hover — keep the ID card out of the way
   there (the card still opens the full detail on tap). */
@media (hover: none) {
  .pf .pf-agd-idcard { display: none; }
}

/* ── Collapsed Agent Card ── */

.pf .pf-agd-card {
  margin-bottom: 0.5rem;
}
/* The GAII control is its own part now: css/components/gaii-chip.css. */
/* ── Drag-to-reorder rows (ungrouped, unfiltered agent list) ── */
/* A row dragged to a new order, and its grip: the library's Drag grip (css/components/drag-grip.css). */

/* The solo (pop-out) window is the SoloWindow component: css/components/solo-window.css. */

/* ── Badges (platform, readiness, federation) ── */

/* Mode badge -- distinguishes how the agent is used (added 2026-05-29) */

/* Run mode: how the agent is RUN, beside the mode badge that says what it is FOR. Outlined rather
   than filled, so a row of agents does not read as two competing filled chips per line. */

/* ── Which model an agent thinks with: the Box of crew-llm-picker.js now. ── */

/* Tag chip strip on expanded card */
.pf .pf-agd-tag-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  padding: 0.5rem 1rem 0;
}

/* The opened agent's tags are the TagInput, its custom groups the List's Group, its notices the
   Note's aside with the Meter and the Mark statuses, its tab panel the OpenCard's (agent-card.js,
   groups-render.js; page group G1a). */

/* ── Unseen-change marks: the status dot (css/components/status-dot.css), grey, or red for unseen
   FAILED tasks, so a real alarm never drowns in routine changes. ── */

/* ── README tab (rendered from agents.<name>.readme markdown) ── */
.pf .pf-agd-readme {
  /* Comfortable reading width that still fits ~80-col ASCII art in code fences. */
  max-width: 760px;
  max-height: 60vh;
  overflow: auto;
}
/* The README is the Markdown reader's small cut (Markdown `small`, css/components/markdown.css). */

/* ── Integration tab: Production sections ── */

/* Card scheme shared by every agent-detail tab: content groups become bordered
   cards (.pf-agd-card) and a tab that pairs short groups side by side wraps
   them in .pf-agd-card-grid (responsive two-column; --full spans both). This
   replaces the "one long ragged column with a dead right half" layout. */
.pf .pf-agd-card {
  border-radius: 10px;
  padding: 0.85rem 1rem;
  background: var(--card, #FFFFFF);
  min-width: 0;
}
.pf .pf-agd-card + .pf-agd-card { margin-top: 0.85rem; }
.pf .pf-agd-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 0.85rem;
  align-items: stretch;
}
.pf .pf-agd-card-grid > .pf-agd-card {
  margin-top: 0;
  margin-bottom: 0;
}
.pf .pf-agd-card-grid > .pf-agd-card--full {
  grid-column: 1 / -1;
}

/* ── Data Access tab: the tab draws only components now (views/profile/agents/tab-data-access.js). ── */

/* Effective scope summary (kept for the design lab's samples, which draw it) */
.pf .pf-agd-scope-summary {
  padding: 0.625rem 0.875rem;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--text-dim, #6B7280);
  line-height: 1.5;
  margin: 1rem 0 0;
}

/* Scope summary footer note: the Hint (css/components/hint.css); its place only. */
.pf .pf-agd-scope-footer { margin-top: 0.5rem; }

/* ── Agent Config tab: the tab draws only components now (tab-agent-config.js); the file list's
   rules stay for the design lab's samples, which draw it. ── */
.pf .pf-agd-config-list { margin-bottom: 1rem; }
.pf .pf-agd-config-list > .listing-row > div:not(.listing-open) { cursor: pointer; }

/* ── Services tab ── */

/* ── Audit fix additions ── */

/* Status dots (active/inactive): the status dot (css/components/status-dot.css); their place only. */
.pf .pf-agd-status-dot { margin-right: 0.35rem; }


/* ── Quality tab: the tab draws only components now (tab-quality.js); these review-row rules stay
   for the design lab's samples, which draw them. ── */
.pf .pf-agd-quality-review-row {
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 8px;
  padding: 0.6rem 0.75rem;
  background: var(--card-bg, #FFFFFF);
}
.pf .pf-agd-quality-review-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.pf .pf-agd-quality-ctx {
  font-weight: 600;
  color: var(--text, #1A1A2E);
  min-width: 7rem;
}
.pf .pf-agd-quality-avg {
  font-weight: 600;
  color: var(--text, #1A1A2E);
}
.pf .pf-agd-quality-n {
  font-size: 0.75rem;
  color: var(--text-muted, #9CA3AF);
}
.pf .pf-agd-quality-overall {
  margin-top: 0.4rem;
  font-size: 0.85rem;
  color: var(--text-dim, #6B7280);
}
.pf .pf-agd-quality-overall {
  letter-spacing: 0.5px;
}

/* ── Deliverable rating (Tasks tab) ── */

/* The rate dialog is Stars, Select, Check and TextArea in a column of Fields (rate-modal.js). */

/* Quality tab "Rate deliverables" (kept for the design lab's sample). A rated row: the Rating stars' shown tone (css/components/rating-stars.css) and the context word. */
.pf .pf-agd-quality-pending-rated {
  font-size: 0.8rem;
  white-space: nowrap;
}

/* A task's memory entries are FoldRows with their value in a scrolling copy box (task-item-parts.js),
   and how an agent runs is the Choice under the card's line (agent-card-run-mode.js). */

/* Status is data. Its colour lives here, including the quiet fallback for a future state. */
