/* ─────────────────────────────────────────────────────────────────────
   Workshop site.

   COLOUR: the scales below are Radix Colors (MIT, radix-ui.com/colors),
   copied as literal values — no dependency, no build step. Steps follow
   Radix's own semantics: 1-2 backgrounds, 3 component background,
   6 borders/separators, 9 solid accent, 11 low-contrast text,
   12 high-contrast text. Steps 11/12 are contrast-guaranteed (APCA) on a
   step-2 background, which is why text is never hand-picked here.

   Neutral is `sand` (warm grey). The ONLY saturated colour in the whole
   interface is model identity: `indigo` = as shipped, `orange` = modified.
   Blue/orange rather than green/red on purpose — it carries no verdict,
   and it stays distinguishable for the ~8% of men with red-green colour
   blindness, which green/red would not.
   ───────────────────────────────────────────────────────────────────── */
:root{
  --paper:#f9f9f8; --card:#fdfdfc; --line:#dad9d6; --muted:#63635e; --ink:#21201c;
  --before:#3a5bc7; --before-acc:#3e63dd; --before-soft:#edf2fe;
  --after:#cc4e00;  --after-acc:#f76b15;  --after-soft:#ffefd6;
  --ok:#30a46c; --warn:#e5484d; --warn-text:#ce2c31;
  --mono:ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  --r:10px; --shadow:0 1px 2px rgba(33,32,28,.05),0 1px 1px rgba(33,32,28,.03);
}
@media (prefers-color-scheme:dark){
  :root{
    --paper:#111110; --card:#191918; --line:#3b3a37; --muted:#b5b3ad; --ink:#eeeeec;
    --before:#9eb1ff; --before-acc:#3e63dd; --before-soft:#182449;
    --after:#ffa057;  --after-acc:#f76b15;  --after-soft:#331e0b;
    --ok:#30a46c; --warn:#e5484d; --warn-text:#ff9592;
    --shadow:none;
  }
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font:16px/1.6 var(--sans);
  -webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}
.wrap{max-width:1040px;margin:0 auto;padding:0 20px 80px}
.hide{display:none!important}

/* ── header ─────────────────────────────────────────────────────── */
header.top{border-bottom:1px solid var(--line);background:var(--card);position:sticky;top:0;z-index:30}
header.top .inner{max-width:1040px;margin:0 auto;padding:11px 20px;display:flex;gap:16px;
  align-items:center;flex-wrap:wrap}
.brand{margin-right:auto;font-size:14.5px;font-weight:620;letter-spacing:-.011em;line-height:1.25}
.brand small{display:block;font-weight:400;color:var(--muted);font-size:11.5px;letter-spacing:.01em;margin-top:1px}
.tabs{display:flex;gap:2px;background:var(--paper);padding:3px;border-radius:8px;border:1px solid var(--line)}
.tabs button{appearance:none;border:0;background:transparent;color:var(--muted);font:inherit;
  font-size:13.5px;font-weight:560;padding:6px 14px;border-radius:6px;cursor:pointer;
  transition:background .12s,color .12s}
.tabs button:hover{color:var(--ink)}
.tabs button[aria-selected="true"]{background:var(--ink);color:var(--paper)}
.status{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px;
  font-family:var(--mono);letter-spacing:.02em}
.dot{width:6px;height:6px;border-radius:50%;background:var(--muted);flex:none}
.dot.live{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent)}
.dot.down{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb,var(--warn) 22%,transparent)}

/* ── type ───────────────────────────────────────────────────────── */
h1{font-size:clamp(23px,3.4vw,30px);letter-spacing:-.025em;line-height:1.15;margin:34px 0 10px;font-weight:650}
h2{font-size:15px;letter-spacing:-.005em;margin:34px 0 12px;font-weight:620}
p.lede{color:var(--muted);margin:0 0 26px;max-width:60ch;font-size:16px}
.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);font-weight:500}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow)}

/* ── model identity (the one coloured thing) ────────────────────── */
.m0{--mc:var(--before);--mc-acc:var(--before-acc);--mc-soft:var(--before-soft)}
.m1{--mc:var(--after); --mc-acc:var(--after-acc); --mc-soft:var(--after-soft)}

