/* The Drawer. back-room-desk.css
 * The Desk module. Bench tokens only, same as every
 * other Back Room surface; the shell (back-room.css) owns the chrome and
 * this file owns only the desk's own stage content. */

/* ── List ──────────────────────────────────────────────────────────────── */

.dsk-table .dsk-row {
  display: grid;
  grid-template-columns: 1fr 150px 110px 80px;
  align-items: center;
}

.dsk-row[data-open] { cursor: pointer; }

.dsk-status-chip {
  display: inline-block;
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 2px 10px;
  white-space: nowrap;
}

/* ── Draft screen ──────────────────────────────────────────────────────── */

.dsk-top {
  display: flex;
  align-items: center;
  gap: var(--s3);
  margin-bottom: var(--s3);
}

.dsk-rail {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s1);
  margin-bottom: var(--s4);
}

.dsk-rail-step {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 3px 10px;
  white-space: nowrap;
}

.dsk-rail-step.is-done { color: var(--ink-soft); border-style: dashed; }

.dsk-rail-step.is-current {
  color: var(--ground);
  background: var(--accent);
  border-color: var(--accent);
}

.dsk-rail-join {
  width: 12px;
  height: 1px;
  background: var(--line);
  flex: 0 0 auto;
}

.dsk-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--s4);
  align-items: start;
}

@media (max-width: 900px) {
  .dsk-grid { grid-template-columns: 1fr; }
}

.dsk-fields { display: grid; gap: var(--s2); }

.dsk-field-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s2);
}

.dsk-body { font-size: var(--t-body); line-height: 1.55; }

.dsk-step-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s2);
  margin-top: var(--s2);
}

.dsk-step-panel {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s3);
  background: var(--ground-raised);
}

.dsk-step-note {
  font-size: var(--t-small);
  color: var(--ink-soft);
  margin: 0 0 var(--s2);
}

/* ── Step results ──────────────────────────────────────────────────────── */

.dsk-result { margin-top: var(--s3); display: grid; gap: var(--s2); }

.dsk-extract-row {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr) auto;
  gap: var(--s2);
  align-items: start;
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
}

.dsk-extract-label {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
  padding-top: 2px;
}

.dsk-extract-text { margin: 0; font-size: var(--t-small); color: var(--ink); }

.dsk-extract-text.dsk-missing { color: var(--ink-soft); font-style: italic; }

.dsk-result-note {
  font-size: var(--t-small);
  color: var(--ink-soft);
  margin: 0;
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
}

.dsk-check-row {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  gap: var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding-top: var(--s1);
}

.dsk-check-mark {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--good);
}

.dsk-check-row.is-fail .dsk-check-mark { color: var(--stop); }

.dsk-check-rule { font-size: var(--t-small); color: var(--ink); }

.dsk-check-problem {
  grid-column: 2;
  margin: 0;
  font-size: var(--t-small);
  color: var(--ink-soft);
}

.dsk-raw-json {
  font-size: 12px;
  line-height: 1.5;
  color: var(--ink-soft);
  background: var(--ground-sunk);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: var(--s2);
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-word;
  margin: 0;
}

/* ── Inline revision ───────────────────────────────────────────────────── */

.dsk-revise-bar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--s2);
  align-items: center;
}

.dsk-proposal {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s3);
  background: var(--ground-raised);
  display: grid;
  gap: var(--s2);
}

.dsk-proposal-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s2);
}

.dsk-proposal-count {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-right: auto;
}

.dsk-proposal-explain {
  font-size: var(--t-small);
  color: var(--ink-soft);
  margin: 0;
  border-left: 2px solid var(--accent);
  padding-left: var(--s2);
}

.dsk-doc {
  font-size: var(--t-body);
  line-height: 1.7;
  color: var(--ink);
  white-space: pre-wrap;
  word-break: break-word;
  background: var(--ground-sunk);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: var(--s3);
}

.dsk-change { cursor: pointer; border-radius: 3px; }

.dsk-change .dsk-del {
  text-decoration: line-through;
  text-decoration-thickness: 1.5px;
  color: var(--stop);
  background: color-mix(in srgb, var(--stop) 10%, transparent);
}

.dsk-change .dsk-ins {
  text-decoration: none;
  color: var(--good);
  background: color-mix(in srgb, var(--good) 12%, transparent);
}

/* Rejected: the original stands, the proposed text is the one struck. */
.dsk-change.is-rejected .dsk-del {
  text-decoration: none;
  color: var(--ink);
  background: transparent;
}

.dsk-change.is-rejected .dsk-ins {
  text-decoration: line-through;
  text-decoration-thickness: 1.5px;
  color: var(--ink-faint);
  background: transparent;
}

