/* Advanced track: the assembly bench, the module ladder and the pass-code gate. */

.cap-body { --cap-single: var(--accent); --cap-multi: var(--purple); --cap-sandbox: var(--green); --cap-trap: var(--red); --cap-lab: var(--amber); --cap-prod: var(--text-soft); }
.cap-body [hidden] { display: none !important; }

.cap-body .article { max-width: 1140px; min-width: 0; overflow-wrap: anywhere; }
.cap-body .article > *, .cap-hero > *, .cap-section, .cap-lab, .cap-board, .cap-slot,
.cap-well, .cap-tray, .cap-grid > *, .cap-progress, .cap-ref, .cap-claim { min-width: 0; }

/* ---------- hero ---------- */

.cap-hero {
  display: grid; grid-template-columns: minmax(0, 1fr) 268px; gap: 26px;
  align-items: start; margin-bottom: 14px;
}
.cap-hero h1 { margin: 6px 0 12px; font-size: 33px; line-height: 1.18; }
.cap-hero .lede { max-width: 66ch; }
.cap-actions { display: flex; flex-wrap: wrap; gap: 9px; margin: 18px 0 14px; }
.cap-facts { display: flex; flex-wrap: wrap; gap: 7px 16px; font-size: 12px; color: var(--muted); }
.cap-fact strong { color: var(--text); font-family: var(--font-mono); font-weight: 600; }

.cap-progress {
  padding: 16px; border: 1px solid var(--border); border-radius: 14px;
  background: var(--surface); box-shadow: var(--shadow-sm); text-align: center;
}
.cap-ring { position: relative; width: 128px; margin: 0 auto 8px; }
.cap-ring svg { width: 100%; height: auto; display: block; transform: rotate(-90deg); }
.cap-ring-bg { fill: none; stroke: var(--border); stroke-width: 9; }
.cap-ring-fg {
  fill: none; stroke: var(--accent); stroke-width: 9; stroke-linecap: round;
  stroke-dasharray: 0 326.7; transition: stroke-dasharray 0.5s ease;
}
.cap-ring-text {
  position: absolute; inset: 0; display: grid; place-content: center; gap: 1px;
}
.cap-ring-text strong { font: 700 22px/1 var(--font-mono); }
.cap-ring-text span { font-size: 10px; color: var(--faint); letter-spacing: 0.08em; }
.cap-level { font-size: 12.5px; color: var(--muted); }
.cap-level strong { color: var(--accent-text); }
.cap-progress-meta, .cap-streak { margin-top: 8px; font-size: 12px; color: var(--text-soft); }
.cap-progress-meta [data-cap-done], .cap-streak [data-cap-streak] {
  font: 700 14px/1 var(--font-mono); color: var(--text); margin-right: 5px;
}

/* ---------- sections ---------- */

.cap-section { margin: 34px 0; scroll-margin-top: calc(var(--topbar-h) + 12px); }
.cap-section > h2 {
  margin: 0 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border);
  font-size: 20px;
}
.cap-section > h4 { margin: 20px 0 8px; font-size: 13.5px; color: var(--muted); }
.cap-outcome, .cap-problem {
  padding: 14px 16px; border-left: 3px solid var(--accent); border-radius: 0 10px 10px 0;
  background: var(--accent-soft); font-size: 14.5px; line-height: 1.72;
}
.cap-problem { border-left-color: var(--amber); background: var(--amber-soft); }
.cap-track-note, .cap-run-note {
  margin-top: 14px; padding: 11px 13px; border: 1px dashed var(--border-strong);
  border-radius: 10px; background: var(--surface-2); font-size: 12.5px; color: var(--muted);
}

/* ---------- module grid ---------- */

