/* Tesrune desk. Light workstation, three columns.
   It flips dark only when it wants you to act: a pending proposal or a failed unwind. */

.desk-body {
  height: 100vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: background-color 0.4s ease, color 0.4s ease;
}

/* Armed theme: the desk has an action waiting. */
body.desk-armed {
  --canvas: #0E1116;
  --surface: #161b22;
  --band: #1b212b;
  --border: #2a323d;
  --border-strong: #39424f;
  --text: #E6E9EF;
  --text-2: #9aa4b2;
  --text-3: #6b7482;
  --display: #ffffff;
  --secondary: #1f2630;
  --secondary-text: #E6E9EF;
  --interactive: #5AA9FF;
}
body.desk-armed .chip-hedgeable { background: rgba(0, 192, 122, 0.16); color: #4fd6a0; }
body.desk-armed .chip-unlisted { background: #232b36; color: #9aa4b2; }
body.desk-armed .pill-open { background: #232b36; color: #9aa4b2; }
body.desk-armed .pill-prebell { background: rgba(90, 169, 255, 0.16); color: #7cbaff; }
body.desk-armed .up { color: #3DD68C; }
body.desk-armed .down { color: #FF6B6B; }

.desk-header, .desk-col, .col-head, .desk-venue, .book-row, .record {
  transition: background-color 0.4s ease, border-color 0.4s ease, color 0.4s ease;
}

/* Brand (desk does not load landing.css, so define it here) */
.brand { display: inline-flex; align-items: center; gap: var(--s-12); text-decoration: none; }
.brand:hover { text-decoration: none; }
.brand-mark { width: 26px; height: 26px; flex-shrink: 0; border-radius: 6px; }
.brand-text { display: flex; flex-direction: column; line-height: 1; }
.brand-word { font-family: var(--font-display); font-weight: var(--w-bold); font-size: 15px; letter-spacing: 0.04em; color: var(--text); }

/* Header */
.desk-header {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-24);
  padding: var(--s-8) var(--s-24);
  background: var(--canvas);
  border-bottom: 1px solid var(--border);
}
.desk-status { display: flex; align-items: center; gap: var(--s-16); flex-wrap: wrap; }
.desk-status .stat { display: flex; flex-direction: column; gap: 2px; }
.desk-status .stat .k { font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: var(--track-meta); text-transform: uppercase; color: var(--text-3); }
.desk-status .stat .v { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: var(--text-body-sm); color: var(--display); }
.desk-venue {
  font-family: var(--font-mono);
  font-size: var(--text-meta);
  letter-spacing: var(--track-meta);
  text-transform: uppercase;
  color: var(--text-2);
  background: var(--surface);
  border: 1px solid var(--border);
  padding: 5px 12px;
  border-radius: var(--r-pill);
}
.desk-back { font-size: var(--text-body-sm); font-weight: var(--w-semibold); color: var(--text-2); }
.desk-back:hover { color: var(--text); text-decoration: none; }

/* Replay banner */
.replay-banner {
  flex-shrink: 0;
  display: none;
  align-items: center;
  gap: var(--s-12);
  padding: var(--s-8) var(--s-24);
  background: var(--replay-fill);
  border-bottom: 1px solid var(--replay-border);
  color: var(--replay-text);
  font-family: var(--font-mono);
  font-size: var(--text-body-sm);
}
.replay-banner.show { display: flex; }

/* Three columns */
.desk-main {
  flex: 1;
  display: grid;
  grid-template-columns: 320px 1fr 360px;
  min-height: 0;
}
.desk-col { display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
.desk-col + .desk-col { border-left: 1px solid var(--border); }
.col-head {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-12);
  padding: var(--s-16) var(--s-20);
  border-bottom: 1px solid var(--border);
  font-family: var(--font-mono);
  font-size: var(--text-meta);
  letter-spacing: var(--track-meta);
  text-transform: uppercase;
  color: var(--text-3);
  background: var(--canvas);
}
.col-scroll { flex: 1; overflow-y: auto; padding: var(--s-16) var(--s-20); }

.mini-btn {
  font-family: var(--font-body);
  font-size: var(--text-body-sm);
  font-weight: var(--w-semibold);
  color: var(--interactive);
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  text-transform: none;
  letter-spacing: 0;
}
.mini-btn:hover { text-decoration: underline; }
.icon-btn { font-size: 18px; line-height: 1; }
.btn-sm { padding: 10px 16px; font-size: var(--text-body-sm); }

/* Desk conversation + composer */
.desk-conv { flex: 1; overflow-y: auto; padding: var(--s-16) var(--s-20); display: flex; flex-direction: column; gap: var(--s-12); }
.desk-dock { flex-shrink: 0; border-top: 1px solid var(--border); background: var(--canvas); padding: var(--s-12) var(--s-16); }
.composer-actions { display: flex; flex-wrap: wrap; gap: var(--s-8); margin-bottom: var(--s-8); }
.chip-btn, .chip-select {
  font-family: var(--font-body);
  font-size: var(--text-body-sm);
  font-weight: var(--w-medium);
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-pill);
  padding: 6px 12px;
  cursor: pointer;
}
.chip-btn:hover { border-color: var(--border-strong); }
.chip-btn:disabled, .chip-btn[disabled] { opacity: 0.45; cursor: not-allowed; }
.chip-btn:disabled:hover { border-color: var(--border); }
.composer-form { display: flex; gap: var(--s-8); }
.composer-input {
  flex: 1;
  font-family: var(--font-body);
  font-size: var(--text-body-md);
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-input);
  padding: 10px 14px;
}
.composer-input::placeholder { color: var(--text-3); }

/* Thread messages */
.msg { font-size: var(--text-body-md); line-height: 1.5; }
.msg-user { color: var(--display); font-family: var(--font-mono); font-size: var(--text-body-sm); }
.msg-user::before { content: '> '; color: var(--text-3); }
.msg-desk { color: var(--text-2); }
.msg-note { color: var(--text-3); font-size: var(--text-body-sm); }
.digest-name { font-family: var(--font-display); font-weight: var(--w-bold); color: var(--display); margin-top: var(--s-8); }
.digest-item { border-left: 2px solid var(--border); padding-left: var(--s-12); margin-top: var(--s-8); }
.digest-item .h { color: var(--display); font-size: var(--text-body-sm); }
.digest-item .m { font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: var(--track-meta); text-transform: uppercase; color: var(--text-3); margin-top: 2px; }

/* Proposal + decline cards */
.card {
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  background: var(--surface);
  padding: var(--s-16);
  margin: var(--s-12) var(--s-16) 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-8);
}
.card.armed { border-color: var(--accent); }
.card-head { display: flex; align-items: center; justify-content: space-between; gap: var(--s-8); }
.card-title { font-family: var(--font-display); font-weight: var(--w-bold); font-size: var(--text-body-lg); color: var(--display); }
.card-line { display: flex; justify-content: space-between; gap: var(--s-12); font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: var(--text-body-sm); }
.card-line .k { color: var(--text-2); }
.card-line .v { color: var(--display); text-align: right; }
.card-reason { color: var(--text-2); font-size: var(--text-body-sm); }
.checks { display: flex; flex-wrap: wrap; gap: 6px; }
.check {
  font-family: var(--font-mono);
  font-size: var(--text-meta);
  letter-spacing: 0.03em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: var(--r-pill);
  background: #E9F7F0;
  color: #067a53;
}
.check.clipped { background: #FDF1D8; color: #8A6410; }
body.desk-armed .check { background: rgba(0, 192, 122, 0.16); color: #4fd6a0; }
body.desk-armed .check.clipped { background: rgba(245, 185, 66, 0.18); color: var(--accent); }
.card-actions { display: flex; gap: var(--s-8); margin-top: var(--s-4); }
.card-actions .btn { flex: 1; }
.decline-card { border-left: 3px solid var(--pnl-down); }

/* Empty states */
.empty { color: var(--text-2); font-size: var(--text-body-sm); line-height: 1.6; }
.empty strong { color: var(--display); font-weight: var(--w-semibold); }

/* Book rows */
.book-row { padding: var(--s-16) 0; }
.book-row + .book-row { border-top: 1px solid var(--border); }
.book-row-top { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-12); }
.book-ticker { font-family: var(--font-display); font-weight: var(--w-bold); font-size: var(--text-body-lg); color: var(--display); }
.book-qty { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: var(--text-body-md); color: var(--display); }
.book-meta { display: flex; align-items: center; gap: var(--s-8); margin-top: 6px; }
.book-sym { font-family: var(--font-mono); font-size: var(--text-body-sm); color: var(--text-2); }
.book-line { display: flex; justify-content: space-between; margin-top: 6px; font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: var(--text-body-sm); color: var(--text-2); }
.book-line .v { color: var(--display); }
.chip {
  font-family: var(--font-mono);
  font-size: var(--text-meta);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 3px 9px;
  border-radius: var(--r-pill);
}
.chip-hedgeable { background: #E9F7F0; color: #067a53; }
.chip-unlisted { background: var(--open-fill); color: var(--text-2); }
.chip-declined { background: var(--open-fill); color: var(--text-2); }
body.desk-armed .chip-declined { background: #232b36; color: #9aa4b2; }
.card-declined { border-left: 3px solid var(--border-strong); }

/* Live feed */
.feed-sec { margin-top: var(--s-24); border-top: 1px solid var(--border); padding-top: var(--s-16); }
.feed-title { font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: var(--track-meta); text-transform: uppercase; color: var(--text-3); margin-bottom: var(--s-8); }
.feed-item { padding: var(--s-8) 0; border-left: 2px solid var(--border); padding-left: var(--s-12); margin-bottom: var(--s-8); }
.feed-meta { display: flex; gap: var(--s-8); align-items: center; flex-wrap: wrap; }
.feed-src { font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-3); }
.feed-title-line { font-size: var(--text-body-sm); color: var(--display); margin-top: 3px; line-height: 1.4; }
.feed-verdict { font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: 0.03em; text-transform: uppercase; padding: 2px 7px; border-radius: var(--r-pill); background: var(--open-fill); color: var(--text-2); }
.feed-verdict.material { background: rgba(245, 185, 66, 0.18); color: #8A6410; }
body.desk-armed .feed-verdict.material { background: rgba(245, 185, 66, 0.2); color: var(--accent); }

/* Scorecard */
.scorecard { border: 1px solid var(--border); border-radius: var(--r-card); background: var(--surface); padding: var(--s-12) var(--s-16); margin-bottom: var(--s-16); }
.scorecard-title { font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: var(--track-meta); text-transform: uppercase; color: var(--text-3); margin-bottom: var(--s-8); }
.scorecard-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-8) var(--s-16); }
.sc-cell { display: flex; flex-direction: column; gap: 2px; }
.sc-k { font-size: 11px; color: var(--text-2); }
.sc-v { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: var(--text-body-md); color: var(--display); }

/* Cycles + declines */
.section-sep { padding: var(--s-16) var(--s-20) var(--s-8); border-top: 1px solid var(--border); }
.record { padding: var(--s-12) 0; }
.record + .record { border-top: 1px solid var(--border); }
.record-line { display: flex; justify-content: space-between; gap: var(--s-12); align-items: baseline; }
.record-k { font-family: var(--font-mono); font-size: var(--text-body-sm); color: var(--text-2); }
.record-v { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: var(--text-body-sm); color: var(--display); text-align: right; word-break: break-all; }
.record-rule { font-family: var(--font-mono); font-size: var(--text-body-sm); color: var(--display); }
.record-note { font-size: var(--text-body-sm); color: var(--text-2); margin-top: 4px; }
.up { color: var(--pnl-up); }
.down { color: var(--pnl-down); }

/* Guided empty state */
.guide { border: 1px solid var(--border); border-radius: var(--r-card); background: var(--surface); padding: var(--s-20) var(--s-24); }
.guide-lead { font-family: var(--font-display); font-weight: var(--w-display); font-size: var(--text-body-lg); color: var(--display); }
.guide-paths { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-16); margin-top: var(--s-16); }
.guide-path { display: flex; flex-direction: column; align-items: flex-start; gap: var(--s-8); padding: var(--s-16); border: 1px solid var(--border); border-radius: var(--r-card); background: var(--canvas); }
.guide-step { font-family: var(--font-mono); font-size: var(--text-meta); font-weight: var(--w-bold); letter-spacing: var(--track-meta); color: var(--accent); }
.guide-title { font-family: var(--font-display); font-weight: var(--w-display); font-size: var(--text-body-md); color: var(--display); }
.guide-text { font-size: var(--text-body-sm); color: var(--text-2); line-height: 1.5; flex: 1; }
.guide-path .btn { margin-top: var(--s-4); }
.guide-foot { margin-top: var(--s-16); font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: var(--track-meta); text-transform: uppercase; color: var(--text-3); }
@media (max-width: 560px) { .guide-paths { grid-template-columns: 1fr; } }

/* Alerts link (chip styled as a link) */
.chip-link { text-decoration: none; color: var(--text); }
.chip-link:hover { text-decoration: none; border-color: var(--border-strong); }
.guide-link { color: var(--interactive); font-weight: var(--w-semibold); text-decoration: none; }
.guide-link:hover { text-decoration: underline; }

/* Replay control group */
.replay-controls { display: inline-flex; align-items: center; gap: var(--s-8); padding: 4px 8px 4px 12px; border: 1px solid var(--border); border-radius: var(--r-pill); background: var(--surface); }
.replay-controls-label { font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: var(--track-meta); text-transform: uppercase; color: var(--text-3); }

/* Proposal confirmation banner */
.card-confirm-req { margin-top: var(--s-8); padding: var(--s-8) var(--s-12); border-radius: var(--r-input); background: rgba(245, 185, 66, 0.14); color: #8A6410; font-family: var(--font-mono); font-size: var(--text-meta); letter-spacing: 0.02em; text-transform: uppercase; }
body.desk-armed .card-confirm-req { background: rgba(245, 185, 66, 0.18); color: var(--accent); }

/* Book example */
.book-example { margin-top: var(--s-12); padding: var(--s-12); border: 1px dashed var(--border); border-radius: var(--r-input); background: var(--surface); font-family: var(--font-mono); font-size: var(--text-body-sm); color: var(--text-2); line-height: 1.6; white-space: pre; }

@media (max-width: 980px) {
  .desk-body { height: auto; min-height: 100vh; overflow: visible; }
  .desk-header { flex-wrap: wrap; gap: var(--s-12); padding: var(--s-12) var(--s-16); }
  .desk-main { grid-template-columns: 1fr; }
  .desk-col + .desk-col { border-left: 0; border-top: 1px solid var(--border); }
  .desk-col { overflow: visible; }
  .col-scroll { overflow: visible; }
  .desk-conv { overflow: visible; min-height: 46vh; }
}
@media (max-width: 560px) {
  .desk-header { padding: var(--s-8) var(--s-12); gap: var(--s-8); }
  .desk-status { width: 100%; gap: var(--s-12); }
  .desk-status .stat .v { font-size: var(--text-meta); }
  .desk-back { margin-left: auto; }
  .col-head, .col-scroll { padding-left: var(--s-16); padding-right: var(--s-16); }
  .desk-dock { padding-left: var(--s-12); padding-right: var(--s-12); }
  .card { margin-left: var(--s-12); margin-right: var(--s-12); }
  .card-actions { flex-wrap: wrap; }
  .card-actions .btn { flex: 1 1 130px; }
  .scorecard-grid { grid-template-columns: 1fr 1fr; }
  .composer-form { flex-direction: column; }
  .composer-form .btn { width: 100%; }
  .replay-controls { display: flex; flex-wrap: wrap; width: 100%; }
  .replay-controls .chip-select { flex: 1 1 140px; min-width: 0; }
}
