/*
IC SHIP PASS — generated by icpass.py from the map. edit the CODE; rerun to refresh this.

══════════════════════════════════════════════════════════════════════
 PAGE 0 — TABLE OF CONTENTS  (goldfish pointers)
 jump by SEARCHING the anchor phrase — line numbers drift, names don't.
══════════════════════════════════════════════════════════════════════
  the SUGGESTOR strip (Sum TNG-16) — sits ....... search: "the SUGGESTOR strip"
  TABS (Sum 2026-07-11) — ride in the HEAD so ... search: "TABS (Sum 2026-07-11)"
  head chrome — MATCH the bot bar so ⚙️ gear .... search: "head chrome — MATCH the"
══════════════════════════════════════════════════════════════════════

 FOR AI
 ───────
   **OWNS** — the visual styling and layout of the `.p-cli` terminal card: the phosphor-green
   **color scheme, the tab system that survives collapse, the suggestor strip, the input line,
   **output formatting (errors, warnings, hints, app-lane text), the head chrome (gear, plus,
   **monkey, commands button), and the green GO button. Any HTML element with class `.cli-*` or
   **`.p-cli` depends on these rules existing.
   
   **TOUCH HERE** —
   - change phosphor-green color → `.cli-scroll` L5, `.cli-sug-chip` L15, `.cli-tab-name` L30,
   - `.cli-in` L47 (all use `#7CFC9A`)
   - change tab height or font → `.cli-tab` L28 uses `var(--tab-h)` and `var(--fs-tab)`
   - change suggestor appearance → `.cli-sug` L9 (display, padding, border) or `.cli-sug-chip`
   - L14–18 (colors, hover, focus)
   - change input line styling → `.cli-line` L46 (padding, border, background)
   - change output text colors (error/warn/hint/app) → L38–45 (`.cli-ps`, `.cli-hint`,
   - `.cli-deny`, `.cli-app`, `.cli-err`, `.cli-warn`, `.cli-busy`, `.cli-dry`)
   - change head chrome alignment → `.p-cli .card-head` L52 (padding) and `.p-cli .card-ctrls`
   - L53 (gap) — these must match `.ab-head`
   - change green GO button image or size → `.p-cli .cli-go` L93–98 uses `var(--run-btn-w)` and
   - `var(--run-btn-h)`, background images at L95 and L97
   - change collapsed layout → `.p-cli.collapsed` rules L34–35, L101–102
   
   **TRAPS** —
   - The tab system uses `var(--tab-h)` and `var(--fs-tab)` (L28, L30, L12, L16, L21): these
   - variables must be defined in the parent scope or tabs will break.
   - The green GO button's `.on` state (L97) swaps the background image; if the image path
   - changes, both L95 and L97 must be updated together.
   - Collapsed mode (L34–35) hides all `.card-ctrls` children except `.cli-tabs` using
   - `!important`; adding new controls to the head requires updating this selector.
   - The suggestor strip (L9) has `display: none` by default; it only shows when JavaScript sets
   - it. Changing its structure will break the chip layout (L13–22).
   - Head padding and gap (L52–53) are explicitly noted as matching `.ab-head` for visual
   - alignment when stacked; changing them without updating `.ab-head` will misalign the gear,
   - plus, and monkey icons.
   - The collapsed green button uses `margin-left: auto` (L101) to push right; if the button's
   - flex properties change, this auto-margin may not work as intended.
   
   **DO NOT** —
   - Rename any `.cli-*` class without checking the HTML template and JavaScript that reference
   - them.
   - Change the background image paths (L95, L97) without verifying the files exist at
   - `../../shell/bar/btn-green-off.png` and `btn-green-on.png`.
   - Move or restructure the tab system (L24–35) without understanding that tabs must survive
   - when the card collapses.
   - Add new output text classes (like `.cli-err`, `.cli-warn`) without coordinating with the
   - JavaScript that applies them to output lines.
   - Modify the suggestor chip focus state (L18, L20) without testing keyboard navigation, as it
   - inverts colors for accessibility.
   - Change the command menu (L69–75) styling without checking that it floats at `z-index: 9999`
   - and must be readable over all content.
   - Move gear, plus, or monkey button styling to a different file; they are tightly coupled to
   - the head chrome alignment rules here (L50–67).
   
   
   
   
   
   ---

END IC SHIP PASS
*/