.dsk-reject-row {
  display: grid;
  gap: var(--s1);
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
}

.dsk-reject-kept {
  font-size: var(--t-small);
  color: var(--ink-soft);
}

.dsk-reject-chips {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s1);
}

.dsk-chip {
  font-family: var(--font-body);
  font-size: var(--t-micro);
  letter-spacing: 0.04em;
  color: var(--ink-soft);
  background: none;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 3px 10px;
  cursor: pointer;
}

.dsk-chip.is-on {
  color: var(--ground);
  background: var(--accent);
  border-color: var(--accent);
}

.dsk-chip-input { max-width: 240px; font-size: var(--t-small); }

/* ── Version history ───────────────────────────────────────────────────── */

.dsk-versions {
  margin-top: var(--s3);
  display: grid;
  gap: var(--s2);
  justify-items: start;
}

.dsk-version-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  gap: var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
  width: 100%;
}

.dsk-version-seq {
  font-family: var(--font-display);
  font-size: var(--t-lead);
  color: var(--ink-faint);
}

.dsk-version-meta {
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.dsk-version-instruction {
  grid-column: 2;
  font-size: var(--t-small);
  color: var(--ink-soft);
}

.dsk-version-restore { grid-column: 3; grid-row: 1 / span 2; align-self: center; }

/* ── Step renderers ────────────────────────────────────────────────────── */

.dsk-step-draft {
  font-size: var(--t-body);
  line-height: 1.7;
  color: var(--ink);
  white-space: pre-wrap;
  word-break: break-word;
  background: var(--ground-sunk);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: var(--s3);
}

.dsk-handle-fail { color: var(--warn); }

.dsk-verdict {
  display: inline-block;
  font-size: var(--t-small);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-radius: 999px;
  padding: 4px 14px;
  margin: 0;
  border: 1px solid var(--line);
}

.dsk-verdict.is-ready {
  color: var(--good);
  border-color: color-mix(in srgb, var(--good) 40%, transparent);
  background: color-mix(in srgb, var(--good) 10%, transparent);
}

.dsk-verdict.is-minor {
  color: var(--warn);
  border-color: color-mix(in srgb, var(--warn) 40%, transparent);
  background: color-mix(in srgb, var(--warn) 10%, transparent);
}

.dsk-verdict.is-structural {
  color: var(--stop);
  border-color: color-mix(in srgb, var(--stop) 40%, transparent);
  background: color-mix(in srgb, var(--stop) 10%, transparent);
}

.dsk-dim-row {
  display: grid;
  gap: 4px;
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
}

.dsk-dim-name {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.dsk-dim-read { margin: 0; font-size: var(--t-small); color: var(--ink); }

.dsk-board-row {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
}

.dsk-board-score {
  font-family: var(--font-display);
  font-size: var(--t-lead);
  font-weight: 700;
  color: var(--ink);
}

.dsk-board-name {
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.dsk-board-reason {
  grid-column: 2;
  margin: 0;
  font-size: var(--t-small);
  color: var(--ink-soft);
}

.dsk-composite {
  font-size: var(--t-small);
  margin: 0;
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
}

.dsk-composite.is-met { color: var(--good); }
.dsk-composite.is-short { color: var(--stop); }

/* ── The queue ─────────────────────────────────────────────────────────── */

/* The switch is a band, not loose buttons: contained on its own ground so
   the row reads as navigation, with the current section a filled pill that
   cannot be mistaken for the content below it. */
.dsk-viewswitch {
  display: flex;
  align-items: center;
  gap: var(--s1);
  margin-bottom: var(--s4);
  background: var(--ground-sunk);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: var(--s1) var(--s2);
}

.dsk-viewswitch .bench-btn-plain { border-color: transparent; }

.dsk-viewswitch .is-here {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--ground);
}

.dsk-li-line {
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin-bottom: var(--s3);
}

.dsk-li-inline { display: inline-flex; align-items: center; gap: var(--s2); }

.dsk-queue-list { display: grid; gap: 0; }

.dsk-queue-row {
  display: grid;
  grid-template-columns: 170px auto minmax(0, 1fr) auto auto auto;
  gap: var(--s2);
  align-items: center;
  border-top: 1px solid var(--line);
  padding: var(--s2) 0;
}

.dsk-queue-row.is-done { opacity: 0.55; }

.dsk-queue-when { font-size: var(--t-small); color: var(--ink); white-space: nowrap; }

.dsk-queue-title { font-size: var(--t-small); color: var(--ink-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.dsk-slot-grid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s1);
  margin: var(--s2) 0;
}

.dsk-cal-nav {
  display: flex;
  align-items: center;
  gap: var(--s3);
  margin-bottom: var(--s2);
}

.dsk-cal-month { font-family: var(--font-display); font-size: var(--t-lead); color: var(--ink); }

.dsk-cal {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}

.dsk-cal-dow {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
  padding: var(--s1) var(--s2);
  border-bottom: 1px solid var(--line);
  background: var(--ground-raised);
}

.dsk-cal-cell {
  min-height: 74px;
  border-bottom: 1px solid var(--line);
  border-right: 1px solid var(--line);
  padding: var(--s1);
  display: grid;
  gap: 3px;
  align-content: start;
}

.dsk-cal-cell:nth-child(7n) { border-right: 0; }

.dsk-cal-cell.is-blank { background: var(--ground-sunk); }

.dsk-cal-day { font-size: var(--t-micro); color: var(--ink-faint); }

.dsk-cal-entry {
  font-size: var(--t-micro);
  color: var(--ink);
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  border-radius: 4px;
  padding: 1px 5px;
  cursor: pointer;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dsk-cal-entry.is-done { opacity: 0.5; cursor: default; }

/* ── Publish confirmation ──────────────────────────────────────────────── */

.dsk-confirm {
  border: 1px solid var(--accent);
  border-radius: 10px;
  padding: var(--s3);
  margin-top: var(--s3);
  display: grid;
  gap: var(--s2);
  background: var(--ground-raised);
}

.dsk-confirm-text {
  font-size: var(--t-body);
  line-height: 1.7;
  color: var(--ink);
  white-space: pre-wrap;
  word-break: break-word;
  background: var(--ground-sunk);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: var(--s3);
}

.dsk-confirm-block {
  font-size: var(--t-small);
  color: var(--stop);
  margin: 0;
}

.dsk-manual { border-top: 1px solid var(--line); padding-top: var(--s2); }

.dsk-manual-url { max-width: 380px; }

/* ── Stats ─────────────────────────────────────────────────────────────── */

.dsk-bars {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  height: 160px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s2) var(--s2) var(--s3);
  background: var(--ground-raised);
}

.dsk-bar-col {
  flex: 1 1 0;
  min-width: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  position: relative;
}

.dsk-bar {
  width: 100%;
  max-width: 34px;
  background: color-mix(in srgb, var(--accent) 65%, transparent);
  border-radius: 3px 3px 0 0;
}

.dsk-bar-col:hover .dsk-bar { background: var(--accent); }

.dsk-bar-label {
  position: absolute;
  bottom: -18px;
  font-size: var(--t-micro);
  color: var(--ink-faint);
  white-space: nowrap;
}

.dsk-provenance {
  font-size: var(--t-micro);
  letter-spacing: 0.03em;
  color: var(--ink-faint);
  margin: var(--s2) 0 0;
}

.dsk-stat-table { margin-top: var(--s2); }

.dsk-stat-row {
  display: grid;
  grid-template-columns: 86px minmax(0, 2fr) 70px 100px 100px 70px 80px 110px;
  gap: var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding: var(--s1) 0;
  font-size: var(--t-small);
  color: var(--ink);
}

.dsk-stat-head { border-top: 0; }

.dsk-stat-title { color: var(--ink); }

.dsk-import-only {
  display: inline-block;
  margin-left: var(--s1);
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-faint);
  border: 1px dashed var(--line);
  border-radius: 999px;
  padding: 0 8px;
}

.dsk-review-list { display: grid; }

.dsk-review-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s2);
  border-top: 1px solid var(--line);
  padding: var(--s2) 0;
}

