@font-face{font-family:Inter;src:url(/fonts/inter-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}:root{--bg: #f8fafc;--surface: #ffffff;--subtle: #f1f5f9;--ink: #0f172a;--body: #334155;--muted: #5d6b7d;--line: #e2e8f0;--line-strong: #cbd5e1;--accent: #2563eb;--accent-ink: #1d4ed8;--accent-tint: #eff6ff;--danger: #dc2626;--danger-ink: #b91c1c;--danger-tint: #fef2f2;--warn: #d97706;--warn-ink: #92400e;--warn-tint: #fffbeb;--ok: #16a34a;--ok-ink: #166534;--ok-tint: #f0fdf4;--cat-1: #2563eb;--cat-2: #c2410c;--cat-3: #0891b2;--cat-4: #7c3aed;--locate: #fde68a;--locate-edge: #d97706;--sans: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--r: 6px;--r-lg: 10px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow: 0 1px 3px rgba(15, 23, 42, .08), 0 8px 24px -12px rgba(15, 23, 42, .18);--bar-h: 56px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}html{scroll-padding-top:calc(var(--bar-h) + 48px)}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.011em}h1{font-size:20px}h2{font-size:15px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.topbar{height:var(--bar-h);background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 20px;position:sticky;top:0;z-index:40}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.brand svg{display:block}.brand small{display:block;font-weight:400;font-size:11px;color:var(--muted);letter-spacing:0}.tabs{display:flex;gap:2px}.tabs a{padding:7px 12px;border-radius:var(--r);color:var(--muted);font-weight:500;transition:background .16s,color .16s}.tabs a:hover{background:var(--subtle);color:var(--ink)}.tabs a[aria-current=page]{background:var(--accent-tint);color:var(--accent-ink)}.topbar .spacer{margin-left:auto}.page{padding:24px 20px 64px;max-width:1680px;margin:0 auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.page-head p{margin:4px 0 0;color:var(--muted);max-width:62ch}.chip{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:500;line-height:18px;border:1px solid transparent;white-space:nowrap}.chip svg{flex:none}.chip.neutral{background:var(--subtle);color:var(--body);border-color:var(--line)}.chip.danger{background:var(--danger-tint);color:var(--danger-ink);border-color:#fecaca}.chip.warn{background:var(--warn-tint);color:var(--warn-ink);border-color:#fde68a}.chip.ok{background:var(--ok-tint);color:var(--ok-ink);border-color:#bbf7d0}.chip.info{background:var(--accent-tint);color:var(--accent-ink);border-color:#bfdbfe}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;min-height:34px;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface);color:var(--ink);font-weight:500;cursor:pointer;box-shadow:var(--shadow-sm);transition:background .16s,border-color .16s,box-shadow .16s}.btn:hover:not(:disabled){background:var(--subtle);border-color:var(--muted)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-ink);border-color:var(--accent-ink)}.btn.danger{color:var(--danger-ink);border-color:var(--danger-tint)}.btn.danger:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:#fff}.btn.ghost{border-color:transparent;box-shadow:none;background:transparent}.btn.ghost:hover:not(:disabled){background:var(--subtle)}.btn.sm{min-height:28px;padding:4px 9px;font-size:13px}.field-control{height:34px;padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-sm)}select.field-control{padding-right:26px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}.card-head p{margin:3px 0 0;font-size:12px;color:var(--muted)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:20px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.tile:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--line-strong)}.tile.danger:before{background:var(--danger)}.tile.warn:before{background:var(--warn)}.tile.ok:before{background:var(--ok)}.tile.accent:before{background:var(--accent)}.tile dt{font-size:12px;font-weight:500;color:var(--muted);letter-spacing:.01em}.tile dd{margin:6px 0 0;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:26px;line-height:1.15;letter-spacing:-.02em}.tile .foot{margin-top:4px;font-size:12px;color:var(--muted)}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.toolbar .grow{flex:1 1 260px;min-width:200px}.segmented{display:inline-flex;background:var(--subtle);border:1px solid var(--line);border-radius:var(--r);padding:2px;gap:2px}.segmented button{border:0;background:transparent;padding:4px 11px;border-radius:4px;color:var(--muted);font-weight:500;cursor:pointer;min-height:26px;transition:background .16s,color .16s}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.table-wrap{overflow-x:auto}.table-wrap.tall{overflow:auto;max-height:calc(100vh - 330px);min-height:240px}table.data{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}table.data th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--subtle);padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:2}table.data td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}table.data tbody tr{cursor:pointer;transition:background .12s}table.data tbody tr:hover{background:var(--accent-tint)}table.data tbody tr:last-child td{border-bottom:0}table.data .right{text-align:right}table.data .strong{font-weight:500;color:var(--ink)}table.data .sub{display:block;color:var(--muted);font-size:12px;margin-top:1px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.dot.danger{background:var(--danger)}.dot.warn{background:var(--warn)}.dot.ok{background:var(--ok)}.dot.neutral{background:var(--line-strong)}.rowlink{display:flex;align-items:center;gap:8px}.empty{border:1px dashed var(--line-strong);border-radius:var(--r-lg);padding:48px 24px;text-align:center;color:var(--muted);background:var(--surface)}.empty h2{color:var(--ink);margin-bottom:6px}.empty code{font-family:var(--mono);background:var(--subtle);border:1px solid var(--line);border-radius:4px;padding:2px 6px;font-size:12px;color:var(--body)}.dropzone{border:1px dashed var(--line-strong);border-radius:var(--r-lg);background:var(--surface);padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;transition:border-color .16s,background .16s}.dropzone.over{border-color:var(--accent);background:var(--accent-tint)}.dropzone p{margin:2px 0 0;font-size:12px;color:var(--muted)}.progress{height:2px;background:var(--line);border-radius:2px;overflow:hidden;margin-top:10px}.progress i{display:block;height:100%;width:35%;background:var(--accent);animation:slide 1.1s ease-in-out infinite}@keyframes slide{0%{transform:translate(-110%)}to{transform:translate(400%)}}.validate{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(430px,.95fr);gap:16px;align-items:start}@media(max-width:1180px){.validate{grid-template-columns:minmax(0,1fr)}}.subhead{background:var(--surface);border-bottom:1px solid var(--line);padding:10px 20px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;position:sticky;top:var(--bar-h);z-index:30}.subhead .title{font-weight:600}.subhead .meta{color:var(--muted);font-size:12px}.viewer{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;position:sticky;top:calc(var(--bar-h) + 60px)}.viewer-bar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);background:var(--subtle);font-size:12px;color:var(--muted)}.viewer-stage{background:#eef2f6;padding:16px;max-height:calc(100vh - var(--bar-h) - 150px);overflow:auto;display:flex;justify-content:center}.page-canvas{position:relative;box-shadow:var(--shadow);background:#fff;line-height:0}.page-canvas canvas{display:block}.locate{position:absolute;border:2px solid var(--locate-edge);background:#fde68a6b;border-radius:2px;pointer-events:none;animation:pulse .42s ease-out}@keyframes pulse{0%{box-shadow:0 0 0 6px #d9770647}to{box-shadow:0 0 #d9770600}}@media(prefers-reduced-motion:reduce){.locate,.progress i,table.data tbody tr{animation:none;transition:none}}.fieldlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.fieldrow{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:9px 14px;cursor:pointer;transition:background .12s,box-shadow .12s}.fieldrow:nth-child(odd){border-right:1px solid var(--line)}.fieldrow:hover{background:var(--subtle)}.fieldrow[aria-selected=true]{background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent)}.fieldrow .label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:flex;align-items:center;gap:6px}.fieldrow .value{margin-top:3px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink);overflow-wrap:anywhere}.fieldrow .value.blank{color:var(--muted);font-family:var(--sans);font-style:italic}.fieldrow.flagged .label{color:var(--danger-ink)}.reconcile{padding:14px 16px}.reconcile-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;font-size:13px}.reconcile-row.total{border-top:1px solid var(--line-strong);margin-top:4px;padding-top:10px;font-weight:600;font-size:15px}.reconcile-row span:first-child{color:var(--muted)}.reconcile-row.total span:first-child{color:var(--ink)}.verdict{margin-top:12px;display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border-radius:var(--r);font-size:13px}.verdict.ok{background:var(--ok-tint);color:var(--ok-ink)}.verdict.bad{background:var(--danger-tint);color:var(--danger-ink)}.verdict strong{display:block}.verdict p{margin:2px 0 0}.finding{padding:11px 14px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;background:transparent;border-left:0;border-right:0;border-top:0;cursor:pointer}.finding:hover{background:var(--subtle)}.finding:last-child{border-bottom:0}.finding .code{font-weight:600;font-size:13px}.finding p{margin:2px 0 0;color:var(--body);font-size:13px}.finding .where{color:var(--muted);font-size:12px;font-family:var(--mono)}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:16px}.chart-body{padding:14px 16px 16px}.chart svg{display:block;width:100%;height:auto;overflow:visible}.chart .grid line{stroke:var(--line);stroke-width:1}.chart .axis text{fill:var(--muted);font-size:11px;font-family:var(--mono)}.chart .bar{transition:opacity .14s}.chart .bar:hover{opacity:.82}.chart .value-label{fill:var(--body);font-size:11px;font-family:var(--mono);font-variant-numeric:tabular-nums}.chart .cat-label{fill:var(--body);font-size:12px}.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--body)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:2px;display:inline-block}details.table-alt{margin-top:12px;font-size:12px}details.table-alt summary{cursor:pointer;color:var(--muted)}details.table-alt table{width:100%;margin-top:8px;border-collapse:collapse}details.table-alt th,details.table-alt td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--line)}details.table-alt td:last-child,details.table-alt th:last-child{text-align:right;font-family:var(--mono)}.banner{border:1px solid #fecaca;background:var(--danger-tint);color:var(--danger-ink);border-radius:var(--r);padding:10px 14px;margin-bottom:16px;display:flex;gap:10px;align-items:flex-start}.note{color:var(--muted);font-size:12px;line-height:1.6;max-width:76ch}.kbd{font-family:var(--mono);font-size:11px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:4px;padding:1px 5px;background:var(--surface);color:var(--body)}.skeleton{background:linear-gradient(90deg,var(--subtle) 25%,#e9eef5 37%,var(--subtle) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--r)}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.demo-notice{margin:0;padding:10px 20px;background:#fdf6e3;border-bottom:1px solid #e8dcc0;color:#5c4a1e;font-size:13px;line-height:1.55}.demo-notice strong{color:#3d3010}
