/* AI Discovery — inherits the OrbUp token set verbatim so the module reads as
   part of the product rather than as a bolted-on tool. */
:root{
  --bg:#0a0a0e; --bg2:#101016; --card:#16161d; --card2:#1c1c24;
  --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.15);
  --ink:#f5f5f7; --mut:#a6a9b4; --faint:#7f838f;
  --blue:#4263eb; --pink:#e64980; --orange:#ff922b; --violet:#8b5cf6;
  --grad:linear-gradient(120deg,#5b7bff 0%,#e64980 52%,#ff922b 100%);
  --grad-soft:linear-gradient(135deg,rgba(91,123,255,.16),rgba(230,73,128,.14));
  --good:#3ad07f; --good-soft:rgba(58,208,127,.14);
  --warn:#e6b45a; --warn-soft:rgba(230,180,90,.14);
  --bad:#f0645a;  --bad-soft:rgba(240,100,90,.14);
  --pill:#f4f5f7; --pill-ink:#101015;
  --shadow:0 4px 14px rgba(0,0,0,.45),0 20px 50px rgba(0,0,0,.4);
  --r:14px; --r-lg:22px;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:1120px;margin:0 auto;padding:0 22px}
.narrow{max-width:560px}

/* nav */
.nav{position:sticky;top:0;z-index:40;background:rgba(10,10,14,.86);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;gap:18px;height:58px}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:-.01em;text-decoration:none}
.brand .orb{width:20px;height:20px;border-radius:50%;background:var(--grad);
  box-shadow:0 0 16px rgba(91,123,255,.5)}
.brand small{font-weight:500;color:var(--mut);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.nav nav{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.nav nav a{padding:7px 12px;border-radius:9px;text-decoration:none;color:var(--mut);font-size:13.5px;font-weight:500}
.nav nav a:hover{color:var(--ink);background:var(--card)}
.nav nav a.on{color:var(--ink);background:var(--card2)}

/* type */
h1{font-size:clamp(30px,4.6vw,48px);line-height:1.1;letter-spacing:-.025em;margin:0 0 14px;font-weight:700}
h2{font-size:23px;letter-spacing:-.015em;margin:0 0 10px;font-weight:650}
h3{font-size:16px;margin:0 0 6px;font-weight:650}
p{margin:0 0 14px}
.lede{font-size:18px;color:var(--mut);max-width:62ch}
.mut{color:var(--mut)} .faint{color:var(--faint);font-size:13px}
.mono{font-family:var(--mono);font-size:12.5px}
section{padding:44px 0;border-top:1px solid var(--line)}
section:first-of-type{border-top:0}

/* cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.card+.card{margin-top:14px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}

/* buttons + fields */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 18px;border-radius:11px;border:1px solid transparent;cursor:pointer;
  font:600 14px/1 var(--sans);text-decoration:none;transition:.14s}
.btn.primary{background:var(--pill);color:var(--pill-ink)}
.btn.primary:hover{transform:translateY(-1px)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line2)}
.btn.ghost:hover{background:var(--card2)}
.btn.sm{padding:7px 12px;font-size:12.5px;border-radius:9px}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
label{display:block;font-size:11.5px;color:var(--mut);text-transform:uppercase;
  letter-spacing:.07em;margin:14px 0 5px;font-weight:600}
input,select,textarea{width:100%;background:var(--bg2);border:1px solid var(--line2);
  color:var(--ink);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue)}
input[type=checkbox]{width:auto}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.checks{display:grid;gap:7px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-top:6px}
.chk{display:flex;gap:9px;align-items:flex-start;background:var(--bg2);border:1px solid var(--line);
  border-radius:10px;padding:9px 11px;cursor:pointer;font-size:13.5px}
.chk input{margin:3px 0 0}
.chk.on{border-color:var(--blue);background:rgba(66,99,235,.1)}

/* pills */
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;
  font-size:11.5px;font-weight:600;letter-spacing:.02em;border:1px solid var(--line2);color:var(--mut)}
.pill.green{background:var(--good-soft);color:var(--good);border-color:transparent}
.pill.yellow{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.pill.red{background:var(--bad-soft);color:var(--bad);border-color:transparent}
.pill.blue{background:rgba(66,99,235,.16);color:#8ea8ff;border-color:transparent}

/* stepper */
.stepper{display:flex;gap:0;flex-wrap:wrap;margin:0 0 22px;border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;background:var(--card)}
.step{flex:1 1 150px;padding:12px 14px;border-right:1px solid var(--line);min-width:0}
.step:last-child{border-right:0}
.step .n{font-size:11px;color:var(--faint);letter-spacing:.08em;text-transform:uppercase;font-weight:600}
.step .t{font-size:13.5px;font-weight:600;margin-top:3px}
.step.done{background:rgba(58,208,127,.07)}
.step.done .t::after{content:" ✓";color:var(--good)}
.step.now{background:var(--grad-soft)}

/* tables */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;font-size:11px;letter-spacing:.07em;text-transform:uppercase;
  color:var(--faint);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line)}
td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
.scroll{overflow-x:auto}

