/* Technically Not · 05-status-colors.css — one status palette (Loam) for every status the app shows: agent pills/cards/metrics, terminal panes,
   build/preview dots, sub-agents, agent graph, result dots, file-activity tags, card limit, auth/update notes, permission prompts, Git.
   Light hex only: 32-theme-and-shortcuts.js mirrors the :root tokens for dark mode. Feature scripts inject their own <style> after this
   sheet, so rules here win by specificity (`:root:root` prefix: beats the injected rule and its dark copy) instead of !important.
   Colors only: no geometry, except the one shared working pulse below. Accents are inset shadows. Status hooks: pane data-status (10), git data-sync / data-state (30). */
:root{
  --st-working-fg:#4a6b34;--st-working-bg:#e9f2e0;--st-working-dot:#7fa855;--st-working-border:#c9dcb4;
  --st-waiting-fg:#8a6a2c;--st-waiting-bg:#f7f0e0;--st-waiting-dot:#c7a24e;--st-waiting-border:#e3d3a8;
  --st-idle-fg:#767c70;--st-idle-bg:#eef0ea;--st-idle-dot:#b5b9b0;--st-idle-border:#dcded6;
  --st-done-fg:#5c7d43;--st-done-bg:#eef4e6;--st-done-dot:#9fb386;--st-done-border:#d3e0c4;
  --st-error-fg:#9a4a3e;--st-error-bg:#f8ece8;--st-error-dot:#bd6b5f;--st-error-border:#eccbc2;
  --st-queued-fg:#6b6f8a;--st-queued-bg:#eef0f6;--st-queued-dot:#9498b8;--st-queued-border:#d9dcea;
  --st-info-fg:#46603a;--st-info-bg:#f0f5e9;--st-info-dot:#82a95f;--st-info-border:#d6e2c6;
}
/* One working pulse for every live green status dot in the app. Add new live dots to this list; no per-feature pulse keyframes.
   A disc the dot's size, tinted with the working dot color, scales out to 2.2x and back (compositor-only, no repaint).
   Reduced motion: no ring, the dot fades instead (Windows with animations off reports reduce). Paused under a blurred modal. */
@keyframes stPulse{50%{opacity:.45}}
@keyframes stRing{50%{transform:scale(2.2)}}
:root:root :is(.tnai-card[data-tone=working] .agent-status-pill i,.c-skill[data-state=in-use] i,.repo-agent-tag i,.skill-row.in-use .skill-dot,.t-sub[data-status=running] .t-row>i,[data-tone=working]>.ap-dot,.ap-sub[data-status=running] .ap-dot,.tnai-turn[data-state=running] .t-dot,.terminal-pane[data-status=working] .terminal-pane-state i,.bw-dot[data-s=working],.tnai-graph-line[data-status=working] .g-state i,.tnai-graph-item[data-status=working] .g-dot){position:relative;background-color:var(--st-working-dot);box-shadow:none;animation:none}
:root:root :is(.tnai-card[data-tone=working] .agent-status-pill i,.c-skill[data-state=in-use] i,.repo-agent-tag i,.skill-row.in-use .skill-dot,.t-sub[data-status=running] .t-row>i,[data-tone=working]>.ap-dot,.ap-sub[data-status=running] .ap-dot,.tnai-turn[data-state=running] .t-dot,.terminal-pane[data-status=working] .terminal-pane-state i,.bw-dot[data-s=working],.tnai-graph-line[data-status=working] .g-state i,.tnai-graph-item[data-status=working] .g-dot)::after{content:'';position:absolute;inset:0;border-radius:50%;background:color-mix(in srgb,var(--st-working-dot) 22%,transparent);animation:stRing 1.4s ease-in-out infinite;pointer-events:none}
:root:root .c-skill[data-state=in-use] i::after{inset:-1px} /* bordered dot: cover the border too */
:root:root :is(.terminal-pane-state,.g-state){overflow:clip;overflow-clip-margin:6px} /* their overflow:hidden cut the ring at the dot */
@media (prefers-reduced-motion:reduce){
  :root:root :is(.tnai-card[data-tone=working] .agent-status-pill i,.c-skill[data-state=in-use] i,.repo-agent-tag i,.skill-row.in-use .skill-dot,.t-sub[data-status=running] .t-row>i,[data-tone=working]>.ap-dot,.ap-sub[data-status=running] .ap-dot,.tnai-turn[data-state=running] .t-dot,.terminal-pane[data-status=working] .terminal-pane-state i,.bw-dot[data-s=working],.tnai-graph-line[data-status=working] .g-state i,.tnai-graph-item[data-status=working] .g-dot){animation:stPulse 1.4s ease-in-out infinite}
  :root:root :is(.tnai-card[data-tone=working] .agent-status-pill i,.c-skill[data-state=in-use] i,.repo-agent-tag i,.skill-row.in-use .skill-dot,.t-sub[data-status=running] .t-row>i,[data-tone=working]>.ap-dot,.ap-sub[data-status=running] .ap-dot,.tnai-turn[data-state=running] .t-dot,.terminal-pane[data-status=working] .terminal-pane-state i,.bw-dot[data-s=working],.tnai-graph-line[data-status=working] .g-state i,.tnai-graph-item[data-status=working] .g-dot)::after{content:none}
}
body:has(>.tnai-ws-close-overlay:not([hidden]),>.bw-confirm-overlay:not([hidden]),>.tnai-auth-overlay:not([hidden])) :is(.tnai-card[data-tone=working] .agent-status-pill i,.c-skill[data-state=in-use] i,.repo-agent-tag i,.skill-row.in-use .skill-dot,.t-sub[data-status=running] .t-row>i,[data-tone=working]>.ap-dot,.ap-sub[data-status=running] .ap-dot,.tnai-turn[data-state=running] .t-dot,.terminal-pane[data-status=working] .terminal-pane-state i,.bw-dot[data-s=working],.tnai-graph-line[data-status=working] .g-state i,.tnai-graph-item[data-status=working] .g-dot)::after{animation-play-state:paused}