.dsk-review-fields {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: var(--s2);
}

.dsk-review-field { display: grid; gap: 4px; }

.dsk-review-field .bench-input { max-width: 130px; }

/* ── The scoreboard ────────────────────────────────────────────────────── */

.dsk-score-block {
  margin-top: var(--s3);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s3);
  background: var(--ground-raised);
}

.dsk-score-metric {
  display: block;
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin-bottom: var(--s2);
}

.dsk-score-grid { display: grid; }

.dsk-score-row {
  display: grid;
  grid-template-columns: minmax(120px, 1.4fr) repeat(var(--dsk-slot-count, 4), minmax(0, 1fr));
  gap: var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding: var(--s1) 0;
  font-size: var(--t-small);
}

.dsk-score-head {
  border-top: 0;
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.dsk-score-genre { color: var(--ink); }

.dsk-score-cell strong { color: var(--ink); font-weight: 600; }

.dsk-score-n { color: var(--ink-faint); font-size: var(--t-micro); }

/* ── Genre editor ──────────────────────────────────────────────────────── */

.dsk-genre-editor {
  display: grid;
  gap: var(--s1);
  margin: var(--s2) 0 var(--s3);
  border: 1px dashed var(--line);
  border-radius: 10px;
  padding: var(--s2) var(--s3);
}

.dsk-genre-row {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr) 80px auto;
  gap: var(--s2);
  align-items: center;
}

