:root{color-scheme:dark;--bg:#0b0f1a;--panel:#131927;--panel2:#0f1522;--line:#293246;--text:#f4f7fb;--muted:#9aa8bd;--accent:#d9a441;--danger:#ef6b73;--ok:#58c58c;--sq-light:#e7d6b3;--sq-dark:#9b6f4a}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 50% -20%,#1a2437 0,#0b0f1a 44%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}.scanner-topbar{height:58px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(16px,env(safe-area-inset-left));background:rgba(9,13,22,.88);backdrop-filter:blur(14px);position:sticky;top:0;z-index:20}.scanner-brand{display:flex;gap:9px;align-items:center;color:var(--text);text-decoration:none;font-weight:800;letter-spacing:.05em}.scanner-brand i{color:var(--accent)}.scanner-lab-badge{font-size:12px;color:var(--muted);border:1px solid var(--line);padding:6px 9px;border-radius:999px}.scanner-page{width:min(1460px,calc(100% - 32px));margin:0 auto;padding:34px 0 64px}.scanner-hero{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:22px}.scanner-eyebrow{color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:.14em;font-weight:800;margin:0 0 8px}.scanner-hero h1{font-size:clamp(30px,4vw,48px);margin:0}.scanner-hero p:not(.scanner-eyebrow){color:var(--muted);max-width:760px;line-height:1.5;margin:8px 0 0}.scanner-state-pill{border:1px solid var(--line);background:var(--panel);padding:8px 12px;border-radius:999px;font-weight:700;font-size:13px}.scanner-grid{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(360px,1.15fr) minmax(290px,.95fr);gap:16px}.scanner-card{border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,var(--panel),var(--panel2));box-shadow:0 18px 50px rgba(0,0,0,.18);padding:16px}.scanner-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.scanner-card-head>div{display:flex;align-items:center;gap:9px}.scanner-card h2{font-size:16px;margin:0}.step{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);font-size:12px;font-weight:800;color:var(--accent)}.step.done{background:var(--ok);color:#07130d;border-color:transparent}.status{color:var(--muted);font-size:12px}.status.success{color:var(--ok)}.source-drop{min-height:330px;border:1px dashed #42506a;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;padding:22px;color:var(--muted);transition:.2s}.source-drop.dragging{border-color:var(--accent);background:rgba(217,164,65,.08)}.source-drop>i{font-size:36px;color:var(--accent);margin-bottom:5px}.source-drop strong{color:var(--text)}.source-drop span{font-size:13px}.source-actions,.review-tools,.handoff-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.btn{appearance:none;border:1px solid #38445b;background:#1a2232;color:var(--text);padding:10px 12px;border-radius:9px;font:inherit;font-size:13px;font-weight:750;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{border-color:#596b8b}.btn:disabled{opacity:.42;cursor:not-allowed}.btn.primary{background:var(--accent);color:#161005;border-color:var(--accent)}.btn.danger-ghost{color:#ffadb2}.btn.confirm{width:100%;margin-top:13px;padding:12px}.source-preview-wrap{margin:12px 0 0}.source-preview-wrap img{width:100%;max-height:330px;object-fit:contain;border-radius:10px;background:#080b12}.source-preview-wrap figcaption{color:var(--muted);font-size:11px;margin-top:7px}.board-shell{width:min(100%,620px);margin:0 auto;position:relative}.scanner-board{display:grid;grid-template-columns:repeat(8,1fr);aspect-ratio:1;border-radius:6px;overflow:hidden;border:1px solid #05070c;box-shadow:0 8px 24px rgba(0,0,0,.32)}.scanner-board.is-empty{opacity:.35}.board-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:5px;color:var(--muted);pointer-events:none}.board-empty[hidden]{display:none}.board-empty i{font-size:28px;color:var(--accent)}.board-empty strong{color:var(--text);font-size:14px}.board-empty span{font-size:12px}.sq{appearance:none;border:0;padding:0;margin:0;position:relative;display:grid;place-items:center;font-size:clamp(26px,4.6vw,58px);line-height:1;user-select:none;color:#111;cursor:pointer}.sq.light{background:var(--sq-light)}.sq.dark{background:var(--sq-dark)}.sq.selected{box-shadow:inset 0 0 0 4px #f5c451;z-index:2}.sq:focus-visible{outline:3px solid #fff;outline-offset:-3px;z-index:3}.sq .piece{filter:drop-shadow(0 1px 1px rgba(0,0,0,.35));font-family:"Arial Unicode MS","Segoe UI Symbol",serif}.confidence-row{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:14px;padding-top:12px;color:var(--muted);font-size:13px}.confidence-row strong{color:var(--text)}.lab-note,.field-help{color:var(--muted);font-size:12px;line-height:1.45}.visual-edit{border:1px solid var(--line);border-radius:11px;padding:10px;margin-bottom:12px;background:#0b111d}.visual-edit-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:12px}.visual-edit-head span{color:var(--muted)}.piece-palette{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.piece-palette button{appearance:none;border:1px solid #354158;background:#182132;color:#fff;border-radius:8px;min-height:38px;font-size:25px;line-height:1;cursor:pointer}.piece-palette button:first-child{font-size:15px;color:var(--muted)}.piece-palette button:hover,.piece-palette button:focus-visible{border-color:var(--accent)}.field-label{font-size:12px;font-weight:800;color:var(--muted);display:block;margin-bottom:7px}.scanner-review-card textarea{width:100%;resize:vertical;background:#090e18;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:10px;font:12px ui-monospace,SFMono-Regular,Menlo,monospace}.validation-box{border:1px solid var(--line);border-radius:9px;padding:10px 11px;color:var(--muted);font-size:12px;margin-top:12px}.validation-box.ok{border-color:rgba(88,197,140,.45);color:var(--ok)}.validation-box.error{border-color:rgba(239,107,115,.45);color:#ff9ca4}.handoff-card{margin-top:16px}.handoff-card code{display:block;background:#080c14;border:1px solid var(--line);padding:12px;border-radius:9px;overflow:auto;color:#dce7f7}.scanner-privacy{margin-top:18px;display:flex;gap:12px;align-items:flex-start;color:var(--muted);padding:4px}.scanner-privacy i{color:var(--ok);margin-top:3px}.scanner-privacy strong,.scanner-privacy span{display:block}.scanner-privacy strong{color:var(--text);font-size:13px}.scanner-privacy span{font-size:12px;margin-top:3px}@media(max-width:1050px){.scanner-grid{grid-template-columns:1fr 1fr}.scanner-review-card{grid-column:1/-1}}@media(max-width:700px){.scanner-topbar{height:52px}.scanner-page{width:min(100% - 20px,620px);padding-top:12px}.scanner-grid{grid-template-columns:1fr;gap:12px}.scanner-review-card{grid-column:auto}.scanner-hero{display:flex;align-items:flex-end;gap:10px;margin-bottom:12px}.scanner-hero>div:first-child{min-width:0;flex:1}.scanner-eyebrow{font-size:10px;margin-bottom:4px}.scanner-hero h1{font-size:28px;line-height:1.05}.scanner-hero p:not(.scanner-eyebrow){font-size:13px;line-height:1.35;margin-top:6px}.scanner-state-pill{font-size:10px;padding:6px 8px;white-space:nowrap}.source-drop{min-height:210px}.scanner-lab-badge{font-size:9px;padding:5px 7px}.scanner-card{padding:14px}.btn{min-height:44px}.source-actions .btn{flex:1}.review-tools .btn{flex:1 1 120px}.scanner-board{border-radius:3px}.sq{font-size:clamp(28px,11vw,58px)}.piece-palette{grid-template-columns:repeat(7,1fr)}.piece-palette button{min-height:42px}.scanner-review-card textarea{rows:3}}@media(max-width:430px){.scanner-brand{font-size:14px}.scanner-lab-badge{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scanner-hero{align-items:flex-start}.scanner-state-pill{margin-top:23px}.piece-palette{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.piece-palette button{min-width:0;padding:0}}