.cap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(252px, 1fr)); gap: 12px; }
.cap-card {
  position: relative; display: grid; gap: 6px; padding: 14px;
  border: 1px solid var(--border); border-radius: 12px; background: var(--surface);
  color: var(--text); text-decoration: none; transition: border-color 0.15s, transform 0.15s;
}
.cap-card:hover { border-color: var(--accent); transform: translateY(-1px); }
.cap-card-num { font: 700 11px/1 var(--font-mono); color: var(--faint); letter-spacing: 0.09em; }
.cap-card-title { font-size: 15px; font-weight: 650; }
html[data-lang="mixed"] .cap-card-title .lang-inline.lang-en { display: none; }
.cap-card-meta { font: 600 11.5px/1 var(--font-mono); color: var(--muted); }
.cap-card-slots { display: flex; flex-wrap: wrap; gap: 4px; }
.cap-slot-tag {
  padding: 2px 7px; border-radius: 999px; background: var(--surface-2);
  border: 1px solid var(--border); font-size: 10.5px; color: var(--muted);
}
.cap-slot-tag.alt { background: var(--purple-soft); border-color: transparent; color: var(--purple); }
html[data-lang="mixed"] .cap-slot-tag .lang-inline.lang-en { display: none; }
.cap-card-state { font-size: 11px; color: var(--faint); }
.cap-card.done { border-color: var(--green); background: var(--green-soft); }
.cap-card.done .cap-card-state { color: var(--green); font-weight: 700; }
.cap-card.wired .cap-card-state { color: var(--amber); font-weight: 650; }
.cap-card.locked { opacity: 0.58; }
.cap-card.locked .cap-card-state { color: var(--faint); }

/* ---------- module page ---------- */

.cap-module-head { margin-bottom: 8px; }
.cap-module-head h1 { margin: 6px 0 10px; font-size: 29px; line-height: 1.2; }
.cap-badge {
  display: inline-block; padding: 4px 10px; border-radius: 999px; font-size: 11.5px;
  font-weight: 650; background: var(--surface-2); border: 1px solid var(--border); color: var(--muted);
}
.cap-badge.good { background: var(--green-soft); border-color: transparent; color: var(--green); }
.cap-badge.warn { background: var(--amber-soft); border-color: transparent; color: var(--amber); }

/* The ladder as a switcher. It only pins where the section-chip strip is not
   already pinned (chips cover <=1180px), otherwise the two overlap and eat a
   fifth of a phone screen. */
.cap-stepper {
  display: flex; align-items: center; gap: 6px; margin: 0 0 18px; padding: 9px 0;
  overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
  border-bottom: 1px solid var(--border);
}
@media (min-width: 1181px) {
  .cap-stepper {
    position: sticky; top: var(--topbar-h); z-index: 22;
    background: color-mix(in srgb, var(--bg) 93%, transparent);
    backdrop-filter: saturate(1.4) blur(8px);
  }
}
.cap-stepper::-webkit-scrollbar { display: none; }
.cap-step {
  flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 11px;
  border: 1px solid var(--border); border-radius: 999px; background: var(--surface);
  color: var(--muted); font-size: 12.5px; white-space: nowrap;
}
.cap-step:hover { border-color: var(--accent); color: var(--text); text-decoration: none; }
.cap-step b { font: 700 10.5px/1 var(--font-mono); letter-spacing: 0.06em; color: var(--faint); }
.cap-step-title { max-width: 16ch; overflow: hidden; text-overflow: ellipsis; }
html[data-lang="mixed"] .cap-step-title .lang-inline.lang-en { display: none; }
.cap-step-mark { flex: none; font: 800 11px/1 var(--font-sans); font-style: normal; color: var(--green); }
.cap-step.wired { border-color: color-mix(in srgb, var(--amber) 38%, transparent); }
.cap-step.wired b, .cap-step.wired .cap-step-mark { color: var(--amber); }
.cap-step.done { background: var(--green-soft); border-color: color-mix(in srgb, var(--green) 32%, transparent); color: var(--green); }
.cap-step.done b { color: var(--green); }
.cap-step.locked { opacity: 0.5; }
.cap-step.is-current {
  background: var(--accent-soft); border-color: var(--accent); color: var(--accent-text); font-weight: 650;
}
.cap-step.is-current b { color: var(--accent-text); }

/* ---------- assembly bench ---------- */