.dsk-genre-key {
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  color: var(--ink-faint);
}

/* ── The writer's room ─────────────────────────────────────────────────── */

.dsk-line-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--s2);
  align-items: start;
  border-top: 1px solid var(--line);
  padding: var(--s2) 0;
}

.dsk-line-text { font-size: var(--t-small); line-height: 1.5; }

.dsk-line-actions {
  display: flex;
  gap: var(--s1);
  align-items: center;
  flex-wrap: wrap;
}

.dsk-line-actions .is-here { border-color: var(--accent); color: var(--ink); }

.dsk-ex-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s2);
  border-top: 1px solid var(--line);
  padding: var(--s2) 0;
}

.dsk-ex-note { font-size: var(--t-small); color: var(--ink-soft); font-style: italic; }

.dsk-ex-markbox {
  display: flex;
  gap: var(--s2);
  align-items: center;
  flex: 1 1 320px;
}

.dsk-pref-row {
  display: grid;
  grid-template-columns: 60px minmax(0, 1fr);
  gap: var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding: var(--s1) 0;
}

.dsk-pref-decision {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--good);
}

.dsk-pref-row.is-rejected .dsk-pref-decision { color: var(--stop); }

.dsk-pref-text { font-size: var(--t-small); color: var(--ink); }

.dsk-pref-over { color: var(--ink-faint); text-decoration: line-through; }

.dsk-pref-row .br-field-hint { grid-column: 2; }

.dsk-prop-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding: var(--s2) 0;
}

.dsk-prop-row .br-field-hint { grid-column: 2; }

.dsk-prop-text { font-size: var(--t-small); color: var(--ink); }

.dsk-prop-row.is-rejected .dsk-prop-text {
  color: var(--ink-faint);
  text-decoration: line-through;
}

/* ── The inbound log ───────────────────────────────────────────────────── */

.dsk-in-grid {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  gap: var(--s4);
  align-items: start;
}

@media (max-width: 900px) {
  .dsk-in-grid { grid-template-columns: 1fr; }
}

.dsk-in-form { display: grid; gap: var(--s2); }

.dsk-signals {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s3);
  background: var(--ground-raised);
  display: grid;
  gap: var(--s1);
}

.dsk-signal-row {
  display: flex;
  justify-content: space-between;
  gap: var(--s2);
  border-top: 1px solid var(--line);
  padding: var(--s1) 0;
}

.dsk-in-row {
  display: grid;
  grid-template-columns: 110px auto minmax(0, 1fr) auto;
  gap: var(--s1) var(--s2);
  align-items: baseline;
  border-top: 1px solid var(--line);
  padding: var(--s2) 0;
}

.dsk-in-who { font-size: var(--t-small); color: var(--ink-soft); }

.dsk-in-summary {
  grid-column: 1 / -1;
  margin: 0;
  font-size: var(--t-small);
  color: var(--ink);
}

.dsk-in-row .br-field-hint { grid-column: 1 / -1; }

.dsk-in-outcome {
  grid-column: 1 / -1;
  margin: 0;
  font-size: var(--t-small);
  color: var(--good);
}

.dsk-basis-stated { color: var(--good); border-color: color-mix(in srgb, var(--good) 40%, transparent); }
.dsk-basis-inferred { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); }
.dsk-basis-unknown { color: var(--ink-faint); }

/* ── Predictions and the results panel ─────────────────────────────────── */

.dsk-preds {
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
  margin-bottom: var(--s2);
}

.dsk-pred-row {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s2);
  padding: var(--s1) 0;
}

.dsk-pred-band { font-size: var(--t-small); color: var(--ink); font-weight: 600; }

.dsk-pred-reason {
  flex-basis: 100%;
  margin: 0;
  font-size: var(--t-small);
  color: var(--ink-soft);
}

.dsk-chain-tier {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s3);
  background: var(--ground-raised);
}

.dsk-chain-tiername {
  display: block;
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin-bottom: var(--s2);
}

.dsk-chain-cells {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--s3);
}

.dsk-chain-cell { display: grid; gap: 4px; align-content: start; }

.dsk-chain-value {
  font-family: var(--font-display);
  font-size: var(--t-title);
  font-weight: 700;
  color: var(--ink);
  line-height: 1;
}

