:root{--navy:#0b2744;--navy-mid:#163a5f;--teal:#0d6b63;--teal-hover:#0a5751;--teal-soft:#e6f4f2;--ink:#132033;--muted:#5c6b7a;--muted-2:#8795a5;--bg:#eef2f6;--bg-soft:#f7f9fb;--panel:#fff;--line:#d7e0ea;--line-strong:#b8c5d4;--success:#0f7a4f;--success-soft:#e7f6ee;--warning:#9a6700;--warning-soft:#fff6e0;--danger:#b42318;--danger-soft:#fdeceb;--shadow-sm:0 1px 2px #0b27440d;--shadow-md:0 8px 24px #0b274414;--radius:10px;--radius-sm:6px;--font-display:"Fraunces", Georgia, serif;--font-body:"DM Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "SF Mono", Consolas, monospace;--paper:var(--bg);--verify-green:var(--teal);--verify-green-light:var(--teal-soft);--alert-amber:var(--warning);--alert-amber-light:var(--warning-soft);--reject-red:var(--danger);--reject-red-light:var(--danger-soft)}*{box-sizing:border-box}html,body{height:100%}body{background:radial-gradient(1200px 500px at 10% -10%, #0d6b6314, transparent 55%), radial-gradient(900px 420px at 100% 0%, #0b274414, transparent 50%), var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}#root{min-height:100vh}button{font-family:var(--font-body)}a{color:var(--teal)}::selection{background:#0d6b632e}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#ffffffe0;position:sticky;top:0}.header-inner{grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;max-width:1200px;margin:0 auto;padding:14px 28px;display:grid}.brand-block{align-items:center;gap:12px;display:flex}.brand-mark{color:var(--navy);animation:.5s both brand-in;display:flex}.brand-title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--navy);font-size:20px;font-weight:700;line-height:1.1}.brand-tagline{color:var(--muted);margin-top:1px;font-size:12px}.header-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.env-badge{letter-spacing:.06em;text-transform:uppercase;color:var(--navy);border:1px solid var(--line);background:#e8eef5;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}.stepper{align-items:center;gap:8px;display:flex}.step{color:var(--muted-2);align-items:center;gap:8px;transition:color .25s;display:flex}.step-num{border:1.5px solid;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:11px;font-weight:700;transition:background .25s,color .25s,border-color .25s;display:inline-flex}.step-label{font-size:13px;font-weight:600}.step.active{color:var(--navy)}.step.active .step-num{background:var(--navy);border-color:var(--navy);color:#fff}.step.done{color:var(--teal)}.step.done .step-num{background:var(--teal-soft);border-color:var(--teal);color:var(--teal)}.step-line{background:var(--line-strong);width:28px;height:1px}.app-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:28px 28px 40px}.app-footer{max-width:1200px;color:var(--muted-2);flex-wrap:wrap;justify-content:space-between;gap:16px;margin:0 auto;padding:16px 28px 28px;font-size:12px;display:flex}.workspace{position:relative}.workspace-intro{margin-bottom:22px;animation:.45s both rise}.workspace-intro h1{font-family:var(--font-display);letter-spacing:-.03em;color:var(--navy);margin:0 0 8px;font-size:clamp(26px,3vw,34px)}.workspace-intro p{max-width:620px;color:var(--muted);margin:0;font-size:15px;line-height:1.55}.upload-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;animation:.55s 50ms both rise;display:grid}.upload-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:12px;padding:16px;transition:border-color .2s,box-shadow .2s,transform .2s;display:flex}.upload-card:hover:not(.is-disabled){border-color:var(--line-strong);box-shadow:var(--shadow-md)}.upload-card.is-ready{background:linear-gradient(#fff 0%,#f4faf9 100%);border-color:#0d6b6359}.upload-card.is-rejected,.upload-card.is-error{border-color:#b4231847}.upload-card.is-drag{border-color:var(--teal);box-shadow:0 0 0 3px #0d6b631f}.upload-card.is-disabled{opacity:.65}.upload-card-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.upload-card-title{color:var(--navy);font-size:15px;font-weight:700}.upload-card-hint{color:var(--muted);margin-top:2px;font-size:12.5px}.dropzone{border:1.5px dashed var(--line-strong);border-radius:var(--radius-sm);background:var(--bg-soft);cursor:pointer;justify-content:center;align-items:center;min-height:132px;transition:border-color .2s,background .2s;display:flex;overflow:hidden}.dropzone:hover,.dropzone:focus-visible{border-color:var(--teal);background:#f2f9f8;outline:none}.dropzone-empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:6px;padding:18px;display:flex}.dropzone-empty strong{color:var(--ink);font-size:13.5px;font-weight:600}.dropzone-empty span{color:var(--muted-2);font-size:12px}.drop-icon{background:var(--teal-soft);width:40px;height:40px;color:var(--teal);border-radius:10px;place-items:center;margin-bottom:4px;display:grid}.preview-img{object-fit:contain;max-width:100%;max-height:140px;padding:8px}.pdf-block{flex-direction:column;align-items:center;gap:8px;padding:16px;display:flex}.pdf-badge{font-family:var(--font-mono);letter-spacing:.08em;color:var(--teal);background:var(--teal-soft);border-radius:4px;padding:6px 12px;font-size:12px;font-weight:700}.pdf-name{color:var(--muted);text-align:center;word-break:break-all;max-width:240px;font-size:12px}.upload-card-foot{justify-content:space-between;align-items:center;gap:10px;min-height:28px;display:flex}.status-ok{color:var(--teal);font-size:12.5px}.status-err{color:var(--danger);font-size:12.5px;line-height:1.35}.status-warn{color:var(--warning);font-size:12.5px}.status-idle{color:var(--muted-2);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:600}.action-bar{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:16px;margin-top:18px;padding:16px 18px;animation:.55s .1s both rise;display:flex}.action-meta{flex-direction:column;gap:3px;display:flex}.ready-count{color:var(--muted);font-size:14px;font-weight:700}.ready-count.has{color:var(--navy)}.action-hint{color:var(--muted-2);font-size:12.5px}.action-btns{align-items:center;gap:12px;display:flex}.inline-error{color:var(--danger);margin:0;font-size:13px}.btn{cursor:pointer;border:none;border-radius:8px;font-weight:600;transition:background .15s,transform .15s,box-shadow .15s}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn-primary{background:var(--teal);color:#fff;box-shadow:0 1px #0000000d}.btn-primary:hover:not(:disabled){background:var(--teal-hover)}.btn-secondary{background:var(--navy);color:#fff}.btn-secondary:hover{background:var(--navy-mid)}.btn-ghost{border:1px solid var(--line);color:var(--ink);background:0 0}.btn-ghost:hover{background:var(--bg-soft)}.btn-lg{padding:12px 22px;font-size:14.5px}.btn-sm{padding:6px 10px;font-size:12px}.chip{letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;font-size:11px;font-weight:700;font-family:var(--font-mono);border-radius:999px;align-items:center;padding:4px 8px;display:inline-flex}.chip-success{background:var(--success-soft);color:var(--success)}.chip-warn{background:var(--warning-soft);color:var(--warning)}.chip-danger{background:var(--danger-soft);color:var(--danger)}.chip-neutral{color:var(--muted);background:#eef2f6}.processing-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5;border-radius:var(--radius);background:#eef2f6b8;place-items:center;display:grid;position:absolute;inset:0}.processing-card{background:var(--panel);border:1px solid var(--line);width:min(420px,92vw);box-shadow:var(--shadow-md);text-align:center;border-radius:14px;padding:28px 28px 24px}.processing-card h2{font-family:var(--font-display);color:var(--navy);margin:14px 0 6px;font-size:22px}.processing-card p{color:var(--muted);margin:0 0 18px;font-size:14px}.processing-ring{width:72px;height:72px;margin:0 auto;position:relative}.processing-ring svg{width:72px;height:72px;transform:rotate(-90deg)}.ring-track{fill:none;stroke:var(--line);stroke-width:5px}.ring-fill{fill:none;stroke:var(--teal);stroke-width:5px;stroke-linecap:round;transition:stroke-dashoffset .45s}.processing-ring span{font-family:var(--font-mono);color:var(--navy);place-items:center;font-size:13px;font-weight:600;display:grid;position:absolute;inset:0}.progress-track{background:var(--line);border-radius:999px;width:100%;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--teal), #14948a);border-radius:999px;height:100%;transition:width .55s}.results{flex-direction:column;gap:18px;display:flex}.verdict{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);border-left:5px solid var(--line-strong);grid-template-columns:1.4fr auto auto;align-items:center;gap:18px;padding:20px 22px;animation:.45s both rise;display:grid}.verdict-match{border-left-color:var(--success);background:linear-gradient(90deg,#f3faf6,#fff 40%)}.verdict-mismatch{border-left-color:var(--danger);background:linear-gradient(90deg,#fdf4f3,#fff 40%)}.verdict-incomplete{border-left-color:var(--warning);background:linear-gradient(90deg,#fffaf0,#fff 40%)}.verdict-main{align-items:flex-start;gap:14px;display:flex}.verdict-icon{border-radius:12px;flex-shrink:0;place-items:center;width:42px;height:42px;font-size:18px;font-weight:700;display:grid}.verdict-match .verdict-icon{background:var(--success-soft);color:var(--success)}.verdict-mismatch .verdict-icon{background:var(--danger-soft);color:var(--danger)}.verdict-incomplete .verdict-icon{background:var(--warning-soft);color:var(--warning)}.verdict-main h1{font-family:var(--font-display);letter-spacing:-.02em;color:var(--navy);margin:0 0 4px;font-size:24px}.verdict-main p{color:var(--muted);margin:0;font-size:14px;line-height:1.45}.verdict-stats{gap:10px;display:flex}.stat{text-align:center;background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;min-width:72px;padding:8px 10px}.stat-value{font-family:var(--font-mono);color:var(--navy);font-size:18px;font-weight:600}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px;font-size:11px;font-weight:600}.tone-success .stat-value{color:var(--success)}.tone-danger .stat-value{color:var(--danger)}.tone-warn .stat-value{color:var(--warning)}.results-grid{grid-template-columns:1.15fr .95fr;align-items:start;gap:16px;animation:.55s 60ms both rise;display:grid}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.panel-head{border-bottom:1px solid var(--line);padding:16px 18px 12px}.panel-head h2{color:var(--navy);margin:0 0 4px;font-size:16px}.panel-head p{color:var(--muted);margin:0;font-size:12.5px}.empty-match{text-align:center;color:var(--muted);padding:28px 18px;font-size:14px}.match-table-wrap{overflow-x:auto}.match-table{border-collapse:collapse;width:100%}.match-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--bg-soft);border-bottom:1px solid var(--line);padding:10px 14px;font-size:11px}.match-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:12px 14px;font-size:13px}.match-table tr:last-child td{border-bottom:none}.match-field{color:var(--ink);max-width:180px;font-weight:600}.src-label{color:var(--muted-2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px;font-size:11px;font-weight:600}.src-value{font-family:var(--font-mono);color:var(--ink);word-break:break-word;font-size:12.5px}.row-mismatch{background:#fff8f7}.row-match{background:0 0}.row-missing_one{background:#fffdf5}.tabs{border-bottom:1px solid var(--line);gap:4px;padding:10px 12px 0;display:flex;overflow-x:auto}.tab{appearance:none;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:10px 12px;font-size:13px;font-weight:600;display:inline-flex}.tab:hover{color:var(--navy)}.tab.active{color:var(--navy);border-bottom-color:var(--teal)}.tab-dot{background:var(--warning);border-radius:50%;width:7px;height:7px}.extraction-body{padding:14px 16px 18px}.extraction-meta{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.doc-type{font-family:var(--font-mono);letter-spacing:.04em;color:var(--teal);background:var(--teal-soft);border-radius:4px;margin-right:8px;padding:3px 8px;font-size:11px;font-weight:600}.doc-count{color:var(--muted);font-size:12.5px}.field-table{border-collapse:collapse;width:100%}.field-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 6px;font-size:11px}.field-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 6px;font-size:13px}.field-table tr:last-child td{border-bottom:none}.field-table tr.row-flagged{background:var(--warning-soft)}.field-name{color:var(--muted);white-space:nowrap;width:34%;padding-right:8px;font-size:12.5px;font-weight:500}.req-star{color:var(--danger);margin-left:2px}.field-value{font-family:var(--font-mono);font-size:12.5px;font-weight:500}.field-val-text{color:var(--ink);word-break:break-word}.value-empty{color:var(--muted-2);font-family:var(--font-body);font-style:italic}.notes-block{color:var(--muted);background:var(--bg-soft);border-radius:8px;margin:12px 0 0;padding:10px 12px;font-size:13px;line-height:1.5}.warnings-panel{background:var(--warning-soft);border-radius:var(--radius);border:1px solid #f0dfb0;padding:14px 18px;animation:.5s .1s both rise}.warnings-panel h3{color:var(--warning);text-transform:uppercase;letter-spacing:.04em;margin:0 0 8px;font-size:13px}.warnings-panel ul{color:#7a5400;margin:0;padding-left:18px;font-size:13px;line-height:1.5}.fade-in{animation:.35s both fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes brand-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@media (width<=980px){.header-inner{grid-template-columns:1fr auto}.stepper{display:none}.results-grid,.verdict{grid-template-columns:1fr}.verdict-stats{flex-wrap:wrap;justify-content:flex-start}}@media (width<=720px){.app-main{padding:18px 16px 28px}.header-inner{padding:12px 16px}.upload-grid{grid-template-columns:1fr}.action-bar{flex-direction:column;align-items:stretch}.action-btns{justify-content:stretch}.action-btns .btn{width:100%}.app-footer{padding:12px 16px 20px}}
