:root{
  --ground:#E9EDF1; --surface:#FFFFFF; --surface-2:#F3F6F9; --surface-3:#E4EAF0;
  --ink:#0E1620; --ink-2:#4B5A66; --ink-3:#77858F;
  --rule:#CBD4DD; --rule-soft:#DFE5EB;
  --accent:#B3441E; --accent-soft:rgba(179,68,30,.10); --accent-line:rgba(179,68,30,.45);
  --s-new:#6B7A87;      --s-new-bg:rgba(107,122,135,.13);
  --s-researching:#2E5F8A; --s-researching-bg:rgba(46,95,138,.13);
  --s-contacted:#A8690A;--s-contacted-bg:rgba(168,105,10,.15);
  --s-replied:#0F6E80;  --s-replied-bg:rgba(15,110,128,.14);
  --s-meeting:#0F5A49;  --s-meeting-bg:rgba(15,90,73,.15);
  --s-won:#0B7A3E;      --s-won-bg:rgba(11,122,62,.16);
  --s-dead:#8A939B;     --s-dead-bg:rgba(138,147,155,.12);
  --danger:#9A2C1B;
  --shadow:0 1px 2px rgba(14,22,32,.05), 0 6px 20px -12px rgba(14,22,32,.30);
  --radius:3px;
}
@media (prefers-color-scheme: dark){
  :root{
    --ground:#0E141A; --surface:#171F27; --surface-2:#131B22; --surface-3:#1F2932;
    --ink:#E4EBF2; --ink-2:#9DABB7; --ink-3:#7A8894;
    --rule:#2A353F; --rule-soft:#212A33;
    --accent:#E8825A; --accent-soft:rgba(232,130,90,.13); --accent-line:rgba(232,130,90,.45);
    --s-new:#93A1AD;      --s-new-bg:rgba(147,161,173,.14);
    --s-researching:#6FA8D6; --s-researching-bg:rgba(111,168,214,.14);
    --s-contacted:#E0A63C;--s-contacted-bg:rgba(224,166,60,.14);
    --s-replied:#4FB8C9;  --s-replied-bg:rgba(79,184,201,.14);
    --s-meeting:#4FBFA3;  --s-meeting-bg:rgba(79,191,163,.15);
    --s-won:#5FD08A;      --s-won-bg:rgba(95,208,138,.16);
    --s-dead:#6E7A85;     --s-dead-bg:rgba(110,122,133,.12);
    --danger:#E8836F;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 26px -14px rgba(0,0,0,.75);
  }
}
*{box-sizing:border-box}
body{background:var(--ground);color:var(--ink);margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
button{font-family:inherit;font-size:inherit;cursor:pointer}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ---------- login ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--rule);
  box-shadow:var(--shadow);padding:32px 30px}
.login-card h1{font-size:20px;font-weight:800;letter-spacing:-.02em;margin:0 0 4px}
.login-card .sub{font-size:12px;color:var(--ink-3);margin-bottom:24px;
  font-family:ui-monospace,Menlo,monospace;letter-spacing:.04em}
.login-card label{display:block;font-size:10.5px;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ink-3);margin:0 0 5px}
.login-card input{width:100%;padding:9px 11px;border:1px solid var(--rule);
  border-radius:var(--radius);background:var(--surface-2);color:var(--ink);
  font-family:inherit;font-size:14px;margin-bottom:16px}
.err{background:rgba(154,44,27,.12);border:1px solid var(--danger);color:var(--danger);
  padding:9px 12px;border-radius:var(--radius);font-size:13px;margin-bottom:18px}

/* ---------- shell ---------- */
.wrap{max-width:1240px;margin:0 auto;padding:0 20px 80px}
header.top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;
  flex-wrap:wrap;padding:24px 0 16px;border-bottom:2px solid var(--ink)}
.brand h1{font-size:21px;font-weight:800;letter-spacing:-.02em;margin:0 0 3px}
.brand .sub{font-size:11.5px;color:var(--ink-3);font-family:ui-monospace,Menlo,monospace;
  letter-spacing:.04em}
.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

.btn{border:1px solid var(--rule);background:var(--surface);color:var(--ink);
  padding:7px 13px;border-radius:var(--radius);font-weight:600;font-size:13px;
  display:inline-flex;align-items:center;gap:6px;white-space:nowrap;text-decoration:none}
.btn:hover{background:var(--surface-3)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.ghost{border-color:transparent;background:transparent;color:var(--ink-2)}
.btn.ghost:hover{background:var(--surface-3);color:var(--ink)}

/* ---------- pipeline ---------- */
.pipeline{display:flex;gap:1px;background:var(--rule);border:1px solid var(--rule);
  margin:18px 0 0;overflow-x:auto}
.pipe{background:var(--surface);padding:12px 16px;min-width:110px;flex:1;text-align:left;
  border:0;border-bottom:3px solid transparent}
.pipe:hover{background:var(--surface-3)}
.pipe[aria-pressed="true"]{background:var(--surface-3);border-bottom-color:var(--accent)}
.pipe .n{display:block;font-size:23px;font-weight:800;letter-spacing:-.03em;line-height:1.1;
  font-variant-numeric:tabular-nums}
.pipe .l{display:block;font-size:10px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);margin-top:4px}
.pipe.st-new .n{color:var(--s-new)} .pipe.st-researching .n{color:var(--s-researching)}
.pipe.st-contacted .n{color:var(--s-contacted)} .pipe.st-replied .n{color:var(--s-replied)}
.pipe.st-meeting .n{color:var(--s-meeting)} .pipe.st-won .n{color:var(--s-won)}
.pipe.st-dead .n{color:var(--s-dead)}