.dsk-chain-arrow {
  text-align: center;
  font-size: var(--t-micro);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-faint);
  padding: var(--s1) 0;
}

.dsk-target-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s1);
  border-top: 1px solid var(--line);
  padding-top: var(--s1);
  margin-top: var(--s1);
}

.dsk-target-metric { font-size: var(--t-small); color: var(--ink); }

.dsk-target-num { max-width: 76px; }

.dsk-target-row.is-distorted input { opacity: 0.55; }

.dsk-distorted-note {
  flex-basis: 100%;
  margin: 0;
  font-size: var(--t-micro);
  color: var(--warn);
}

.dsk-gap-open { font-size: var(--t-small); color: var(--warn); }

.dsk-gap-met { font-size: var(--t-small); color: var(--good); }

.dsk-target-add {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s1);
  margin-top: var(--s3);
  border: 1px dashed var(--line);
  border-radius: 10px;
  padding: var(--s2);
}

/* ── The Write surface (Stanley pass, gate A) ──────────────────────────── */

.dskw {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr) minmax(300px, 380px);
  gap: var(--s3);
  align-items: start;
}

@media (max-width: 1180px) {
  .dskw { grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); }
}

@media (max-width: 900px) {
  .dskw { grid-template-columns: 1fr; }
}

.dskw-strip {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s2);
  margin-bottom: var(--s3);
  border-bottom: 1px solid var(--line);
  padding-bottom: var(--s2);
}

.dskw-strip-label {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-right: auto;
}

.dskw-minis { display: grid; gap: var(--s1); align-content: start; }

/* In the two-column band there is no room for a third; on phones the
   stacked list above the document earns its place and stays. */
@media (min-width: 901px) and (max-width: 1180px) {
  .dskw-minis { display: none; }
}

.dskw-mini {
  display: grid;
  gap: 2px;
  text-align: left;
  font-family: var(--font-body);
  background: none;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
  cursor: pointer;
}

.dskw-mini.is-here { border-color: var(--accent); }

.dskw-mini-title { font-size: var(--t-small); color: var(--ink); }

.dskw-mini-status {
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

/* The document as a post. */

.dskw-post {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel, var(--ground-raised));
  padding: var(--s3);
}

.dskw-post-head {
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin-bottom: var(--s2);
}

.dskw-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--accent-ink, var(--ground));
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-lead);
  font-weight: 700;
  flex: 0 0 auto;
}

.dskw-byline { display: grid; line-height: 1.3; }

.dskw-byline strong { font-size: var(--t-small); color: var(--ink); }

.dskw-editbtn { margin-left: auto; }

.dskw-body,
.dsk-doc-flow {
  font-size: var(--t-body);
  line-height: 1.7;
  color: var(--ink);
  white-space: pre-wrap;
  word-break: break-word;
  background: none;
  border: 0;
  padding: 0;
}

.dskw-edit { width: 100%; font-size: var(--t-body); line-height: 1.6; }

.dsk-change.is-active {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
  border-radius: 3px;
}

.dskw-banner {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s2);
  border: 1px solid var(--accent);
  border-radius: 10px;
  background: var(--ground-raised);
  padding: var(--s2) var(--s3);
  margin-bottom: var(--s2);
}

.dskw-banner-who { font-size: var(--t-small); color: var(--ink); font-weight: 600; }

.dskw-banner-count {
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-right: auto;
}

.dskw-keys { font-size: var(--t-micro); color: var(--ink-faint); }

.dskw-selask {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s2);
  border-top: 1px solid var(--line);
  margin-top: var(--s2);
  padding-top: var(--s2);
}

.dskw-selask .bench-input { flex: 1 1 220px; }

/* Metadata strip. */

.dskw-meta { margin-top: var(--s3); }

.dskw-meta-toggle {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s1);
  width: 100%;
  background: none;
  border: 1px dashed var(--line);
  border-radius: 10px;
  padding: var(--s1) var(--s2);
  cursor: pointer;
  font-family: var(--font-body);
}

.dskw-meta-chip {
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-faint);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 2px 10px;
}

.dskw-meta-chip.is-ok { color: var(--good); border-color: color-mix(in srgb, var(--good) 40%, transparent); }

.dskw-meta-fields { display: grid; gap: var(--s2); margin-top: var(--s2); }

/* The chat rail. */

.dskw-chatpane {
  display: grid;
  grid-template-rows: auto minmax(200px, 1fr) auto;
  gap: var(--s2);
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--ground-raised);
  padding: var(--s2);
  max-height: calc(100vh - 220px);
  min-height: 420px;
}