/* findings */
.finding{display:flex;gap:13px;padding:15px 0;border-bottom:1px solid var(--line)}
.finding:last-child{border-bottom:0}
.finding .sev{flex:0 0 auto;width:8px;height:8px;border-radius:50%;margin-top:8px}
.sev.CRITICAL{background:var(--bad);box-shadow:0 0 10px var(--bad)}
.sev.WARNING{background:var(--warn)}
.sev.OPPORTUNITY{background:var(--blue)}
.finding h3{margin:0 0 4px;font-size:14.5px}
.finding p{margin:0;font-size:13.5px;color:var(--mut)}
.finding .impact{font-family:var(--mono);font-size:12.5px;color:var(--good);margin-top:6px}

/* diagram */
.diagram{overflow-x:auto;padding:6px 0 2px;-webkit-overflow-scrolling:touch}
.diagram svg{display:block;min-width:820px}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--mut)}
.legend b{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}

/* misc */
.banner{background:var(--grad-soft);border:1px solid var(--line2);border-radius:var(--r);
  padding:16px 18px;margin-bottom:18px}
.note{background:var(--bg2);border-left:3px solid var(--blue);border-radius:0 10px 10px 0;
  padding:12px 15px;font-size:13.5px;color:var(--mut);margin:14px 0}
.warnbox{background:var(--warn-soft);border:1px solid rgba(230,180,90,.3);border-radius:10px;
  padding:13px 15px;font-size:13.5px;margin:14px 0}
.keybox{font-family:var(--mono);font-size:12.5px;background:#07070b;border:1px solid var(--line2);
  border-radius:10px;padding:13px 15px;word-break:break-all;color:#9fd3ff;margin:10px 0}
.msg{padding:11px 14px;border-radius:10px;font-size:13.5px;margin:12px 0;display:none}
.msg.on{display:block}
.msg.ok{background:var(--good-soft);color:var(--good)}
.msg.err{background:var(--bad-soft);color:#ffb0aa}
.hide{display:none!important}
.spin{display:inline-block;width:13px;height:13px;border:2px solid var(--line2);
  border-top-color:var(--ink);border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
footer{border-top:1px solid var(--line);padding:26px 0;color:var(--faint);font-size:12.5px}
@media(max-width:640px){
  .wrap{padding:0 16px}
  /* 44px minimum on every tappable thing. A 36px button is the house default
     that reads fine with a mouse and is a miss with a thumb. */
  .nav nav a{padding:11px 10px;font-size:12.5px;min-height:44px;display:inline-flex;align-items:center}
  .btn{min-height:44px}
  .btn.sm{min-height:44px;padding:11px 14px}
  select,input:not([type=checkbox]),textarea{min-height:44px}
  .chk{min-height:44px;align-items:center}
  /* The checkbox itself stays small; its label carries the target. */
  .chk input[type=checkbox]{width:20px;height:20px;margin:0}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ── PRINT / SAVE AS PDF ──────────────────────────────────────────────────
   The report has to leave the browser. A board pack is a PDF, a CFO forwards
   an attachment, and a link that needs a login is not a document. This is the
   same print-to-PDF path the rest of the estate uses rather than a server-side
   renderer: no Chrome binary on Render, and a feature that works on a laptop
   and 500s in production is worse than no feature.

   Everything inverts to ink on white — a dark report prints as a black page or,
   worse, as pale grey text on white when the browser drops backgrounds. */
@media print {
  :root{
    --bg:#fff; --bg2:#fff; --card:#fff; --card2:#fafafa;
    --ink:#101014; --mut:#3f434d; --faint:#636773;
    --line:#d7dae0; --line2:#c2c6cf;
    --good:#0f7a44; --warn:#8a5d00; --bad:#b3261e; --blue:#1f3fb0; --violet:#5b32c9;
    color-scheme:light;
  }
  @page{ margin:14mm; }
  body{background:#fff;color:#101014;font-size:10.5pt}
  .nav,footer,.btn,#rmActions,.stepper,#capstats,#redaction,
  #processes,#answers,#findings,#runEval,#evalNote,#evalMsg,
  .msg,.legend{display:none!important}
  .card{border:1px solid #d7dae0;box-shadow:none;break-inside:avoid;page-break-inside:avoid}
  section{border-top:1px solid #d7dae0;padding:14px 0}
  h1{font-size:20pt}h2{font-size:14pt}h3{font-size:11pt}
  .banner{background:#f4f6fa;border:1px solid #d7dae0}
  .note{background:#f6f7f9;color:#3f434d}
  .warnbox{background:#fdf6e6;border:1px solid #e6d3a3}
  .pill{border:1px solid #c2c6cf;color:#3f434d;background:#fff}
  .pill.green{background:#e7f5ec;color:#0f7a44}
  .pill.yellow{background:#fdf3e0;color:#8a5d00}
  .pill.red{background:#fbe9e7;color:#b3261e}
  .pill.blue{background:#eaeefb;color:#1f3fb0}
  /* The horizontal roadmap has to shrink to ~44% to fit a portrait page, and
     at that size its scope lines and cost bands are unreadable — the single
     most important element of the report becoming the weakest thing on it.
     Paper gets the stacked variant instead: same nodes, same JSON, same
     numbers, full column width. */
  .diagram{display:none!important}
  .diagram-print{display:block!important;overflow:visible;break-inside:avoid;page-break-inside:avoid}
  .diagram-print svg{width:100%;height:auto;max-width:100%}
  a{color:#101014;text-decoration:none}
  .print-only{display:block!important}
  .grid.g3{grid-template-columns:repeat(3,1fr)}
  .grid.g2{grid-template-columns:repeat(2,1fr)}
}
.print-only{display:none}
.diagram-print{display:none}
