:root{--bg: #14141f;--panel: #1d1d2e;--line: #2e2e44;--fg: #e8e8f0;--muted: #9a9ab0;--accent: #6c8cff;--warn: #ffcf5c;--err: #ff6b6b;--ok: #4ade80}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.gate{min-height:100vh;display:grid;place-content:center;text-align:center;gap:8px}.gate-logo{font-size:48px}.app{max-width:920px;margin:0 auto;padding:0 12px 48px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 4px;position:sticky;top:0;background:var(--bg);z-index:5}.brand{font-size:18px;margin:0}.tag{font-size:12px;color:var(--muted);font-weight:400}.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;margin-top:12px}h2{margin:0 0 12px;font-size:17px}h3{font-size:14px;color:var(--muted);margin:18px 0 8px}.row-between{display:flex;align-items:center;justify-content:space-between}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--err)}.dropzone{display:grid;place-items:center;min-height:180px;cursor:pointer;border:2px dashed var(--line);border-radius:12px;padding:12px}.preview{max-width:100%;max-height:320px;border-radius:8px}.preview-sm{max-height:180px;display:block;margin-bottom:12px}.model-chips{display:flex;flex-wrap:wrap;gap:8px}.chip{background:transparent;color:var(--fg);border:1px solid var(--line);border-radius:20px;padding:8px 14px;cursor:pointer;font-size:13px}.chip-on{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary{width:100%;margin-top:18px;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:14px;font-size:15px;cursor:pointer}.btn-primary:disabled{opacity:.5;cursor:default}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:8px;padding:7px 12px;cursor:pointer;font-size:13px}.btn-icon{background:transparent;border:none;color:var(--fg);font-size:18px;cursor:pointer}.metrics{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}.metric{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:12px;display:flex;flex-direction:column;gap:2px}.metric-err{border-color:var(--err)}.compare{width:100%;border-collapse:collapse;font-size:13px}.compare th,.compare td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top;word-break:break-all}.compare th{background:var(--bg);color:var(--muted);position:sticky;top:56px}.compare .fld{color:var(--muted);white-space:nowrap}.compare tr.mismatch{background:#ff6b6b1a}.compare tr.mismatch .fld{color:var(--err)}.compare td.uncertain{background:#ffcf5c1f}.textract{margin-top:14px;font-size:12px}.textract pre{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px;overflow:auto;max-height:220px;white-space:pre-wrap}.progress{height:4px;background:var(--line);border-radius:2px;overflow:hidden;margin:6px 0}.progress>div{height:100%;background:var(--accent);transition:width .2s}.img-zoom{overflow:auto;max-height:46vh;border:1px solid var(--line);border-radius:10px;background:#000}.img-zoom img{transform-origin:top left;display:block}.zoom-ctrl{display:flex;align-items:center;justify-content:center;gap:12px;margin:8px 0 16px}.zoom-ctrl button{width:40px;height:40px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg);font-size:20px;cursor:pointer}.field-edit{margin-bottom:18px}.field-edit label{display:flex;align-items:center;gap:8px;font-size:15px;margin-bottom:8px}.field-edit input,.field-edit textarea{width:100%;background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:12px;font-size:16px}.field-uncertain input,.field-uncertain textarea{border-color:var(--warn)}.badge{font-size:11px;background:#ffcf5c2e;color:var(--warn);border-radius:6px;padding:2px 7px}.badge-edit{background:#6c8cff2e;color:var(--accent)}
