/* The coursework workspace (30 Oct 2026). Source: workspace/css/ws.css, hashed
   and shipped by build.py on /ib/workspace/ only. Every rule sits under .ws or a
   ws- class and reads the lm layer's tokens (--lm-*), with fallbacks, so nothing
   here can change another page. The chart and citation editors (ws-chart.js,
   ws-cite.js) are styled here too; ws-diagram.js brings its own rules. Margins on
   .ws itself are longhand only (README: the margin shorthand trap). */
.ws {
  --ws-ink:var(--lm-ink,#111111);
  --ws-lime:var(--lm-lime,#c5f135);
  --ws-lime-soft:#eef8d2;
  --ws-moss:var(--lm-moss,#3f5a0a);
  --ws-page:var(--lm-page,#f4f6ec);
  --ws-paper:var(--lm-surface,#ffffff);
  --ws-inset:var(--lm-inset,#fbfbf7);
  --ws-muted:var(--lm-muted,#555555);
  --ws-soft:var(--lm-muted-soft,#666666);
  --ws-line:var(--lm-line,#dddddd);
  --ws-body:var(--lm-body,#333333);
  --ws-alarm:var(--lm-alarm,#c0392b);
  --ws-bad-bg:#fdeceb;
  --ws-warn:#9a6400;
  --ws-warn-bg:#fff4d6;
  --ws-font:var(--lm-font,Archivo,Helvetica,sans-serif);
  --ws-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  box-sizing:border-box;
  max-width:1200px;
  margin-left:auto;
  margin-right:auto;
  padding:28px var(--lm-gutter,20px) 110px;
  color:var(--ws-ink);
  font:400 15px/1.5 var(--ws-font);
  overflow-wrap:break-word;
}
.ws *, .ws *::before, .ws *::after { box-sizing:border-box; }
.ws :where(p,h1,h2,h3,ul,ol,li,figure,blockquote,fieldset,legend,dl,dd) { margin:0; }
.ws :where(ul,ol) { padding-left:20px; }
.ws a { color:var(--ws-moss); }
.ws a:hover { color:var(--ws-ink); }
.ws :focus-visible { outline:2px solid var(--ws-moss); outline-offset:2px; }
.ws [hidden] { display:none !important; }
.ws-vh { position:absolute !important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }

/* ---- type ------------------------------------------------------------- */
.ws-h1 { font:900 clamp(28px,3.6vw,44px)/1.05 var(--ws-font); letter-spacing:-.015em; margin:0 0 12px; text-wrap:balance; }
.ws-h1--section { font-size:clamp(26px,3vw,38px); }
.ws-h2 { font:900 22px/1.15 var(--ws-font); letter-spacing:-.01em; margin:0 0 8px; }
.ws-h3 { font:800 17px/1.25 var(--ws-font); margin:0 0 8px; }
.ws-lede { font:400 17px/1.5 var(--ws-font); color:var(--ws-body); max-width:780px; margin:0 0 22px; }
.ws-small { font:400 14px/1.45 var(--ws-font); color:var(--ws-muted); margin:0 0 10px; }
.ws-note { font:400 12px/1.45 var(--ws-font); color:var(--ws-soft); margin:8px 0 0; }
.ws-eyebrow { font:600 11px/1.3 var(--ws-font); letter-spacing:.14em; text-transform:uppercase; color:var(--ws-moss); margin:0 0 8px; }
.ws-label { display:block; font:600 11px/1.2 var(--ws-font); letter-spacing:.12em; text-transform:uppercase; color:var(--ws-muted); margin:0 0 8px; }
.ws-loading { font:600 15px/1.4 var(--ws-font); color:var(--ws-muted); padding:32px 0; }
.ws-tag { display:inline-block; font:700 10px/1.2 var(--ws-font); letter-spacing:.08em; text-transform:uppercase;
  background:var(--ws-ink); color:#fff; padding:4px 6px; white-space:nowrap; vertical-align:middle; }
.ws-tag--soft { background:var(--ws-paper); color:var(--ws-ink); border:1.5px solid var(--ws-ink); padding:3px 5px; }
.ws-tag--warn { background:var(--ws-warn-bg); color:var(--ws-warn); border:1.5px solid var(--ws-warn); padding:3px 5px; white-space:normal; }

/* ---- buttons and fields -------------------------------------------------- */
.ws-btns { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 0; align-items:center; }
.ws-btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; border:2px solid var(--ws-ink); border-radius:0;
  background:var(--ws-paper); color:var(--ws-ink); font:700 15px/1.15 var(--ws-font); padding:11px 16px; text-decoration:none;
  cursor:pointer; text-align:center; }
.ws a.ws-btn { color:var(--ws-ink); }
.ws-btn:hover { background:var(--ws-page); }
.ws-btn--lime { background:var(--ws-lime); }
.ws-btn--lime:hover { background:#b6e325; }
.ws-btn--small { font-size:13px; padding:7px 11px; }
.ws-btn--quiet { border-color:var(--ws-line); font-size:13px; padding:7px 11px; }
.ws-btn:disabled, .ws-btn[disabled] { opacity:.45; cursor:default; }
.ws-linkbtn { background:none; border:0; padding:0; font:inherit; color:var(--ws-moss); text-decoration:underline; cursor:pointer; }
.ws-linkbtn:hover { color:var(--ws-ink); }
.ws :where(input[type=text],input[type=number],input[type=date],input[type=search],input[type=url],input[type=email],select,textarea) {
  font:400 15px/1.35 var(--ws-font); color:var(--ws-ink); background:var(--ws-paper);
  border:1.5px solid var(--ws-ink); border-radius:0; padding:8px 10px; max-width:100%; }
.ws-in { display:block; width:100%; }
.ws-in--title { font-weight:700; font-size:18px; }
.ws-in--num { width:7.5em; display:inline-block; }
.ws-in--out { background:var(--ws-inset); border-style:dashed; font-weight:700; min-height:38px; }
.ws textarea { resize:vertical; }
.ws-field { display:block; margin:0 0 12px; }
.ws-field__label { display:block; font:700 13px/1.3 var(--ws-font); margin:0 0 5px; }
.ws-fields { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:0 14px; margin:8px 0 0; }
.ws-check { display:inline-flex; align-items:center; gap:7px; font:400 14px/1.3 var(--ws-font); cursor:pointer; }
.ws-check input { width:18px; height:18px; margin:0; accent-color:var(--ws-moss); }
.ws-fieldset { border:0; padding:0; margin:0 0 18px; }
.ws-radio { display:flex; gap:10px; align-items:flex-start; border:2px solid var(--ws-ink); background:var(--ws-paper);
  padding:12px 14px; margin:0 0 8px; cursor:pointer; }
.ws-radio:has(input:checked) { background:var(--ws-lime-soft); }
.ws-radio input { margin:3px 0 0; width:18px; height:18px; accent-color:var(--ws-moss); flex:0 0 auto; }
.ws-radio__sub { display:block; font:400 13px/1.4 var(--ws-font); color:var(--ws-muted); }
.ws-details summary { cursor:pointer; font:700 14px/1.3 var(--ws-font); }
.ws-details[open] summary { margin:0 0 8px; }

/* ---- cards, banners, meters ---------------------------------------------- */
.ws-card { background:var(--ws-paper); border:2px solid var(--ws-ink); padding:20px; margin:0 0 16px; min-width:0; }
.ws-card > .ws-h2:first-child, .ws-card > .ws-h3:first-child { margin-top:0; }
.ws-panel { background:var(--ws-inset); border:1.5px solid var(--ws-line); padding:12px 14px; margin:0 0 14px; }
.ws-banner { border:2px solid var(--ws-ink); border-left-width:8px; border-left-color:var(--ws-lime); background:var(--ws-paper);
  padding:12px 14px; margin:0 0 16px; }
.ws-banner p { margin:0 0 6px; }
.ws-banner p:last-child { margin-bottom:0; }
.ws-banner.is-bad { border-left-color:var(--ws-alarm); background:var(--ws-bad-bg); }
.ws-integrity { font:400 13px/1.5 var(--ws-font); color:var(--ws-body); border-left:4px solid var(--ws-lime); padding:4px 0 4px 12px; margin:0 0 16px; }
.ws-unverified { background:var(--ws-warn-bg); border-left:4px solid var(--ws-warn); padding:6px 10px; color:var(--ws-body); }
.ws-meter { display:block; height:8px; background:var(--ws-line); margin:6px 0 0; overflow:hidden; }
.ws-meter__bar { display:block; height:100%; background:var(--ws-moss); }
.ws-meter.is-near .ws-meter__bar, .ws-meter.is-under .ws-meter__bar { background:#d49a00; }
.ws-meter.is-over .ws-meter__bar { background:var(--ws-alarm); }

/* ---- the counter --------------------------------------------------------- */
.ws-counter { display:grid; gap:10px; }
.ws-count { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:2px 12px; align-items:baseline; }
.ws-count__label { font:600 11px/1.3 var(--ws-font); letter-spacing:.1em; text-transform:uppercase; color:var(--ws-muted); }
.ws-count__fig { font:800 15px/1.3 var(--ws-font); text-align:right; font-variant-numeric:tabular-nums; }
.ws-count__note { grid-column:1 / -1; font:400 12px/1.4 var(--ws-font); color:var(--ws-soft); }
.ws-count .ws-meter { grid-column:1 / -1; }
.ws-count.is-near .ws-count__fig, .ws-count.is-under .ws-count__fig { color:var(--ws-warn); }
.ws-count.is-over .ws-count__fig, .ws-count.is-over .ws-count__note { color:var(--ws-alarm); }
.ws-counter--bar { position:sticky; bottom:0; z-index:6; margin:20px calc(-1 * var(--lm-gutter,20px)) 0; padding:10px var(--lm-gutter,20px);
  background:var(--ws-paper); border-top:2px solid var(--ws-ink); display:flex; flex-wrap:wrap; gap:8px 26px; align-items:flex-start; }
.ws-counter--bar .ws-count { flex:1 1 180px; max-width:340px; }

/* ---- the piece's header ---------------------------------------------------- */
.ws-dochead { margin:0 0 18px; }
.ws-crumbs { font:400 14px/1.4 var(--ws-font); color:var(--ws-muted); margin:0 0 10px; }
.ws-dochead__row { display:flex; flex-wrap:wrap; gap:10px 18px; align-items:center; justify-content:space-between;
  border-bottom:2px solid var(--ws-ink); padding:0 0 10px; }
.ws-tabs { display:flex; flex-wrap:wrap; gap:6px; }
.ws a.ws-tab { display:inline-block; border:2px solid var(--ws-ink); background:var(--ws-paper); color:var(--ws-ink);
  font:700 14px/1 var(--ws-font); padding:9px 12px; text-decoration:none; }
.ws a.ws-tab:hover { background:var(--ws-page); }
.ws a.ws-tab.is-on { background:var(--ws-ink); color:#fff; }
.ws-status { display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; font:600 13px/1.35 var(--ws-font); margin:0; }
.ws-status__dot { width:10px; height:10px; border-radius:50%; background:var(--ws-moss); flex:0 0 auto; }
.ws-status.is-saving .ws-status__dot { background:#d49a00; }
.ws-status.is-local .ws-status__dot { background:#d49a00; }
.ws-status.is-conflict .ws-status__dot { background:var(--ws-alarm); }
.ws-status.is-conflict { color:var(--ws-alarm); }
.ws-status__why { flex:1 1 100%; font-weight:400; color:var(--ws-muted); }
.ws-conflict .ws-banner { margin-top:12px; }

/* ---- home -------------------------------------------------------------- */
.ws-docs { list-style:none; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:10px; }
.ws a.ws-doc__open { display:flex; flex-direction:column; gap:4px; height:100%; border:2px solid var(--ws-ink); background:var(--ws-paper);
  padding:14px; color:var(--ws-ink); text-decoration:none; }
.ws a.ws-doc__open:hover { background:var(--ws-page); }
.ws-doc__title { font:800 17px/1.25 var(--ws-font); }
.ws-doc__sub { font:400 13px/1.35 var(--ws-font); color:var(--ws-muted); }
.ws-doc__meta { font:400 12px/1.35 var(--ws-font); color:var(--ws-soft); }
.ws-doc .ws-tag { align-self:flex-start; margin-top:6px; }
.ws-group { margin:18px 0 0; }
.ws-picks { list-style:none; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:8px; }
.ws a.ws-pick { display:flex; flex-direction:column; gap:3px; height:100%; border:2px solid var(--ws-ink); background:var(--ws-paper);
  padding:11px 13px; color:var(--ws-ink); text-decoration:none; }
.ws a.ws-pick:hover { background:var(--ws-lime-soft); }
.ws-pick__title { font:700 15px/1.25 var(--ws-font); }
.ws-pick__meta { font:400 12px/1.35 var(--ws-font); color:var(--ws-muted); }
.ws-foot { margin-top:22px; }
.ws-choose { max-width:720px; }

/* ---- the overview ------------------------------------------------------- */
.ws-overview { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,340px); gap:16px; align-items:start; }
.ws-overview__main, .ws-overview__side { min-width:0; }
.ws-progress__top { display:flex; justify-content:space-between; align-items:baseline; }
.ws-progress__fig { font:900 30px/1 var(--ws-font); }
.ws-progress .ws-meter { height:12px; margin:10px 0 10px; }
.ws-secs { list-style:none; padding:0; margin:8px 0 0; border-top:2px solid var(--ws-ink); }
.ws a.ws-sec__link { display:grid; grid-template-columns:34px minmax(0,1fr) auto; grid-template-areas:"n main state" "n words words";
  gap:2px 12px; padding:11px 4px; border-bottom:1px solid var(--ws-line); color:var(--ws-ink); text-decoration:none; align-items:center; }
.ws a.ws-sec__link:hover { background:var(--ws-inset); }
.ws-sec__n { grid-area:n; display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px;
  border:2px solid var(--ws-ink); font:800 13px/1 var(--ws-font); background:var(--ws-paper); }
.ws-sec.is-draft .ws-sec__n { background:linear-gradient(90deg,var(--ws-lime) 50%,var(--ws-paper) 50%); }
.ws-sec.is-done .ws-sec__n { background:var(--ws-lime); }
.ws-sec__main { grid-area:main; min-width:0; display:flex; flex-wrap:wrap; gap:4px 8px; align-items:center; }
.ws-sec__title { font:700 15px/1.3 var(--ws-font); }
.ws-sec__tags { display:inline-flex; flex-wrap:wrap; gap:4px; }
.ws-sec__tags .ws-tag { background:var(--ws-paper); color:var(--ws-muted); border:1px solid var(--ws-line); padding:3px 5px; }
.ws-sec__state { grid-area:state; font:700 12px/1.2 var(--ws-font); color:var(--ws-muted); white-space:nowrap; }
.ws-sec.is-done .ws-sec__state { color:var(--ws-moss); }
.ws-sec__words { grid-area:words; font:400 12px/1.35 var(--ws-font); color:var(--ws-soft); }
.ws-unit { border-top:2px solid var(--ws-ink); padding:14px 0 0; margin:14px 0 0; }
.ws-unit:first-of-type { border-top:0; padding-top:0; }
.ws-unit .ws-count { margin:0 0 8px; max-width:420px; }
.ws-others { margin:16px 0 0; }
.ws-crit { list-style:none; padding:0; margin:0 0 8px; }
.ws-crit li { padding:6px 0; border-bottom:1px solid var(--ws-line); font:400 14px/1.4 var(--ws-font); }
.ws-pitfalls li { margin:0 0 6px; font:400 14px/1.45 var(--ws-font); }
.ws-notes { min-height:96px; }

/* ---- a section ---------------------------------------------------------- */
.ws-sechead { margin:0 0 16px; }
.ws-sechead__tags { display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center; margin:0 0 12px; }
.ws-done { font-weight:700; border:2px solid var(--ws-ink); background:var(--ws-paper); padding:6px 10px; }
.ws-done:has(input:checked) { background:var(--ws-lime); }
.ws-jump { max-width:420px; }
.ws-layout { display:grid; grid-template-columns:minmax(0,320px) minmax(0,1fr); gap:18px; align-items:start; }
.ws-layout__side, .ws-layout__main { min-width:0; }
.ws-steps { position:sticky; top:12px; background:var(--ws-paper); border:2px solid var(--ws-ink); padding:14px 16px; max-height:calc(100vh - 24px); overflow:auto; }
.ws-steps__sum { font:800 14px/1.3 var(--ws-font); cursor:pointer; }
.ws-steps[open] .ws-steps__sum { margin:0 0 10px; }
.ws-steps__what { font:400 14px/1.5 var(--ws-font); color:var(--ws-body); margin:0 0 10px; }
.ws-steps__list { list-style:none; padding:0; margin:10px 0 0; display:grid; gap:6px; }
.ws-step { display:grid; grid-template-columns:20px minmax(0,1fr); gap:8px; align-items:start; font:400 14px/1.4 var(--ws-font); cursor:pointer; }
.ws-step input { width:18px; height:18px; margin:1px 0 0; accent-color:var(--ws-moss); }
.ws-step:has(input:checked) span { color:var(--ws-muted); text-decoration:line-through; text-decoration-color:var(--ws-moss); }
.ws-card--notes { margin-top:16px; }
.ws-pager { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; margin:18px 0 0; }
.ws-bib { padding-left:0; list-style:none; margin:0 0 8px; }
.ws-bib li { padding-left:24px; text-indent:-24px; margin:0 0 6px; font:400 14px/1.45 var(--ws-font); }

/* ---- the editor --------------------------------------------------------- */
.ws-editor { min-width:0; }
.ws-ed { position:relative; }
.ws-ed__bar { position:sticky; top:0; z-index:5; display:flex; flex-wrap:wrap; gap:4px; align-items:center;
  background:var(--ws-paper); border:2px solid var(--ws-ink); padding:6px; margin:0 0 10px; }
.ws-tb { border:1.5px solid transparent; background:none; color:var(--ws-ink); font:700 13px/1 var(--ws-font);
  padding:7px 9px; min-height:32px; cursor:pointer; border-radius:0; }
.ws-tb:hover { border-color:var(--ws-ink); }
.ws-tb[aria-pressed="true"] { background:var(--ws-lime); border-color:var(--ws-ink); }
.ws-tb:disabled { opacity:.35; cursor:default; border-color:transparent; }
.ws-tb--b { font-weight:900; }
.ws-tb--i { font-style:italic; font-family:var(--lm-serif,Georgia,serif); }
.ws-tb__sep { width:1px; align-self:stretch; background:var(--ws-line); margin:2px 3px; }
.ws-pop { border:2px solid var(--ws-ink); background:var(--ws-inset); padding:14px; margin:0 0 12px; display:grid; gap:6px; max-width:560px; }
.ws-pop__h { font:800 15px/1.3 var(--ws-font); }
.ws-pop__p { font:400 13px/1.45 var(--ws-font); color:var(--ws-muted); }
.ws-pop__f { font:700 13px/1.3 var(--ws-font); margin:6px 0 0; }
.ws-ed__blocks { display:flow-root; }
.ws-blk { position:relative; margin:0 0 8px; }
.ws-blk__tools { position:absolute; top:-12px; right:6px; z-index:2; display:flex; gap:2px; opacity:0; transition:opacity .12s; }
.ws-blk:hover > .ws-blk__tools, .ws-blk:focus-within > .ws-blk__tools,
.ws-blk__head .ws-blk__tools { opacity:1; }
.ws-blk__head .ws-blk__tools { position:static; }
.ws-ico { width:28px; height:28px; border:1.5px solid var(--ws-ink); background:var(--ws-paper); color:var(--ws-ink);
  font:700 14px/1 var(--ws-font); padding:0; cursor:pointer; border-radius:0; }
.ws-ico:hover { background:var(--ws-lime); }
.ws-t { position:relative; min-height:1.6em; padding:8px 10px; border:1px solid transparent; font:400 16px/1.65 var(--ws-font);
  color:var(--ws-ink); outline:none; white-space:pre-wrap; overflow-wrap:break-word; }
.ws-t:hover { border-color:var(--ws-line); }
.ws-t:focus { border-color:var(--ws-ink); background:var(--ws-paper); }
.ws-t.is-empty::before { content:attr(data-ph); position:absolute; left:11px; top:8px; color:var(--ws-soft); pointer-events:none; opacity:0; }
.ws-t.is-empty:focus::before, .ws-ed.is-blank .ws-t.is-empty::before { opacity:1; }
.ws-t--h { font:800 19px/1.35 var(--ws-font); margin-top:6px; }
.ws-t--quote { border-left:4px solid var(--ws-moss); padding-left:16px; color:var(--ws-body); }
.ws-t--quote:hover, .ws-t--quote:focus { border-left-color:var(--ws-moss); }
.ws-list { margin:0; padding-left:30px; }
.ws-list > li.ws-t { padding-left:6px; }
.ws-list > li.ws-t.is-empty::before { left:7px; }
.ws-t b { font-weight:700; }
.ws-cite { background:var(--ws-lime-soft); border-bottom:1.5px solid var(--ws-moss); padding:0 2px; cursor:pointer; white-space:normal; }
.ws-cite:hover { background:var(--ws-lime); }
.ws-cite.is-note { font-size:.72em; vertical-align:super; line-height:0; background:var(--ws-lime); padding:0 3px; border-bottom:0; }
.ws-cite.is-missing { background:var(--ws-bad-bg); color:var(--ws-alarm); border-bottom-color:var(--ws-alarm); }
.ws-ed__add { display:block; width:100%; margin:6px 0 0; padding:10px; border:2px dashed var(--ws-line); background:none;
  color:var(--ws-muted); font:700 14px/1 var(--ws-font); cursor:pointer; }
.ws-ed__add:hover { border-color:var(--ws-ink); color:var(--ws-ink); }
.ws-ed__note { font:400 12px/1.45 var(--ws-font); color:var(--ws-soft); margin:8px 0 0; }
.ws-ed__msg { font:600 13px/1.4 var(--ws-font); color:var(--ws-alarm); margin:6px 0 0; }
.ws-stop, .ws-beyond { border:2px solid var(--ws-alarm); border-left-width:8px; background:var(--ws-bad-bg); color:var(--ws-ink);
  font:700 13px/1.4 var(--ws-font); padding:8px 12px; margin:10px 0; }
.ws-beyond { font-weight:600; }
.ws-blk.is-past { opacity:.55; }
.ws-blk.is-past::after { content:""; position:absolute; left:-10px; top:0; bottom:0; width:3px; background:var(--ws-alarm); }

/* figures: tables, grids, charts, pictures, diagrams, equations */
.ws-blk--fig { border:2px solid var(--ws-ink); background:var(--ws-paper); padding:10px 12px 12px; margin:16px 0; }
.ws-blk__head { display:flex; justify-content:space-between; align-items:center; gap:8px; margin:0 0 8px; }
.ws-blk__kind { font:600 11px/1.2 var(--ws-font); letter-spacing:.12em; text-transform:uppercase; color:var(--ws-muted); }
.ws-cap { display:flex; align-items:baseline; gap:8px; margin:8px 0; }
.ws-cap__n { font:800 14px/1.3 var(--ws-font); white-space:nowrap; }
.ws .ws-cap__in { flex:1 1 auto; min-width:0; border-width:0 0 1.5px; padding:6px 2px; font-size:14px; }
.ws-table-wrap { overflow-x:auto; max-width:100%; }
.ws-table, .ws-grid { border-collapse:collapse; width:100%; min-width:280px; }
.ws-table td, .ws-table th, .ws-grid td, .ws-grid th { border:1px solid var(--ws-ink); padding:0; vertical-align:top; min-width:84px; }
.ws-table th { background:var(--ws-inset); }
.ws-table th .ws-cell { font-weight:700; }
.ws .ws-cell { display:block; width:100%; min-height:32px; border:0; padding:6px 8px; resize:none; overflow:hidden;
  font:400 14px/1.4 var(--ws-font); background:transparent; }
.ws .ws-cell:focus { background:var(--ws-lime-soft); outline:none; }
.ws-grid td { padding:6px 8px 4px; }
.ws-grid .ws-cell { padding:4px 0; min-height:48px; }
.ws-grid__label { display:block; font:700 12px/1.3 var(--ws-font); letter-spacing:.04em; color:var(--ws-moss); }
.ws-grid th.ws-grid__head { background:var(--ws-inset); font:700 12px/1.3 var(--ws-font); padding:6px 8px; text-align:left; }
.ws-grid__corner { border:0 !important; }
.ws-fig__tools { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:8px 0 0; }
.ws-fig__meta { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px 14px; align-items:center; margin:4px 0 0; }
.ws-img img { display:block; max-width:100%; height:auto; max-height:560px; margin:0 auto; border:1px solid var(--ws-line); }
.ws-img--none { border:2px dashed var(--ws-line); padding:26px 14px; text-align:center; }
.ws-visible { border-left:4px solid var(--ws-line); padding:6px 0 2px 12px; margin:10px 0 0; }
.ws-visible.is-missing { border-left-color:#d49a00; background:var(--ws-warn-bg); }
.ws-visible__row { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }
.ws-visible__label { font:700 13px/1.3 var(--ws-font); }
.ws .ws-eq__in { font:400 14px/1.4 var(--ws-mono); }
.ws-eq__row { display:flex; align-items:center; gap:12px; margin:10px 0; min-height:40px; }
.ws-eq__shown { flex:1 1 auto; min-width:0; overflow-x:auto; text-align:center; font:400 16px/1.4 var(--lm-serif,Georgia,serif); }
.ws-eq__n { font:700 15px/1 var(--ws-font); white-space:nowrap; }
.ws-blk--break { margin:18px 0; }
.ws-break { position:relative; text-align:center; padding:6px 0; }
.ws-break::before { content:""; position:absolute; left:0; right:0; top:50%; border-top:2px dashed var(--ws-ink); }
.ws-break__label { position:relative; background:var(--ws-page); padding:2px 10px; font:700 11px/1.3 var(--ws-font);
  letter-spacing:.1em; text-transform:uppercase; color:var(--ws-muted); }
.ws-chart, .ws-diagram { min-width:0; }

/* ---- sources ------------------------------------------------------------ */
.ws-srcs { list-style:none; padding:0; margin:16px 0 0; border-top:2px solid var(--ws-ink); }
.ws-src { padding:14px 0; border-bottom:1px solid var(--ws-line); }
.ws-src__ref { padding-left:24px; text-indent:-24px; font:400 15px/1.5 var(--ws-font); }
.ws-src__meta { display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; font:400 13px/1.4 var(--ws-font); color:var(--ws-muted); margin:6px 0 0; }
.ws-src-panel { margin:16px 0 0; }
.ws-src-ed { max-width:860px; }
/* the source form (ws-cite.js) */
.ws-src-form { display:grid; gap:12px; }
.ws-src-fields { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px 14px; }
.ws-src-row { display:flex; flex-direction:column; gap:4px; min-width:0; }
.ws-src-row label, .ws-src-row > span:first-child { font:700 13px/1.3 var(--ws-font); }
.ws-src-row :where(input,select,textarea) { width:100%; }
.ws-src-people { display:grid; gap:6px; }
.ws-src-person { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; gap:6px; align-items:center; }
.ws-src-hint { font:400 12px/1.45 var(--ws-font); color:var(--ws-soft); }
.ws-src-missing { font:600 13px/1.4 var(--ws-font); color:var(--ws-warn); background:var(--ws-warn-bg); padding:6px 10px; }
.ws-src-preview { background:var(--ws-inset); border:1.5px solid var(--ws-line); padding:12px 14px; display:grid; gap:6px; }
.ws-src-preview__h { font:600 11px/1.2 var(--ws-font); letter-spacing:.12em; text-transform:uppercase; color:var(--ws-muted); }
.ws-src-preview__entry { padding-left:24px; text-indent:-24px; }

/* ---- the chart editor (ws-chart.js) ------------------------------------- */
.ws-chart-ed { display:grid; gap:12px; min-width:0; }
.ws-chart-row, .ws-chart-opts, .ws-chart-rowbtns, .ws-chart-cols { display:flex; flex-wrap:wrap; gap:8px 12px; align-items:flex-end; }
.ws-chart-field { display:flex; flex-direction:column; gap:4px; min-width:0; font:700 13px/1.3 var(--ws-font); }
.ws-chart-check { display:inline-flex; align-items:center; gap:6px; font:400 14px/1.3 var(--ws-font); }
.ws-chart-gridwrap { overflow:auto; max-width:100%; max-height:380px; border:1px solid var(--ws-line); }
.ws-chart-grid { border-collapse:collapse; }
.ws-chart-grid td, .ws-chart-grid th { border:1px solid var(--ws-line); padding:0; }
.ws-chart-grid :where(input) { border:0; width:7em; padding:5px 6px; font-size:13px; }
.ws-chart-paste { width:100%; min-height:90px; font:400 13px/1.4 var(--ws-mono); }
.ws-chart-preview { background:#fff; border:1px solid var(--ws-line); padding:6px; overflow-x:auto; }
.ws-chart-preview svg { display:block; max-width:100%; height:auto; margin:0 auto; }
.ws-chart-small, .ws-chart-load { font:400 13px/1.45 var(--ws-font); color:var(--ws-muted); }
.ws-chart-msg { font:600 13px/1.4 var(--ws-font); color:var(--ws-alarm); }
.ws-chart-del { border:1.5px solid var(--ws-line); background:var(--ws-paper); cursor:pointer; padding:2px 7px; }
.ws-chart-stats, .ws-chart-result, .ws-chart-data { display:grid; gap:8px; min-width:0; }
.ws-chart-stattable { border-collapse:collapse; font:400 13px/1.4 var(--ws-font); }
.ws-chart-stattable caption { text-align:left; font-weight:700; padding:0 0 4px; }
.ws-chart-stattable td, .ws-chart-stattable th { border:1px solid var(--ws-ink); padding:4px 8px; text-align:left; }
.ws-chart-notes { font:400 12px/1.45 var(--ws-font); color:var(--ws-soft); }

/* ---- export -------------------------------------------------------------- */
.ws-flags { list-style:none; padding:0; display:grid; gap:6px; }
.ws-flags li { border-left:4px solid #d49a00; background:var(--ws-warn-bg); padding:6px 10px; font:400 14px/1.4 var(--ws-font); }
.ws-part { border-top:1px solid var(--ws-line); padding:14px 0 0; margin:14px 0 0; }
.ws-part:first-of-type { border-top:0; margin-top:4px; padding-top:0; }

/* ---- narrower screens --------------------------------------------------- */
@media (max-width:899px) {
  .ws-overview, .ws-layout { grid-template-columns:minmax(0,1fr); }
  .ws-steps { position:static; max-height:none; }
  .ws-overview__side { order:-1; }
}
@media (max-width:600px) {
  .ws { padding-top:18px; font-size:14px; }
  .ws-card { padding:14px; }
  .ws-blk--fig { padding:8px; }
  .ws-lede { font-size:15px; }
  .ws a.ws-sec__link { grid-template-columns:30px minmax(0,1fr); grid-template-areas:"n main" "n state" "n words"; }
  .ws-sec__state { white-space:normal; }
  .ws-dochead__row { align-items:flex-start; }
  .ws-tb { padding:6px 7px; font-size:12px; }
  .ws-counter--bar { gap:4px 14px; padding-top:8px; padding-bottom:8px; }
  .ws-counter--bar .ws-count { flex:1 1 100%; max-width:none; }
  .ws-count__label { overflow-wrap:normal; }
  .ws-pager .ws-btn { flex:1 1 100%; }
  .ws-fig__meta { grid-template-columns:minmax(0,1fr); }
  .ws-src-person { grid-template-columns:minmax(0,1fr); }
  .ws-blk__tools { opacity:1; position:static; justify-content:flex-end; margin:0 0 2px; }
  .ws-blk.is-past::after { left:-4px; }
}
@media (max-width:400px) {
  .ws-h1 { font-size:26px; }
  .ws-btn { padding:10px 12px; font-size:14px; }
  .ws-table, .ws-grid { min-width:240px; }
  .ws-docs, .ws-picks { grid-template-columns:minmax(0,1fr); }
}
@media (prefers-reduced-motion:reduce) {
  .ws-blk__tools { transition:none; }
}