/* cli-card.css — 🖥️ the clioz terminal card (green phosphor, matches coder) */
.p-cli > .card-body { padding: 0; height: 360px; overflow: hidden; }
.cli-wrap { display: flex; flex-direction: column; height: 100%; background: #0b1410; font-family: 'Courier New', monospace; }
.cli-buffers { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }   /* (Sum 2026-07-11) holds one .cli-scroll per tab */
.cli-scroll { flex: 1 1 auto; overflow: auto; padding: 10px 12px; color: #7CFC9A; font-size: var(--cli-fs, var(--fs-ui)); line-height: 1.5; }

/* ── the SUGGESTOR strip (Sum TNG-16) — sits just above the input; reads the line, shows the next tokens.
   full-size text (--fs-tab), phosphor-green chips · amber macro chips · the focused chip inverts (keyboard nav) ── */
.cli-sug { display: none; align-items: center; gap: 10px; padding: 7px 12px; flex: 0 0 auto;
  border-top: 1px solid rgba(124,252,154,.2); background: rgba(124,252,154,.05); overflow-x: auto; scrollbar-width: none; }
.cli-sug::-webkit-scrollbar { display: none; }
.cli-sug-tag { flex: 0 0 auto; color: #6fae86; font: 700 var(--fs-tab, 16px)/1 'Courier New', monospace; letter-spacing: .5px; }
.cli-sug-row { display: flex; align-items: center; gap: 7px; flex-wrap: nowrap; }
.cli-sug-chip { flex: 0 0 auto; padding: 7px 13px; border-radius: 6px; cursor: pointer; white-space: nowrap;
  background: rgba(124,252,154,.1); border: 1px solid rgba(124,252,154,.3); color: #7CFC9A;
  font: 700 var(--fs-tab, 16px)/1 'Courier New', monospace; }
.cli-sug-chip:hover { background: rgba(124,252,154,.22); }
.cli-sug-chip.on, .cli-sug-chip:focus { outline: none; background: #7CFC9A; color: #04220f; border-color: #eafff0; box-shadow: 0 0 0 2px rgba(124,252,154,.45); }
.cli-sug-mac { background: rgba(232,184,75,.12); border-color: rgba(232,184,75,.4); color: #e8b84b; }
.cli-sug-mac.on, .cli-sug-mac:focus { background: #e8b84b; color: #241a02; border-color: #fff; }
.cli-sug-none { color: var(--text-dim, #9a97a8); font: 500 var(--fs-tab, 16px)/1 'Courier New', monospace; }
.cli-sug-toggle.on { background: rgba(124,252,154,.2); border-color: #7CFC9A; color: #eafff0; }

/* ── TABS (Sum 2026-07-11) — ride in the HEAD so they survive collapse; ＋ makes one, × kills+closes ── */
.cli-tabs { display: flex; align-items: center; gap: 4px; overflow-x: auto; scrollbar-width: none; min-width: 0; flex: 1 1 auto; }
.cli-tabs::-webkit-scrollbar { display: none; }
/* (Sum 2026-07-11) CLI tabs match Monaco — fill the bar Y (--tab-h) + bigger font (--fs-tab) */
.cli-tab { display: inline-flex; align-items: center; gap: 5px; flex-shrink: 0; max-width: 160px; height: var(--tab-h); padding: 0 6px 0 11px; border-radius: 5px; background: rgba(124,252,154,.08); border: 1px solid rgba(124,252,154,.22); cursor: pointer; }
.cli-tab.active { background: rgba(124,252,154,.18); border-color: #7CFC9A; }
.cli-tab-name { color: #7CFC9A; font: 700 var(--fs-tab)/1 'Courier New', monospace; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cli-tab-x { width: 20px; height: 20px; flex-shrink: 0; padding: 0; border: none; background: transparent; color: #7CFC9A; font-size: 17px; line-height: 1; cursor: pointer; border-radius: 3px; opacity: .55; }
.cli-tab-x:hover { opacity: 1; background: rgba(255,90,90,.35); color: #ffb0b0; }
/* collapsed CLI = tabs + start/stop only (hide gear · plus · monkey · commands) — like monaco */
.p-cli.collapsed .card-ctrls { display: flex !important; }
.p-cli.collapsed .card-ctrls > *:not(.cli-tabs) { display: none !important; }
.cli-echo { color: #d8ffe6; margin-top: 7px; }
.cli-out { white-space: pre-wrap; word-break: break-word; }
.cli-ps { color: #4ade80; font-weight: 700; }
.cli-hint { color: #4a7a5a; font-style: italic; }
.cli-deny { color: #f08a8a; font-weight: 700; }
.cli-app { color: #b6a6ff; }   /* the app-CLI lane (ozprep …) — lavender, so you see it ran in-page, not the shell */
.cli-err { color: #f0a86a; }
.cli-warn { color: #e0c05a; }
.cli-busy { color: #4a7a5a; }
.cli-dry { color: #6a9a7a; font-style: italic; }
.cli-line { display: flex; align-items: center; gap: 6px; padding: 8px 12px; border-top: 1px solid #1a2a20; background: #0d1712; }
.cli-in { flex: 1 1 auto; background: transparent; border: 0; outline: none; color: #7CFC9A; font-family: inherit; font-size: var(--cli-fs, var(--fs-ui)); }
.cli-in::placeholder { color: #3a5a45; }

/* ── head chrome — MATCH the bot bar so ⚙️ gear · ＋ plus · 🐒 perm LINE UP when stacked on the desk (Sum 2026-07-10):
   same emoji gear · the .ab-add 30×30 plus · the perm-icon-sized monkey · head padding+gap copied from .ab-head. ── */
.p-cli .card-head { padding: 0 12px; gap: 8px; }        /* was 0 14px / gap 10px → now == .ab-head */
.p-cli .card-ctrls { gap: 8px; }                         /* was 6px → == .ab-head */
.p-cli .cli-gear { background: none; border: 0; padding: 0; font-size: 19px; line-height: 1; cursor: pointer; flex-shrink: 0; }
.p-cli .cli-gear:hover { filter: brightness(1.15); }
.p-cli .cli-plus { flex-shrink: 0; width: 30px; height: 30px; border-radius: var(--r-sm, 6px);
  background: var(--btn, #26262c); color: var(--text, #e6e6ea); border: 1px solid var(--line, #3a3a42);
  font-size: 20px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.p-cli .cli-plus:hover { border-color: var(--accent, #6ee7a8); color: var(--accent, #6ee7a8); }
.p-cli .cli-monkey { flex-shrink: 0; background: none; border: none; padding: 0 2px; cursor: pointer; display: inline-flex; align-items: center; }
.p-cli .cli-monkey img { height: 24px; width: auto; -webkit-user-drag: none; filter: drop-shadow(0 1px 2px rgba(0,0,0,.6)); }
/* the ⌘ commands button keeps the green-phosphor look — it's the cli's own, in the esp slot after the perm monkey */
.p-cli .cli-btn { background: rgba(110,231,168,.08); border: 1px solid rgba(110,231,168,.30); color: #8dffb4;
  border-radius: 6px; padding: 5px 9px; font: 700 var(--fs-ui)/1 'Courier New', monospace; cursor: pointer;
  display: inline-flex; align-items: center; white-space: nowrap; flex-shrink: 0; }
.p-cli .cli-btn:hover { background: rgba(110,231,168,.18); }
.p-cli .cli-cmds span { letter-spacing: .5px; }
/* the NO-TYPE command menu (fixed, floats over everything) */
.cli-cmd-menu { position: fixed; z-index: 9999; display: none; flex-direction: column; min-width: 152px;
  background: #10151b; border: 1px solid #2a3b30; border-radius: 8px; padding: 5px; box-shadow: 0 10px 30px rgba(0,0,0,.6); }
.cli-cmd-menu.open { display: flex; }
.cli-cmd-item { text-align: left; background: transparent; border: 0; color: #8dffb4; font: 700 var(--fs-ui)/1 'Courier New', monospace;
  padding: 8px 10px; border-radius: 5px; cursor: pointer; }
.cli-cmd-item:hover { background: rgba(110,231,168,.16); }
.cli-cmd-empty { color: #6b6878; font: var(--fs-ui) monospace; padding: 8px; }
/* the ⚙ gear popover — accessibility first: text size */
.cli-gear-menu { min-width: 168px; }
.cli-gear-lbl { color: #6ee7a8; font: 700 var(--fs-ui)/1 'Courier New', monospace; letter-spacing: 1px; text-transform: uppercase; padding: 4px 6px 6px; }
.cli-sizes { display: flex; gap: 5px; padding: 0 5px 6px; }
.cli-sizes button { flex: 1; background: rgba(110,231,168,.08); border: 1px solid rgba(110,231,168,.28); color: #8dffb4;
  border-radius: 5px; padding: 7px 0; font: 700 var(--fs-ui)/1 'Courier New', monospace; cursor: pointer; }
.cli-sizes button:hover { background: rgba(110,231,168,.18); }
.cli-sizes button.on { background: var(--mc-amber, #ffb000); border-color: var(--mc-amber, #ffb000); color: #17140a; }
.cli-gear-soon { color: #5a6b62; font: italic var(--fs-ui)/1.4 'Courier New', monospace; padding: 6px; border-top: 1px solid #23302a; }

/* deck-only dangerous tiles (⚠ gate before open) */
.deck-tile { position: relative; }
.deck-tile.deck-danger { border-color: #7a3a3a !important; box-shadow: inset 0 0 0 1px #5a2a2a; }
.deck-warn { position: absolute; top: 3px; right: 5px; color: #f0a86a; font-size: var(--fs-ui); }

/* ▶ GREEN GO — the glossy dome (Sum 2026-07-11), the pair to the red STOP. off = dark · .on = glowing
   (there's a last command to relaunch). same btn-green PNGs as .ab-bless / the preview go. */
.p-cli .cli-go {
  flex-shrink: 0; width: var(--run-btn-w); height: var(--run-btn-h); padding: 0; cursor: pointer; border: none; box-shadow: none;
  background: transparent url('../../shell/bar/btn-green-off.png') center / contain no-repeat;   /* (Sum 2026-07-11) no margin-right — matched the bots' green spacing */
}
.p-cli .cli-go.on { background-image: url('../../shell/bar/btn-green-on.png'); }
.p-cli .cli-go:active { transform: translateY(1px); }
/* (Sum 2026-07-11) collapsed → green joins the HIL cluster on the far RIGHT (x+): auto-margin on the green,
   jewels drop their own auto so start · jewels · stop cluster together, not stranded by the icon. */
.p-cli.collapsed .cli-go { margin-left: auto; }
.p-cli.collapsed .card-jewels { margin-left: 0; }
