:root{--bg: #0f1419;--panel: #1a222d;--text: #e8ecf1;--muted: #8b98a8;--accent: #3d8bfd;--ok: #2eb85c;--warn: #f9b115;--border: #2d3848;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.45;font-size:14px}a{color:var(--accent)}#app{max-width:1100px;margin:0 auto;padding:20px 16px 48px}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.topbar h1{margin:0;font-size:1.25rem;font-weight:600}.badge{font-size:11px;padding:3px 8px;border-radius:4px;background:var(--panel);color:var(--muted);border:1px solid var(--border)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.panel h2{margin:0 0 12px;font-size:1rem}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px}label.chk{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:var(--muted);font-size:13px}button,.btn-file{font-family:inherit;font-size:13px;padding:8px 14px;border-radius:6px;border:1px solid var(--border);background:#243044;color:var(--text);cursor:pointer}button:hover:not(:disabled),.btn-file:hover{background:#2c3a52}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:#2a6bcb;color:#fff}button.primary:hover:not(:disabled){filter:brightness(1.06)}textarea.ocr-fallback{width:100%;min-height:100px;padding:10px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-family:inherit;resize:vertical}.crop-stage{position:relative;display:inline-block;max-width:100%;overflow:auto;border:1px solid var(--border);border-radius:8px;background:#000;touch-action:none}.crop-stage canvas{display:block;max-width:100%;height:auto;vertical-align:top}.crop-hint{font-size:12px;color:var(--muted);margin-top:8px}.msg{padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:12px}.msg.err{background:#3d1f24;border:1px solid #8b2e3a;color:#f5b8bf}.msg.ok{background:#1a2e22;border:1px solid #2a6b3d;color:#b8f5c8}.match-table-wrap{overflow:visible;max-width:100%}table.match{width:100%;border-collapse:collapse;font-size:13px}table.match tbody tr:hover{position:relative;z-index:4}table.match th,table.match td{border:1px solid var(--border);padding:8px 10px;text-align:left;vertical-align:top}table.match th{background:#141c26;color:var(--muted);font-weight:600}table.match select{width:100%;max-width:420px;padding:6px 8px;border-radius:4px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}.prop-wrap{max-width:520px}.catalog-search{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.catalog-search-label{font-size:12px;color:var(--muted);margin-bottom:6px}.catalog-search-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.catalog-search-input{flex:1 1 180px;min-width:140px;max-width:320px;padding:6px 8px;border-radius:4px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}.catalog-search-btn{padding:6px 12px;font-size:12px}.catalog-search-results{margin-top:8px;max-height:220px;overflow:auto}.catalog-search-msg{font-size:12px;color:var(--muted)}.catalog-search-msg.err{color:#f5b8bf}button.search-hit{display:block;width:100%;text-align:left;padding:6px 8px;margin-top:4px;font-size:12px;line-height:1.35;border:1px solid var(--border);background:#1e2835;color:var(--text);cursor:pointer;border-radius:4px}button.search-hit:hover{background:#2a3a4d}.codes-list{font-family:ui-monospace,monospace;font-size:13px;line-height:1.8;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px 14px;white-space:pre-wrap}.codes-list div{cursor:pointer;padding:2px 4px;margin:0 -4px;border-radius:4px}.codes-list div:hover{background:#243044}.codes-list .flash{animation:flash .6s ease}.ocr-line-list{display:flex;flex-direction:column;gap:0;border:1px solid var(--border);border-radius:8px;background:var(--bg);overflow:visible}.ocr-line-row{display:grid;grid-template-columns:minmax(200px,44%) minmax(140px,1fr) auto;gap:12px 14px;align-items:center;padding:12px;border-bottom:1px solid var(--border);position:relative}.ocr-line-row:last-child{border-bottom:none}.ocr-line-thumb-wrap{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;align-self:center;min-width:0;min-height:0;padding:2px 4px}.ocr-line-thumb-wrap:hover,.ocr-line-thumb-wrap:focus-within{z-index:30}.ocr-line-thumb{display:block;margin:0 auto;max-height:112px;max-width:100%;width:auto;height:auto;object-fit:contain;border-radius:6px;border:1px solid var(--border);background:#0a0d11;cursor:zoom-in;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease;transform-origin:center center}.ocr-line-thumb-wrap:hover .ocr-line-thumb,.ocr-line-thumb-wrap:focus-within .ocr-line-thumb{transform:scale(2.35);border-color:var(--accent);box-shadow:0 18px 50px #000000e0}@media (max-width: 720px){.ocr-line-thumb-wrap:hover .ocr-line-thumb,.ocr-line-thumb-wrap:focus-within .ocr-line-thumb{transform:scale(1.85)}}.ocr-line-thumb-ph{width:100%;min-height:88px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted);border:1px dashed var(--border);border-radius:6px;background:#141a22}input.ocr-line-input{width:100%;max-width:min(38ch,100%);padding:8px 10px;border-radius:6px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-family:inherit;font-size:13px;align-self:center}button.ocr-line-del{padding:6px 10px;font-size:12px;white-space:nowrap;align-self:center}.ocr-line-empty{margin:0 0 10px;font-size:13px;color:var(--muted)}.ocr-paste-details{margin-top:14px;padding-top:10px;border-top:1px solid var(--border)}.ocr-paste-details summary{cursor:pointer;color:var(--muted);font-size:13px;-webkit-user-select:none;user-select:none}.ocr-paste-details summary:hover{color:var(--text)}@keyframes flash{0%{background:#3d5a80}to{background:transparent}}.match-td-img{width:auto;min-width:120px;max-width:200px;vertical-align:middle;overflow:visible}.match-td-img .ocr-line-thumb{max-height:72px;max-width:180px}.match-td-img .ocr-line-thumb-ph{min-height:44px;width:72px}.match-td-conf{white-space:nowrap;vertical-align:middle}.conf-badge{display:inline-block;padding:4px 9px;border-radius:6px;font-size:11px;font-weight:600;cursor:default}.conf-high{background:#153524;border:1px solid #2a6b3d;color:#b8f5c8}.conf-medium{background:#3d3319;border:1px solid #8b6914;color:#f5e0b8}.conf-none{background:#3d1f24;border:1px solid #8b2e3a;color:#f5b8bf}.hidden{display:none!important}
