/* A model call's trace (#217, R-198), in the Models page's drawer
   (traces.js), and the calls list's trace filters (models.js). Only the
   design tokens of style.css, so both themes follow. */

.kt-head { display: grid; gap: 12px; margin-bottom: 16px; }
.kt-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.kt-model { font-size: 16px; color: var(--text); overflow-wrap: anywhere; }
.kt-stats { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.kt-stats .stat .sub { overflow-wrap: anywhere; }
.kt-error { margin: 0; padding: 10px 12px; border: 1px solid var(--error); border-radius: var(--r); color: var(--error); font-size: 13px; overflow-wrap: anywhere; }

.kt-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.kt-actions .act-error { flex-basis: 100%; }

.kt-section { margin: 0 0 16px; }
details.kt-section > summary, .kt-fold > summary, .kt-reasoning > summary, .kt-more > summary {
  cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; color: var(--text); font-size: 14px; padding: 6px 0;
}
details.kt-section > summary::-webkit-details-marker, .kt-fold > summary::-webkit-details-marker,
.kt-reasoning > summary::-webkit-details-marker, .kt-more > summary::-webkit-details-marker { display: none; }
details.kt-section > summary .i, .kt-fold > summary .i, .kt-reasoning > summary .i { transition: transform .12s; }
details.kt-section[open] > summary .i, .kt-fold[open] > summary .i, .kt-reasoning[open] > summary .i { transform: rotate(90deg); }
.kt-section .small-title .muted { font-weight: 300; margin-left: 6px; }

.kt-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.kt-chip { display: inline-flex; gap: 6px; align-items: baseline; max-width: 100%; padding: 3px 8px; border: 1px solid var(--line); border-radius: var(--r-xs); background: var(--well); font-size: 12px; overflow-wrap: anywhere; }

.kt-tools { list-style: none; margin: 4px 0 0; padding: 0; display: grid; gap: 8px; }
.kt-tools li { display: grid; gap: 2px; padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--r); background: var(--well); }

/* Messages: a rule in the role's colour, the role above the parts. */
.kt-msg { display: grid; gap: 6px; padding: 10px 12px 10px 14px; margin: 0 0 8px; border: 1px solid var(--line); border-left: 3px solid var(--line-hover); border-radius: var(--r); background: var(--surface); min-width: 0; }
.kt-msg.role-system, .kt-msg.role-developer { background: var(--well); border-left-color: var(--text-2); }
.kt-msg.role-user { border-left-color: var(--vivid); }
.kt-msg.role-assistant { border-left-color: var(--accent-ink); background: color-mix(in srgb, var(--vivid-soft) 40%, var(--surface)); }
.kt-msg.role-tool { border-left-color: var(--line-hover); background: var(--well); }
.kt-msg.gone { border-style: dashed; }
.kt-role { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-2); }
.kt-msg.role-user .kt-role { color: var(--vivid-ink); }
.kt-msg.role-assistant .kt-role { color: var(--accent-ink); }
.kt-parts { display: grid; gap: 8px; min-width: 0; }
.kt-text { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; line-height: 1.55; color: var(--text); }
.kt-more > summary { font-size: 12px; color: var(--text-2); padding: 2px 0; }
.kt-fold { margin: 0 0 8px; padding: 0 0 0 4px; border-left: 1px dashed var(--line-hover); }
.kt-fold > summary { color: var(--text-2); font-size: 13px; }

.kt-reasoning { border: 1px dashed var(--line-hover); border-radius: var(--r); padding: 2px 10px; }
.kt-reasoning > summary { font-size: 13px; color: var(--text-2); }
.kt-reasoning[open] { padding-bottom: 8px; }
.kt-reasoning .kt-text { color: var(--text-2); }

.kt-call, .kt-result { display: grid; gap: 6px; padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--r); background: var(--well); min-width: 0; }
.kt-result.err { border-color: color-mix(in srgb, var(--error) 55%, var(--line)); }
.kt-call-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 13px; }
.kt-call-head .btn { margin-left: auto; }
.kt-call pre.json, .kt-tools pre.json, .kt-section pre.json { margin: 0; max-height: 320px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; }
.kt-result .kt-result { background: var(--surface); }
.kt-refusal { display: flex; gap: 8px; align-items: flex-start; color: var(--error); font-size: 13px; }

