@font-face{font-family:Fraunces;src:url(/fonts/fraunces-latin.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-latin-500-normal.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-latin-600-normal.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--ink:#2e1730;--ink-2:#4e3a4a;--ink-3:#6a5566;--ink-4:#a092a0;--bg:#fcfbfa;--bg-2:#f6f4f1;--panel:#fff;--rule:#e3dae0;--rule-2:#cfc1cb;--aub:#4a2545;--aub-bright:#6e3666;--aub-soft:#f1e3ee;--warn-bg:#fbf0e6;--warn-line:#e0b483;--warn-ink:#8a4a1c;--fail-bg:#f8e9e8;--fail-line:#d3a3a0;--fail-ink:#6e1f1b;--radius:8px;--shadow:0 1px 0 #fff9 inset, 0 10px 28px -12px #2e17301f;--serif:"Fraunces", Georgia, "Times New Roman", serif;--sans:"Inter", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ease:cubic-bezier(.2, 0, 0, 1)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--sans);color:var(--ink-2);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.6}#app{max-width:820px;margin:0 auto;padding:0 20px 72px}.site-header{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;margin-bottom:8px;padding:24px 0 18px;display:flex}.brand{align-items:baseline;gap:10px;display:inline-flex}.brand-mark{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-optical-sizing:auto;font-size:22px;font-weight:500}.brand-sep{color:var(--rule-2)}.brand-tool{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-4);font-size:11px;font-weight:500}.brand-cta{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--aub);border:1px solid var(--rule);background:var(--panel);transition:border-color .16s var(--ease), color .16s var(--ease);border-radius:999px;padding:7px 15px;font-size:11px;text-decoration:none}.brand-cta:hover{border-color:var(--aub);color:var(--aub-bright)}.hero{padding:34px 0 10px}.hero h1{font-family:var(--serif);letter-spacing:-.02em;color:var(--ink);font-optical-sizing:auto;margin:0 0 18px;font-size:clamp(34px,5vw,52px);font-weight:400;line-height:1.08}.lede{color:var(--ink-3);max-width:60ch;margin:0 0 18px;font-size:18px;line-height:1.6}.model-status{font-family:var(--mono);letter-spacing:.02em;border-radius:999px;align-items:center;gap:8px;margin:4px 0 0;padding:7px 13px;font-size:12px;display:inline-flex}.model-status.ready{color:var(--aub);background:var(--aub-soft)}.model-status.loading{color:var(--ink-3);background:var(--panel);border:1px solid var(--rule)}.model-status.failed{color:var(--warn-ink);background:var(--warn-bg);border:1px solid var(--warn-line);max-width:62ch;font-family:var(--sans);font-size:14px;line-height:1.5;display:block}.spinner{border:2px solid var(--rule);border-top-color:var(--aub);border-radius:50%;flex:none;width:12px;height:12px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.notice{background:var(--aub-soft);border:1px solid var(--rule);border-left:3px solid var(--aub);border-radius:var(--radius);margin:18px 0 40px;padding:16px 20px}.notice p{color:var(--ink-2);max-width:72ch;margin:0;font-size:14.5px;line-height:1.6}.notice strong{color:var(--ink);font-weight:600}.steps{flex-direction:column;gap:24px;margin:0;padding:0;list-style:none;display:flex}.step{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.step-head{align-items:center;gap:12px;margin-bottom:16px;display:flex}.step-no{background:var(--aub);color:#fff;width:26px;height:26px;font-family:var(--mono);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:500;display:grid}.step h2{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-optical-sizing:auto;margin:0;font-size:20px;font-weight:400}.step-hint{color:var(--ink-3);margin:-6px 0 14px;font-size:15px}.box{resize:vertical;width:100%;min-height:150px;font-family:var(--mono);color:var(--ink);background:var(--bg-2);border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px;font-size:13.5px;line-height:1.55}.box::placeholder{color:var(--ink-4)}.box:focus{border-color:var(--aub);box-shadow:0 0 0 3px var(--aub-soft);background:var(--panel);outline:none}.box.readonly{background:var(--bg-2)}.box:disabled{color:var(--ink-4);background:#f1edf0}.step-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:14px;display:flex}button{font-family:var(--sans);color:var(--ink);background:var(--panel);border:1px solid var(--rule-2);border-radius:var(--radius);cursor:pointer;transition:border-color .16s var(--ease), background .16s var(--ease);padding:10px 18px;font-size:14px;font-weight:500}button:hover:not(:disabled){border-color:var(--aub)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--aub);color:#fff;border-color:var(--aub)}button.primary:hover:not(:disabled){background:var(--aub-bright);border-color:var(--aub-bright)}button.ghost{color:var(--ink-3);border-color:#0000}button.ghost:hover:not(:disabled){border-color:var(--rule-2)}.muted{color:var(--ink-4);font-size:14px}.review{border-top:1px solid var(--rule);margin-top:20px;padding-top:16px}.review summary{cursor:pointer;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);font-size:12px;font-weight:500}.class-counts{flex-wrap:wrap;gap:8px;margin:14px 0;display:flex}.class-count{font-family:var(--mono);color:var(--ink-3);background:var(--bg-2);border:1px solid var(--rule);border-radius:999px;padding:4px 11px;font-size:11px}.detections{flex-direction:column;gap:6px;display:flex}.detection{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-2);align-items:center;gap:10px;padding:9px 12px;display:flex}.detection.focused{border-color:var(--aub)}.detection.rejected{opacity:.55}.detection.rejected .detection-text{text-decoration:line-through}.detection.suppressed{opacity:.4}.class-badge{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--aub);background:var(--aub-soft);border-radius:4px;flex:none;padding:3px 8px;font-size:10px;font-weight:600}.detection-text{font-family:var(--mono);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.source-badge{font-family:var(--mono);color:var(--ink-4);font-size:10px}button.toggle{flex:none;padding:6px 12px;font-size:12px}.empty{color:var(--ink-4);padding:8px 0;font-size:14px}.kbd-hint{margin:12px 0 0}.restored-block{margin-top:18px}.warn{color:var(--warn-ink);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:var(--radius);margin:14px 0 0;padding:11px 14px;font-size:14px;line-height:1.5}.site-footer{border-top:1px solid var(--rule);margin-top:48px;padding-top:24px}.site-footer p{color:var(--ink-4);max-width:72ch;margin:0 0 6px;font-size:14px;line-height:1.6}.site-footer a{color:var(--aub);border-bottom:1px solid var(--rule-2);text-decoration:none}.site-footer a:hover{color:var(--aub-bright);border-bottom-color:var(--aub)}@media (width<=600px){.hero h1{font-size:30px}.lede{font-size:16px}.step{padding:18px}.detection-text{white-space:normal}}