.dskw-stepcard {
  border-bottom: 1px solid var(--line);
  padding: var(--s1) var(--s1) var(--s2);
  display: grid;
  gap: 4px;
}

.dskw-stepcard-who {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.dskw-stepcard-what {
  font-family: var(--font-display);
  font-size: var(--t-lead);
  font-weight: 700;
  color: var(--ink);
}

.dskw-feed {
  overflow-y: auto;
  display: grid;
  gap: var(--s2);
  align-content: start;
  padding: 0 var(--s1);
}

.dskw-msg {
  max-width: 92%;
  font-size: var(--t-small);
  line-height: 1.55;
  border-radius: 12px;
  padding: var(--s2);
  white-space: pre-wrap;
  word-break: break-word;
}

.dskw-msg.is-you {
  justify-self: end;
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--ink);
}

.dskw-msg.is-them {
  justify-self: start;
  background: var(--ground-sunk);
  color: var(--ink);
  display: grid;
  gap: 4px;
}

.dskw-msg-who {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.dskw-card {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s2);
  display: grid;
  gap: 4px;
  background: var(--ground-sunk);
}

.dskw-card.is-folded { opacity: 0.65; }

.dskw-card .dsk-result { margin-top: var(--s1); }

.dskw-chatinput {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--s1);
  align-items: end;
  border-top: 1px solid var(--line);
  padding-top: var(--s2);
}

/* ── Ideate (gate B) ───────────────────────────────────────────────────── */

.dskw-ideate { max-width: 640px; display: grid; gap: var(--s2); }

.dskw-ideate-title {
  font-family: var(--font-display);
  font-size: var(--t-title);
  font-weight: 700;
  color: var(--ink);
  margin: var(--s3) 0 0;
}

.dskw-ideate-input { border-top: 0; padding-top: 0; }

/* ── The phone (mobile pass) ───────────────────────────────────────────── */

/* The switch wraps instead of propping the page wide, and the message
   line takes its own row. */
.dsk-viewswitch { flex-wrap: wrap; }

.dsk-viewswitch-msg { flex-basis: 100%; }

/* Wide data grids scroll inside their own box, never the page. */
.dsk-scrollwrap { overflow-x: auto; max-width: 100%; }

.dsk-scrollwrap .dsk-stat-table { min-width: 760px; }

.dsk-scrollwrap .dsk-score-grid { min-width: 560px; }

.dsk-scrollwrap .dsk-cal { min-width: 560px; }

/* Grid children may shrink; intrinsic input widths must not win. */
.dsk-field-pair > *,
.dskw-meta-fields > *,
.dsk-in-form > *,
.dskw-chatinput > * { min-width: 0; }

.dsk-field-pair input,
.dsk-in-form input,
.dsk-in-form textarea { width: 100%; }

@media (max-width: 720px) {
  /* Paired fields stack; a datetime input cannot share 350px. */
  .dsk-field-pair { grid-template-columns: 1fr; }

  /* Editable lines stack their controls under the text. */
  .dsk-line-row { grid-template-columns: 1fr; }

  /* Queue rows fold to two lines. */
  .dsk-queue-row {
    grid-template-columns: auto minmax(0, 1fr);
    grid-auto-flow: dense;
  }

  .dsk-queue-row .dsk-queue-title { grid-column: 1 / -1; }

  /* The chat pane breathes with the page instead of viewport math. */
  .dskw-chatpane { max-height: none; min-height: 320px; }

  .dskw-feed { max-height: 50vh; }

  /* Target and version rows wrap already; give inputs room. */
  .dsk-target-num { max-width: 64px; }

  .dsk-review-field .bench-input { max-width: none; }

  .dsk-chip-input { max-width: none; flex: 1 1 160px; }

  /* The stats list columns are unusable at 390px as a grid; the wrapper
     scrolls them, and the review rows stack. */
  .dsk-review-row { display: grid; }

  .dsk-in-row { grid-template-columns: auto minmax(0, 1fr); }

  .dsk-in-row .dsk-status-chip:last-of-type { grid-column: 2; justify-self: end; }
}

/* ── Stanley pass gate C: slot columns and the insight strip ───────────── */

/* Day columns: the cadence made visible. Held posts are cards, open
   cadence slots are dashed invitations. The wrapper scrolls sideways when
   seven columns cannot fit, so the phone pans a week and holds three days
   whole. */

.dsk-slotcols {
  display: grid;
  grid-template-columns: repeat(var(--dsk-day-count, 7), minmax(0, 1fr));
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
  background: var(--ground-raised);
}

.dsk-scrollwrap .dsk-slotcols { min-width: calc(var(--dsk-day-count, 7) * 110px); }

