.pdf-viewer{flex:1;overflow:auto;background:var(--gray-100);padding:var(--space-6);display:flex;flex-direction:column;align-items:center}.placement-message{width:100%;max-width:700px;padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:.875rem;font-weight:500;margin-bottom:var(--space-3)}.placement-message-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.placement-message-success{background:#dcfce7;border:1px solid #bbf7d0;color:#166534}.placement-message-info{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af}.pdf-page-container{position:relative;display:inline-block;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;transition:all .3s ease}.pdf-page-container:hover{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.pdf-page-image{display:block;width:100%;height:100%;border-radius:var(--radius-lg);object-fit:contain}.pdf-annotations{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;border-radius:var(--radius-lg);overflow:hidden}.pdf-annotations polygon{pointer-events:all;cursor:pointer;transition:all .2s ease}.pdf-annotations polygon.paragraph{fill:#3b82f633;stroke:#3b82f699;stroke-width:1.5}.pdf-annotations polygon.paragraph:hover{fill:#3b82f64d;stroke:#3b82f6cc;stroke-width:2}.pdf-annotations polygon.heading{fill:#22c55e33;stroke:#22c55e99;stroke-width:2}.pdf-annotations polygon.heading:hover{fill:#22c55e4d;stroke:#22c55ecc;stroke-width:2.5}.pdf-annotations polygon.footnote{fill:#ef444433;stroke:#ef444499;stroke-width:1.5}.pdf-annotations polygon.footnote:hover{fill:#ef44444d;stroke:#ef4444cc;stroke-width:2}.pdf-annotations polygon.footnote.orphaned{fill:#f5656540;stroke:#f56565b3;stroke-dasharray:4 4}.pdf-annotations polygon.footnote.orphaned:hover{fill:#f5656559;stroke:#f56565e6}.pdf-annotations polygon.ignored{fill:#9ca3af26;stroke:#9ca3af66;stroke-width:1;stroke-dasharray:3 3;opacity:.6}.pdf-annotations polygon.ignored:hover{fill:#9ca3af33;stroke:#9ca3af99}.pdf-annotations polygon.selected{fill:#a855f74d;stroke:#a855f7cc;stroke-width:3;filter:drop-shadow(0 0 8px rgba(168,85,247,.4))}.pdf-viewer.loading{display:flex;align-items:center;justify-content:center;color:var(--gray-500);font-size:1.125rem}.pdf-viewer.loading:before{content:"";width:2rem;height:2rem;border:3px solid var(--gray-200);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin-right:var(--space-3)}@keyframes spin{to{transform:rotate(360deg)}}.pdf-viewer.error{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--danger);text-align:center;padding:var(--space-8)}.pdf-viewer.error h3{margin-bottom:var(--space-4);font-size:1.25rem;font-weight:600}.pdf-viewer.error p{color:var(--gray-600);max-width:400px}@media (max-width: 768px){.pdf-viewer{padding:var(--space-4)}.pdf-page-container{max-width:100%}.pdf-annotations polygon{stroke-width:2}.pdf-annotations polygon:hover{stroke-width:3}.pdf-annotations polygon.selected{stroke-width:4}}.control-panel{width:280px;background:#fff;border-right:1px solid var(--gray-200);padding:var(--space-6);overflow-y:auto;box-shadow:var(--shadow-sm)}.control-panel h3{margin:0 0 var(--space-5) 0;font-size:1.125rem;font-weight:700;color:var(--gray-900);border-bottom:2px solid var(--gray-100);padding-bottom:var(--space-3)}.control-section{margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--gray-100)}.control-section:last-child{border-bottom:none;margin-bottom:0}.control-section h4{margin:0 0 var(--space-3) 0;font-size:.875rem;font-weight:600;color:var(--gray-600);text-transform:uppercase;letter-spacing:.05em}.control-panel button{width:100%;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2);border:1px solid var(--gray-300);background:#fff;border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:500;color:var(--gray-700);transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.control-panel button:hover:not(:disabled){background:var(--gray-50);border-color:var(--gray-400);color:var(--gray-900);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.control-panel button:active:not(:disabled){transform:translateY(0);box-shadow:none}.control-panel button:disabled{opacity:.5;cursor:not-allowed;background:var(--gray-100);color:var(--gray-400)}.control-panel button.primary{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}.control-panel button.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.control-panel button.success{background:var(--success);color:#fff;border-color:var(--success);font-weight:600}.control-panel button.success:hover:not(:disabled){background:var(--success-hover);border-color:var(--success-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.control-panel button.danger{background:var(--danger);color:#fff;border-color:var(--danger);font-weight:600}.control-panel button.danger:hover:not(:disabled){background:var(--danger-hover);border-color:var(--danger-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.control-panel button.warning{background:var(--warning);color:#fff;border-color:var(--warning);font-weight:600}.control-panel button.warning:hover:not(:disabled){background:#b45309;border-color:#b45309;transform:translateY(-1px);box-shadow:var(--shadow-md)}.button-group{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.button-group button{margin-bottom:0}.button-group.three-columns{grid-template-columns:1fr 1fr 1fr}.button-group.single-column{grid-template-columns:1fr}.footnote-input{margin-bottom:var(--space-3)}.footnote-input label{display:block;margin-bottom:var(--space-2);font-size:.875rem;font-weight:600;color:var(--gray-700)}.footnote-input input{width:100%;padding:var(--space-3);border:1px solid var(--gray-300);border-radius:var(--radius);font-size:.875rem;transition:all .2s ease}.footnote-input input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.footnote-input input::placeholder{color:var(--gray-400)}.element-info{background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4)}.element-info h5{margin:0 0 var(--space-2) 0;font-size:.875rem;font-weight:600;color:var(--gray-900)}.element-info p{margin:0;font-size:.75rem;color:var(--gray-600);line-height:1.4}.element-info .element-type{display:inline-block;padding:var(--space-1) var(--space-2);background:var(--primary);color:#fff;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.element-info .element-type.heading{background:var(--success)}.element-info .element-type.paragraph{background:var(--primary)}.element-info .element-type.footnote{background:var(--danger)}.selection-counter{background:var(--primary);color:#fff;padding:var(--space-2) var(--space-3);border-radius:var(--radius);font-size:.75rem;font-weight:600;text-align:center;margin-bottom:var(--space-3)}.selection-counter.multiple{background:var(--warning)}.status-indicator{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius);font-size:.75rem;font-weight:600;margin-bottom:var(--space-3)}.status-indicator.success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.status-indicator.warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.status-indicator.error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.status-indicator:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.keyboard-shortcuts{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--gray-200)}.keyboard-shortcuts h5{margin:0 0 var(--space-3) 0;font-size:.875rem;font-weight:600;color:var(--gray-700)}.shortcut-item{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2);font-size:.75rem}.shortcut-key{background:var(--gray-200);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-mono);font-weight:600;color:var(--gray-700)}.shortcut-description{color:var(--gray-600)}@media (max-width: 1024px){.control-panel{width:240px;padding:var(--space-4)}.button-group,.button-group.three-columns{grid-template-columns:1fr}}@media (max-width: 768px){.control-panel{width:100%;border-right:none;border-bottom:1px solid var(--gray-200);max-height:200px}.control-section{margin-bottom:var(--space-4)}.keyboard-shortcuts{display:none}}.draw-region-form{background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius);padding:var(--space-4)}.draw-region-form h4{color:var(--primary)!important}.form-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-3);font-size:.875rem}.form-row label{font-weight:600;color:var(--gray-700);flex-shrink:0;min-width:80px}.form-row input[type=number]{flex:1;padding:var(--space-2) var(--space-3);border:1px solid var(--gray-300);border-radius:var(--radius);font-size:.875rem}.form-row input[type=number]:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.region-coords{font-size:.75rem;color:var(--gray-500);font-family:var(--font-mono)}.tristate-btn{width:auto!important;padding:var(--space-1) var(--space-3)!important;font-size:.8rem!important;margin-bottom:0!important}.form-error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:.8rem;margin-bottom:var(--space-3)}.form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.form-actions button{flex:1;margin-bottom:0!important}.orphaned-footnotes-list{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.orphaned-footnotes-list button{width:auto;padding:var(--space-2) var(--space-3);margin-bottom:0;font-family:var(--font-mono);font-weight:600;background:#fef2f2;border-color:#fecaca;color:#991b1b}.orphaned-footnotes-list button:hover:not(:disabled){background:#fee2e2;border-color:#f87171;color:#7f1d1d}.orphaned-footnotes-list button.placement-active{background:#991b1b;border-color:#991b1b;color:#fff;box-shadow:var(--shadow-md)}.placement-hint{background:#fef3c7;border:1px solid #fde68a;border-radius:var(--radius);padding:var(--space-3) var(--space-4)}.placement-hint p{margin:0 0 var(--space-2) 0;font-size:.875rem;color:#92400e;font-weight:500}.placement-hint button{background:#fff!important;border-color:#fde68a!important;color:#92400e!important}.control-panel button.flag-active{background:#7c3aed;border-color:#7c3aed;color:#fff;font-weight:600}.control-panel button.flag-active:hover:not(:disabled){background:#6d28d9;border-color:#6d28d9}.flag-hint{background:#f5f3ff;border:1px solid #ddd6fe;border-radius:var(--radius);padding:var(--space-3) var(--space-4);margin-top:var(--space-2)}.flag-hint p{margin:0;font-size:.875rem;color:#5b21b6;font-weight:500}.flags-list{margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-1)}.flag-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#f5f3ff;border:1px solid #ddd6fe;border-radius:var(--radius);font-size:.8rem}.flag-coords{font-family:var(--font-mono);color:#5b21b6;font-size:.75rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flag-delete-btn{width:auto!important;padding:0 var(--space-2)!important;margin-bottom:0!important;min-width:20px;height:20px;font-size:1rem!important;line-height:1;background:transparent!important;border-color:#c4b5fd!important;color:#7c3aed!important}.flag-delete-btn:hover:not(:disabled){background:#ede9fe!important;border-color:#7c3aed!important;transform:none!important;box-shadow:none!important}.draw-region-hint{background:#fef3c7;border:1px solid #fde68a;border-radius:var(--radius);padding:var(--space-3) var(--space-4)}.draw-region-hint p{margin:0 0 var(--space-2) 0;font-size:.875rem;color:#92400e;font-weight:500}.draw-region-hint button{background:#fff!important;border-color:#fde68a!important;color:#92400e!important}.parsed-output{width:320px;background:#fff;border-left:1px solid var(--gray-200);padding:var(--space-6);overflow-y:auto;font-family:var(--font-sans);box-shadow:var(--shadow-sm)}.parsed-output h3{margin:0 0 var(--space-5) 0;color:var(--gray-900);font-size:1.125rem;font-weight:700;border-bottom:2px solid var(--gray-100);padding-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.parsed-output h3:before{content:"";width:4px;height:18px;background:var(--primary);border-radius:var(--radius-sm)}.parsed-content{display:flex;flex-direction:column;gap:var(--space-3)}.parsed-element{display:flex;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);border-left:3px solid var(--gray-300);background:var(--gray-50);transition:all .2s ease;position:relative}.parsed-element:hover{background:#fff;box-shadow:var(--shadow-sm);transform:translate(2px)}.parsed-element.heading{background:#22c55e0d;border-left-color:var(--success)}.parsed-element.heading.level-0{border-left-color:var(--danger);background:#ef44440d}.parsed-element.heading.level-1{border-left-color:var(--warning);background:#d977060d}.parsed-element.heading.level-2{border-left-color:var(--primary);background:#2563eb0d}.parsed-element.heading.level-3{border-left-color:#8b5cf6;background:#8b5cf60d}.parsed-element.paragraph{background:var(--gray-50);border-left-color:var(--gray-400)}.element-type{font-weight:700;font-size:.625rem;color:#fff;min-width:28px;text-align:center;background:var(--gray-500);border-radius:var(--radius-sm);padding:var(--space-1);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;align-self:flex-start}.font-size-badge{font-size:.55rem;font-weight:600;letter-spacing:0;opacity:.9;white-space:nowrap}.parsed-element.heading .element-type{background:var(--success)}.parsed-element.heading.level-0 .element-type{background:var(--danger)}.parsed-element.heading.level-1 .element-type{background:var(--warning)}.parsed-element.heading.level-2 .element-type{background:var(--primary)}.parsed-element.heading.level-3 .element-type{background:#8b5cf6}.parsed-element.paragraph .element-type{background:var(--gray-500)}.element-text{flex:1;font-size:.8125rem;line-height:1.5;color:var(--gray-800);word-wrap:break-word}.parsed-element.heading .element-text{font-weight:600;color:var(--gray-900)}.parsed-element.heading.level-0 .element-text{font-size:1rem;font-weight:700}.parsed-element.heading.level-1 .element-text{font-size:.9375rem;font-weight:600}.parsed-element.heading.level-2 .element-text{font-size:.875rem;font-weight:600}.parsed-element.heading.level-3 .element-text{font-size:.8125rem;font-weight:600}.element-text .bold{font-weight:700}.element-text .italic{font-style:italic}.footnote-marker{color:var(--danger);font-weight:700;background:#ef44441a;padding:1px 4px;border-radius:var(--radius-sm);margin:0 1px;font-size:.75rem;border:1px solid rgba(239,68,68,.2)}.footnotes-section{margin-top:var(--space-8);padding-top:var(--space-5);border-top:2px solid var(--gray-200)}.footnotes-section h4{margin:0 0 var(--space-4) 0;color:var(--gray-900);font-size:1rem;font-weight:700;display:flex;align-items:center;gap:var(--space-2)}.footnotes-section h4:before{content:"";width:3px;height:14px;background:var(--danger);border-radius:var(--radius-sm)}.parsed-element.footnote{background:#d977060d;border-left-color:var(--warning)}.parsed-element.footnote.orphaned{background:#ef44440d;border-left-color:var(--danger);border-style:dashed;position:relative}.parsed-element.footnote.orphaned:before{content:"⚠";position:absolute;top:var(--space-2);right:var(--space-2);color:var(--danger);font-size:.875rem;font-weight:700}.parsed-element.footnote .element-type{background:var(--warning)}.parsed-element.footnote.orphaned .element-type{background:var(--danger)}.element-metadata{margin-top:var(--space-2);padding:var(--space-2);background:#00000005;border-radius:var(--radius-sm);font-size:.6875rem;color:var(--gray-500);border:1px solid rgba(0,0,0,.05)}.element-metadata .confidence{font-weight:600;color:var(--gray-600)}.element-metadata .confidence.high{color:var(--success)}.element-metadata .confidence.medium{color:var(--warning)}.element-metadata .confidence.low{color:var(--danger)}.output-stats{margin-bottom:var(--space-5);padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-md);border:1px solid var(--gray-200)}.output-stats h4{margin:0 0 var(--space-3) 0;font-size:.875rem;font-weight:600;color:var(--gray-700)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.stat-item{text-align:center;padding:var(--space-2);background:#fff;border-radius:var(--radius);border:1px solid var(--gray-200)}.stat-number{display:block;font-size:1.25rem;font-weight:700;color:var(--primary)}.stat-label{font-size:.6875rem;color:var(--gray-600);text-transform:uppercase;letter-spacing:.05em}.empty-output{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);text-align:center;color:var(--gray-500)}.empty-output h4{margin-bottom:var(--space-2);font-size:1rem;font-weight:600;color:var(--gray-700)}.empty-output p{max-width:250px;line-height:1.5;font-size:.875rem}.parsed-output.loading{display:flex;align-items:center;justify-content:center;color:var(--gray-500)}.parsed-output.loading:before{content:"";width:2rem;height:2rem;border:3px solid var(--gray-200);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin-right:var(--space-3)}@media (max-width: 1024px){.parsed-output{width:280px;padding:var(--space-4)}.stats-grid{grid-template-columns:1fr}}@media (max-width: 768px){.parsed-output{width:100%;border-left:none;border-top:1px solid var(--gray-200);max-height:300px}.parsed-element{padding:var(--space-3)}.element-text{font-size:.75rem}.output-stats{margin-bottom:var(--space-3)}}.pdf-selector{display:flex;flex-direction:column;height:100vh;background:var(--gray-50);font-family:var(--font-sans)}.selector-header{background:var(--primary);color:#fff;padding:var(--space-12);text-align:center;box-shadow:var(--shadow-md)}.selector-header h1{margin:0 0 var(--space-3) 0;font-size:2.5rem;font-weight:700}.selector-header p{font-size:1.125rem;opacity:.9;max-width:600px;margin:0 auto}.selector-content{flex:1;padding:var(--space-10);max-width:1000px;margin:0 auto;width:100%}.file-selection{margin-bottom:var(--space-10);background:#fff;padding:var(--space-8);border-radius:var(--radius-lg);box-shadow:var(--shadow);border:1px solid var(--gray-200)}.file-selection h2{margin:0 0 var(--space-6) 0;color:var(--gray-900);font-size:1.5rem;font-weight:700}.file-input-group{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap}.file-select-button{padding:var(--space-4) var(--space-8);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease;box-shadow:var(--shadow)}.file-select-button:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.selected-file{font-weight:600;color:var(--success);background:#0596691a;padding:var(--space-2) var(--space-4);border-radius:var(--radius);border:1px solid rgba(5,150,105,.2)}.page-selection{background:#fff;padding:var(--space-8);border-radius:var(--radius-lg);box-shadow:var(--shadow);border:1px solid var(--gray-200);margin-bottom:var(--space-8)}.page-selection h2{margin:0 0 var(--space-6) 0;color:var(--gray-900);font-size:1.5rem;font-weight:700}.range-controls{display:flex;align-items:center;gap:var(--space-6);margin-bottom:var(--space-8);padding:var(--space-6);background:var(--gray-50);border-radius:var(--radius-md);border:1px solid var(--gray-200);flex-wrap:wrap}.range-input{display:flex;flex-direction:column;gap:var(--space-2)}.range-input label{font-weight:600;color:var(--gray-700);font-size:.875rem}.range-input input{padding:var(--space-3);border:1px solid var(--gray-300);border-radius:var(--radius);width:100px;font-size:.875rem;transition:all .2s ease}.range-input input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.page-info{font-weight:600;color:var(--gray-600);background:#fff;padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px solid var(--gray-200)}.page-grid-section h3{margin:0 0 var(--space-4) 0;color:var(--gray-900);font-size:1.125rem;font-weight:600}.page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:var(--space-4);margin-bottom:var(--space-6);padding:var(--space-6);background:var(--gray-50);border-radius:var(--radius-md);border:1px solid var(--gray-200);max-height:500px;overflow-y:auto}.page-preview{position:relative;display:flex;flex-direction:column;align-items:center;cursor:pointer;transition:all .2s ease;border-radius:var(--radius);padding:var(--space-3);background:#fff;border:2px solid transparent}.page-preview.included{border-color:var(--success);background:#0596690d}.page-preview.excluded{border-color:var(--danger);background:#dc26260d;opacity:.7}.page-preview:hover{transform:scale(1.05);box-shadow:var(--shadow-md)}.page-thumbnail{width:80px;height:100px;border:1px solid var(--gray-300);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:var(--space-2);background:var(--gray-100);display:flex;align-items:center;justify-content:center}.page-thumbnail img{width:100%;height:100%;object-fit:cover}.page-number{font-weight:700;font-size:.875rem;color:var(--gray-700)}.excluded-mark{position:absolute;top:var(--space-1);right:var(--space-1);color:var(--danger);font-size:1rem;font-weight:700;background:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.selection-summary{font-weight:600;color:var(--gray-900);text-align:center;margin:0 0 var(--space-6) 0;font-size:1.125rem;background:var(--primary);color:#fff;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);display:inline-block}.action-buttons{display:flex;justify-content:center;gap:var(--space-6);margin-top:var(--space-8)}.skip-button{padding:var(--space-4) var(--space-8);background:var(--gray-500);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease;box-shadow:var(--shadow)}.skip-button:hover{background:var(--gray-600);transform:translateY(-1px);box-shadow:var(--shadow-md)}.confirm-button{padding:var(--space-4) var(--space-8);background:var(--success);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:1rem;font-weight:700;transition:all .2s ease;box-shadow:var(--shadow)}.confirm-button:hover:not(:disabled){background:var(--success-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.confirm-button:disabled{background:var(--gray-400);cursor:not-allowed;transform:none;box-shadow:none}.page-viewer-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000}.page-viewer-content{background:#fff;border-radius:var(--radius-lg);width:90vw;height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg)}.viewer-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--gray-200);background:var(--gray-50)}.viewer-header h3{margin:0;color:var(--gray-900);font-size:1.125rem;font-weight:600}.close-button{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--gray-500);padding:var(--space-2);width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);transition:all .2s ease}.close-button:hover{color:var(--gray-700);background:var(--gray-200)}.viewer-image{align-items:center;justify-content:center;padding:var(--space-6);background:var(--gray-100);height:80%;width:100%}.viewer-image img{height:100%;width:100%;box-shadow:var(--shadow-lg);border-radius:var(--radius);object-fit:contain}.viewer-controls{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-6);border-top:1px solid var(--gray-200);background:var(--gray-50)}.nav-button{padding:var(--space-2) var(--space-4);background:var(--primary);color:#fff;border:none;border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:600;transition:all .2s ease}.nav-button:hover:not(:disabled){background:var(--primary-hover)}.nav-button:disabled{background:var(--gray-400);cursor:not-allowed}.exclude-button{padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:600;transition:all .2s ease}.exclude-button.included{background:var(--danger);color:#fff}.exclude-button.excluded{background:var(--success);color:#fff}.exclude-button:hover{opacity:.9}@media (max-width: 768px){.selector-header{padding:var(--space-8)}.selector-header h1{font-size:2rem}.selector-content,.file-selection,.page-selection{padding:var(--space-6)}.range-controls{flex-direction:column;align-items:stretch}.page-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:var(--space-3)}.action-buttons{flex-direction:column;align-items:center}.skip-button,.confirm-button{width:100%;max-width:300px}}.export-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:var(--space-4)}.export-panel{background:#fff;border-radius:var(--radius-lg);box-shadow:0 20px 40px #0000004d;width:100%;max-width:440px;padding:var(--space-8)}.export-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.export-panel-header h2{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin:0}.export-close-btn{background:none;border:none;font-size:1.5rem;line-height:1;color:var(--gray-400);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius);transition:color .15s ease,background .15s ease}.export-close-btn:hover:not(:disabled){color:var(--gray-700);background:var(--gray-100)}.export-close-btn:disabled{opacity:.4;cursor:not-allowed}.export-status{padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:.875rem;font-weight:500;margin-bottom:var(--space-4)}.export-status--progress{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.export-status--success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0;font-weight:600}.export-status--error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.export-submit-btn{width:100%;padding:var(--space-3) var(--space-4);background:var(--primary);color:#fff;border:none;border-radius:var(--radius);font-size:.9rem;font-weight:600;cursor:pointer;margin-top:var(--space-2);transition:background .15s ease,opacity .15s ease}.export-submit-btn:hover:not(:disabled){background:var(--primary-hover)}.export-submit-btn:disabled{opacity:.5;cursor:not-allowed}.export-back-btn{width:100%;padding:var(--space-3) var(--space-4);background:var(--success);color:#fff;border:none;border-radius:var(--radius);font-size:.9rem;font-weight:600;cursor:pointer;margin-top:var(--space-4);transition:background .15s ease}.export-back-btn:hover{background:var(--success-hover)}*{box-sizing:border-box;margin:0;padding:0}:root{--primary: #2563eb;--primary-hover: #1d4ed8;--secondary: #64748b;--success: #059669;--success-hover: #047857;--warning: #d97706;--danger: #dc2626;--danger-hover: #b91c1c;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", sans-serif;--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: .25rem;--radius: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1)}body{font-family:var(--font-sans);line-height:1.6;color:var(--gray-900);background:var(--gray-50);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;flex-direction:column;height:100vh;background:var(--gray-50)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-6);background:#fff;border-bottom:1px solid var(--gray-200);box-shadow:var(--shadow-sm)}.app-header h1{font-size:1.5rem;font-weight:700;color:var(--gray-900)}.header-controls{display:flex;align-items:center;gap:var(--space-6)}.page-controls{display:flex;align-items:center;gap:var(--space-3)}.page-controls button{padding:var(--space-2) var(--space-4);background:#fff;border:1px solid var(--gray-300);border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:500;color:var(--gray-700);transition:all .2s ease}.page-controls button:hover:not(:disabled){background:var(--gray-50);border-color:var(--gray-400)}.page-controls button:disabled{opacity:.5;cursor:not-allowed}.ocr-controls button{padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:600;transition:all .2s ease}.ocr-controls button.configured{background:var(--success);color:#fff}.ocr-controls button.configured:hover{background:var(--success-hover)}.ocr-controls button.not-configured{background:var(--warning);color:#fff}.ocr-controls button.not-configured:hover{background:#b45309}.app-content{display:flex;flex:1;overflow:hidden}.upload-section{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:var(--space-12);text-align:center}.upload-section h2{margin-bottom:var(--space-6);font-size:2rem;font-weight:700;color:var(--gray-900)}.upload-button{padding:var(--space-4) var(--space-8);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:1.125rem;font-weight:600;margin-bottom:var(--space-4);transition:all .2s ease;box-shadow:var(--shadow)}.upload-button:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.example-button{padding:var(--space-4) var(--space-8);background:var(--success);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:1rem;font-weight:600;margin-left:var(--space-4);transition:all .2s ease;box-shadow:var(--shadow)}.example-button:hover{background:var(--success-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.ocr-setup-section{padding:var(--space-8);max-width:800px;margin:0 auto;flex:1;display:flex;flex-direction:column}.ocr-setup-section h2{color:var(--gray-900);margin-bottom:var(--space-6);text-align:center;font-size:1.875rem;font-weight:700}.ocr-configured{background:#dcfce7;border:1px solid #bbf7d0;border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-6)}.ocr-configured p{margin:0 0 var(--space-4) 0;color:var(--success);font-weight:600}.ocr-not-configured{background:#fef3c7;border:1px solid #fde68a;border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-6)}.ocr-not-configured p{margin:var(--space-3) 0;color:var(--danger);font-weight:600}.skip-ocr-button{padding:var(--space-3) var(--space-5);background:var(--gray-500);color:#fff;border:none;border-radius:var(--radius);cursor:pointer;margin-top:var(--space-4);transition:all .2s ease}.skip-ocr-button:hover{background:var(--gray-600)}.ocr-not-configured pre{background:var(--gray-900);color:var(--gray-100);padding:var(--space-4);border-radius:var(--radius);font-size:.75rem;overflow-x:auto;font-family:var(--font-mono)}.reparse-bar{background:var(--primary);color:#fff;text-align:center;font-size:.8rem;font-weight:600;padding:var(--space-1) var(--space-4);flex-shrink:0}.loading{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.5rem;color:var(--gray-500)}.ocr-panel{position:fixed;top:0;right:0;width:400px;height:100vh;background:#fff;border-left:1px solid var(--gray-200);box-shadow:var(--shadow-lg);z-index:1000;overflow-y:auto;padding:var(--space-6)}.ocr-tabs{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);padding-bottom:var(--space-3);border-bottom:1px solid var(--gray-200)}.ocr-tabs h2{margin:0;color:var(--gray-900);font-size:1.25rem;font-weight:700}.ocr-tabs button{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--gray-400);padding:var(--space-2);border-radius:var(--radius);transition:all .2s ease}.ocr-tabs button:hover{color:var(--gray-600);background:var(--gray-100)}.form-group{margin-bottom:var(--space-4)}.form-group label{display:block;margin-bottom:var(--space-2);font-weight:600;color:var(--gray-700);font-size:.875rem}.form-group input,.form-group select{width:100%;padding:var(--space-3);border:1px solid var(--gray-300);border-radius:var(--radius);font-size:.875rem;transition:all .2s ease}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.button-group{display:flex;gap:var(--space-3);margin:var(--space-6) 0}.button-group button{flex:1;padding:var(--space-3);border:none;border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:600;transition:all .2s ease}.button-group button[type=submit]{background:var(--primary);color:#fff}.button-group button[type=submit]:hover:not(:disabled){background:var(--primary-hover)}.button-group button[type=button]{background:var(--gray-500);color:#fff}.button-group button[type=button]:hover:not(:disabled){background:var(--gray-600)}.button-group button:disabled{opacity:.5;cursor:not-allowed}.message{padding:var(--space-4);border-radius:var(--radius);margin:var(--space-3) 0;font-size:.875rem}.message.success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.message.error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.help-section{margin-top:var(--space-8);padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg);border:1px solid var(--gray-200)}.help-section h4{margin-top:0;margin-bottom:var(--space-3);color:var(--gray-900);font-size:1rem;font-weight:600}.help-section ul,.help-section ol{margin:var(--space-3) 0;padding-left:var(--space-5)}.help-section li{margin-bottom:var(--space-2);color:var(--gray-700)}.help-section code{background:var(--gray-200);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.75rem}.status-section{margin-bottom:var(--space-5);padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius);border:1px solid var(--gray-200)}.status-section .configured{color:var(--success);font-weight:600}.status-section .not-configured{color:var(--danger);font-weight:600}.view-examples-button{background:var(--secondary);color:#fff;border:none;border-radius:var(--radius);padding:var(--space-2) var(--space-4);font-size:.875rem;cursor:pointer;white-space:nowrap}.view-examples-button:hover{background:var(--gray-600)}.examples-view{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--gray-50)}.examples-header{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);background:#fff;border-bottom:1px solid var(--gray-200);flex-shrink:0}.examples-header h2{font-size:1.25rem;font-weight:600;color:var(--gray-800)}.back-button{background:var(--primary);color:#fff;border:none;border-radius:var(--radius);padding:var(--space-2) var(--space-4);font-size:.875rem;cursor:pointer}.back-button:hover{background:var(--primary-hover)}.examples-loading{flex:1;display:flex;align-items:center;justify-content:center;color:var(--gray-400);font-size:.875rem}.examples-error{color:var(--danger);font-size:.875rem;margin-left:auto}.ev-page-nav{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}.ev-page-nav span{font-size:.875rem;color:var(--gray-600);min-width:6rem;text-align:center}.ev-page-nav button{background:var(--gray-100);color:var(--gray-700);border:1px solid var(--gray-300);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);font-size:.8rem;cursor:pointer}.ev-page-nav button:hover:not(:disabled){background:var(--gray-200)}.ev-page-nav button:disabled{opacity:.4;cursor:default}.ev-body{flex:1;display:flex;overflow:hidden}.ev-viewer{flex:1;overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:var(--space-4);background:var(--gray-100)}.ev-image-container{position:relative;display:inline-block;line-height:0;box-shadow:0 2px 12px #0003}.ev-page-image{display:block;max-width:100%;max-height:calc(100vh - 120px);object-fit:contain}.ev-overlay{position:absolute;top:0;left:0;pointer-events:all}.ev-edit-area{width:280px;flex-shrink:0;background:#fff;border-left:1px solid var(--gray-200);overflow-y:auto;padding:var(--space-4)}.ev-panel{display:flex;flex-direction:column;gap:var(--space-4)}.ev-panel__title{font-size:.95rem;font-weight:600;color:var(--gray-800);display:flex;align-items:center;gap:var(--space-2)}.ev-panel__swatch{display:inline-block;width:12px;height:12px;border-radius:2px;flex-shrink:0}.ev-panel__subtitle{font-size:.75rem;font-weight:400;color:var(--gray-500);margin-left:var(--space-1)}.ev-panel__section{display:flex;flex-direction:column;gap:var(--space-1)}.ev-panel__label{font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.04em}.ev-panel__actions{display:flex;gap:var(--space-2);flex-wrap:wrap;padding-top:var(--space-2);border-top:1px solid var(--gray-100)}.ev-panel--legend{gap:var(--space-3)}.ev-legend{display:flex;flex-direction:column;gap:var(--space-2)}.ev-legend__item{display:flex;align-items:center;gap:var(--space-2);font-size:.875rem;color:var(--gray-700)}.ev-legend__swatch{display:inline-block;width:14px;height:14px;border-radius:2px;flex-shrink:0;opacity:.85}.ev-legend__hint{font-size:.8rem;color:var(--gray-400);font-style:italic;padding-top:var(--space-2);border-top:1px solid var(--gray-100)}.ev-legend__counts{display:flex;flex-direction:column;gap:2px;font-size:.8rem;color:var(--gray-500)}.ev-vertices{display:flex;flex-direction:column;gap:2px;padding:var(--space-2);background:var(--gray-50);border-radius:var(--radius-sm);border:1px solid var(--gray-200)}.mono{font-family:var(--font-mono);font-size:.8rem}.btn-edit,.btn-delete,.btn-save,.btn-cancel{border:none;border-radius:var(--radius-sm);padding:4px 10px;font-size:.8rem;cursor:pointer;font-weight:500}.btn-edit{background:var(--gray-200);color:var(--gray-700)}.btn-edit:hover{background:var(--gray-300)}.btn-delete{background:#fee2e2;color:var(--danger)}.btn-delete:hover{background:#fecaca}.btn-save{background:#dcfce7;color:var(--success)}.btn-save:hover{background:#bbf7d0}.btn-cancel{background:var(--gray-100);color:var(--gray-600)}.btn-cancel:hover{background:var(--gray-200)}.field-group{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.field-group--vertical{flex-direction:column;align-items:flex-start}.field-label{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--gray-600);min-width:5rem}.field-input{border:1px solid var(--gray-300);border-radius:var(--radius-sm);padding:3px 6px;font-size:.8rem;color:var(--gray-800)}.field-input--sm{width:5rem}.field-select{border:1px solid var(--gray-300);border-radius:var(--radius-sm);padding:3px 6px;font-size:.8rem;color:var(--gray-800);background:#fff}@media (max-width: 768px){.app-header{flex-direction:column;gap:var(--space-4);padding:var(--space-4)}.header-controls{flex-direction:column;gap:var(--space-4);width:100%}.ocr-panel{width:100%;left:0}.upload-section{padding:var(--space-8)}.upload-section h2{font-size:1.5rem}}
