/* toxpred.ai, shared styling.
   The palette and the type stack are the family's, carried over from
   reversescreen.ai so the sites read as one body of work. Three way theming:
   the system preference, plus an explicit data-theme override. */
:root{
  --bg:#fbfbfa; --panel:#ffffff; --ink:#16191d; --dim:#5b6270; --line:#e2e5ea;
  --accent:#1f5f8b; --accent-soft:#e8f0f6; --good:#1d6f42; --code:#f4f5f7;
  --red:#a3312a; --red-soft:#fbeceb; --amber:#8a6100; --amber-soft:#fdf4e3;
  --green:#1d6f42; --green-soft:#e9f5ee; --none:#5b6270; --none-soft:#f0f1f3;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#12151a; --panel:#191d24; --ink:#e8eaed; --dim:#98a1b0; --line:#2a3038;
    --accent:#6fb3e0; --accent-soft:#17262f; --good:#63c48d; --code:#1e232b;
    --red:#e8908a; --red-soft:#2b1b1a; --amber:#e0b862; --amber-soft:#2a2418;
    --green:#63c48d; --green-soft:#16261d; --none:#98a1b0; --none-soft:#20242b;
  }
}
:root[data-theme="dark"]{
  --bg:#12151a; --panel:#191d24; --ink:#e8eaed; --dim:#98a1b0; --line:#2a3038;
  --accent:#6fb3e0; --accent-soft:#17262f; --good:#63c48d; --code:#1e232b;
  --red:#e8908a; --red-soft:#2b1b1a; --amber:#e0b862; --amber-soft:#2a2418;
  --green:#63c48d; --green-soft:#16261d; --none:#98a1b0; --none-soft:#20242b;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.wrap{max-width:860px;margin:0 auto;padding:0 24px}
.wrap.wide{max-width:1140px}
a{color:var(--accent)}
code,.mono,.smiles{font-family:ui-monospace,Menlo,monospace;font-size:14px;
  word-break:break-all}

header.top{position:sticky;top:0;z-index:40;background:var(--panel);
  border-bottom:1px solid var(--line)}
header.top .wrap{display:flex;align-items:center;gap:18px;height:58px}
.brand{font-weight:700;font-size:19px;text-decoration:none;color:var(--ink)}
.brand span{color:var(--accent)}
header nav{margin-left:auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
header nav a{text-decoration:none;font-size:15px;color:var(--dim)}
header nav a:hover,header nav a[aria-current="page"]{color:var(--ink)}
button.primary{background:var(--accent);color:#fff;border:0;
  border-radius:8px;padding:8px 14px;font-size:15px;cursor:pointer}
/* Talk to us sits in the header on every page. It is a way out, not the thing
   a visitor came to do, so it reads as quietly as the nav links beside it. */
button.talk{background:transparent;color:var(--dim);border:1px solid var(--line);
  border-radius:8px;padding:6px 12px;font-size:14px;cursor:pointer}
button.talk:hover{color:var(--ink)}
button.ghost{background:transparent;color:var(--accent);border:1px solid var(--line);
  border-radius:8px;padding:7px 13px;font-size:14px;cursor:pointer}
@media (max-width:760px){header.top .wrap{height:auto;flex-wrap:wrap;padding-top:10px;
  padding-bottom:10px}}

h1{font-size:34px;line-height:1.2;margin:34px 0 10px}
h2{font-size:24px;margin:34px 0 8px;border-bottom:1px solid var(--line);padding-bottom:6px}
h3{font-size:19px;margin:22px 0 6px}
p.lede{font-size:19px;color:var(--dim)}
.small{font-size:14px;color:var(--dim)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:18px 20px;margin:18px 0}
figure{margin:20px 0}
figure img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:10px;
  background:#fff}
figcaption{font-size:14px;color:var(--dim);margin-top:8px}

table{border-collapse:collapse;width:100%;font-size:15px;margin:14px 0}
th,td{border-bottom:1px solid var(--line);padding:7px 10px;text-align:left;
  vertical-align:top}
th{font-weight:600;color:var(--dim);font-size:13.5px;text-transform:none}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.scroll{overflow-x:auto}

.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;
  margin:18px 0}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.tile .n{font-size:27px;font-weight:700;font-variant-numeric:tabular-nums}
.tile .l{font-size:13.5px;color:var(--dim);margin-top:2px}

/* the calls */
.light{display:inline-block;border-radius:999px;padding:3px 12px;font-weight:700;
  font-size:14px;letter-spacing:.02em}
.light.RED{background:var(--red-soft);color:var(--red)}
.light.AMBER{background:var(--amber-soft);color:var(--amber)}
.light.GREEN{background:var(--green-soft);color:var(--green)}
.light.TOXIC{background:var(--red-soft);color:var(--red)}
.light.clear{background:var(--green-soft);color:var(--green)}
.light.none{background:var(--none-soft);color:var(--none)}

details.drill{border:1px solid var(--line);border-radius:10px;padding:0;margin:10px 0;
  background:var(--panel)}
details.drill>summary{cursor:pointer;padding:10px 14px;font-size:15px;
  list-style:none;display:flex;align-items:center;gap:8px}
details.drill>summary::-webkit-details-marker{display:none}
details.drill>summary:before{content:"\25B8";color:var(--dim);font-size:12px}
details.drill[open]>summary:before{content:"\25BE"}
details.drill .body{padding:0 14px 14px}

.nb{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.nb .card{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel)}
.nb .card svg{max-width:100%;height:auto}
.nb .card .sim{font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}

.editor{border:1px solid var(--line);border-radius:12px;overflow:hidden;height:460px;
  background:var(--panel)}
.editor iframe{width:100%;height:100%;border:0;display:block}
input[type=text],textarea,select{width:100%;padding:9px 11px;border:1px solid var(--line);
  border-radius:8px;background:var(--panel);color:var(--ink);font-size:15px}
input[type=range]{width:100%}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.note{font-size:14px;color:var(--dim);min-height:22px}

footer{border-top:1px solid var(--line);margin-top:48px;padding:24px 0 48px;
  font-size:14px;color:var(--dim)}
footer a{color:var(--accent)}

dialog.talkbox{border:1px solid var(--line);border-radius:14px;background:var(--panel);
  color:var(--ink);max-width:520px;width:92%;padding:20px}
dialog.talkbox::backdrop{background:rgba(0,0,0,.4)}
dialog.talkbox label{display:block;font-size:14px;color:var(--dim);margin:10px 0 4px}

/* The result, as prominent on the page as it is in the email. A call is the
   thing a visitor came for, so it gets a card rather than a table cell. */
.verdict{border-radius:14px;padding:20px 22px;margin:18px 0;border:2px solid}
.verdict .big{font-size:34px;font-weight:700;letter-spacing:.01em}
.verdict .sub{font-size:15px;margin-top:6px}
.verdict.RED{background:var(--red-soft);border-color:var(--red);color:var(--red)}
.verdict.AMBER{background:var(--amber-soft);border-color:var(--amber);color:var(--amber)}
.verdict.GREEN{background:var(--green-soft);border-color:var(--green);color:var(--green)}
.verdict.none{background:var(--none-soft);border-color:var(--line);color:var(--none)}
.verdict .sub{color:var(--ink);opacity:.85}

/* Endpoint bars, the shape of Figure 2B: one row per endpoint, the call as a
   colored block and the agreement as a bar, so a reader sees the pattern
   before reading any number. */
.bars{margin:14px 0}
.bars .row2{display:grid;grid-template-columns:200px 92px 1fr 62px;gap:10px;
  align-items:center;padding:4px 0;border-bottom:1px solid var(--line)}
.bars .nm{font-size:14px}
.bars .track{background:var(--code);border-radius:6px;height:14px;overflow:hidden}
.bars .fill{height:100%;border-radius:6px}
.bars .fill.TOXIC{background:var(--red)}
.bars .fill.clear{background:var(--green)}
.bars .fill.none{background:var(--line)}
.bars .vv{font-size:13px;color:var(--dim);text-align:right;
  font-variant-numeric:tabular-nums}
@media (max-width:700px){
  .bars .row2{grid-template-columns:130px 78px 1fr 52px;gap:6px}
  .bars .nm{font-size:13px}
}

/* Work in progress. A score takes seconds, and silence reads as a dead
   button, so the bar moves and the buttons cannot be pressed again. */
.prog{height:6px;background:var(--code);border-radius:999px;overflow:hidden;
  margin:10px 0;display:none}
.prog.on{display:block}
.prog i{display:block;height:100%;width:0%;border-radius:999px;
  background:var(--accent);transition:width .25s linear}
button:disabled{opacity:.55;cursor:not-allowed}

/* Research use only. Present on every page and at the foot of every result,
   stated once and plainly rather than as a wall of terms. */
.ruo{border-top:1px solid var(--line);padding-top:12px;margin-top:14px;
  font-size:13.5px;color:var(--dim);max-width:70ch}
.ruo strong{color:var(--ink)}
#out .ruo{border:1px solid var(--line);border-radius:10px;padding:12px 14px;
  background:var(--panel);margin-top:18px}

/* A depiction is served at a fixed pixel size but the card is fluid, so it
   must be told to fit. Without this the structure overruns its box. */
.nb .card img{max-width:100%;height:auto;display:block;margin:0 auto}
.nb .card .meta{font-size:13px;color:var(--dim);margin-top:4px}
.nb .card .meta b{color:var(--ink)}