.dsk-slotcol {
  border-right: 1px solid var(--line);
  padding: var(--s2);
  display: grid;
  gap: var(--s1);
  align-content: start;
  min-height: 180px;
  min-width: 0;
}

.dsk-slotcol:last-child { border-right: 0; }

.dsk-slotcol.is-today { background: color-mix(in srgb, var(--accent) 6%, transparent); }

.dsk-slotcol-head {
  display: flex;
  align-items: baseline;
  gap: var(--s1);
  border-bottom: 1px solid var(--line);
  padding-bottom: var(--s1);
}

.dsk-slotcol-dow {
  font-size: var(--t-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.dsk-slotcol.is-today .dsk-slotcol-dow { color: var(--accent); }

.dsk-slotcol-date { font-size: var(--t-micro); color: var(--ink-soft); }

.dsk-slotcol-quiet { font-size: var(--t-micro); color: var(--ink-faint); }

.dsk-slotcard {
  display: grid;
  gap: 2px;
  background: color-mix(in srgb, var(--accent) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
  border-radius: 6px;
  padding: var(--s1);
  cursor: pointer;
  min-width: 0;
}

.dsk-slotcard.is-done { opacity: 0.55; }

.dsk-slotcard-time { font-size: var(--t-micro); color: var(--ink-faint); }

.dsk-slotcard-title {
  font-size: var(--t-micro);
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dsk-slotcard-status { font-size: var(--t-micro); color: var(--ink-soft); }

.dsk-slotopen {
  font: inherit;
  font-size: var(--t-micro);
  text-align: left;
  color: var(--ink-faint);
  background: none;
  border: 1px dashed var(--line);
  border-radius: 6px;
  padding: var(--s1);
  cursor: pointer;
}

.dsk-slotopen:hover { color: var(--accent); border-color: var(--accent); }

/* The fill picker an open slot summons. */

.dsk-slotpick {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: var(--s3);
  margin-top: var(--s3);
  display: grid;
  gap: var(--s1);
  background: var(--ground-raised);
}

.dsk-slotpick-row {
  font: inherit;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s2);
  text-align: left;
  background: none;
  border: 0;
  border-top: 1px solid var(--line);
  padding: var(--s2) 0;
  cursor: pointer;
  color: var(--ink);
}

.dsk-slotpick-row:hover .dskw-mini-title { color: var(--accent); }

/* The insight strip: four numbers before the chart has any detail. */

.dsk-insight-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: var(--s2);
  margin-bottom: var(--s3);
}

.dsk-insight-card {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ground-raised);
  padding: var(--s2) var(--s3);
  display: grid;
  gap: 2px;
}

.dsk-insight-value {
  font-family: var(--font-display);
  font-size: var(--t-lead);
  color: var(--ink);
}

.dsk-insight-label { font-size: var(--t-micro); color: var(--ink-faint); }

.dsk-bar.is-peak { background: var(--accent); }

/* Four mode buttons cannot share 390px with the title; both rows wrap. */
.dsk-cal-head { flex-wrap: wrap; }

.dsk-cal-nav { flex-wrap: wrap; }

/* ── The 1:1: chat sessions with the head writer ───────────────────────── */

.dsk-oo {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  gap: var(--s3);
  align-items: start;
}

.dsk-oo-rail {
  display: grid;
  gap: var(--s1);
  align-content: start;
}

.dsk-oo-chatrow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: var(--s1);
  align-items: center;
  border-top: 1px solid var(--line);
  padding-top: var(--s1);
}

.dsk-oo-chatrow.is-open .dskw-mini-title { color: var(--accent); }

.dsk-oo-chatopen {
  font: inherit;
  display: grid;
  gap: 1px;
  text-align: left;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  min-width: 0;
  color: var(--ink);
}

.dsk-oo-chatopen .dskw-mini-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dsk-oo-act { font-size: var(--t-micro); padding: 1px 6px; }

.dsk-oo-act.is-armed { color: var(--stop); border-color: var(--stop); }

.dsk-oo-main {
  display: grid;
  gap: var(--s2);
  min-width: 0;
}

.dsk-oo-carried {
  border: 1px dashed var(--line);
  border-radius: 8px;
  padding: var(--s2);
  font-size: var(--t-small);
  color: var(--ink-soft);
  display: grid;
  gap: var(--s1);
}

.dsk-oo-feed {
  max-height: 55vh;
  overflow-y: auto;
  display: grid;
  gap: var(--s2);
  align-content: start;
}

.dsk-oo-msgacts { display: block; margin-top: var(--s1); }