/* the before/after switch */
.seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--card)}
.seg button{appearance:none;border:0;border-right:1px solid var(--line);background:transparent;
  color:var(--muted);font:inherit;font-size:13.5px;font-weight:560;padding:9px 15px;cursor:pointer;
  display:flex;align-items:center;gap:8px;transition:background .12s,color .12s}
.seg button:last-child{border-right:0}
.seg button::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--mc-acc);
  opacity:.45;flex:none;transition:opacity .12s}
.seg button:hover{color:var(--ink)}
.seg button[aria-pressed="true"]{background:var(--mc-soft);color:var(--mc);font-weight:620}
.seg button[aria-pressed="true"]::before{opacity:1}

/* ── chat ───────────────────────────────────────────────────────── */
.modelbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:20px}
#log{min-height:60px;display:flex;flex-direction:column;gap:16px;margin-bottom:8px}
.msg{max-width:min(90%,68ch);white-space:pre-wrap;overflow-wrap:anywhere;font-size:15.5px;line-height:1.62}
.msg.user{align-self:flex-end;background:var(--line);color:var(--ink);padding:11px 15px;
  border-radius:var(--r) var(--r) 3px var(--r)}
.msg.bot{align-self:flex-start;background:var(--card);border:1px solid var(--line);
  border-left:3px solid var(--mc-acc,var(--line));padding:13px 16px;border-radius:3px var(--r) var(--r) 3px;
  box-shadow:var(--shadow)}
.msg .who{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.07em;
  text-transform:uppercase;margin-bottom:7px;color:var(--mc,var(--muted));font-weight:600}
.msg.user .who{color:var(--muted)}

/* the model switch — a rail, deliberately NOT a message bubble */
.switchmark{display:flex;align-items:center;gap:12px;margin:4px 0;color:var(--muted);
  font-size:12px;align-self:stretch}
.switchmark::before,.switchmark::after{content:"";height:1px;background:var(--line);flex:1}
.switchmark .txt{font-family:var(--mono);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;
  white-space:nowrap;display:flex;align-items:center;gap:8px}
.switchmark .txt b{color:var(--mc);font-weight:620}
.switchmark .again{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--muted);
  font:inherit;font-size:11px;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;
  padding:3px 9px;border-radius:999px;cursor:pointer}
.switchmark .again:hover{border-color:var(--mc);color:var(--mc)}

.composer{display:flex;gap:9px;align-items:flex-end;position:sticky;bottom:0;
  background:linear-gradient(to bottom,transparent,var(--paper) 22%);padding:16px 0 14px;z-index:10}
textarea,input[type=text],input[type=password]{width:100%;font:inherit;font-size:15.5px;color:var(--ink);
  background:var(--card);border:1px solid var(--line);border-radius:9px;padding:11px 13px;resize:vertical;
  box-shadow:var(--shadow)}
textarea:focus,input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px var(--line)}
button.go{appearance:none;border:0;background:var(--ink);color:var(--paper);font:inherit;font-weight:600;
  font-size:14.5px;padding:12px 20px;border-radius:9px;cursor:pointer;flex:none;transition:opacity .12s}
button.go:hover{opacity:.87}
button.go[disabled]{opacity:.4;cursor:default}
button.ghost{appearance:none;background:var(--card);border:1px solid var(--line);color:var(--ink);font:inherit;
  font-size:13.5px;padding:9px 14px;border-radius:8px;cursor:pointer;transition:border-color .12s}
button.ghost:hover{border-color:var(--ink)}

/* ── eval ───────────────────────────────────────────────────────── */
.prompt-tools{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.chip{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--muted);
  font:inherit;font-size:12.5px;padding:5px 11px;border-radius:999px;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;transition:border-color .12s,color .12s}
