:root{--primary:#06c;--primary-focus:#0071e3;--primary-on-dark:#2997ff;--ink:#1d1d1f;--ink-muted-80:#333;--ink-muted-48:#7a7a7a;--body-on-dark:#fff;--body-muted-dark:#ccc;--divider-soft:#f0f0f0;--hairline:#e0e0e0;--canvas:#fff;--parchment:#f5f5f7;--pearl:#fafafc;--tile-dark:#272729;--nav-black:#000;--danger:#d4382e;--product-shadow:#00000038 3px 5px 30px 0;--r-sm:8px;--r-md:11px;--r-lg:18px;--r-pill:9999px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}body{font-family:var(--font);background:var(--parchment);color:var(--ink);letter-spacing:-.224px;margin:0;font-size:14px;line-height:1.43}.app{flex-direction:column;height:100vh;display:flex}.btn{border-radius:var(--r-pill);font-family:var(--font);letter-spacing:-.224px;cursor:pointer;white-space:nowrap;border:1px solid #0000;align-items:center;gap:7px;padding:9px 18px;font-size:14px;font-weight:400;transition:background .15s,border-color .15s,transform .1s;display:inline-flex}.btn:active{transform:scale(.95)}.btn:focus-visible{outline:2px solid var(--primary-focus);outline-offset:2px}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-focus)}.btn-secondary,.btn-success{color:var(--primary);border-color:var(--primary);background:0 0}.btn-secondary:hover:not(:disabled),.btn-success:hover:not(:disabled){background:#0066cc0f}.btn-ghost{background:var(--pearl);color:var(--ink-muted-80);border-color:var(--divider-soft)}.btn-ghost:hover{background:var(--canvas);border-color:var(--hairline)}.btn-warn{background:var(--primary);color:#fff}.btn-danger-ghost{color:var(--danger);background:0 0;border-color:#0000}.btn-danger-ghost:hover{background:#d4382e0f}.icon-btn{border-radius:var(--r-sm);width:32px;height:32px;color:var(--ink);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:background .15s,transform .1s;display:inline-flex}.icon-btn:active{transform:scale(.95)}.icon-btn:hover{background:#0000000f}.topbar{background:var(--nav-black);height:48px;color:var(--body-on-dark);z-index:20;flex-shrink:0;align-items:center;gap:12px;padding:0 17px;display:flex}.topbar .icon-btn{color:var(--body-muted-dark)}.topbar .icon-btn:hover{background:var(--tile-dark);color:#fff}.brand{align-items:center;gap:8px;margin-right:8px;display:flex}.brand-logo{color:#fff;display:inline-flex}.brand-name{letter-spacing:-.374px;color:#fff;font-size:15px;font-weight:600}.topbar .btn-primary{padding:7px 16px;font-size:13px}.topbar .btn-ghost{background:var(--tile-dark);color:var(--body-on-dark);border-radius:var(--r-sm);border-color:#0000;padding:7px 14px;font-size:13px}.topbar .btn-ghost:hover{background:#3a3a3c}.topbar .btn-warn{border-radius:var(--r-sm);padding:7px 14px;font-size:13px}.doc-chip{border-radius:var(--r-sm);background:var(--tile-dark);flex-direction:column;max-width:320px;padding:4px 12px;display:flex}.doc-name{letter-spacing:-.12px;color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.doc-meta{color:var(--body-muted-dark);font-size:11px}.zoom-group{background:var(--tile-dark);border-radius:var(--r-sm);align-items:center;gap:2px;padding:2px;display:flex}.zoom-group .icon-btn{width:28px;height:28px;color:var(--body-muted-dark)}.zoom-value{color:#fff;min-width:48px;height:28px;font-family:var(--font);cursor:pointer;background:0 0;border:none;border-radius:6px;font-size:12px;font-weight:600}.zoom-value:hover{background:#3a3a3c}.topbar-spacer{flex:1}.topbar-user{align-items:center;gap:4px;margin-left:4px;display:flex}.topbar-email{color:var(--body-muted-dark);text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:12px;overflow:hidden}.busy-indicator{color:var(--primary-on-dark);font-size:12px;font-weight:400;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.45}}.layout{flex:1;min-height:0;display:flex}.sidebar{background:var(--parchment);border-right:1px solid var(--hairline);width:280px;color:var(--ink);flex-shrink:0;padding:17px 12px;overflow-y:auto}.sidebar-section{margin-bottom:32px}.sidebar-section h2{letter-spacing:-.12px;text-transform:none;color:var(--ink-muted-48);margin:0 8px 8px;font-size:12px;font-weight:600}.sidebar-empty{color:var(--ink-muted-48);margin:0 8px;font-size:12px}.session-list,.page-list{margin:0;padding:0;list-style:none}.session-item{border-radius:var(--r-md);cursor:pointer;border:1px solid #0000;margin-bottom:2px;padding:9px 30px 9px 12px;transition:background .15s;position:relative}.session-item:hover{background:#0000000a}.session-item.active{background:var(--canvas);border-color:var(--hairline)}.session-title{letter-spacing:-.224px;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.session-meta{color:var(--ink-muted-48);margin-top:2px;font-size:11.5px}.session-delete{border-radius:var(--r-pill);width:22px;height:22px;color:var(--ink-muted-48);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:none;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.session-item:hover .session-delete{display:inline-flex}.session-delete:hover{color:var(--ink);background:#00000014}.page-item{border-radius:var(--r-md);color:var(--ink-muted-80);cursor:pointer;justify-content:space-between;align-items:center;gap:8px;padding:7px 12px;font-size:12.5px;display:flex}.page-item:hover{background:#0000000a}.badge{border-radius:var(--r-pill);letter-spacing:-.12px;white-space:nowrap;padding:2px 9px;font-size:11px;font-weight:400;display:inline-block}.badge-ok{background:var(--canvas);border:1px solid var(--hairline);color:var(--ink-muted-80)}.badge-muted{border:1px solid var(--hairline);color:var(--ink-muted-48);background:0 0}.badge-progress{color:var(--primary);background:#0066cc14;animation:1.2s ease-in-out infinite pulse}.viewer{background:var(--parchment);flex-direction:column;flex:1;align-items:center;gap:32px;padding:32px 32px 112px;display:flex;overflow-y:auto}.dropzone{border-radius:var(--r-lg);text-align:center;color:var(--ink-muted-48);cursor:pointer;background:var(--canvas);border:none;max-width:560px;margin-top:10vh;padding:64px 80px}.dropzone:hover{background:var(--pearl)}.dropzone-icon{color:var(--ink-muted-48);justify-content:center;margin-bottom:12px;display:flex}.dropzone h3{color:var(--ink);letter-spacing:-.374px;margin:0 0 8px;font-size:21px;font-weight:600}.dropzone p{letter-spacing:-.224px;margin:0 0 24px;font-size:14px;line-height:1.43}.page-wrap{flex-direction:column;align-items:center;width:100%;display:flex}.page-label{letter-spacing:-.12px;color:var(--ink-muted-48);align-items:center;gap:10px;margin-bottom:8px;font-size:12px;display:flex}.rotate-btn{font-family:var(--font);border:1px solid var(--divider-soft);border-radius:var(--r-md);background:var(--pearl);color:var(--ink-muted-80);cursor:pointer;align-items:center;gap:4px;padding:4px 12px;font-size:11.5px;transition:transform .1s;display:inline-flex}.rotate-btn:active{transform:scale(.95)}.rotate-btn:hover{background:var(--canvas);border-color:var(--hairline)}.page-stack{background:var(--canvas);box-shadow:var(--product-shadow);position:relative}.page-stack canvas,.page-stack .page-img{-webkit-user-select:none;user-select:none;display:block}.page-analyzing-strip{background:linear-gradient(90deg, transparent, var(--primary), transparent);z-index:2;background-repeat:no-repeat;background-size:50% 100%;height:3px;animation:1.4s linear infinite scan;position:absolute;top:0;left:0;right:0}@keyframes scan{0%{background-position:-60% 0}to{background-position:160% 0}}.overlay{touch-action:none;position:absolute;inset:0}.overlay.drawing{cursor:crosshair}.table-box{fill:#0066cc14;stroke:var(--primary);stroke-width:1.5px;cursor:pointer;transition:fill .12s}.table-box:hover{fill:#0066cc29}.table-box.selected{fill:#0071e324;stroke:var(--primary-focus);stroke-width:2.5px;cursor:move}.table-box.manual{stroke-dasharray:6 3}.table-box.draft{fill:#0071e31a;stroke:var(--primary-focus);stroke-dasharray:4 3;pointer-events:none}.table-box.extracted{fill:#e0780038;stroke:#e07800}.table-box.extracted:hover{fill:#e0780057}.table-box.exported{fill:#d4382e2e;stroke:#c8382e}.table-box.exported:hover{fill:#d4382e4d}.handle{fill:#fff;stroke:var(--primary-focus);stroke-width:1.5px}.action-bar{-webkit-backdrop-filter:saturate(180%)blur(20px);border-radius:var(--r-lg);z-index:30;background:#f5f5f7cc;border:1px solid #00000014;align-items:center;gap:24px;padding:10px 12px 10px 20px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.has-drawer .action-bar{left:calc(50% - min(680px,46%)/2)}.action-info{color:var(--ink-muted-48);flex-direction:column;font-size:12px;display:flex}.action-info strong{letter-spacing:-.224px;color:var(--ink);font-size:14px;font-weight:600}.action-buttons{align-items:center;gap:8px;display:flex}.toasts{z-index:50;flex-direction:column;gap:8px;display:flex;position:fixed;top:60px;right:16px}.toast{border-radius:var(--r-md);letter-spacing:-.224px;color:var(--body-on-dark);cursor:pointer;align-items:center;gap:8px;max-width:380px;padding:11px 17px;font-size:13px;font-weight:400;animation:.2s ease-out slide-in;display:flex}.toast-success{background:var(--ink)}.toast-error{background:var(--danger)}@keyframes slide-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.modal-backdrop{z-index:40;background:#0006;animation:.15s ease-out fade-in;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.drawer{background:var(--canvas);border-left:1px solid var(--hairline);flex-direction:column;flex-shrink:0;width:min(680px,46%);min-height:0;animation:.2s ease-out slide-drawer;display:flex}@keyframes slide-drawer{0%{opacity:.6;transform:translate(40px)}}.drawer-head{border-bottom:1px solid var(--divider-soft);justify-content:space-between;align-items:center;padding:17px 24px;display:flex}.drawer-head h2{letter-spacing:-.374px;margin:0;font-size:17px;font-weight:600}.drawer-sub{color:var(--ink-muted-48);font-size:12px}.drawer-toolbar{border-bottom:1px solid var(--divider-soft);background:var(--pearl);align-items:center;gap:10px;padding:12px 24px;display:flex}.drawer-toolbar-spacer{flex:1}.tabs{gap:8px;display:inline-flex}.tabs button{border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--canvas);font-family:var(--font);letter-spacing:-.12px;color:var(--ink);cursor:pointer;padding:7px 16px;font-size:12.5px;transition:transform .1s}.tabs button:active{transform:scale(.95)}.tabs button.active{border:2px solid var(--primary-focus);padding:6px 15px;font-weight:600}.drawer-toolbar .btn-ghost{border-radius:var(--r-pill);padding:7px 14px;font-size:12.5px}.vision-md-badge{border-radius:var(--r-pill);letter-spacing:-.12px;color:#b36000;white-space:nowrap;background:#e078001a;border:1px solid #e0780040;align-items:center;padding:3px 10px;font-size:11px;font-weight:400;display:inline-flex}.drawer-body{flex:1;padding:24px;overflow:auto}.drawer-status{color:var(--ink-muted-48);justify-content:center;align-items:center;gap:12px;padding:48px 0;font-size:14px;display:flex}.drawer-status-hint{color:var(--ink-muted-48);margin-top:4px;font-size:12px}.spinner{border:3px solid var(--hairline);border-top-color:var(--primary);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.drawer-error{background:var(--parchment);color:var(--danger);border-radius:var(--r-md);flex-wrap:wrap;align-items:center;gap:12px;padding:14px 17px;font-size:13px;display:flex}.preview-table-wrap{border:1px solid var(--hairline);border-radius:var(--r-md);overflow:auto}.preview-table{border-collapse:collapse;letter-spacing:-.12px;width:100%;font-size:12.5px}.preview-table td{border:1px solid var(--divider-soft);vertical-align:middle;text-align:center;white-space:pre-wrap;min-width:48px;color:var(--ink);padding:7px 10px}.preview-table td.th{background:var(--parchment);font-weight:600}.preview-raw{background:var(--tile-dark);color:var(--body-muted-dark);border-radius:var(--r-md);white-space:pre;margin:0;padding:17px;font-size:12px;line-height:1.5;overflow:auto}.drawer-foot{border-top:1px solid var(--divider-soft);justify-content:space-between;align-items:center;gap:12px;padding:14px 24px;display:flex}.drawer-dims{color:var(--ink-muted-48);font-size:12px}.modal{background:var(--canvas);border-radius:var(--r-lg);z-index:41;width:min(560px,94vw);max-height:90vh;position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%)}.modal-head{border-bottom:1px solid var(--divider-soft);justify-content:space-between;align-items:center;padding:17px 24px;display:flex}.modal-head h2{letter-spacing:-.374px;margin:0;font-size:17px;font-weight:600}.modal-body{flex-direction:column;gap:17px;padding:24px;display:flex}.field{letter-spacing:-.224px;color:var(--ink);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.field-sep{border:none;border-top:1px solid var(--divider-soft);margin:4px 0 0}.field-note{color:var(--ink-muted-48);margin:0;font-size:12px;font-weight:400}.field select,.field input{border:1px solid var(--hairline);border-radius:var(--r-pill);height:40px;font-family:var(--font);color:var(--ink);background:var(--canvas);padding:0 16px;font-size:13px;font-weight:400}.field textarea{border:1px solid var(--hairline);border-radius:var(--r-md);font-family:var(--font);color:var(--ink);resize:vertical;padding:12px 16px;font-size:13px;font-weight:400;line-height:1.47}.field select:focus,.field input:focus,.field textarea:focus{outline:2px solid var(--primary-focus);outline-offset:-1px;border-color:#0000}.field-ok{color:var(--primary);font-style:normal;font-weight:400}.modal-foot{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.login-wrap{background:var(--parchment);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--canvas);border-radius:var(--r-lg);width:100%;max-width:380px;box-shadow:var(--product-shadow);padding:40px 36px 36px}.login-brand{color:var(--ink);align-items:center;gap:10px;margin-bottom:28px;display:flex}.login-brand svg{color:var(--primary)}.login-brand span{letter-spacing:-.374px;font-size:17px;font-weight:600}.login-title{letter-spacing:-.374px;color:var(--ink);margin:0 0 24px;font-size:21px;font-weight:600}.login-form{flex-direction:column;gap:16px;display:flex}.login-error{border-radius:var(--r-md);color:var(--danger);background:#d4382e12;margin:0;padding:10px 14px;font-size:13px}.login-submit{justify-content:center;width:100%;height:44px;margin-top:4px;font-size:15px}
