:root{--bg-0: #0e1116;--bg-1: #151a22;--bg-2: #1c232e;--bg-3: #242d3b;--border-1: #2a3342;--border-2: #3a465a;--text-1: #e8edf5;--text-2: #a7b1c4;--text-3: #808a9b;--accent: #4d8dff;--accent-hover: #6ea3ff;--accent-active: #3b74e0;--accent-dim: rgba(77, 141, 255, .16);--ok: #43d17c;--warn: #f0b13e;--danger: #f0596a;--frame: #98a5bd;--checker-a: #232a35;--checker-b: #1a202a;font-family:system-ui,Segoe UI,Microsoft YaHei,sans-serif;color:var(--text-1);background:var(--bg-0)}*{box-sizing:border-box}body{margin:0;min-width:1024px;min-height:640px;background:var(--bg-0)}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{cursor:not-allowed;background:var(--bg-2);color:var(--text-3);border-color:var(--border-1)}.app-shell{height:100vh;display:flex;flex-direction:column;overflow:hidden}.topbar{height:40px;flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;border-bottom:1px solid var(--border-1);background:var(--bg-1)}.topbar strong{font-size:16px}.grow{flex:1}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.muted,small{color:var(--text-3)}.lang select,.topbar select{height:28px;background:var(--bg-2);color:var(--text-1);border:1px solid var(--border-1);border-radius:6px;padding:0 8px}.primary,.secondary,.danger,.ghost,.tool,.filter{min-height:30px;border-radius:6px;padding:0 11px;border:1px solid var(--border-1);background:transparent;color:var(--text-1)}.primary{border:0;background:var(--accent);color:#0b1220;font-weight:650}.primary:hover{background:var(--accent-hover)}.secondary:hover,.ghost:hover,.tool:hover,.filter:hover{background:var(--bg-2)}.danger{border:0;background:var(--danger);color:#19080b}.danger-outline{border:1px solid var(--danger);background:transparent;color:var(--danger);border-radius:6px;padding:7px 12px}.confirmed{border:1px solid var(--ok);background:transparent;color:var(--ok);border-radius:6px;padding:0 11px}.upload-stage{position:relative;flex:1;display:flex;justify-content:center;align-items:center;overflow:hidden;background:var(--bg-0)}.upload-stage:before,.normal-preview{content:"";position:absolute;inset:0;background:linear-gradient(45deg,var(--checker-a) 25%,transparent 25%,transparent 75%,var(--checker-a) 75%) 0 0 / 16px 16px,linear-gradient(45deg,var(--checker-a) 25%,var(--checker-b) 25%,var(--checker-b) 75%,var(--checker-a) 75%) 8px 8px / 16px 16px;opacity:.2}.upload-col{z-index:1;width:560px;text-align:center}.upload-col h1{font-size:28px;line-height:36px;margin:0 0 8px}.privacy{color:var(--text-2);margin:0 0 28px}.dropzone{width:100%;height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:2px dashed var(--border-2);border-radius:8px;background:var(--bg-1);color:var(--text-1)}.dropzone strong{font-size:20px}.dropzone span{color:var(--text-2)}.dropzone.over{border-style:solid;border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.upload-col>.primary{margin-top:20px}.chips{display:flex;justify-content:center;gap:8px;margin-top:20px}.chips span{border:1px solid var(--border-1);border-radius:4px;padding:3px 10px;color:var(--text-3);font:11px ui-monospace}.file-card{z-index:1;position:absolute;right:16px;top:16px;width:280px;padding:12px;background:var(--bg-1);border:1px solid var(--border-1);border-radius:8px}.file-card div{display:flex;justify-content:space-between;margin:4px 0}.file-card span{color:var(--text-3)}.file-card b{font:12px ui-monospace}.file-card p{border-top:1px solid var(--border-1);padding-top:10px;color:var(--text-2)}.error-card{z-index:1;position:absolute;bottom:22px;width:520px;padding:14px 16px;border:1px solid var(--border-1);border-left:3px solid var(--danger);border-radius:8px;background:var(--bg-1)}.error-card h2{font-size:16px;margin:0}.error-card p{color:var(--text-2);margin:4px 0 10px}.detect-stage{flex:1;display:grid;place-items:center}.detect-card{width:420px;padding:20px;background:var(--bg-1);border:1px solid var(--border-1);border-radius:8px}.detect-card h1{font-size:20px}.phase{color:var(--text-2);padding:4px 0;margin:0}.detect-card progress,.drawer progress{width:100%;margin:16px 0 6px;accent-color:var(--accent)}.detect-card .secondary{margin-top:16px}.review{display:grid;grid-template-rows:48px minmax(0,1fr) 152px 28px;flex:1;min-height:0}.toolbar{display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--bg-1);border-bottom:1px solid var(--border-1)}.toolbar i{height:20px;border-left:1px solid var(--border-1);margin:0 4px}.tool{font-size:12px}.tool.active{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}kbd{color:var(--text-3);font:11px ui-monospace}.workspace{display:flex;min-height:0}.canvas-wrap{position:relative;flex:1;min-width:560px;background:var(--bg-0)}.canvas-host{position:relative;width:100%;height:100%;overflow:hidden}.canvas-host canvas{touch-action:none;display:block}.zoom-tools{position:absolute;right:12px;top:12px;display:flex;flex-direction:column;background:var(--bg-1);border:1px solid var(--border-1);border-radius:6px;overflow:hidden}.zoom-tools button{height:28px;border:0;border-bottom:1px solid var(--border-1);background:transparent;color:var(--text-1);font:11px ui-monospace}.canvas-pointer{position:absolute;bottom:8px;right:12px;color:var(--text-3);font:12px ui-monospace}.warning-banner{position:absolute;z-index:10;left:0;right:0;height:40px;padding:8px 12px;border-left:3px solid var(--warn);background:var(--bg-1);color:var(--warn)}.warning-banner button{float:right}.sidebar{width:292px;flex:none;overflow:auto;padding:12px;background:var(--bg-1);border-left:1px solid var(--border-1)}.sidebar section{padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--border-1)}.sidebar h2{font-size:16px;margin:0 0 8px}.method-chip{display:inline-block;margin:0 0 8px;padding:3px 8px;background:var(--accent-dim);border:1px solid var(--accent);border-radius:4px;color:var(--accent)}.full{width:100%;margin:4px 0}.link{display:block;padding:4px 0;border:0;background:none;color:var(--accent);text-align:left}.field{display:block;margin:10px 0}.field>span{display:flex;justify-content:space-between;font-size:12px;color:var(--text-2);margin-bottom:4px}.field input,.field select{width:100%;height:30px;background:var(--bg-2);border:1px solid var(--border-1);color:var(--text-1);border-radius:6px;padding:0 8px}.field input[type=range]{padding:0;accent-color:var(--accent)}.field small{display:block;margin-top:4px}.inline-error{color:var(--danger);font-size:12px}.normal-preview{position:relative;height:150px;display:grid;place-items:center;border:1px solid var(--border-1);overflow:hidden}.normal-preview span{z-index:1;font:12px ui-monospace}.timeline{background:var(--bg-1);border-top:1px solid var(--border-1);overflow:hidden}.timeline header{height:40px;display:flex;align-items:center;gap:7px;padding:0 12px;white-space:nowrap;overflow:auto}.timeline header button{min-height:26px;padding:0 7px;font-size:11px}.timeline header label{font-size:11px;color:var(--text-2)}.timeline header input[type=number]{width:44px;background:var(--bg-2);color:var(--text-1);border:1px solid var(--border-1);border-radius:4px}.filter.active{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}.attention{height:23px;padding:3px 12px;border-left:3px solid var(--warn);font-size:11px;color:var(--text-2)}.frame-row{height:88px;display:flex;align-items:center;gap:8px;padding:8px 12px;overflow-x:auto}.frame-row>p{margin:auto;color:var(--text-3)}.frame-chip{position:relative;width:72px;height:76px;flex:none;padding:3px;background:var(--bg-2);border:1px solid var(--border-1);border-radius:5px;color:var(--text-2);text-align:left}.frame-chip.active{border:2px solid var(--accent);background:var(--accent-dim)}.frame-chip span{font:11px ui-monospace}.thumb{display:block;height:48px;margin-top:2px;background:linear-gradient(45deg,var(--checker-a) 25%,transparent 25%,transparent 75%,var(--checker-a) 75%) 0 0 / 12px 12px,linear-gradient(45deg,var(--checker-a) 25%,var(--checker-b) 25%,var(--checker-b) 75%,var(--checker-a) 75%) 6px 6px / 12px 12px}.empty-dot{display:block;height:48px;border:1px dashed var(--text-3)}.frame-chip em{position:absolute;bottom:3px;width:7px;height:7px;border-radius:50%}.outlier{right:4px;background:var(--warn)}.multi{right:14px;background:#b48bff}.empty{right:24px;background:#8b96a8}.statusbar{display:flex;align-items:center;gap:10px;padding:0 12px;border-top:1px solid var(--border-1);background:var(--bg-1);color:var(--text-3);font-size:11px}.idle-dot,.busy-dot{width:7px;height:7px;border-radius:50%;background:var(--text-3)}.busy-dot{background:var(--accent);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.35}}.drawer{position:fixed;z-index:100;right:0;top:0;bottom:0;width:480px;padding:20px;background:var(--bg-1);border-left:1px solid var(--border-2);box-shadow:0 8px 24px #0009;overflow:auto}.drawer header,.drawer footer{display:flex;align-items:center;justify-content:space-between}.drawer h1{font-size:20px}.drawer h2{font-size:16px}.drawer section{padding:14px 0;border-top:1px solid var(--border-1)}.export-choice{display:flex;flex-direction:column;gap:2px;margin:8px 0;padding:9px;border:1px solid var(--border-1);border-radius:6px}.export-choice small{margin-left:20px}.size-options{display:flex;flex-wrap:wrap;gap:4px}.drawer-state{display:grid;place-content:center;height:100%;gap:12px}.drawer-state h1{margin:0}.modal-wrap{position:fixed;z-index:300;inset:0;display:grid;place-items:center;background:#04060a99}.modal{width:440px;margin:0;padding:18px;border:1px solid var(--border-2);border-radius:8px;background:var(--bg-1);color:var(--text-1);box-shadow:0 8px 24px #0008}.modal h1{font-size:20px;margin:0 0 6px}.modal p{color:var(--text-2)}.modal footer{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.shortcuts dl{display:grid;grid-template-columns:130px 1fr;gap:8px}.shortcuts dl div{display:contents}.shortcuts dt{color:var(--accent);font-family:ui-monospace}.shortcuts dd{margin:0;color:var(--text-2)}.toast{position:fixed;z-index:200;bottom:40px;left:50%;transform:translate(-50%);padding:10px 14px;border-left:3px solid var(--ok);border-radius:6px;background:var(--bg-2);box-shadow:0 8px 24px #0008}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1100px){.sidebar{width:250px}.toolbar .tool{padding:0 6px}}
