:root{--bg:#070a0f;--bg-panel:#0f151e;--bg-panel-alt:#0b1017;--line:#223047;--line-soft:#1a2434;--text:#e7eef7;--muted:#a2b3c7;--cyan:#4cc4f2;--cyan-dim:#1d6d8d;--amber:#f2b544;--green:#6ee7a8;--red:#ff9d9d;--violet:#c3a6ff;--radius:12px;--font-mono:ui-monospace, "SFMono-Regular", "Cascadia Mono", "Roboto Mono", Consolas, monospace;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-text-size-adjust:100%;margin:0;padding:0;font-size:16px;line-height:1.55}body{background-image:radial-gradient(1100px 520px at 12% -10%,#4cc4f21f,#0000 60%),radial-gradient(900px 460px at 92% 0,#c3a6ff14,#0000 62%);background-repeat:no-repeat}code{font-family:var(--font-mono);color:var(--cyan);overflow-wrap:anywhere;background:#4cc4f214;border-radius:5px;padding:.1em .35em;font-size:.92em}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{max-width:1220px;margin:0 auto;padding:28px 20px 48px}.masthead{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(#141e2ceb,#0c1119eb);margin-bottom:18px;padding:22px 24px}.eyebrow{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.72rem}h1{letter-spacing:-.01em;margin:2px 0 6px;font-size:clamp(1.6rem,1.15rem + 1.9vw,2.3rem);line-height:1.15}h2{letter-spacing:.01em;margin:0 0 12px;font-size:1.15rem}h3{margin:0 0 6px;font-size:1rem}.lede{max-width:68ch;color:var(--muted);margin:0}.notice{border:1px solid var(--line);border-left:3px solid var(--amber);color:var(--text);background:#f2b54414;border-radius:8px;margin:18px 0 0;padding:11px 14px;font-size:.92rem}.notice--muted{border-left-color:var(--cyan-dim);color:var(--muted);background:#4cc4f20f}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-panel);margin-bottom:18px;padding:20px 22px}.panel__lede{color:var(--muted);max-width:78ch;margin:-4px 0 14px;font-size:.92rem}.controls{flex-wrap:wrap;align-items:flex-start;gap:22px;display:flex}.control{flex-direction:column;gap:6px;min-width:220px;display:flex}.control--actions{gap:10px}.control label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.76rem}.control__hint{color:var(--muted);max-width:46ch;margin:0;font-size:.82rem}input[type=number],select{font-family:var(--font-mono);color:var(--text);background:var(--bg-panel-alt);border:1px solid var(--line);border-radius:8px;max-width:100%;padding:8px 10px;font-size:.95rem}input[type=number]{width:130px}select{min-width:180px}input[type=number]:focus-visible,select:focus-visible,.button:focus-visible,.checkbox input:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.button{font-family:var(--font-mono);color:var(--text);background:var(--bg-panel-alt);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:9px 16px;font-size:.88rem;transition:border-color .12s,background .12s}.button:hover{border-color:var(--cyan-dim)}.button--primary{border-color:var(--cyan-dim);color:#d8f3ff;background:#4cc4f21f}.button--primary:hover{background:#4cc4f233}.checkbox{color:var(--text);text-transform:none;letter-spacing:normal;font-size:.9rem;font-family:var(--font-sans);align-items:center;gap:8px;display:inline-flex}.checkbox input{width:16px;height:16px;accent-color:var(--cyan)}.totals{flex-wrap:wrap;gap:12px;margin-top:18px;display:flex}.total{border:1px solid var(--line);background:var(--bg-panel-alt);border-radius:10px;flex:130px;padding:12px 14px}.total__value{font-family:var(--font-mono);color:var(--text);font-size:1.7rem;line-height:1.1;display:block}.total__label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:2px;font-size:.78rem;display:block}.total--automatic .total__value{color:var(--green)}.total--review .total__value{color:var(--amber)}.total--manual .total__value{color:var(--violet)}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:18px;display:grid}.summary-grid>*,.kb-grid>*,.source-grid>*{min-width:0}.table-wrap{min-width:0;max-width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table caption{text-align:left;color:var(--muted);padding-bottom:8px;font-size:.82rem}.data-table th,.data-table td{border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:top;padding:8px 10px}.data-table thead th{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);border-bottom-color:var(--line);white-space:nowrap;font-size:.72rem}.data-table tbody th{font-weight:600}.record-id{font-family:var(--font-mono);color:var(--cyan);font-size:.78rem;display:block}.record-title{color:var(--text);font-size:.88rem;display:block}.muted{color:var(--muted)}.explanation{color:var(--muted);min-width:260px;font-size:.85rem}.status{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:.72rem;display:inline-block}.status--automatic{color:var(--green);background:#6ee7a81a;border-color:#6ee7a866}.status--review{color:var(--amber);background:#f2b5441a;border-color:#f2b54466}.status--manual{color:var(--violet);background:#c3a6ff1f;border-color:#c3a6ff73}.term-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.term-list li{align-items:baseline;gap:5px;display:inline-flex}.term{font-family:var(--font-mono);border:1px solid var(--line);background:var(--bg-panel-alt);color:var(--text);border-radius:6px;padding:2px 7px;font-size:.76rem;display:inline-block}.term--keyword{color:#bfe9fb;border-color:#4cc4f273}.term--synonym{color:#f7dfae;border-color:#f2b5446b}.term__kind{color:var(--muted);font-size:.68rem;font-family:var(--font-mono)}.filters{flex-wrap:wrap;gap:18px;margin-bottom:14px;display:flex}.review-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.review-list li{border:1px solid var(--line);border-left:3px solid var(--amber);background:var(--bg-panel-alt);border-radius:10px;padding:12px 14px}.review-item__head{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.review-item__head .record-id,.review-item__head .record-title{display:inline-block}.review-item__source{font-size:.76rem;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.review-item__text{color:var(--muted);margin:6px 0 4px;font-size:.9rem}.review-item__meta{color:var(--muted);margin:0 0 10px;font-size:.82rem}.review-item__actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.review-item__actions label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.72rem}.kb-grid{grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:14px;display:grid}.kb-card{border:1px solid var(--line);background:var(--bg-panel-alt);border-radius:10px;padding:14px 16px}.kb-card__description{color:var(--muted);margin:0 0 10px;font-size:.86rem}.kb-card__terms{margin:0}.kb-card__terms dt{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-top:8px;font-size:.7rem}.kb-card__terms dd{flex-wrap:wrap;gap:5px;margin:4px 0 0;display:flex}.source-grid{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:16px;display:grid}.source-card{border:1px solid var(--line);background:var(--bg-panel-alt);border-radius:10px;padding:14px 16px}.source-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.source-list li{border-top:1px solid var(--line-soft);padding-top:10px}.source-list li:first-child{border-top:0;padding-top:0}.source-list__text{color:var(--muted);margin:4px 0 0;font-size:.86rem}.footer{border-top:1px solid var(--line-soft);color:var(--muted);padding-top:14px;font-size:.84rem}.footer p{max-width:80ch;margin:0}@media (width<=640px){.app-shell{padding:18px 14px 36px}.masthead,.panel{padding:16px 14px}.control{min-width:100%}input[type=number],select{width:100%}.total{flex:100%}.explanation{min-width:200px}}
