*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-deep: #0f172a;--bg-panel: #1e293b;--bg-card: #1e293b;--border: #334155;--text-main: #e2e8f0;--text-muted: #94a3b8;--text-dim: #475569;--blue: #2563eb;--blue-light: #93c5fd;--green: #16a34a;--green-light:#4ade80;--amber: #d97706;--amber-light:#fcd34d}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;background:var(--bg-deep);color:var(--text-main);min-height:100vh}#root{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;background:var(--bg-panel);padding:0 24px;height:52px;flex-shrink:0;box-shadow:0 2px 12px #0006;z-index:20}.header-logo-group{display:flex;align-items:center;gap:10px}.header-logo{height:32px;width:auto;flex-shrink:0}.header-wordmark{font-weight:800;font-size:15px;letter-spacing:3px;color:#fff;text-transform:uppercase}.header-title{font-size:13px;color:var(--text-muted);font-weight:500}.header-page-timer{color:var(--text-dim);font-weight:400;font-variant-numeric:tabular-nums}.page-timer-preload{position:absolute;width:0;height:0;opacity:0;pointer-events:none;overflow:hidden}.header-right{display:flex;align-items:center;gap:10px}.header-btn{background:var(--border);color:var(--text-muted);border:none;border-radius:6px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none;transition:background .12s,color .12s}.header-btn:hover:not(:disabled){background:#475569;color:var(--text-main)}.header-btn:disabled{opacity:.35;cursor:not-allowed}.header-btn .material-icons{font-size:20px}.undo-redo-group{display:inline-flex;align-items:center;gap:2px}.page-badge{background:var(--blue);color:#fff;padding:5px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:.3px}.batch-list-content{flex:1;padding:32px;max-width:900px;margin:0 auto;width:100%}.batch-section-label{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);margin-bottom:12px;margin-top:28px;padding-top:40px}.batch-section-label:first-child{margin-top:0}.batch-section-label .material-icons{font-size:16px}.batch-cards{display:flex;flex-direction:column;gap:10px}.batch-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px 20px;display:flex;align-items:center;gap:16px}.batch-card-info{flex:1;min-width:0}.batch-card-name{font-weight:700;font-size:14px;color:var(--text-main);margin-bottom:2px}.batch-card-project{font-size:11px;color:var(--text-muted);margin-bottom:10px}.batch-progress-row{display:flex;align-items:center;gap:10px}.batch-progress-bar-bg{flex:1;height:5px;background:var(--border);border-radius:3px;overflow:hidden}.batch-progress-bar-fill{height:100%;border-radius:3px;background:var(--blue);transition:width .3s ease}.batch-progress-bar-fill.complete{background:var(--green)}.batch-progress-text{font-size:11px;color:var(--text-muted);white-space:nowrap}.batch-time-row{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-dim);margin-top:6px}.batch-time-row .material-icons{font-size:14px;opacity:.7}.status-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.3px;white-space:nowrap}.status-badge.ready{background:#2563eb26;color:var(--blue-light)}.status-badge.progress{background:#d9770626;color:var(--amber-light)}.status-badge.complete{background:#16a34a26;color:var(--green-light)}.status-badge.waiting{background:#47556933;color:var(--text-dim)}.status-badge .material-icons{font-size:13px}.review-btn{background:var(--blue);color:#fff;border:none;padding:8px 18px;border-radius:7px;font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px;text-decoration:none;transition:background .12s,box-shadow .12s;white-space:nowrap;box-shadow:0 2px 8px #2563eb4d}.review-btn:hover{background:#1d4ed8;box-shadow:0 4px 14px #2563eb66}.review-btn .material-icons{font-size:16px}.review-btn.disabled{background:var(--border);color:var(--text-dim);cursor:default;box-shadow:none;pointer-events:none}.page-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;gap:14px;color:var(--text-dim)}.page-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;gap:10px;color:#f87171;font-size:13px}.review-layout{display:flex;flex:1;overflow:hidden}.spreadsheet-panel{flex:none;width:54%;min-width:200px;overflow:auto;background:#fff;position:relative;color:#1e293b}table{border-collapse:collapse;table-layout:auto;min-width:100%}thead th{position:sticky;top:0;z-index:10;background:#1e293b;color:#93c5fd;text-align:left;padding:10px;font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;border-right:1px solid #334155;border-bottom:2px solid #334155;white-space:nowrap;min-width:90px}thead th.col-row-num,td.row-num-cell{min-width:2.5rem;width:2.5rem;text-align:center;padding:10px 6px;vertical-align:top}.col-letter{color:#fbbf24;font-weight:800}td.row-num-cell{background:#1e293b;color:#93c5fd;font-size:11px;font-weight:700;letter-spacing:.5px;border:1px solid #334155;border-right:1px solid #334155;-webkit-user-select:none;user-select:none}td.data-cell{padding:0;border:1px solid #e2e8f0;height:1px}tr:nth-child(2n) td.data-cell{background:#f8fbff}.cell-input{display:block;width:100%;height:100%;padding:7px 9px;border:none;border-radius:0;background:transparent;font-family:inherit;font-size:12px;color:#1e293b;line-height:1.45;resize:none;outline:none;cursor:cell;overflow:hidden;transition:background .1s;box-sizing:border-box}.cell-input:focus{background:#eff6ff;cursor:text}.resizer{width:6px;flex-shrink:0;background:#1e3a5f;cursor:col-resize;position:relative;z-index:15;transition:background .15s}.resizer:hover,.resizer.dragging{background:var(--blue)}.resizer:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:40px;background:#ffffff2e;border-radius:2px}.review-layout.vertical{flex-direction:column}.review-layout.vertical .spreadsheet-panel{width:100%!important;flex:none;border-right:none;border-bottom:2px solid var(--border)}.review-layout.vertical .resizer{width:100%;height:6px;cursor:row-resize}.review-layout.vertical .resizer:after{width:40px;height:2px}.review-layout.vertical .viewer-panel{flex:1;min-width:unset;min-height:150px;width:100%}.viewer-panel{flex:1;min-width:200px;display:flex;flex-direction:column;background:var(--bg-deep)}.viewport{flex:1;overflow:hidden;position:relative;cursor:grab;-webkit-user-select:none;user-select:none}.viewport.grabbing{cursor:grabbing}.scan-image{position:absolute;top:0;left:0;transform-origin:0 0;max-width:none;display:block}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;background:var(--bg-deep);color:var(--text-dim);font-size:13px;z-index:10}.spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.zoom-overlay{position:absolute;bottom:14px;right:14px;z-index:10;display:flex;align-items:center;gap:4px;background:#0f172ab8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:8px;padding:4px 8px;border:1px solid rgba(255,255,255,.08)}.zoom-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:1;max-width:130px;height:4px;background:var(--border);border-radius:2px;outline:none;cursor:pointer;margin-right:4px}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--blue);cursor:pointer}.zoom-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--blue);cursor:pointer;border:none}.zoom-pct{color:var(--text-muted);font-size:11px;font-family:Courier New,monospace;min-width:38px;text-align:right}.tool-btn{background:var(--border);color:var(--text-main);border:none;border-radius:5px;height:32px;min-width:28px;padding:0 6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s}.tool-btn:hover{background:#475569}.tool-btn.active{background:var(--blue);color:#fff}.tool-btn.active:hover{background:#2563eb}.tool-btn .material-icons{font-size:18px;line-height:1}.header-btn.tool-btn{height:36px;width:36px;min-width:36px;padding:0;border-radius:6px}.header-btn.tool-btn .material-icons{font-size:20px}th.col-check{width:80px;min-width:80px!important;text-align:center!important;padding:10px 4px!important}td.check-cell{text-align:center;vertical-align:middle;padding:6px 4px;border:1px solid #e2e8f0}.check-cell-inner{display:flex;align-items:center;justify-content:center;gap:2px}.check-btn{background:none;border:none;cursor:pointer;padding:4px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto;color:#cbd5e1;transition:color .15s,background .15s}.check-btn:hover{background:#f0fdf4;color:#16a34a}.check-btn .material-icons{font-size:22px}.check-btn.checked{color:#16a34a}.flag-btn{background:none;border:none;cursor:pointer;padding:4px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto;color:#cbd5e1;transition:color .15s,background .15s}.flag-btn:hover{background:#fff7ed;color:#ea580c}.flag-btn .material-icons{font-size:20px}.flag-btn.flagged{color:#ea580c}tr.flagged-row td.data-cell{background-color:#fff7ed!important;border-color:#fed7aa!important}tr.flagged-row td.data-cell:first-of-type{border-left:3px solid #ea580c!important}tr.active-row td.data-cell{background-color:#1e3a5f1a!important}tr.active-row td.data-cell.active-cell{background-color:transparent!important;outline:2px solid #3b82f6;outline-offset:-2px}tr.flagged-row.active-row td.data-cell{background-color:#4a2e121a!important}tr.flagged-row.active-row td.data-cell.active-cell{background-color:transparent!important;outline:2px solid #f97316;outline-offset:-2px}.flag-page-btn{display:flex;align-items:center;gap:4px;width:auto!important;padding:0 6px!important;color:#ea580c!important;border:1px solid #ea580c!important}.flag-page-btn:hover{background:#fff7ed!important}.flag-page-btn .material-icons{font-size:18px}.confirm-btn{display:flex;align-items:center;gap:8px;background:var(--green);color:#fff;border:none;padding:9px 22px;border-radius:7px;font-size:13px;font-weight:700;cursor:pointer;transition:background .12s,box-shadow .12s,transform .1s;box-shadow:0 2px 8px #16a34a66}.confirm-btn:hover{background:#15803d;box-shadow:0 4px 14px #16a34a80}.confirm-btn:active{transform:scale(.97)}.confirm-btn:disabled{background:var(--border);color:var(--text-dim);cursor:not-allowed;box-shadow:none;transform:none}.confirm-btn .material-icons{font-size:18px}.page-saved-notice{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:80px 40px;gap:20px;color:#15803d;height:100%}.page-saved-notice .notice-icon{font-size:72px!important;color:#16a34a}.page-saved-notice .notice-text{font-size:18px;font-weight:600;color:#1e293b}.banner-next-btn{display:flex;align-items:center;gap:6px;background:#16a34a;color:#fff;border:none;padding:9px 20px;border-radius:7px;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,box-shadow .15s;box-shadow:0 2px 8px #16a34a59}.banner-next-btn:hover{background:#15803d;box-shadow:0 4px 14px #16a34a80}.banner-next-btn:disabled{background:#cbd5e1;box-shadow:none;cursor:not-allowed}.banner-next-btn .material-icons{font-size:17px}.batch-complete{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;color:var(--green-light);text-align:center;padding:40px;background:var(--bg-deep)}.batch-complete .material-icons{font-size:72px;color:var(--green)}.batch-complete h2{font-size:22px;font-weight:700}.batch-complete p{font-size:14px;color:var(--text-muted)}.back-btn{display:flex;align-items:center;gap:8px;background:var(--border);color:var(--text-main);border:none;padding:10px 24px;border-radius:7px;font-size:13px;font-weight:700;cursor:pointer;text-decoration:none;transition:background .12s}.back-btn:hover{background:#475569}.back-btn .material-icons{font-size:16px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:36px 32px 32px;display:flex;flex-direction:column;gap:24px}.login-logo-row{display:flex;align-items:center;gap:10px}.login-logo{width:44px;height:auto}.login-wordmark{font-size:18px;font-weight:700;letter-spacing:.12em;color:var(--text)}.login-heading{font-size:20px;font-weight:600;color:var(--text);margin:0}.login-form{display:flex;flex-direction:column;gap:16px}.login-label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500;color:var(--text-muted)}.login-input{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:14px;color:var(--text);outline:none;transition:border-color .15s}.login-input:focus{border-color:var(--blue)}.login-input:disabled{opacity:.5}.login-error{margin:0;font-size:13px;color:#f87171;background:#f8717114;border:1px solid rgba(248,113,113,.25);border-radius:6px;padding:8px 12px}.login-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--blue);color:#fff;border:none;border-radius:6px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;margin-top:4px}.login-btn:hover:not(:disabled){background:#2563eb}.login-btn:disabled{opacity:.6;cursor:default}.login-link{background:none;border:none;padding:0;font-size:12px;color:var(--blue);cursor:pointer;text-decoration:none}.login-link:hover{text-decoration:underline}.login-link:disabled{opacity:.5;cursor:default}.login-guide-link{display:block;margin-top:1rem;text-align:center;width:100%}.login-label-row{display:flex;justify-content:space-between;align-items:baseline}.forgot-form{display:flex;flex-direction:column;gap:12px}.forgot-instructions{margin:0;font-size:13px;color:var(--text-muted)}.forgot-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.forgot-sent{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;font-size:13px;color:var(--text-muted)}.forgot-sent p{margin:0}.forgot-sent strong{color:var(--text)}.header-btn.spacer{background:transparent;border:none;cursor:default;padding:0;width:10px}.header-btn.spacer:after{content:"";display:block;width:1px;height:20px;background:var(--border)}.voice-btn-wrapper{display:inline-flex;flex-direction:row;align-items:center;gap:4px}.voice-btn{background:var(--border);color:var(--text-muted);border:none;border-radius:6px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none;transition:background .12s,color .12s}.voice-btn:hover{background:#475569}.voice-btn--enabled{color:#fff;background-color:#ea580c;box-shadow:0 0 0 3px #ea580c}.voice-btn--active-mode{border-color:#3b82f6}.voice-btn--status{font-size:.95rem;padding:4px 6px}.voice-btn--listening{border-color:#f87171;animation:voice-pulse .7s ease-in-out infinite}.voice-btn--processing{border-color:#3b82f6}.voice-btn__error{font-size:.65rem;color:#f87171;max-width:120px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes voice-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.ai-recording-toast{position:fixed;left:16px;bottom:16px;z-index:150;display:flex;align-items:flex-start;gap:12px;max-width:min(320px,calc(100vw - 32px));padding:12px 14px;border-radius:10px;background:var(--bg-panel);border:1px solid var(--border);box-shadow:0 8px 24px #00000073}.ai-recording-toast-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%}.ai-recording-toast-icon--recording{background:#f8717126;border:2px solid #f87171}.ai-recording-toast-icon--processing{background:#3b82f626;border:2px solid #3b82f6}.ai-recording-toast-text{min-width:0}.ai-recording-toast-title{margin:0 0 2px;font-size:13px;font-weight:600;color:var(--text-main)}.ai-recording-toast-desc{margin:0;font-size:11px;line-height:1.4;color:var(--text-muted)}.ai-modal-pulse{display:block;width:18px;height:18px;border-radius:50%;background:#f87171;animation:ai-rec-pulse 1s ease-in-out infinite}@keyframes ai-rec-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.65}}.confirm-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#020617b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.confirm-modal{width:min(440px,calc(100vw - 32px));padding:28px 24px 24px;border-radius:12px;background:var(--bg-panel);border:1px solid var(--border);box-shadow:0 24px 48px #00000073;text-align:center}.confirm-modal-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto 16px;border-radius:50%}.confirm-modal-icon--warning{background:#d9770626;border:2px solid var(--amber);color:var(--amber-light)}.confirm-modal-icon .material-icons{font-size:28px}.confirm-modal-title{margin:0 0 8px;font-size:1.1rem;font-weight:600;color:var(--text-main)}.confirm-modal-desc{margin:0 0 20px;font-size:.875rem;line-height:1.5;color:var(--text-muted)}.confirm-modal-actions{display:flex;gap:10px;justify-content:center}.confirm-modal-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:120px;padding:9px 16px;border:none;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s}.confirm-modal-btn:disabled{opacity:.6;cursor:not-allowed}.confirm-modal-btn--cancel{background:var(--border);color:var(--text-main)}.confirm-modal-btn--cancel:hover:not(:disabled){background:#475569}.confirm-modal-btn--danger{background:var(--amber);color:#fff}.confirm-modal-btn--danger:hover:not(:disabled){background:#b45309}.vsettings-body{padding:16px 20px 28px}.vsettings-section{padding:12px 0;border-bottom:1px solid #334155}.vsettings-section:last-of-type{border-bottom:none}.vsettings-label{display:block;font-size:13px;font-weight:600;color:#f1f5f9;margin-bottom:6px}.vsettings-hint{margin:0 0 10px;font-size:11px;line-height:1.45;color:#94a3b8}.vsettings-select{width:100%;padding:8px 10px;border-radius:6px;border:1px solid #475569;background:#0f172a;color:#f1f5f9;font-size:12px}.vsettings-range{width:100%;accent-color:var(--blue)}.vsettings-range-labels{display:flex;justify-content:space-between;margin-top:4px;font-size:10px;color:#64748b}.vsettings-preview-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:10px 14px;border:none;border-radius:7px;background:var(--blue);color:#fff;font-size:13px;font-weight:600;cursor:pointer}.vsettings-preview-btn:hover:not(:disabled){background:#1d4ed8}.vsettings-preview-btn:disabled{opacity:.65;cursor:not-allowed}.vsettings-status,.vsettings-error{font-size:12px;margin:8px 0 0}.vsettings-error{color:#f87171}.vsettings-status{color:#94a3b8}.vcpanel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:transparent}.vcpanel{position:fixed;top:52px;right:0;height:calc(100vh - 52px);width:340px;max-width:90vw;z-index:201;background:#1e293b;border-left:1px solid #334155;box-shadow:-4px 0 24px #00000060;display:flex;flex-direction:column;transform:translate(100%);transition:transform .22s ease;overflow:hidden}.vcpanel--open{transform:translate(0)}.vcpanel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid #334155;flex-shrink:0}.vcpanel-title{font-size:14px;font-weight:600;color:#f1f5f9;letter-spacing:.02em}.vcpanel-close{background:none;border:none;color:#94a3b8;font-size:14px;cursor:pointer;padding:2px 6px;border-radius:4px}.vcpanel-close:hover{background:#334155;color:#f1f5f9}.vcpanel-body{flex:1;overflow-y:auto;padding:12px 12px 24px}.vcpanel-group{padding:0 0 8px}.vcpanel-group+.vcpanel-group{border-top:1px solid #334155;padding-top:12px}.vcpanel-group-header{display:flex;align-items:flex-start;gap:10px;padding:4px 16px 10px}.vcpanel-tier-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:99px;flex-shrink:0;margin-top:2px;text-transform:uppercase;letter-spacing:.05em}.vcpanel-tier-badge--1{background:#1d4ed8;color:#eff6ff}.vcpanel-tier-badge--2{background:#7c3aed;color:#f5f3ff}.vcpanel-group-title{font-size:12px;font-weight:600;color:#e2e8f0}.vcpanel-group-subtitle{font-size:11px;color:#64748b;margin-top:1px}.vcpanel-cmd-list{list-style:none;margin:0;padding:0}.vcpanel-category-group+.vcpanel-category-group{margin-top:8px;border-top:1px solid #334155;padding-top:8px}.vcpanel-category-title{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.06em;padding:6px 16px 3px}.vcpanel-category-icon{font-size:14px;line-height:1}.vcpanel-cmd{padding:8px 0;border-bottom:1px solid #1e293b}.vcpanel-cmd:last-child{border-bottom:none}.vcpanel-cmd-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}.vcpanel-cmd-label{font-size:12px;font-weight:600;color:#cbd5e1}.vcpanel-trigger-btn{flex-shrink:0;background:#1e40af;border:none;border-radius:4px;color:#bfdbfe;font-size:9px;padding:2px 7px;cursor:pointer;opacity:.7;transition:opacity .1s,background .1s}.vcpanel-trigger-btn:hover{opacity:1;background:#2563eb}.vcpanel-cmd-desc{font-size:11px;color:#fff;margin:10px 0}.vcpanel-phrases{display:flex;flex-wrap:wrap;gap:4px}.vcpanel-phrase{font-size:10px;font-family:Menlo,Consolas,monospace;background:#0f172a;color:#7dd3fc;border:1px solid #1e40af40;border-radius:4px;padding:2px 6px}