.cap-lab { margin-top: 6px; }
.cap-board { display: grid; gap: 12px; }
.cap-slot {
  padding: 13px 14px; border: 1px solid var(--border); border-radius: 13px;
  background: var(--surface); box-shadow: var(--shadow-sm);
}
.cap-slot-top { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.cap-slot-name { font-size: 14px; font-weight: 650; }
html[data-lang="mixed"] .cap-slot-name .lang-inline.lang-en { display: none; }
.cap-slot-param { font: 600 11.5px/1 var(--font-mono); color: var(--accent-text); background: var(--accent-soft); padding: 3px 6px; border-radius: 5px; }
.cap-contract {
  font: 500 10.5px/1 var(--font-mono); color: var(--muted);
  padding: 3px 6px; border: 1px solid var(--border); border-radius: 5px;
}
.cap-req, .cap-opt { font-size: 10px; font-weight: 700; letter-spacing: 0.05em; padding: 3px 6px; border-radius: 5px; }
.cap-req { background: var(--red-soft); color: var(--red); }
.cap-opt { background: var(--surface-2); color: var(--faint); }
.cap-slot-why { margin: 8px 0 10px; font-size: 12px; line-height: 1.65; color: var(--muted); }

.cap-well {
  display: flex; flex-wrap: wrap; gap: 7px; min-height: 44px; padding: 8px;
  border: 1.5px dashed var(--border-strong); border-radius: 10px; background: var(--surface-2);
}
.cap-well-empty { align-self: center; font-size: 11.5px; color: var(--faint); }
.cap-placed {
  display: inline-flex; align-items: center; gap: 7px; padding: 6px 8px;
  border-radius: 8px; background: var(--surface); border: 1px solid var(--accent);
  box-shadow: var(--shadow-sm); font-size: 12px; animation: cap-drop 0.18s ease-out;
}
@keyframes cap-drop {
  from { transform: translateY(-5px) scale(0.97); opacity: 0.4; }
  to { transform: none; opacity: 1; }
}
.cap-placed code { font: 600 12px/1 var(--font-mono); }
.cap-placed-name { color: var(--muted); font-size: 11px; }
html[data-lang="mixed"] .cap-placed-name .lang-inline.lang-en { display: none; }
.cap-placed button {
  border: 0; background: transparent; color: var(--faint); cursor: pointer;
  font-size: 12px; line-height: 1; padding: 2px 3px; border-radius: 4px;
}
.cap-placed button:hover { color: var(--red); background: var(--red-soft); }

.cap-tray { display: grid; grid-template-columns: repeat(auto-fit, minmax(178px, 1fr)); gap: 7px; margin-top: 10px; }
.cap-block {
  display: grid; gap: 3px; padding: 9px 10px; text-align: left; cursor: pointer;
  border: 1px solid var(--border); border-radius: 9px; background: var(--surface-2);
  color: var(--text); font: inherit; transition: border-color 0.14s, background 0.14s, transform 0.14s;
}
.cap-block:hover { border-color: var(--accent); transform: translateY(-1px); }
.cap-block.placed { border-color: var(--accent); background: var(--accent-soft); }
.cap-block.placed::after { content: "✓"; float: right; color: var(--green); font-weight: 800; }
.cap-block-label code { font: 600 12px/1.3 var(--font-mono); }
.cap-block-name { font-size: 11px; color: var(--muted); line-height: 1.45; }
html[data-lang="mixed"] .cap-block-name .lang-inline.lang-en { display: none; }
.cap-block-tag { justify-self: start; font-size: 9.5px; letter-spacing: 0.07em; text-transform: uppercase; color: var(--faint); }
.cap-block[data-tier="single"] { border-left: 3px solid var(--cap-single); }
.cap-block[data-tier="multi"] { border-left: 3px solid var(--cap-multi); }
.cap-block[data-tier="sandbox"] { border-left: 3px solid var(--cap-sandbox); }
.cap-block[data-tier="trap"] { border-left: 3px solid var(--cap-trap); background: var(--red-soft); }
.cap-block[data-tier="lab"] { border-left: 3px solid var(--cap-lab); }
.cap-block[data-tier="gate"] { border-left: 3px solid var(--accent); }
.cap-block[data-tier="prod"] { border-left: 3px solid var(--cap-prod); }

.cap-lab-bar { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 12px; }
.cap-check, .cap-clear, .cap-show {
  padding: 8px 15px; border-radius: 9px; font: 600 12.5px/1 var(--font-sans); cursor: pointer;
  border: 1px solid var(--border); background: var(--surface); color: var(--text);
}
.cap-check { background: var(--accent); border-color: var(--accent); color: #fff; }
.cap-check:hover { background: var(--accent-hover); }
.cap-clear:hover, .cap-show:hover { border-color: var(--accent); color: var(--accent-text); }

.cap-wire { border: 1px solid var(--border); border-radius: 11px; overflow: hidden; background: var(--bg-code); max-width: 100%; }
.cap-code-bar {
  display: flex; justify-content: space-between; align-items: center; gap: 8px;
  padding: 7px 11px; border-bottom: 1px solid var(--border); background: var(--surface-2);
  font-size: 11.5px; color: var(--muted);
}
.cap-wire pre, .cap-verdict pre { margin: 0; padding: 12px 13px; overflow-x: auto; }
.cap-wire code, .cap-verdict code { font: 500 12.5px/1.65 var(--font-mono); white-space: pre; }

.cap-verdict {
  margin-top: 12px; padding: 13px 15px; border-radius: 11px;
  border: 1px solid var(--border); background: var(--surface-2);
}
.cap-verdict h4 { margin: 0 0 7px; font-size: 13.5px; }
.cap-verdict p, .cap-verdict li { font-size: 12.5px; line-height: 1.65; margin: 5px 0; }
.cap-verdict ul { margin: 6px 0 0; padding-left: 18px; }
.cap-verdict.good { border-color: var(--green); background: var(--green-soft); }
.cap-verdict.good h4 { color: var(--green); }
.cap-verdict.warn { border-color: var(--amber); background: var(--amber-soft); }
.cap-verdict.warn h4 { color: var(--amber); }
.cap-verdict.bad { border-color: var(--red); background: var(--red-soft); }
.cap-verdict.bad h4 { color: var(--red); }
.cap-bad { color: var(--red); }

/* ---------- sequence puzzle ---------- */

.cap-order-prompt { font-size: 13px; color: var(--muted); margin: 0 0 10px; }
.cap-order { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; counter-reset: cap-step; }
.cap-order-card {
  display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center; gap: 10px;
  padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface);
}
.cap-order-no {
  display: grid; place-items: center; width: 24px; height: 24px; border-radius: 7px;
  background: var(--accent-soft); color: var(--accent-text); font: 700 11.5px/1 var(--font-mono);
}
.cap-order-text { font-size: 12.5px; line-height: 1.6; }
html[data-lang="mixed"] .cap-order-text .lang-inline.lang-en { display: none; }
.cap-order-tools { display: flex; gap: 4px; }
.cap-order-tools button {
  width: 28px; height: 28px; border: 1px solid var(--border); border-radius: 7px;
  background: var(--surface-2); color: var(--muted); cursor: pointer; font-size: 11px;
}
.cap-order-tools button:hover { border-color: var(--accent); color: var(--accent-text); }

/* ---------- moves ---------- */

.cap-moves { display: grid; gap: 8px; }
.cap-move { border: 1px solid var(--border); border-radius: 11px; background: var(--surface); overflow: hidden; }
.cap-move summary {
  display: flex; align-items: center; gap: 9px; padding: 11px 13px; cursor: pointer;
  font-size: 13.5px; font-weight: 620; list-style: none;
}
.cap-move summary::-webkit-details-marker { display: none; }
.cap-move summary::after { content: "＋"; margin-left: auto; color: var(--faint); font-size: 12px; }
.cap-move[open] summary::after { content: "－"; }
.cap-move[open] summary { border-bottom: 1px solid var(--border); }
html[data-lang="mixed"] .cap-move summary .lang-inline.lang-en { display: none; }
.cap-move-no {
  flex: none; width: 22px; height: 22px; display: grid; place-items: center; border-radius: 6px;
  background: var(--surface-2); color: var(--faint); font: 700 10.5px/1 var(--font-mono);
}
.cap-move-body { padding: 11px 13px 13px; font-size: 13px; line-height: 1.72; color: var(--text-soft); }

/* ---------- evidence, claim ---------- */

.cap-evidence { display: grid; gap: 5px; margin: 0; padding: 0; list-style: none; }
.cap-evidence li {
  min-width: 0;
  padding: 8px 11px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2);
}
.cap-evidence code { font: 500 12px/1.5 var(--font-mono); color: var(--text); }
/* A verifier line is a whole measured sentence, not an inline identifier, so it
   has to break. .article li > code in manual.css forces nowrap and wins on
   specificity, hence the longer selector. */
