/* Engineering ROI — prescriptive layer. Loaded only by roi.html.
   Reuses codensm.css DARK tokens (--line, --dim, --mint, --sky, --ink,
   --raised, --panel-2). Never hard-code light surfaces here — this page is
   the dark CodeNSM product; light fallbacks render as white-on-white. */

/* ── executive summary strip ──────────────────────────────────────────── */
.roi-exec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.roi-exec-card{background:var(--raised,#161b25);border:1px solid var(--line);
  border-radius:12px;padding:14px 16px}
.roi-exec-card .mono.cap{display:block;font-size:10px;letter-spacing:.12em;
  color:var(--dim);margin-bottom:8px}
.roi-exec-big{display:block;font-family:"Schibsted Grotesk",sans-serif;font-size:30px;
  font-weight:800;line-height:1;color:var(--ink);margin-bottom:8px}
.roi-exec-big span{font-size:12px;font-weight:500;color:var(--dim);margin-left:5px}
.roi-exec-big.red{color:#f1857f}.roi-exec-big.sky{color:var(--sky)}
.roi-exec-card p{margin:0;font-size:12.5px;line-height:1.5;color:var(--soft,#aab3c4)}
@media (max-width:760px){.roi-exec-grid{grid-template-columns:1fr}}

/* ── the reads — as cards, not plaintext ──────────────────────────────── */
.roi-reads{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.roi-read{background:var(--raised,#161b25);border:1px solid var(--line);
  border-left:3px solid var(--mint);border-radius:12px;padding:13px 16px 14px}
.roi-read .mono.cap{display:block;font-size:10.5px;letter-spacing:.1em;
  color:var(--mint);margin-bottom:6px;font-weight:600}
.roi-read p{margin:0;font-size:13.5px;line-height:1.55;color:var(--soft,#aab3c4)}
.roi-read p b{color:var(--ink)}
.roi-read a{color:var(--sky);border-bottom:1px dotted currentColor;text-decoration:none}
.roi-read.read-waste{border-left-color:#f1857f}
.roi-read.read-waste .mono.cap{color:#f1857f}
.roi-read.read-concentration{border-left-color:var(--sky)}
.roi-read.read-concentration .mono.cap{color:var(--sky)}
.roi-read.read-allocation{border-left-color:var(--amber)}
.roi-read.read-allocation .mono.cap{color:var(--amber)}
.roi-read.read-action{border-left-color:var(--mint)}
@media (max-width:760px){.roi-reads{grid-template-columns:1fr}}

/* ── early-warning banner ─────────────────────────────────────────────── */
.roi-alarm{display:flex;gap:12px;align-items:center;flex-wrap:wrap;
  background:#fdecea;border:1px solid #f1857f;border-left:5px solid #d64b43;
  color:#7a2a25;border-radius:10px;padding:12px 16px;margin:0 0 18px;font-size:14px;line-height:1.5}
.roi-alarm-tag{font-family:"JetBrains Mono",monospace;font-size:11px;font-weight:600;
  letter-spacing:.06em;white-space:nowrap;background:#d64b43;color:#fff;padding:3px 9px;border-radius:6px}
.roi-alarm b{color:#7a2a25}

/* ── grade + money frame topbar ───────────────────────────────────────── */
.roi-topbar{display:grid;grid-template-columns:1fr auto;gap:18px 24px;align-items:center}
.roi-grade{display:flex;gap:18px;align-items:center;min-width:0}
.roi-grade-letter{font-family:"Schibsted Grotesk",sans-serif;font-weight:800;font-size:58px;
  line-height:1;width:88px;height:88px;flex:0 0 88px;display:grid;place-items:center;
  border-radius:16px;border:2px solid currentColor}
.roi-grade-letter.g-a{color:#0f9d76;background:#e7f7f0}
.roi-grade-letter.g-b{color:#3a9d5a;background:#eaf6ec}
.roi-grade-letter.g-c{color:#b58a1b;background:#faf3df}
.roi-grade-letter.g-d{color:#c9702a;background:#faefe3}
.roi-grade-letter.g-f{color:#c2453e;background:#fdecea}
.roi-grade-body{min-width:0}
.roi-grade-body p{margin:3px 0;font-size:15px;line-height:1.5;font-weight:600}
.roi-topbar-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.roi-assume{grid-column:1/-1;border-top:1px dashed var(--line,#e2e2ea);padding-top:12px;
  display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.roi-assume[hidden]{display:none}
.roi-assume label{font-size:13px;display:flex;gap:6px;align-items:center;font-weight:600}
.roi-assume input{width:96px;font:inherit;font-size:13px;padding:4px 8px;
  border:1px solid var(--line,#cfd2db);border-radius:7px;font-family:"JetBrains Mono",monospace}

/* ── buttons ──────────────────────────────────────────────────────────── */
/* dark product: --ink is LIGHT (#e7ebf3), so a filled button gets a light
   surface and must use DARK text — color:#fff here was white-on-white */
.roi-btn{font:inherit;font-size:13px;font-weight:600;padding:8px 16px;border-radius:9px;
  border:1px solid var(--ink,#e7ebf3);background:var(--ink,#e7ebf3);color:#0a0c11;cursor:pointer;
  text-decoration:none;display:inline-block;transition:opacity .15s}
.roi-btn:hover{opacity:.86}
.roi-btn.ghost{background:transparent;color:var(--ink,#e7ebf3)}
.roi-btn.sm{padding:4px 11px;font-size:12px}
.roi-btn[aria-pressed="true"]{background:var(--mint,#7ef0c9);border-color:var(--mint,#7ef0c9);color:#04110c}

/* ── money spans (hidden until Show $) ────────────────────────────────── */
.money{font-family:"JetBrains Mono",monospace;color:#0f9d76;font-weight:600}
.money-cell{display:block;font-size:11px;font-weight:500}
.money[hidden]{display:none}
body.show-money .money[hidden]{display:inline}
body.show-money .money-cell{display:block}

/* ── scatter: node group + trajectory marks ───────────────────────────── */
/* shared hover tooltip + visible sprint nodes */
.roi-hovertip{position:fixed;z-index:200;max-width:280px;pointer-events:none;
  font:500 12px/1.45 "JetBrains Mono",monospace;color:var(--ink,#e7ebf3);
  background:#0b0e13;border:1px solid var(--line,rgba(255,255,255,.14));
  border-radius:8px;padding:7px 10px;box-shadow:0 10px 30px -12px #000}
.roi-hovertip[hidden]{display:none}
/* the visible dot is ~2px on a stretched viewBox — an invisible fat sibling
   circle carries the pointer events so hover/focus actually lands */
.sprint-node{fill:var(--mint,#7ef0c9);stroke:#0b0e13;stroke-width:.6;pointer-events:none;
  transition:r .12s}
.sprint-hit{fill:transparent;pointer-events:all;cursor:pointer}
.sprint-node-g{outline:none}
.sprint-node-g:hover .sprint-node,.sprint-node-g:focus .sprint-node{r:2.8}
.author-row{cursor:default}
/* entry points: framework-invoked, not dead — neutral lavender, never red */
.roi-dot.q-entrypoint{fill:var(--lav,#c6b8f2);opacity:.75}
.q-pill.q-entrypoint{color:var(--lav,#c6b8f2);border-color:rgba(198,184,242,.4)}
.roi-node{cursor:pointer;outline:none}
.roi-node .roi-dot{transition:r .12s}
.roi-node:hover .roi-dot,.roi-node:focus .roi-dot{r:2.6}
.roi-node:focus{outline:none}
.roi-node:focus .roi-dot{stroke:#14161c;stroke-width:.5;paint-order:stroke}
.roi-traj{font-size:3px;font-family:sans-serif;pointer-events:none}
.roi-traj.up{fill:#c2453e}
.roi-traj.down{fill:#0f9d76}

/* ── ledger extras ────────────────────────────────────────────────────── */
.roi-ledger .roi-why{cursor:pointer}
.roi-ledger .roi-why:hover{text-decoration:underline;text-decoration-style:dotted}
.roi-traj-cell{text-align:center;font-size:12px}
.roi-traj-cell .up{color:#c2453e}
.roi-traj-cell .down{color:#0f9d76}
.roi-traj-cell .flat{color:var(--dim,#9aa0ad)}
.triage-sel{font:inherit;font-size:12px;padding:3px 6px;border-radius:7px;
  border:1px solid var(--line,rgba(255,255,255,.14));background:var(--raised,#161b25);
  color:var(--ink,#e7ebf3);max-width:150px}
.triage-sel option{background:#11151d;color:#e7ebf3}
.triage-sel.decision-delete{border-color:#f1857f;color:#f6a9a3}
.triage-sel.decision-debt{border-color:#e6c34d;color:#e6c34d}
.triage-sel.decision-refactor{border-color:#7dc0e6;color:#9fd3ef}
.triage-sel.decision-keep{border-color:#7ed6b0;color:#7ed6b0}
.triage-chip{font-family:"JetBrains Mono",monospace;font-size:11px;font-weight:600;
  padding:2px 8px;border-radius:20px;white-space:nowrap}
.triage-chip.decision-delete{background:#fdecea;color:#b73b34}
.triage-chip.decision-debt{background:#fbf5e0;color:#8a6d12}
.triage-chip.decision-refactor{background:#e9f3fa;color:#2b6ea3}
.triage-chip.decision-keep{background:#e7f7f0;color:#0f7d5c}
.triage-saved{animation:triageFlash .9s ease-out}
@keyframes triageFlash{0%{box-shadow:0 0 0 3px #7ed6b088}100%{box-shadow:0 0 0 0 transparent}}

/* ── simulator ────────────────────────────────────────────────────────── */
.sim-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.sim-chip{display:inline-flex;gap:7px;align-items:center;font-size:12.5px;
  border:1px solid var(--line,#e2e2ea);border-radius:20px;padding:5px 12px;cursor:pointer;
  user-select:none;transition:opacity .12s}
.sim-chip input{margin:0}
.sim-chip:has(input:not(:checked)){opacity:.42}
.sim-out{font-size:15px;line-height:1.55;border-left:3px solid var(--mint,#7ef0c9);
  padding:12px 16px;background:var(--raised,#161b25);color:var(--ink,#e7ebf3);
  border-radius:0 10px 10px 0;margin-bottom:14px}
.sim-out b{font-size:19px;color:var(--mint)}
.sim-out .dim{color:var(--dim,#6d7589)}

/* ── why-drawer ───────────────────────────────────────────────────────── */
.roi-drawer[hidden]{display:none}
.roi-drawer{position:fixed;inset:0;z-index:80}
.roi-drawer-scrim{position:absolute;inset:0;background:rgba(10,12,18,.42)}
.roi-drawer-in{position:absolute;top:0;right:0;height:100%;width:min(460px,92vw);
  background:var(--bg,#fff);box-shadow:-14px 0 40px rgba(0,0,0,.22);
  padding:26px 26px 40px;overflow-y:auto;z-index:1;
  transform:translateX(100%);transition:transform .22s ease}
.roi-drawer.open .roi-drawer-in{transform:translateX(0)}
.roi-drawer-x{position:absolute;top:16px;right:18px;border:none;background:none;
  font-size:17px;cursor:pointer;color:var(--dim,#5b616e)}
.roi-drawer h3{margin:2px 0 18px;font-size:17px;word-break:break-word}
.roi-drawer-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.roi-drawer-cols dl{margin:6px 0 0;font-size:13px}
.roi-drawer-cols dl div{display:flex;justify-content:space-between;gap:10px;
  padding:5px 0;border-bottom:1px solid var(--line,#eee)}
.roi-drawer-cols dt{color:var(--dim,#5b616e)}
.roi-drawer-cols dd{margin:0;font-family:"JetBrains Mono",monospace;font-weight:600;text-align:right}
.roi-drawer-enables{font-size:14px;line-height:1.55;margin:6px 0 0}
.roi-fix{margin-top:24px;border-top:1px solid var(--line,#eee);padding-top:16px}
.roi-fix-body{white-space:pre-wrap;font-family:"JetBrains Mono",monospace;font-size:12px;
  line-height:1.5;color:var(--ink,#e7ebf3);background:var(--sunken,#0b0e13);
  border:1px solid var(--line,rgba(255,255,255,.07));
  border-radius:9px;padding:12px;max-height:230px;overflow:auto}
.roi-drawer-enables{color:var(--soft)}
.roi-drawer h3,.roi-drawer-cols dd{color:var(--ink)}
#drawerAuthor{color:var(--soft)}

@media (max-width:760px){
  .roi-topbar{grid-template-columns:1fr}
  .roi-topbar-actions{justify-content:flex-start}
  .roi-grade-letter{font-size:46px;width:70px;height:70px;flex-basis:70px}
  .roi-drawer-cols{grid-template-columns:1fr}
}
/* ── the plan panel ───────────────────────────────────────────────────── */
.roi-plan[hidden]{display:none}
.roi-plan-totals{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.plan-tile{background:var(--raised,#161b25);border:1px solid var(--line);
  border-radius:12px;padding:13px 15px;display:flex;flex-direction:column;gap:5px}
.plan-tile-big{font-family:"Schibsted Grotesk",sans-serif;font-size:26px;font-weight:800;
  line-height:1;color:var(--ink,#e7ebf3)}
.plan-tile-sm{font-size:11.5px;line-height:1.4;color:var(--soft,#aab3c4)}
.plan-tile.good .plan-tile-big{color:var(--mint,#7ef0c9)}
.plan-tile.good .plan-tile-sm b{color:var(--mint,#7ef0c9)}
@media (max-width:900px){.roi-plan-totals{grid-template-columns:repeat(2,1fr)}}

.roi-plan-devs{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px}
@media (max-width:760px){.roi-plan-devs{grid-template-columns:1fr}}
.plan-dev{background:var(--raised,#161b25);border:1px solid var(--line);
  border-radius:12px;padding:12px 15px}
.plan-dev-head{display:flex;justify-content:space-between;align-items:baseline;
  gap:10px;margin-bottom:9px}
.plan-dev-name{font-weight:700;font-size:14px;color:var(--ink,#e7ebf3)}
.plan-dev-pts{font-size:12px;color:var(--mint,#7ef0c9);font-weight:600}
.plan-chips{display:flex;flex-wrap:wrap;gap:7px}
.plan-chip{font-size:11.5px;line-height:1.3;padding:4px 9px;border-radius:8px;
  border:1px solid var(--line,rgba(255,255,255,.14));color:var(--soft,#aab3c4);
  background:var(--sunken,#0b0e13)}
.plan-chip b{color:var(--ink,#e7ebf3)}
.plan-chip.decision-delete{border-color:rgba(241,133,127,.5)}
.plan-chip.decision-debt{border-color:rgba(230,195,77,.5)}
.plan-chip.decision-refactor{border-color:rgba(125,192,230,.5)}
.roi-plan-cta{display:flex;gap:14px;align-items:center;flex-wrap:wrap}

/* ── confirm modal (dark, focus-trapped) ──────────────────────────────── */
.roi-modal[hidden]{display:none}
.roi-modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px}
.roi-modal-scrim{position:absolute;inset:0;background:rgba(6,8,12,.62);
  opacity:0;transition:opacity .2s}
.roi-modal.open .roi-modal-scrim{opacity:1}
.roi-modal-card{position:relative;z-index:1;width:min(560px,100%);max-height:86vh;overflow-y:auto;
  background:var(--raised,#161b25);border:1px solid var(--line,rgba(255,255,255,.14));
  border-radius:16px;padding:26px 26px 22px;box-shadow:0 24px 60px -20px #000;
  transform:translateY(10px) scale(.98);opacity:0;transition:transform .2s,opacity .2s}
.roi-modal.open .roi-modal-card{transform:none;opacity:1}
.roi-modal-x{position:absolute;top:14px;right:16px;border:none;background:none;
  font-size:16px;cursor:pointer;color:var(--dim,#9aa0ad)}
.roi-modal-card h3{margin:0 0 6px;font-size:18px;color:var(--ink,#e7ebf3)}
.roi-modal-card>.dim{margin:0 0 16px}
.roi-modal-body{display:flex;flex-direction:column;gap:12px;margin-bottom:18px}
.tm-dev{border:1px solid var(--line,rgba(255,255,255,.1));border-radius:11px;padding:11px 14px;
  background:var(--sunken,#0b0e13)}
.tm-dev-head{display:flex;justify-content:space-between;font-weight:700;font-size:13.5px;
  color:var(--ink,#e7ebf3);margin-bottom:7px}
.tm-dev-head .mono{color:var(--mint,#7ef0c9);font-weight:600}
.tm-dev ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}
.tm-dev li{font-size:12.5px;line-height:1.45;color:var(--soft,#aab3c4)}
.tm-dev li .dim{color:var(--dim,#6d7589)}
.roi-modal-actions{display:flex;gap:10px;justify-content:flex-end}
.roi-modal-done{margin-top:14px;padding:12px 14px;border-radius:10px;font-size:13.5px;
  line-height:1.5;background:var(--sunken,#0b0e13);border-left:3px solid var(--mint,#7ef0c9);
  color:var(--soft,#aab3c4)}
.roi-modal-done[hidden]{display:none}
.roi-modal-done b{color:var(--mint,#7ef0c9)}
.roi-modal-done a{color:var(--sky,#7dd7ff);border-bottom:1px dotted currentColor;text-decoration:none}

@media (prefers-reduced-motion:reduce){
  .roi-drawer-in{transition:none}
  .roi-node .roi-dot{transition:none}
  .triage-saved{animation:none}
  .roi-modal-scrim,.roi-modal-card{transition:none}
}
