:root{--bg: #f7f7f5;--panel: #ffffff;--ink: #14171a;--muted: #5c6670;--line: #d8dbe0;--line-strong: #b3b9c1;--ok: #1a7f47;--ok-bg: #e6f4ec;--warn: #8a5a00;--warn-bg: #fdf3de;--bad: #a71d2a;--bad-bg: #fbeaec;--info: #1f4f9c;--info-bg: #e8effa;--focus: #ffe27a;--mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}code{font-family:var(--mono);font-size:.92em;word-break:break-all}h1{font-size:18px;margin:0}h2{font-size:15px;margin:0}h3{font-size:13px;margin:0 0 4px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}h4{font-size:12px;margin:10px 0 4px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}p.sub{margin:2px 0 0;color:var(--muted);font-size:12px}.muted-text{color:var(--muted);font-size:12px}button,select{font:inherit;color:inherit}.viewer{padding:12px 16px 64px;max-width:100%}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;padding-bottom:10px;border-bottom:2px solid var(--line-strong)}.controls{display:flex;gap:12px;align-items:center}.controls label{display:flex;gap:6px;align-items:center;color:var(--muted)}.defeater-panel{border:1px solid var(--line);background:var(--panel);padding:4px 8px;border-radius:4px;position:relative}.defeater-panel summary{cursor:pointer}.defeater-panel>div{position:absolute;right:0;top:100%;z-index:10;display:flex;flex-direction:column;gap:4px;padding:8px;width:360px;max-width:90vw;background:var(--panel);border:1px solid var(--line-strong);border-radius:4px;box-shadow:0 4px 12px #0000001f}.defeater-panel label{display:flex;justify-content:space-between;gap:8px}.load-error{background:var(--warn-bg);border:1px solid var(--warn);padding:6px 10px;margin:10px 0 0;border-radius:4px}.summary{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.headline{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:8px 12px;min-width:200px;display:flex;flex-direction:column;gap:3px}.headline strong{font-size:15px;display:flex;gap:4px;flex-wrap:wrap;align-items:center}.headline.conviction{border-color:var(--ok);background:var(--ok-bg)}.headline.unsafe_conviction{border-color:var(--warn);background:var(--warn-bg)}.headline.correct_but_unproven,.headline.dismissed,.headline.wrongful_arrest,.headline.bad-box{border-color:var(--bad);background:var(--bad-bg)}.headline.bad-box{max-width:520px}.k{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.panel{background:var(--panel);border:1px solid var(--line);border-radius:4px;margin:14px 0;padding:10px 12px 14px}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:10px}.badge{display:inline-block;border:1px solid var(--line-strong);border-radius:3px;padding:0 5px;font-size:11px;line-height:17px;white-space:nowrap}.badge.ok{color:var(--ok);background:var(--ok-bg);border-color:var(--ok)}.badge.warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn)}.badge.bad{color:var(--bad);background:var(--bad-bg);border-color:var(--bad)}.badge.info{color:var(--info);background:var(--info-bg);border-color:var(--info)}.badge.muted{color:var(--muted);background:#f1f2f4}.chip{display:inline-block;border:1px solid var(--line-strong);border-radius:10px;padding:0 7px;font-family:var(--mono);font-size:11px;line-height:17px;white-space:nowrap}button.chip{cursor:pointer}.chip.verb{border-radius:3px;background:#f1f2f4;color:var(--muted)}.chip.verb.both{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}.chip.verb.derived-only{background:var(--info-bg);border-color:var(--info);color:var(--info)}.chip.verb.claimed-only{background:var(--bad-bg);border-color:var(--bad);color:var(--bad);text-decoration:line-through}.chip.verb.neither{opacity:.4}.meter{display:inline-flex;align-items:center;gap:2px}.meter .cell{width:12px;height:10px;border:1px solid var(--line-strong);background:#fff}.meter.compact .cell{width:8px;height:8px}.meter .cell.on{background:#4a5560;border-color:#333c45}.meter .cell.threshold{outline:2px solid var(--info);outline-offset:1px}.meter-label{margin-left:6px;font-size:11px;color:var(--muted);font-family:var(--mono)}.pillar-board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(360px,1fr);gap:10px;overflow-x:auto;padding-bottom:8px;align-items:start}.pillar{border:1px solid var(--line);border-radius:4px;background:#fcfcfb}.pillar.minimum{border-color:var(--line-strong);border-top:3px solid var(--info)}.pillar.minimum.short{border-top-color:var(--bad)}.pillar>header{padding:8px 10px;border-bottom:1px solid var(--line)}.pillar-numbers{display:flex;flex-direction:column;gap:3px;margin-top:4px}.kv{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.paths,.steps,.disambiguators,.issues,.roots{list-style:none;margin:0;padding:0}.path{border-top:1px solid var(--line);padding:8px 10px}.path.collapsed{background:repeating-linear-gradient(135deg,transparent,transparent 6px,rgba(167,29,42,.06) 6px,rgba(167,29,42,.06) 12px)}.path.blocked{opacity:.75}.path-head{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}.path-head .id{font-weight:600}.path-tags{display:flex;gap:4px;flex-wrap:wrap;margin:4px 0 6px}.path.empty,.step.empty,.disambiguator.empty{color:var(--muted);padding:8px 10px}.step{border:1px solid var(--line);border-left:3px solid transparent;border-radius:3px;background:#fff;padding:6px 8px;margin-bottom:6px}.step.weakest{border-left-color:var(--warn)}.step.dead{border-left-color:var(--bad);background:var(--bad-bg)}.step.unusable{background:var(--bad-bg)}.step-head{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.step-head .idx{display:inline-block;width:17px;height:17px;line-height:17px;text-align:center;border-radius:50%;background:#e9ebee;font-size:11px}.step-body{margin-top:4px;display:flex;flex-direction:column;gap:2px}.routes{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}.defeaters{margin-top:4px;border-top:1px dashed var(--line-strong);padding-top:4px;display:flex;flex-direction:column;gap:3px}.defeater{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.defeater.live{color:var(--warn)}.defeater.established{color:var(--bad)}.root-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:4px 0;border-bottom:1px solid var(--line)}.root-row.collides{background:var(--bad-bg)}.uses{display:flex;gap:6px;flex-wrap:wrap}.linklike{background:none;border:none;padding:0;color:var(--info);font-family:var(--mono);font-size:11px;cursor:pointer;text-decoration:underline}.alternatives{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:10px}.alternative{border:1px solid var(--line);border-radius:4px;padding:8px 10px;background:#fcfcfb}.plausibility{display:flex;gap:6px;align-items:center}.plausibility .bar{display:inline-block;width:120px;height:8px;background:#e9ebee;border:1px solid var(--line-strong)}.plausibility .bar span{display:block;height:100%;background:#4a5560}table.strengths,table.scenarios{border-collapse:collapse;width:100%;margin-top:6px}table.scenarios{table-layout:fixed}table.strengths th,table.strengths td,table.scenarios th,table.scenarios td{border:1px solid var(--line);padding:4px 6px;text-align:left;vertical-align:top;font-weight:400}table.strengths th,table.scenarios thead th{background:#f1f2f4;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}table.strengths tr.rival td{background:var(--warn-bg)}table.scenarios tbody th{width:220px;background:#fafafa}.reasons{display:table-cell;font-size:12px;color:var(--muted)}.reasons span{display:block}.disambiguator{border:1px solid var(--line);border-radius:3px;padding:6px 8px;margin-bottom:6px;background:#fff}.validator .invariant{border-top:1px solid var(--line);padding:8px 0}.issue{display:grid;grid-template-columns:64px minmax(120px,240px) 1fr;gap:8px;align-items:start;padding:4px 0;border-bottom:1px dotted var(--line)}.issue.error{background:#a71d2a0a}.subject{background:none;border:none;padding:0;text-align:left;font-family:var(--mono);font-size:11px;color:var(--info);text-decoration:underline;cursor:pointer}.subject.none{color:var(--muted);text-decoration:none}.message{font-size:12px;overflow-wrap:anywhere;min-width:0}.clean{color:var(--ok)}.focused{animation:flash 2.4s ease-out;outline:2px solid var(--focus);outline-offset:2px}@keyframes flash{0%{background:var(--focus)}to{background:transparent}}
