/* ---------------------------------------------------------------------------
   desk.css - Quote Desk, Phase 1.

   The look is lifted from docs/quote-desk/desk-mock.html, which Chris approved
   on 2026-10-20 ("layout fine"): dark top bar, white cards on a warm grey
   field, uppercase letter-spaced section labels, tabular numerals on every
   money column, status pills.

   px units only, no rem. No framework, no build step.
   --------------------------------------------------------------------------- */
:root{
  --ink:#1b1b1b; --mute:#6a6a6a; --line:#dcdcd8; --bg:#f3f3f0;
  --panel:#fff; --accent:#0f5132; --accent-soft:#e8f0eb;
  --warn:#8a5000; --new:#1d4ed8; --bad:#8a1c1c;
}
*{box-sizing:border-box}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font:14px/1.5 "Helvetica Neue",Helvetica,Arial,sans-serif;
}
a{color:var(--accent)}
.wrap{max-width:1500px;margin:0 auto;padding:18px}

/* ---- top bar ---- */
.bar{
  display:flex;align-items:center;gap:14px;
  background:#1b1b1b;color:#fff;padding:12px 18px;border-radius:4px;margin-bottom:16px;
}
.bar h1{margin:0;font-size:17px;letter-spacing:.04em;font-weight:600}
.bar h1 a{color:#fff;text-decoration:none}
.bar .who{margin-left:auto;font-size:12.5px;color:#bdbdbd}

h2.sec{
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);
  margin:0 0 8px;font-weight:700;
}

/* ---- cards and tables ---- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:4px}
.list{margin-bottom:18px;overflow:hidden}
table.q{width:100%;border-collapse:collapse;font-size:13.5px}
table.q th{
  text-align:left;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--mute);padding:10px 12px;border-bottom:1px solid var(--line);font-weight:700;
  background:#fafaf8;
}
table.q td{padding:11px 12px;border-bottom:1px solid var(--line)}
table.q tr:last-child td{border-bottom:0}
table.q tbody tr{cursor:pointer}
table.q tbody tr:hover{background:var(--accent-soft)}
.ref{font-weight:700;font-variant-numeric:tabular-nums}
.ref a{text-decoration:none}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.listfoot{padding:9px 12px;font-size:12.5px;color:var(--mute);background:#fafaf8}

/* ---- status pills ---- */
.pill{
  display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;padding:3px 8px;border-radius:2px;
  background:#eee;color:#555;
}
.pill.new,.pill.pending{background:#e4ebff;color:var(--new)}
.pill.draft{background:#f0f0ec;color:var(--mute)}
.pill.sent{background:#fff2d9;color:var(--warn)}
.pill.accepted{background:var(--accent-soft);color:var(--accent)}
.pill.declined,.pill.expired,.pill.notification_failed{background:#fbe6e6;color:var(--bad)}
.est{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);display:block}

/* ---- filter row ---- */
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:12px}
.filters label{display:block;font-size:11px;color:var(--mute);margin-bottom:3px;letter-spacing:.04em}
input[type=text],input[type=search],select{
  padding:7px 9px;border:1px solid #c6c6c2;border-radius:3px;
  font:inherit;background:#fff;color:inherit;
}
input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}
button{
  font:inherit;cursor:pointer;border-radius:3px;padding:8px 16px;
  border:1px solid #bbb;background:#fff;color:var(--ink);
}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}

/* ---- detail ---- */
.desk{display:flex;gap:18px;align-items:flex-start}
.left{flex:1 1 56%;min-width:0}
.right{flex:1 1 44%;min-width:0}
.block{padding:14px 16px;border-bottom:1px solid var(--line)}
.block:last-child{border-bottom:0}
.block h3{margin:0 0 10px;font-size:14px}
.block h3 small{font-weight:400;color:var(--mute);margin-left:8px}
.kv{display:flex;flex-wrap:wrap;gap:10px 18px;margin:0}
.kv div{flex:1 1 180px;min-width:0}
.kv dt,.kv .k{font-size:11px;color:var(--mute);letter-spacing:.04em;margin-bottom:2px}
.kv dd,.kv .v{margin:0;font-weight:600;overflow-wrap:anywhere}
.sizes{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.sz{min-width:58px;border:1px solid var(--line);background:#fafaf8;border-radius:3px;padding:5px 7px;text-align:center}
.sz .k{font-size:10.5px;color:var(--mute)}
.sz .v{font-weight:700;font-variant-numeric:tabular-nums}
.hint{font-size:12px;color:var(--mute);margin:6px 0 0}
.strike{color:var(--mute);text-decoration:line-through}

table.tt{width:100%;border-collapse:collapse;font-size:14px}
table.tt td{padding:5px 0}
table.tt td.k{color:var(--mute)}
table.tt td.v{text-align:right;font-variant-numeric:tabular-nums}
table.tt tr.grand td{border-top:2px solid #1b1b1b;padding-top:9px;font-size:18px;font-weight:700}
.totals{background:#fafaf8}

.events{list-style:none;margin:0;padding:0;font-size:12.5px}
.events li{padding:6px 0;border-top:1px solid var(--line)}
.events li:first-child{border-top:0}
.events .when{color:var(--mute)}

details.raw{margin-top:10px;font-size:12.5px}
details.raw summary{cursor:pointer;color:var(--accent)}
details.raw pre{
  background:#fafaf8;border:1px solid var(--line);border-radius:3px;padding:10px;
  overflow:auto;max-height:420px;font-size:11.5px;line-height:1.5;
}

.banner{
  background:#fff6dd;border:1px solid #e6cf90;color:#5c4400;
  padding:9px 14px;border-radius:4px;font-size:12.5px;margin-bottom:14px;
}
.banner.bad{background:#fbe6e6;border-color:#e0a8a8;color:#6b1414}
.loading{padding:22px 16px;color:var(--mute)}
.docfoot{font-size:11.5px;color:var(--mute);margin:18px 0 0;line-height:1.6}

@media (max-width:1100px){
  .desk{flex-direction:column}
  .right{width:100%}
}