.kt-media { margin: 0; display: grid; gap: 4px; min-width: 0; }
.kt-media img { display: block; max-width: 100%; max-height: 360px; height: auto; border: 1px solid var(--line); border-radius: var(--r); background: var(--well); }
.kt-media audio { width: 100%; max-width: 420px; }
.kt-media a.mono { overflow-wrap: anywhere; }

/* The calls list: what a call's trace holds, and the trace filters. */
.km-logging-fields { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; }
.km-has { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; grid-column: 1 / -1; font-size: 13px; }
.km-has .muted { margin-right: 4px; }
.km-flags { display: flex; flex-wrap: wrap; gap: 4px; max-width: 240px; margin-top: 4px; }
.km-flags:empty { display: none; }
.km-flags .badge { font-size: 11px; }
.km-conv { font-size: 12px; }

@media (max-width: 640px) {
  .kt-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kt-msg { padding: 8px 10px 8px 12px; }
  .kt-call-head .btn { margin-left: 0; }
}

/* A Foundry run's steps in the Inspect card's drawer (app.js, R-229): model
   requests and tool calls with a waterfall; the selected one opens below. */
.fr-row.selected td { background: color-mix(in srgb, var(--vivid-soft) 45%, transparent); }
.fr-kind { display: inline-block; width: 8px; height: 8px; margin-right: 8px; border-radius: 2px; background: var(--accent-ink); vertical-align: middle; }
.fr-kind.tool { border-radius: 50%; background: var(--vivid); }
.fr-wf-cell { width: 28%; min-width: 120px; }
.fr-wf { position: relative; display: block; height: 10px; }
.fr-bar { position: absolute; top: 2px; height: 6px; border-radius: 2px; background: var(--accent-ink); min-width: 2px; }
.fr-bar.tool { background: var(--vivid); }
.fr-bar.err { background: var(--error); }
.stat .value.fr-name { font-size: 15px; line-height: 1.4; overflow-wrap: anywhere; }
.fr-detail { margin-top: 4px; padding-top: 12px; border-top: 1px solid var(--line); }
.fr-log { display: grid; gap: 2px; max-height: 420px; overflow: auto; padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--r); background: var(--well); font-family: var(--mono); font-size: 12px; }
.fr-line { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 10px; padding: 1px 0; overflow-wrap: anywhere; }
.fr-line.warn { color: color-mix(in srgb, var(--error) 60%, var(--text-2)); }
.fr-line.err { color: var(--error); }

/* A Foundry run's views (#279): tabs in the run drawer, drawn from what
   foundry-views.js reads out of the run's events. */
.fv-tabs { margin: 4px 0 12px; gap: 18px; }
.fv-empty { padding: 14px 0; }
.fv-console { max-height: 60vh; }
.fv-line > summary { display: grid; grid-template-columns: 64px 72px minmax(0, 1fr); gap: 10px; padding: 2px 0; list-style: none; cursor: pointer; overflow-wrap: anywhere; }
.fv-line > summary::-webkit-details-marker { display: none; }
.fv-line > summary:hover { background: var(--hover); }
.fv-line.warn > summary { color: var(--k-service); }
.fv-line.err > summary { color: var(--error); }
.fv-line.quiet > summary { color: var(--text-2); }
.fv-line .json { margin: 4px 0 8px 146px; }
.fv-origins { display: grid; gap: 8px; }
.fv-origin { padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--r); background: var(--well); }
.fv-origin-head { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 8px; font-size: 13px; }
.fv-tools { display: flex; flex-wrap: wrap; gap: 6px; }
.fv-count { margin-left: 4px; padding: 0 5px; border-radius: var(--r-pill); background: var(--vivid-soft); color: var(--vivid-ink); }
.fv-rest dd { display: flex; flex-wrap: wrap; gap: 6px; }
.fv-dir { width: 28px; font-family: var(--mono); font-size: 14px; }
.fv-dir.in { color: var(--k-station); }
.fv-dir.out { color: var(--k-service); }
.fv-list { margin: 0; padding-left: 18px; display: grid; gap: 4px; font-size: 13px; }
.fv-node { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 12px; margin-top: 6px; border: 1px solid var(--line); border-radius: var(--r); background: var(--well); font-size: 13px; }
.fv-node.self { border-color: var(--vivid); background: var(--vivid-soft); }
.fv-edge { font-family: var(--mono); font-size: 11px; color: var(--text-2); }
.fv-tree { list-style: none; margin: 0; padding-left: 20px; border-left: 1px solid var(--line); margin-left: 12px; }
.fv-tools .tag { text-transform: none; letter-spacing: 0; }