.dsk-oo-todraft { font-size: var(--t-micro); padding: 1px 6px; }

.dsk-oo-long {
  border: 1px solid var(--warn);
  border-radius: 8px;
  padding: var(--s2);
  font-size: var(--t-small);
  color: var(--ink);
  display: flex;
  align-items: center;
  gap: var(--s2);
  flex-wrap: wrap;
}

@media (max-width: 900px) {
  /* The rail stacks above the conversation; the chat list is short and
     the phone reads down. */
  .dsk-oo { grid-template-columns: 1fr; }

  .dsk-oo-feed { max-height: 50vh; }
}

/* ── Promotion: tick the turns, she writes the first draft ─────────────── */

.dsk-oo-selectbar {
  display: flex;
  align-items: center;
  gap: var(--s2);
  flex-wrap: wrap;
}

.dsk-oo-pickrow {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--s2);
  align-items: start;
  cursor: pointer;
}

.dsk-oo-pickrow.is-ticked .dskw-msg { outline: 1px solid var(--accent); }

.dsk-oo-tick {
  margin-top: var(--s1);
  accent-color: var(--accent);
}

.dsk-firstdraft-credit {
  display: block;
  font-size: var(--t-micro);
  letter-spacing: 0.04em;
  color: var(--accent);
}

/* Brief and note lines grow to their text; the height is set by the
   sizing pass in the client, so the scrollbar never appears. */
.dsk-line-text { overflow: hidden; resize: none; }

/* ── Live-phone round: visible failures, a tame datetime, calendar nav ── */

/* A failed call answers in the conversation, where the person is looking,
   never only in a status line scrolled off the top. */
.dskw-msg.is-error {
  border: 1px solid var(--stop);
  color: var(--stop);
}

/* datetime-local carries an intrinsic minimum that beats width: 100% and
   walks off a phone screen; releasing the minimum lets it shrink. */
.dsk-in-form input,
.dsk-field-pair input { min-width: 0; max-width: 100%; }

.dsk-cal-arrow { min-width: 44px; }

/* The plain add on any future day. Quieter than a cadence slot: the
   cadence is the aimed-at rhythm, this is just an open door. */
.dsk-slotadd {
  font: inherit;
  font-size: var(--t-micro);
  text-align: left;
  color: var(--ink-faint);
  background: none;
  border: 0;
  padding: var(--s1);
  cursor: pointer;
}

.dsk-slotadd:hover { color: var(--accent); }

/* ── The writer wears her name on the Write screen ─────────────────────── */

.dskw-chathead {
  display: grid;
  gap: 2px;
  border-bottom: 1px solid var(--line);
  padding-bottom: var(--s2);
}

/* The pane gained a fourth row; the feed keeps the stretch. */
.dskw-chatpane { grid-template-rows: auto auto minmax(200px, 1fr) auto; }

/* The ask box breathes: full width against its button, tall enough that
   the invitation is not clipped mid-word. */
.dskw-chatinput .bench-textarea {
  width: 100%;
  min-height: 58px;
}

/* ── The record, named ─────────────────────────────────────────────────── */

/* The strip is the draft's official record; the tag says so at a glance,
   folded or open, so staff proposals and the record can never be read as
   the same thing. */
.dskw-record-tag {
  font-size: var(--t-micro);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent);
  white-space: nowrap;
}

.dskw-record-hint { margin: 0 0 var(--s2); }

/* Status chips shorten with grace instead of being cut mid-word. */
.dsk-status-chip {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Desktop has the room: the status column takes its natural width. */
@media (min-width: 901px) {
  .dsk-table .dsk-row { grid-template-columns: minmax(0, 1fr) auto 110px 90px; }
}

/* ── People read as people ─────────────────────────────────────────────── */

.dsk-face {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  flex: 0 0 auto;
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent);
  color: var(--ink);
  font-size: 10px;
  letter-spacing: 0.02em;
  vertical-align: middle;
  margin-right: 6px;
}

.dskw-msg-who,
.dskw-stepcard-who { display: inline-flex; align-items: center; }

.dskw-ideate-title { display: flex; align-items: center; gap: var(--s1); }

.dskw-ideate-title .dsk-face { width: 30px; height: 30px; font-size: 12px; }

/* The strip's step map wraps and stays compact. */
.dskw-striprail { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s1); margin-bottom: 0; }

/* ── Stale reads say so ────────────────────────────────────────────────── */

.dskw-card.is-stale { border-left: 2px solid var(--warn); opacity: 0.85; }

.dsk-stale-note {
  display: block;
  font-size: var(--t-micro);
  color: var(--warn);
  margin: var(--s1) 0;
}