/* ---------- controls ---------- */
.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:16px 0 12px}
.controls input[type=search],.controls select{padding:8px 11px;border:1px solid var(--rule);
  border-radius:var(--radius);background:var(--surface);color:var(--ink);
  font-family:inherit;font-size:13px}
.controls input[type=search]{flex:1;min-width:200px}
.seg{display:inline-flex;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}
.seg button{border:0;background:var(--surface);padding:8px 13px;font-size:12.5px;
  font-weight:600;color:var(--ink-2);border-right:1px solid var(--rule)}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:var(--accent);color:#fff}

/* ---------- table ---------- */
.board{border:1px solid var(--rule);background:var(--surface);box-shadow:var(--shadow)}
.thead,.row{display:grid;
  grid-template-columns:minmax(165px,2fr) 128px 104px 92px minmax(135px,1.3fr) 250px 62px;
  align-items:center}
.thead{background:var(--surface-2);border-bottom:1px solid var(--rule);
  position:sticky;top:0;z-index:5}
.thead > div{padding:10px 12px;font-size:10px;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ink-3);white-space:nowrap}
.row{border-bottom:1px solid var(--rule-soft)}
.row:last-child{border-bottom:0}
.row:hover{background:var(--surface-2)}
.row.stale{box-shadow:inset 3px 0 0 var(--accent)}
.row.st-dead{opacity:.5}
.row > div{padding:11px 12px;min-width:0}
.co{font-weight:700;font-size:14px;overflow-wrap:anywhere}
.flags{display:flex;gap:5px;margin-top:4px;flex-wrap:wrap}
.tag{font-family:ui-monospace,Menlo,monospace;font-size:9.5px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;padding:2px 5px;border:1px solid currentColor;
  border-radius:2px;white-space:nowrap}
.tag.sig-first-timer{color:var(--s-meeting);background:var(--s-meeting-bg)}
.tag.sig-upsize{color:var(--s-contacted);background:var(--s-contacted-bg)}
.tag.sig-orphan{color:var(--accent);background:var(--accent-soft)}
.tag.sig-rebrand{color:var(--s-contacted);background:var(--s-contacted-bg)}
.tag.warn{color:var(--danger);background:rgba(154,44,27,.12)}
.booth{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;font-weight:600}
.size{font-size:12px;color:var(--ink-2)}
.contact{font-size:12.5px;overflow:hidden}
.contact .nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.contact .em{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.contact .missing{color:var(--ink-3);font-style:italic}
.stat-cell{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.chip{font-size:11px;font-weight:700;letter-spacing:.04em;padding:4px 9px;border-radius:2px;
  border:1px solid currentColor;white-space:nowrap}
.chip.st-new{color:var(--s-new);background:var(--s-new-bg)}
.chip.st-researching{color:var(--s-researching);background:var(--s-researching-bg)}
.chip.st-contacted{color:var(--s-contacted);background:var(--s-contacted-bg)}
.chip.st-replied{color:var(--s-replied);background:var(--s-replied-bg)}
.chip.st-meeting{color:var(--s-meeting);background:var(--s-meeting-bg)}
.chip.st-won{color:var(--s-won);background:var(--s-won-bg)}
.chip.st-dead{color:var(--s-dead);background:var(--s-dead-bg)}
.advance{border:1px solid var(--rule);background:var(--surface);border-radius:2px;
  padding:4px 8px;font-size:11px;font-weight:700;color:var(--ink-2);white-space:nowrap}
.advance:hover{background:var(--accent);border-color:var(--accent);color:#fff}
.rowbtn{border:1px solid transparent;background:transparent;color:var(--ink-3);
  padding:4px 7px;border-radius:2px;font-size:15px;line-height:1}
.rowbtn:hover{background:var(--surface-3);color:var(--ink)}
.age{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:var(--ink-3);
  text-align:right;white-space:nowrap}
.age.hot{color:var(--accent);font-weight:600}

/* ---------- drawer ---------- */
.drawer-bg{position:fixed;inset:0;background:rgba(14,22,32,.42);z-index:40;
  opacity:0;pointer-events:none;transition:opacity .15s}
.drawer-bg.open{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--surface);
  border-left:1px solid var(--rule);z-index:41;transform:translateX(100%);
  transition:transform .18s ease;overflow-y:auto;padding:22px 24px 40px}
.drawer.open{transform:translateX(0)}
@media (prefers-reduced-motion:reduce){.drawer,.drawer-bg{transition:none}}
.drawer h2{font-size:19px;font-weight:800;letter-spacing:-.02em;margin:0 0 4px}
.drawer .dsub{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--ink-3);
  margin-bottom:18px}
.fgroup{margin-bottom:14px}
.fgroup label{display:block;font-size:10px;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}
.fgroup input,.fgroup textarea,.fgroup select{width:100%;padding:8px 10px;
  border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface-2);
  color:var(--ink);font-family:inherit;font-size:13px}