.article .cap-evidence li > code {
  white-space: pre-wrap; word-break: normal; overflow-wrap: anywhere;
}
.cap-todo {
  padding: 11px 13px; border: 1px dashed var(--red); border-radius: 10px;
  background: var(--red-soft); color: var(--red); font-size: 12.5px;
}
.cap-pitfall { padding-left: 18px; font-size: 13px; line-height: 1.7; color: var(--text-soft); }

.cap-claim { padding: 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
.cap-feynman {
  padding: 12px 14px; margin-bottom: 12px; border-radius: 10px;
  background: var(--purple-soft); color: var(--purple); font-size: 13.5px; line-height: 1.7;
}
.cap-claim-label { display: block; margin-bottom: 7px; font-size: 12px; color: var(--muted); }
.cap-claim-row { display: flex; flex-wrap: wrap; gap: 8px; }
.cap-claim-row input {
  flex: 1 1 200px; min-width: 0; padding: 9px 11px; border: 1px solid var(--border-strong);
  border-radius: 9px; background: var(--bg); color: var(--text);
  font: 600 13px/1 var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase;
}
.cap-claim-row input:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
.cap-claim-note { margin: 8px 0 0; font-size: 11.5px; }
.cap-claim-status { margin: 9px 0 0; font-size: 12.5px; font-weight: 650; }
.cap-claim-status.good { color: var(--green); }
.cap-claim-status.warn { color: var(--amber); }
.cap-claim-status.bad { color: var(--red); }

/* ---------- reference tables ---------- */

.cap-rationale, .cap-rules { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.cap-rationale th, .cap-rules th {
  text-align: left; padding: 9px 10px; border-bottom: 1px solid var(--border-strong);
  color: var(--muted); font-weight: 650; white-space: nowrap;
}
.cap-rationale td, .cap-rules td { padding: 11px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.cap-modules-cell { display: flex; flex-wrap: wrap; gap: 5px; }
.cap-modules-cell a {
  padding: 3px 8px; border-radius: 6px; background: var(--accent-soft);
  color: var(--accent-text); text-decoration: none; font: 700 11px/1 var(--font-mono);
}
.cap-rules code { font: 600 11.5px/1.4 var(--font-mono); }
.cap-options { display: flex; flex-wrap: wrap; gap: 6px; }
.cap-opt-chip {
  display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px;
  border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2);
  color: var(--text); text-decoration: none; font-size: 11px;
}
.cap-opt-chip:hover { border-color: var(--accent); }
.cap-opt-chip span { color: var(--muted); }
html[data-lang="mixed"] .cap-opt-chip .lang-inline.lang-en { display: none; }
.cap-detail {
  margin: 14px 0; padding: 13px 14px; border: 1px solid var(--border);
  border-radius: 12px; background: var(--surface);
}
.cap-detail h3 { margin: 0 0 9px; font-size: 14px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cap-detail pre { margin: 0; padding: 10px 12px; border-radius: 8px; background: var(--bg-code); overflow-x: auto; }
.cap-detail code { font: 500 12px/1.6 var(--font-mono); }
.cap-detail-note { margin-top: 9px; font-size: 12.5px; line-height: 1.7; color: var(--text-soft); }
.cap-extra { margin: 8px 0 0; }
.cap-extra code { color: var(--amber); }

.cap-install { margin-bottom: 14px; }
.cap-install-note { margin: 8px 0 0; font-size: 12.5px; color: var(--muted); line-height: 1.65; }

/* ---------- toast ---------- */

.cap-toast {
  position: fixed; left: 50%; bottom: 26px; transform: translate(-50%, 20px);
  padding: 11px 18px; border-radius: 11px; background: var(--text); color: var(--bg);
  font-size: 13px; font-weight: 650; box-shadow: var(--shadow-md);
  opacity: 0; pointer-events: none; transition: opacity 0.2s, transform 0.2s; z-index: 90;
}
.cap-toast.show { opacity: 1; transform: translate(-50%, 0); }
.cap-toast.good { background: var(--green); color: #fff; }
.cap-toast span.lang-inline.lang-en { display: none; }
html[data-lang="en"] .cap-toast .lang-inline.lang-zh { display: none; }
html[data-lang="en"] .cap-toast span.lang-inline.lang-en { display: inline; }

/* ---------- sidebar states ---------- */

/* lab.css is not loaded here, so the mission rows need their own layout; and
   module titles are sentences, not identifiers — .sidebar-types a in manual.css
   ellipsises them to "沙箱升级与混沌回归…", hiding the half you came for. */
.lab-side-missions a[data-cap-side] {
  display: flex; align-items: flex-start; gap: 7px;
  padding: 6px 10px 6px 12px; white-space: normal; overflow: visible; text-overflow: clip;
}
.lab-side-missions a[data-cap-side] .lab-side-no {
  flex: none; width: 19px; padding-top: 3px;
  font: 700 9.5px/1.4 var(--font-mono); color: var(--faint);
}
.lab-side-missions a[data-cap-side] .lab-side-title {
  flex: 1 1 auto; min-width: 0; display: -webkit-box; -webkit-line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden; line-height: 1.4; font-size: 12.4px;
}
.lab-side-missions a[data-cap-side] .lab-side-tick {
  flex: none; padding-top: 3px; color: var(--green); font-size: 11px; font-weight: 800;
}
.lab-side-missions a[data-cap-side].done .lab-side-title { color: var(--green); }
.lab-side-missions a[data-cap-side].locked { opacity: 0.5; }

.cap-side-progress {
  display: grid; gap: 6px; margin: 0 10px; padding: 8px 10px;
  border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2);
}
.cap-side-row { display: flex; align-items: baseline; gap: 5px; color: var(--muted); font-size: 11px; }
.cap-side-row strong { font: 700 15px/1 var(--font-mono); color: var(--text); }
.cap-side-bar { height: 5px; border-radius: 999px; background: var(--border); overflow: hidden; }
.cap-side-bar i { display: block; width: 0; height: 100%; border-radius: 999px; background: var(--accent); transition: width 0.4s ease; }
.cap-side-meta { color: var(--faint); font-size: 10.5px; line-height: 1.55; }
.cap-side-meta span { font: 700 11px/1 var(--font-mono); color: var(--text-soft); }

/* ---------- responsive ---------- */

@media (max-width: 1040px) {
  .cap-hero { grid-template-columns: 1fr; }
  .cap-progress { max-width: 320px; }
}

@media (max-width: 760px) {
  .cap-hero h1 { font-size: 26px; }
  .cap-module-head h1 { font-size: 23px; }
  .cap-stepper { margin-bottom: 12px; padding: 7px 0; }
  .cap-step { min-height: 32px; padding: 0 9px; font-size: 12px; }
  .cap-step-title { max-width: 11ch; }
  .cap-tray { grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); }
  .cap-order-card { grid-template-columns: 22px minmax(0, 1fr); gap: 8px; }
  .cap-order-tools { grid-column: 2; justify-content: flex-end; }
  .cap-lab-bar {
    position: sticky; bottom: 0; z-index: 20; margin: 0 -14px 12px; padding: 10px 14px;
    background: var(--surface); border-top: 1px solid var(--border);
  }
  .cap-check, .cap-clear, .cap-show { flex: 1 1 auto; padding: 11px 10px; }
  .cap-rationale, .cap-rules { display: block; overflow-x: auto; max-width: 100%; }
  .cap-rationale th, .cap-rules th { white-space: normal; }
  .cap-claim-row input { font-size: 15px; }
}
