:root{--canvas:#f7f6f3;--surface:#fff;--surface-alt:#f3f1ec;--border:#e7e2d8;--border-strong:#cfc7ba;--text:#5f5a52;--text-strong:#171411;--text-muted:#7b756b;--accent:#1f6c9f;--accent-soft:#7b8f67;--pale-blue:#e1f3fe;--pale-blue-text:#1f6c9f;--pale-green:#edf3ec;--pale-green-text:#346538;--pale-red:#fdebec;--pale-red-text:#9f2f2d;--dropzone-tint-top:#fcfbf7d1;--dropzone-tint-bottom:#fffffff5;--button-bg:#171411;--button-fg:#fff;--button-bg-hover:#2a2824;--button-disabled-bg:#d4cec4;--button-disabled-fg:#7b756b;--sans:"Helvetica Neue", Helvetica, "Arial Nova", Arial, ui-sans-serif, sans-serif;--mono:"SF Mono", "JetBrains Mono", "Consolas", "Liberation Mono", ui-monospace, monospace;color:var(--text);background:var(--canvas);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:1.6}:root[data-theme=dark]{--canvas:#151311;--surface:#1d1a17;--surface-alt:#26221e;--border:#332d27;--border-strong:#4a433b;--text:#c8bfb3;--text-strong:#f3ede5;--text-muted:#9c9287;--accent:#8dc3eb;--accent-soft:#92b07e;--pale-blue:#8dc3eb24;--pale-blue-text:#b4daf4;--pale-green:#92b07e24;--pale-green-text:#bdd1b0;--pale-red:#9f2f2d2e;--pale-red-text:#efb1af;--dropzone-tint-top:#26221ee6;--dropzone-tint-bottom:#1d1a17fa;--button-bg:#f3ede5;--button-fg:#171411;--button-bg-hover:#e4dbd0;--button-disabled-bg:#4a433b;--button-disabled-fg:#c8bfb3}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(circle at top left, #9564000a, transparent 32%), radial-gradient(circle at bottom right, #1f6c9f09, transparent 28%), var(--canvas);min-width:320px;min-height:100dvh;margin:0}:root[data-theme=dark] body{background:radial-gradient(circle at top left, #95640014, transparent 32%), radial-gradient(circle at bottom right, #8dc3eb0f, transparent 28%), var(--canvas)}body:before{content:"";pointer-events:none;background-image:linear-gradient(#00000005 1px,#0000 1px),linear-gradient(90deg,#00000005 1px,#0000 1px);background-size:36px 36px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#00000038,#0000 80%);mask-image:linear-gradient(#00000038,#0000 80%)}a{color:inherit}button,input,textarea,select{font:inherit}#root{min-height:100dvh}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--text-strong);letter-spacing:-.03em;font-weight:600}h1{font-size:clamp(2rem,4.4vw,3.8rem);line-height:.98}h2{font-size:clamp(1.5rem,2vw,2.1rem);line-height:1.05}h3{font-size:1.2rem;line-height:1.15}::selection{background:#1f6c9f2e}.page-shell{width:min(1240px,100% - 32px);margin:0 auto;padding:28px 0 44px}.topbar{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.project-brand{gap:6px;max-width:44rem;display:grid}.project-brand h1{letter-spacing:-.04em;margin:0;font-size:clamp(1.8rem,2vw,2.4rem)}.project-brand p{max-width:52ch;color:var(--text-muted);margin:0}.intro-copy{max-width:56ch;color:var(--text-muted);margin:0}.intro-panel,.workspace,.processing-panel,.record-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px}.intro-panel{gap:14px;margin-bottom:16px;padding:20px 24px;display:grid}.eyebrow,.section-kicker,.card-kicker,.stat-label,.record-field span{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;font-size:.75rem}.workflow-steps{flex-wrap:wrap;gap:8px;display:flex}.workflow-step{border:1px solid var(--border);background:var(--surface-alt);color:var(--text-muted);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:8px 12px;font-size:.72rem}.workflow-step.is-active{color:var(--text-strong);border-color:color-mix(in srgb, var(--accent) 30%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--surface))}.workspace{padding:22px}.workspace-header,.panel-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.workspace-header{margin-bottom:18px}.upload-grid,.results-grid,.record-grid{gap:18px;display:grid}.upload-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.upload-card{border:1px solid var(--border);cursor:pointer;border-radius:12px;gap:14px;padding:14px;transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s,border-color .22s;display:grid}.upload-card:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 10px 30px #1111110a}.upload-card:active,.ocr-button:active{transform:scale(.98)}.upload-card-header{justify-content:space-between;gap:12px;display:flex}.upload-card h3,.workspace h2,.processing-panel h2,.record-panel h2{margin:4px 0 0}.file-input{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;position:absolute}.dropzone{border:1px dashed var(--border-strong);background:linear-gradient(180deg, var(--dropzone-tint-top), var(--dropzone-tint-bottom)), var(--surface);cursor:pointer;border-radius:10px;place-items:center;min-height:260px;transition:border-color .18s,background-color .18s,transform .18s;display:grid;overflow:hidden}.dropzone:hover,.dropzone:focus-visible,.dropzone-active{border-color:var(--accent)}.dropzone:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:2px}.empty-upload{text-align:center;color:var(--text-muted);justify-items:center;gap:8px;padding:18px;display:grid}.empty-upload p{color:var(--text-strong);margin:0}.empty-upload span{font-size:.92rem}.upload-icon{border:1px solid var(--border);width:46px;height:46px;color:var(--text-strong);background:var(--surface-alt);border-radius:10px;place-items:center;display:grid}.upload-icon svg{width:20px;height:20px}.preview-image{object-fit:cover;width:100%;height:260px;display:block}.upload-meta,.processing-meter{gap:8px;display:grid}.upload-actions{justify-content:flex-end;gap:8px;display:flex}.upload-note{color:var(--text-muted);margin-top:12px;font-size:.9rem}.card-action{border:1px solid var(--border);background:var(--surface);color:var(--text-strong);cursor:pointer;border-radius:6px;padding:9px 12px;transition:transform .18s,border-color .18s,background-color .18s,opacity .18s}.card-action.primary{background:var(--surface-alt)}.card-action:hover:not(:disabled){border-color:var(--border-strong)}.card-action:active{transform:scale(.98)}.card-action:disabled{opacity:.45;cursor:not-allowed}.file-row,.progress-row{justify-content:space-between;align-items:center;gap:12px;font-size:.95rem;display:flex}.file-row span,.progress-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-row-muted{color:var(--text-muted);font-size:.88rem}.progress-row strong{color:var(--text-strong);font-weight:600}.progress-track{background:var(--surface-alt);border-radius:999px;width:100%;height:9px;overflow:hidden}.progress-fill{border-radius:inherit;background:var(--accent);height:100%;transition:width .22s;display:block}.processing-fill{background:var(--accent-soft)}.ocr-button{background:var(--button-bg);color:var(--button-fg);font:inherit;cursor:pointer;border:0;border-radius:6px;padding:12px 16px;font-weight:600;transition:transform .18s,background-color .18s,opacity .18s}.theme-toggle{border:1px solid var(--border);background:var(--surface);color:var(--text-strong);font:inherit;cursor:pointer;border-radius:999px;padding:10px 14px;transition:transform .18s,background-color .18s,border-color .18s}.theme-toggle:hover{border-color:var(--border-strong)}.theme-toggle:active{transform:scale(.98)}.ocr-button:hover:not(:disabled){background:var(--button-bg-hover)}.ocr-button:disabled{background:var(--button-disabled-bg);color:var(--button-disabled-fg);cursor:not-allowed}.workspace-footer{border-top:1px solid var(--border);justify-content:flex-end;margin-top:18px;padding-top:16px;display:flex}.status-chip{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:999px;align-self:flex-start;padding:6px 10px;font-size:.7rem}.status-idle{background:var(--surface-alt);color:var(--text-muted)}.status-uploading,.status-processing{background:var(--pale-blue);color:var(--pale-blue-text)}.status-error{background:var(--pale-red);color:var(--pale-red-text)}.status-ready,.status-done{background:var(--pale-green);color:var(--pale-green-text)}.results-grid{grid-template-columns:minmax(0,1fr);margin-top:16px}.processing-panel,.record-panel{padding:20px}.record-panel{width:100%}.timeline{gap:12px;margin:26px 0;display:grid}.timeline-item{border-bottom:1px solid var(--border);color:var(--text-muted);padding:12px 0}.timeline-item.active{color:var(--text-strong)}.record-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px}.record-field{border-top:1px solid var(--border);gap:8px;padding:14px 0;display:grid}.record-field strong{color:var(--text-strong);font-size:1rem;line-height:1.5}.record-field-wide{grid-column:1/-1}.empty-record{min-height:210px;color:var(--text-muted);align-content:center;gap:10px;display:grid}.loading-record{gap:14px;margin-top:18px;display:grid}.loading-header{align-items:center;gap:12px;display:flex}.loading-header p,.loading-record>span{color:var(--text-muted);margin:0}.loading-pulse{background:var(--accent);width:11px;height:11px;box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 34%, transparent);border-radius:999px;animation:1.4s ease-out infinite record-pulse}.loading-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.loading-block{border-top:1px solid var(--border);gap:10px;padding:14px 0;display:grid}.loading-block-wide{grid-column:1/-1}.loading-label,.loading-value{background:linear-gradient(90deg, color-mix(in srgb, var(--surface-alt) 92%, transparent) 0%, color-mix(in srgb, var(--surface) 70%, white) 50%, color-mix(in srgb, var(--surface-alt) 92%, transparent) 100%);background-size:220% 100%;border-radius:999px;animation:1.4s linear infinite skeleton-shift;display:block}.loading-label{width:110px;height:10px}.loading-value{width:82%;height:18px}.loading-value-tall{border-radius:14px;width:100%;height:52px}@keyframes skeleton-shift{0%{background-position:200% 0}to{background-position:-20% 0}}@keyframes record-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 32%, transparent);transform:scale(.96)}70%{box-shadow:0 0 0 12px color-mix(in srgb, var(--accent) 0%, transparent);transform:scale(1)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent);transform:scale(.96)}}.editor-backdrop{z-index:40;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f172a7a;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.editor-dialog{background:var(--surface);border:1px solid var(--border);border-radius:18px;gap:20px;width:min(1040px,100%);max-height:min(92dvh,900px);padding:20px;display:grid;overflow:auto;box-shadow:0 30px 80px #0f172a2e}.editor-header,.editor-inline-actions,.editor-footer{justify-content:space-between;align-items:center;gap:12px;display:flex}.editor-layout{grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:20px;display:grid}.editor-preview-frame{border:1px solid var(--border);background:linear-gradient(180deg, var(--dropzone-tint-top), var(--dropzone-tint-bottom)), var(--surface);border-radius:16px;padding:14px}.editor-canvas{border:1px solid var(--border);background:var(--surface-alt);border-radius:12px;place-items:center;width:100%;min-height:360px;display:grid;overflow:auto}.editor-crop-image{object-fit:contain;max-width:100%;max-height:68dvh;display:block}.editor-placeholder{min-height:320px;color:var(--text-muted);place-items:center;font-size:.95rem;display:grid}.ReactCrop{max-width:100%}.ReactCrop__child-wrapper{max-height:68dvh}.ReactCrop__crop-selection{border:1px solid color-mix(in srgb, var(--accent) 72%, white);box-shadow:0 0 0 1px #ffffff52,0 16px 44px #0f172a2e}.ReactCrop__drag-handle{background:var(--surface);border:1px solid var(--accent);width:12px;height:12px}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after,.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{background-color:#ffffff52}.editor-preview-image{object-fit:cover;width:100%;height:100%;display:block}.editor-controls,.editor-group{gap:12px;display:grid}.editor-controls{align-content:start}.editor-group{border:1px solid var(--border);background:var(--surface-alt);border-radius:14px;padding:16px}.editor-group-label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);font-size:.76rem}.editor-helper{color:var(--text-muted);margin:0;font-size:.9rem}.editor-range{gap:8px;display:grid}.editor-range span{color:var(--text-strong);font-size:.92rem}.editor-range input{width:100%;accent-color:var(--accent)}@media (width<=900px){.upload-grid,.results-grid,.editor-layout,.loading-grid,.record-grid{grid-template-columns:1fr}.editor-header,.editor-inline-actions,.editor-footer,.workspace-header,.panel-heading,.topbar{flex-direction:column;align-items:stretch}}.empty-record p{color:var(--text-strong)}.field-hint,.field-error{font-size:.88rem}.field-hint{color:var(--text-muted)}.field-error{color:#9f2f2d}.reveal{animation:.64s cubic-bezier(.16,1,.3,1) both reveal-up}@keyframes reveal-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width<=980px){.upload-grid,.results-grid,.record-grid{grid-template-columns:1fr}.topbar,.workspace-header,.panel-heading,.upload-card-header{flex-direction:column}.dropzone,.preview-image{height:240px;min-height:240px}.upload-actions{flex-direction:column}.workspace-footer{justify-content:stretch}.workspace-footer .ocr-button{width:100%}}@media (width<=640px){.page-shell{width:min(100% - 20px,1240px);padding:20px 0 36px}.topbar{align-items:stretch}.intro-panel,.workspace,.processing-panel,.record-panel,.editor-dialog{padding:18px}.editor-canvas{min-height:280px}.dropzone,.preview-image{height:240px;min-height:240px}}@keyframes marching-ants{0%{background-position:0 0,0 100%,0 0,100% 0}to{background-position:20px 0,-20px 100%,0 -20px,100% 20px}}:root{--rc-drag-handle-size:12px;--rc-drag-handle-mobile-size:24px;--rc-drag-handle-bg-colour:#0003;--rc-drag-bar-size:6px;--rc-border-color:#ffffffb3;--rc-focus-color:#08f}.ReactCrop{cursor:crosshair;max-width:100%;display:inline-block;position:relative}.ReactCrop *,.ReactCrop :before,.ReactCrop :after{box-sizing:border-box}.ReactCrop--disabled,.ReactCrop--locked{cursor:inherit}.ReactCrop__child-wrapper{max-height:inherit;overflow:hidden}.ReactCrop__child-wrapper>img,.ReactCrop__child-wrapper>video{max-width:100%;max-height:inherit;display:block}.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>img,.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>video,.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__crop-selection{touch-action:none}.ReactCrop__crop-mask{pointer-events:none;width:calc(100% + .5px);height:calc(100% + .5px);position:absolute;inset:0}.ReactCrop__crop-selection{cursor:move;position:absolute;top:0;left:0;transform:translateZ(0)}.ReactCrop--disabled .ReactCrop__crop-selection{cursor:inherit}.ReactCrop--circular-crop .ReactCrop__crop-selection{border-radius:50%}.ReactCrop--circular-crop .ReactCrop__crop-selection:after{pointer-events:none;content:"";border:1px solid var(--rc-border-color);opacity:.3;position:absolute;inset:-1px}.ReactCrop--no-animate .ReactCrop__crop-selection{outline:1px dashed #fff}.ReactCrop__crop-selection:not(.ReactCrop--no-animate .ReactCrop__crop-selection){color:#fff;background-image:linear-gradient(90deg,#fff 50%,#444 50%),linear-gradient(90deg,#fff 50%,#444 50%),linear-gradient(#fff 50%,#444 50%),linear-gradient(#fff 50%,#444 50%);background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:10px 1px,10px 1px,1px 10px,1px 10px;animation:1s linear infinite marching-ants}.ReactCrop__crop-selection:focus{outline:2px solid var(--rc-focus-color);outline-offset:-1px}.ReactCrop--invisible-crop .ReactCrop__crop-mask,.ReactCrop--invisible-crop .ReactCrop__crop-selection{display:none}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after,.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{content:"";background-color:#fff6;display:block;position:absolute}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after{width:1px;height:100%}.ReactCrop__rule-of-thirds-vt:before{left:33.3333%}.ReactCrop__rule-of-thirds-vt:after{left:66.6667%}.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{width:100%;height:1px}.ReactCrop__rule-of-thirds-hz:before{top:33.3333%}.ReactCrop__rule-of-thirds-hz:after{top:66.6667%}.ReactCrop__drag-handle{width:var(--rc-drag-handle-size);height:var(--rc-drag-handle-size);background-color:var(--rc-drag-handle-bg-colour);border:1px solid var(--rc-border-color);position:absolute}.ReactCrop__drag-handle:focus{background:var(--rc-focus-color)}.ReactCrop .ord-nw{cursor:nw-resize;top:0;left:0;transform:translate(-50%,-50%)}.ReactCrop .ord-n{cursor:n-resize;top:0;left:50%;transform:translate(-50%,-50%)}.ReactCrop .ord-ne{cursor:ne-resize;top:0;right:0;transform:translate(50%,-50%)}.ReactCrop .ord-e{cursor:e-resize;top:50%;right:0;transform:translate(50%,-50%)}.ReactCrop .ord-se{cursor:se-resize;bottom:0;right:0;transform:translate(50%,50%)}.ReactCrop .ord-s{cursor:s-resize;bottom:0;left:50%;transform:translate(-50%,50%)}.ReactCrop .ord-sw{cursor:sw-resize;bottom:0;left:0;transform:translate(-50%,50%)}.ReactCrop .ord-w{cursor:w-resize;top:50%;left:0;transform:translate(-50%,-50%)}.ReactCrop__disabled .ReactCrop__drag-handle{cursor:inherit}.ReactCrop__drag-bar{position:absolute}.ReactCrop__drag-bar.ord-n{width:100%;height:var(--rc-drag-bar-size);top:0;left:0;transform:translateY(-50%)}.ReactCrop__drag-bar.ord-e{width:var(--rc-drag-bar-size);height:100%;top:0;right:0;transform:translate(50%)}.ReactCrop__drag-bar.ord-s{width:100%;height:var(--rc-drag-bar-size);bottom:0;left:0;transform:translateY(50%)}.ReactCrop__drag-bar.ord-w{width:var(--rc-drag-bar-size);height:100%;top:0;left:0;transform:translate(-50%)}.ReactCrop--new-crop .ReactCrop__drag-bar,.ReactCrop--new-crop .ReactCrop__drag-handle,.ReactCrop--fixed-aspect .ReactCrop__drag-bar,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-n,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-e,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-s,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-w{display:none}@media (pointer:coarse){.ReactCrop .ord-n,.ReactCrop .ord-e,.ReactCrop .ord-s,.ReactCrop .ord-w{display:none}.ReactCrop__drag-handle{width:var(--rc-drag-handle-mobile-size);height:var(--rc-drag-handle-mobile-size)}}