.chip:hover{border-color:var(--ink);color:var(--ink)}
.chip .n{font-family:var(--mono);font-size:10.5px;opacity:.65;font-variant-numeric:tabular-nums}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:560}
.chip[aria-pressed="true"] .n{opacity:.7}
select{font:inherit;font-size:14px;padding:9px 11px;border-radius:8px;border:1px solid var(--line);
  background:var(--card);color:var(--ink)}
.plist{display:grid;gap:8px;margin-bottom:18px}
@media (min-width:820px){.plist{grid-template-columns:1fr 1fr}}
.pitem{text-align:left;font:inherit;font-size:14px;background:var(--card);border:1px solid var(--line);
  border-radius:9px;padding:11px 13px;cursor:pointer;color:var(--ink);line-height:1.5;
  transition:border-color .12s}
.pitem:hover{border-color:var(--ink)}
.pitem .tag{font-family:var(--mono);font-size:10px;color:var(--muted);display:block;margin-bottom:4px;
  letter-spacing:.07em;text-transform:uppercase}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}
@media (max-width:760px){.cols{grid-template-columns:1fr}}
.col{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--mc-acc,var(--line));
  border-radius:3px 3px var(--r) var(--r);padding:15px;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.col h3{margin:0 0 11px;font-size:11px;font-family:var(--mono);letter-spacing:.07em;text-transform:uppercase;
  font-weight:620;color:var(--mc)}
.out{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14.5px;min-height:90px;flex:1;line-height:1.62}
.out code,.msg code{font-family:var(--mono);font-size:.9em;background:var(--line);padding:1px 5px;border-radius:4px}
.out strong,.msg strong{font-weight:640}
.marks{display:flex;gap:7px;margin-top:14px;flex-wrap:wrap;padding-top:13px;border-top:1px solid var(--line)}
.marks button{appearance:none;border:1px solid var(--line);background:transparent;color:var(--muted);
  font:inherit;font-size:12.5px;padding:6px 12px;border-radius:999px;cursor:pointer;transition:all .12s}
.marks button:hover{border-color:var(--ink);color:var(--ink)}
.marks button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:560}
.marks button.helped[aria-pressed="true"]{background:var(--ok);border-color:var(--ok);color:#fff}
.marks button.refused[aria-pressed="true"]{background:var(--warn);border-color:var(--warn);color:#fff}
.tally{display:flex;gap:22px;flex-wrap:wrap;font-size:13px;color:var(--muted);
  margin:20px 0;padding:15px 17px;background:var(--card);border:1px solid var(--line);border-radius:var(--r)}
.tally b{color:var(--ink);font-weight:650;font-variant-numeric:tabular-nums}
.tally .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;
  display:block;margin-bottom:3px}
.tally .k.m0{color:var(--before)} .tally .k.m1{color:var(--after)}
.note{font-size:13px;color:var(--muted);max-width:64ch}
.err{color:var(--warn-text);font-size:13px;margin-top:10px;font-family:var(--mono);overflow-wrap:anywhere}
footer{margin-top:52px;padding-top:22px;border-top:1px solid var(--line);color:var(--muted);
  font-size:13px;max-width:68ch;line-height:1.65}
.spin{display:inline-block;width:11px;height:11px;border:2px solid var(--line);border-top-color:var(--mc-acc,var(--muted));
  border-radius:50%;animation:s .7s linear infinite;vertical-align:-1px}
@keyframes s{to{transform:rotate(360deg)}}

/* Phones: model labels are long ("Before — Qwen3-4B (stock)") and wrap to three
   lines in a side-by-side segment. Stack them full width instead — one line
   each, and a much bigger tap target. */
@media (max-width:560px){
  .modelbar{flex-direction:column;align-items:stretch;gap:8px}
  .seg{display:flex;flex-direction:column;width:100%}
  .seg button{border-right:0;border-bottom:1px solid var(--line);justify-content:flex-start;
    padding:12px 15px;font-size:14px}
  .seg button:last-child{border-bottom:0}
  .modelbar > button.ghost{align-self:flex-start}
  .msg{max-width:96%}
  .switchmark .txt{white-space:normal;flex-wrap:wrap;justify-content:center;gap:6px}
  .tally{gap:14px;flex-direction:column}
}