/* ---- Agent status pill / dot (08, 11, 15, 25) ---- */
:root:root .agent-status-pill.working{background-color:var(--st-working-bg);color:var(--st-working-fg)}
:root:root .agent-status-pill.working i,:root:root .agent-status-dot.working{background-color:var(--st-working-dot);box-shadow:0 0 0 3px var(--st-working-bg)}
:root:root .agent-status-pill.waiting{background-color:var(--st-waiting-bg);color:var(--st-waiting-fg)}
:root:root .agent-status-pill.waiting i,:root:root .agent-status-dot.waiting{background-color:var(--st-waiting-dot)}
:root:root .agent-status-pill.error{background-color:var(--st-error-bg);color:var(--st-error-fg)}
:root:root .agent-status-pill.error i,:root:root .agent-status-dot.error{background-color:var(--st-error-dot)}
:root:root .agent-status-pill.idle{background-color:var(--st-idle-bg);color:var(--st-idle-fg)}
:root:root .agent-status-pill.idle i,:root:root .agent-status-dot.idle{background-color:var(--st-idle-dot)}
:root:root .agent-status-pill.ready{background-color:var(--st-done-bg);color:var(--st-done-fg)}
:root:root .agent-status-pill.ready i,:root:root .agent-status-dot.ready{background-color:var(--st-done-dot)}
/* Metric numbers (08) */
:root:root .agent-metric[data-status=working] b{color:var(--st-working-fg)}
:root:root .agent-metric[data-status=waiting] b{color:var(--st-waiting-fg)}
:root:root .agent-metric[data-status=error] b{color:var(--st-error-fg)}
/* Agent cards: left inset accent per tone (11) */
:root:root .tnai-card[data-tone=working]{border-color:var(--st-working-border);box-shadow:inset 3px 0 0 var(--st-working-dot),0 3px 12px #7fa85514}
:root:root .tnai-card[data-tone=waiting]{border-color:var(--st-waiting-border);box-shadow:inset 3px 0 0 var(--st-waiting-dot)}
:root:root .tnai-card[data-tone=error]{border-color:var(--st-error-border);box-shadow:inset 3px 0 0 var(--st-error-dot)}
:root:root .tnai-card[data-tone=idle]{box-shadow:inset 3px 0 0 var(--st-idle-border)}
/* Usage-limit note on a card (11): waiting on the user */
:root:root .tnai-card-limit{border-color:var(--st-waiting-border);background-color:var(--st-waiting-bg);color:var(--st-waiting-fg)}

/* ---- Terminal panes (04 markup, 10 sets data-status: starting/working/waiting/not-started/exited/error) ---- */
:root:root .terminal-pane[data-status] .terminal-pane-state i{background-color:var(--st-idle-dot);box-shadow:none}
:root:root .terminal-pane[data-status] .terminal-pane-state>span{color:var(--st-idle-fg)}
:root:root .terminal-pane[data-status=working] .terminal-pane-state>span{color:var(--st-working-fg)}
:root:root .terminal-pane:is([data-status=waiting],[data-status=starting]) .terminal-pane-state i{background-color:var(--st-waiting-dot);box-shadow:0 0 0 3px var(--st-waiting-bg)}
:root:root .terminal-pane:is([data-status=waiting],[data-status=starting]) .terminal-pane-state>span{color:var(--st-waiting-fg)}
:root:root .terminal-pane[data-status=error] .terminal-pane-state i{background-color:var(--st-error-dot);box-shadow:0 0 0 3px var(--st-error-bg)}
:root:root .terminal-pane[data-status=error] .terminal-pane-state>span{color:var(--st-error-fg)}
/* Top accent on the header (it has an opaque background, so the accent sits on it, not the pane) */
:root:root .terminal-pane[data-status=working]>.terminal-pane-head{box-shadow:inset 0 2px 0 var(--st-working-dot)}
:root:root .terminal-pane[data-status=waiting]>.terminal-pane-head{box-shadow:inset 0 2px 0 var(--st-waiting-dot)}
:root:root .terminal-pane[data-status=starting]>.terminal-pane-head{box-shadow:inset 0 2px 0 var(--st-waiting-border)}
:root:root .terminal-pane[data-status=error]>.terminal-pane-head{box-shadow:inset 0 2px 0 var(--st-error-dot)}
/* Spotlight: the pane just opened from Overview/Agents/Build (11-agents-live focusPane); cleared on the next click elsewhere */
:root:root .terminal-pane.pane-spotlight{outline:2px solid var(--green);outline-offset:-2px;animation:tnai-pane-spotlight 1.1s ease-out 2}
:root:root .terminal-pane.pane-spotlight>.terminal-pane-head{background-color:var(--st-working-bg);box-shadow:inset 0 3px 0 var(--green)}
@keyframes tnai-pane-spotlight{0%{outline-color:transparent}35%{outline-color:var(--green)}70%{outline-color:var(--st-working-border)}100%{outline-color:var(--green)}}

/* ---- Build workspace / live preview dots (23, 31): starting = waiting amber ---- */
:root:root .bw-dot{background-color:var(--st-idle-dot)}
:root:root .bw-dot:is([data-s=waiting],[data-s=starting]){background-color:var(--st-waiting-dot)}
:root:root .bw-dot[data-s=error]{background-color:var(--st-error-dot)}
:root:root .bw-dot[data-s=ok]{background-color:var(--st-done-dot)}

/* ---- Sub-agents in a card (19) ---- */
:root:root .t-sub[data-status=running] .t-row>i{background-color:var(--st-working-dot)}
:root:root .t-sub[data-status=starting] .t-row>i{background-color:var(--st-waiting-dot)}
:root:root .t-sub[data-status=done] .t-row>i{background-color:var(--st-done-dot)}
:root:root .t-sub[data-status=failed] .t-row>i{background-color:var(--st-error-dot)}

/* ---- Agent graph (43): starting = waiting amber, like everywhere else ---- */
:root:root .tnai-graph-line .g-state i,:root:root .tnai-graph-item .g-dot{background-color:var(--st-idle-dot)}
:root:root .tnai-graph-line[data-status=starting] .g-state i,:root:root .tnai-graph-item[data-status=starting] .g-dot{background-color:var(--st-waiting-dot)}
:root:root .tnai-graph-line[data-status=done] .g-state i,:root:root .tnai-graph-item[data-status=done] .g-dot{background-color:var(--st-done-dot)}
:root:root .tnai-graph-line:is([data-status=failed],[data-status=stopped]) .g-state i,:root:root .tnai-graph-item:is([data-status=failed],[data-status=stopped]) .g-dot{background-color:var(--st-error-dot)}
:root:root .tnai-graph-line[data-kept] .g-state{color:var(--st-done-fg)}

/* ---- New-result dot (44), file-activity tag (13) ---- */
:root:root .tnai-result-dot{background-color:var(--st-info-dot)}
:root:root .repo-agent-tag{background-color:var(--st-working-bg);color:var(--st-working-fg)}
:root:root .repo-agent-tag i{background-color:var(--st-working-dot)}
:root:root .repo-folder .repo-agent-tag{background-color:var(--st-done-bg);color:var(--st-done-fg)}

/* ---- Sign-in note (34), update pill (36) ---- */
:root:root .tnai-auth-status.info{background-color:var(--st-info-bg);color:var(--st-info-fg)}
:root:root .tnai-auth-status.error{background-color:var(--st-error-bg);color:var(--st-error-fg)}
:root:root .tnai-update-pill{border-color:var(--st-info-border);background-color:var(--st-info-bg);color:var(--st-info-fg)}

/* ---- Permission prompt (45): waiting on you ---- */
:root:root .tnai-perm{box-shadow:inset 3px 0 0 var(--st-waiting-dot),var(--shadow);background-image:linear-gradient(180deg,var(--st-waiting-bg) 0,var(--st-waiting-bg) 34px,transparent 46px)}

/* ---- Git (30): status letters, ahead/behind, branch chip ---- */
:root:root .gp-row[data-letter=M] .gp-letter{color:var(--st-waiting-fg)}
:root:root .gp-row:is([data-letter=A],[data-letter="?"]) .gp-letter{color:var(--st-working-fg)}
:root:root .gp-row[data-letter=D] .gp-letter{color:var(--st-error-fg)}
:root:root .gp-row:is([data-letter=R],[data-letter=C]) .gp-letter{color:var(--st-queued-fg)}
:root:root .gp-row[data-letter=U] .gp-letter{color:var(--st-error-fg)}
:root:root .gp-ab[data-sync=clean]{color:var(--st-idle-fg)}
:root:root .gp-ab[data-sync=ahead]{color:var(--st-info-fg)}
:root:root .gp-ab[data-sync=behind]{color:var(--st-queued-fg)}
:root:root .gp-ab[data-sync=diverged]{color:var(--st-waiting-fg)}
:root:root .git-branch-chip[data-state=clean]{border-color:var(--st-info-border);background-color:var(--st-info-bg);color:var(--st-info-fg)}
:root:root .git-branch-chip[data-state=dirty]{border-color:var(--st-waiting-border);background-color:var(--st-waiting-bg);color:var(--st-waiting-fg)}
:root:root .git-branch-chip[data-state=ahead]{border-color:var(--st-info-border);background-color:var(--st-info-bg);color:var(--st-info-fg)}
:root:root .git-branch-chip[data-state=behind]{border-color:var(--st-queued-border);background-color:var(--st-queued-bg);color:var(--st-queued-fg)}
:root:root .git-branch-chip[data-state]:hover{filter:brightness(.97)}


/* ---- Needs you (71, 10 data-status=needs-you): an agent stopped on a question. The waiting amber plus the shared ring pulse, tinted amber ---- */
:root:root .terminal-pane[data-status=needs-you] .terminal-pane-state>span,:root:root .agent-metric[data-status=needs-you] b{color:var(--st-waiting-fg)}
:root:root .terminal-pane[data-status=needs-you]>.terminal-pane-head{box-shadow:inset 0 2px 0 var(--st-waiting-dot);background-color:var(--st-waiting-bg)}
:root:root .tnai-needs-chip{border-color:var(--st-waiting-border);background-color:var(--st-waiting-bg);color:var(--st-waiting-fg)}
:root:root :is(.terminal-pane[data-status=needs-you] .terminal-pane-state i,.tnai-card[data-needs-you] .agent-status-pill i,.tnai-needs-chip .dot){position:relative;background-color:var(--st-waiting-dot);box-shadow:none;animation:none}
:root:root :is(.terminal-pane[data-status=needs-you] .terminal-pane-state i,.tnai-card[data-needs-you] .agent-status-pill i,.tnai-needs-chip .dot)::after{content:'';position:absolute;inset:0;border-radius:50%;background:color-mix(in srgb,var(--st-waiting-dot) 30%,transparent);animation:stRing 1.4s ease-in-out infinite;pointer-events:none}
@media (prefers-reduced-motion:reduce){
  :root:root :is(.terminal-pane[data-status=needs-you] .terminal-pane-state i,.tnai-card[data-needs-you] .agent-status-pill i,.tnai-needs-chip .dot){animation:stPulse 1.4s ease-in-out infinite}
  :root:root :is(.terminal-pane[data-status=needs-you] .terminal-pane-state i,.tnai-card[data-needs-you] .agent-status-pill i,.tnai-needs-chip .dot)::after{content:none}
}