.fgroup textarea{min-height:80px;resize:vertical;line-height:1.5}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.drawer-foot{display:flex;gap:8px;margin-top:20px;padding-top:16px;
  border-top:1px solid var(--rule-soft);flex-wrap:wrap}

/* ---------- modal ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(14,22,32,.5);z-index:50;
  opacity:0;pointer-events:none;transition:opacity .15s}
.modal-bg.open{opacity:1;pointer-events:auto}
.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-48%);
  width:min(680px,calc(100% - 32px));max-height:86vh;overflow-y:auto;z-index:51;
  background:var(--surface);border:1px solid var(--rule);box-shadow:var(--shadow);
  padding:24px 26px 22px;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s}
.modal.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}
.modal h2{font-size:19px;font-weight:800;letter-spacing:-.02em;margin:0 0 8px}
.mnote{font-size:13px;color:var(--ink-2);margin:0 0 10px;line-height:1.5}
.modal textarea{width:100%;min-height:190px;resize:vertical;padding:11px 12px;
  border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface-2);
  color:var(--ink);font-family:ui-monospace,Menlo,monospace;font-size:12.5px;line-height:1.6}
.mrow{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--ink-3);
  margin-top:8px;min-height:18px}
.mrow.ok{color:var(--s-meeting)} .mrow.bad{color:var(--danger)}

/* ---------- states ---------- */
.empty{padding:56px 28px;text-align:center;border:1px dashed var(--rule);background:var(--surface)}
.empty h3{font-size:17px;font-weight:700;margin:0 0 8px}
.empty p{color:var(--ink-2);max-width:46ch;margin:0 auto 18px;font-size:13.5px}
.empty .row-btns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.foot{margin-top:24px;font-size:11.5px;color:var(--ink-3);font-family:ui-monospace,Menlo,monospace;
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:60;
  background:var(--ink);color:var(--ground);padding:10px 18px;border-radius:var(--radius);
  font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s}
.toast.show{opacity:1}

@media (max-width:860px){
  .thead{display:none}
  .row{grid-template-columns:1fr;padding:12px 4px;border-bottom:1px solid var(--rule)}
  .row > div{padding:3px 12px}
  .row .age{text-align:left}
  .board{box-shadow:none}
  .pipe{min-width:94px;padding:10px 12px}
  .pipe .n{font-size:20px}
}


/* ---- show runway -------------------------------------------------------
   The raw day count is meaningless on its own, so it is colour-banded by what
   is still sellable: a custom build needs ~4-6 months from award to shipping. */
.showcell{font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis}
.runway{display:flex;flex-direction:column;gap:2px;line-height:1.25}
.rw{font-size:12.5px;font-weight:650;font-variant-numeric:tabular-nums;
    padding:1px 6px;border-radius:4px;align-self:flex-start;cursor:help}
.rw-date{font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.rw-none{color:var(--ink-3)}
.rw-build  {background:rgba(179,68,30,.14); color:var(--accent)}
.rw-closing{background:rgba(201,150,42,.16); color:#8a6410}
.rw-early  {background:var(--surface-2);     color:var(--ink-2)}
.rw-late   {background:var(--surface-2);     color:var(--ink-3);text-decoration:line-through}
.rw-past   {background:var(--surface-2);     color:var(--ink-3);text-decoration:line-through}

/* ---- the timing filter ---- */
.windows{display:flex;flex-wrap:wrap;gap:6px;align-items:center;
  padding:0 0 12px;margin-top:-4px}
.win{font:inherit;font-size:12px;font-weight:600;cursor:pointer;
  padding:5px 10px;border-radius:999px;border:1px solid var(--rule);
  background:var(--surface);color:var(--ink-2);transition:background .12s,border-color .12s}
.win:hover{border-color:var(--ink-3)}
.win[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.win.wempty{opacity:.45}
.win .wn{display:inline-block;margin-left:5px;font-variant-numeric:tabular-nums;opacity:.75}
.win.w-build[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.winhelp{font-size:11.5px;color:var(--ink-3);margin-left:4px;flex:1 1 260px;min-width:0}
.win:focus-visible,.pipe:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

@media (max-width:860px){
  .windows{padding-bottom:10px}
  .winhelp{flex-basis:100%;margin-left:0;margin-top:2px}
  .runway{flex-direction:row;align-items:baseline;gap:6px}
  .runway:before{content:"Show opens";font-size:10px;letter-spacing:.09em;
    text-transform:uppercase;color:var(--ink-3);min-width:78px}
  .showcell:before{content:"Show";font-size:10px;letter-spacing:.09em;
    text-transform:uppercase;color:var(--ink-3);min-width:78px;display:inline-block}
}
@media (prefers-color-scheme:dark){
  .rw-closing{background:rgba(201,150,42,.2);color:#e0b955}
}
