:root{--bg: #f4f4f2;--bg2: #ffffff;--card: #ffffff;--card2: #f8f8f6;--ink: #111418;--ink2: #3c434e;--muted: #6b7280;--line: #e6e3de;--line2: #eceae6;--orange: #ff8000;--orange-dark: #e06e00;--orange-soft: #fff1e2;--teal: #0f766e;--teal-soft: #e6f4f2;--navy: #16202e;--green: #15803d;--amber: #b45309;--red: #b91c1c;--shadow: 0 1px 2px rgba(17, 20, 24, .05), 0 12px 32px rgba(17, 20, 24, .07);--radius: 18px}@media(prefers-color-scheme:dark){:root{--bg: #0e1116;--bg2: #12161d;--card: #161b23;--card2: #1a202b;--ink: #f2f3f5;--ink2: #c6ccd6;--muted: #8b95a7;--line: #262d3a;--line2: #222936;--orange-soft: #2a1d0e;--teal-soft: #122b28;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 12px 32px rgba(0, 0, 0, .35)}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.55;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}:focus-visible{outline:3px solid var(--orange-dark);outline-offset:2px}@media(prefers-color-scheme:dark){:focus-visible{outline-color:var(--orange)}}.app-wrap{max-width:1180px;margin:0 auto;padding:18px 20px 40px}.shell{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}.shell-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap;background:var(--card)}.shell-head-left{display:flex;align-items:center;gap:12px}.dotgrid{display:grid;grid-template-columns:repeat(3,6px);gap:4px}.dotgrid i{width:6px;height:6px;border-radius:50%;background:var(--line);display:block}.shell-title{margin:0;font-weight:700;font-size:15px}.shell-sub{font-size:12.5px;color:var(--muted)}.head-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:9px 13px;border-radius:999px;font-weight:600;font-size:13.5px;cursor:pointer}.btn:hover{border-color:#c9c4bb}.btn-primary{background:var(--ink);color:var(--bg2);border-color:var(--ink)}.btn-orange{background:var(--orange);border-color:var(--orange);color:#161000}.btn-danger{background:var(--red);border-color:var(--red);color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed}.badge{font-size:11.5px;font-weight:700;padding:5px 8px;border-radius:999px;background:var(--orange-soft);color:#9a4a00;border:1px solid #ffd9ad}@media(prefers-color-scheme:dark){.badge{color:#ffb066;border-color:#4a2f12}}.steps{display:flex;gap:0;border-bottom:1px solid var(--line)}.step{flex:1;padding:14px 16px;border:0;background:transparent;text-align:left;cursor:pointer;border-bottom:3px solid transparent;color:var(--muted)}.step:disabled{cursor:not-allowed;opacity:.6}@media(max-width:720px){.steps{display:grid;grid-template-columns:1fr 1fr}.step{padding:11px 12px}.step span{display:none}.step b{font-size:12.5px}}.step.active{color:var(--ink);border-bottom-color:var(--orange);background:var(--card2)}.step b{display:flex;align-items:center;gap:8px;font-size:13.5px}.step-num{width:24px;height:24px;border-radius:50%;background:var(--line);display:inline-grid;place-items:center;font-size:12px;color:var(--ink);flex:0 0 auto}.step.active .step-num{background:var(--orange);color:#111}.step span{font-size:12.5px;display:block;margin-top:3px;line-height:1.4}.step b span{margin-top:0}.panels{padding:18px}.grid2{display:grid;grid-template-columns:1.05fr .95fr;gap:16px}@media(max-width:880px){.grid2{grid-template-columns:1fr}}.card{border:1px solid var(--line);border-radius:16px;padding:16px;background:var(--card)}.card h2{margin:0 0 4px;font-size:15px}.card h3{margin:0 0 8px;font-size:13.5px}.card p.sub,p.sub{margin:0 0 14px;color:var(--muted);font-size:13.5px}.sub{color:var(--muted);font-size:13.5px}.drop{border:1.5px dashed #cfc9be;border-radius:14px;padding:18px;text-align:center;background:var(--card2)}.drop.drag{border-color:var(--orange);background:var(--orange-soft)}.drop strong{font-size:14px}.drop p{margin:4px 0 10px;color:var(--muted);font-size:13px}.reqbox{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:13px 14px;background:var(--card2);text-align:left}.reqbox>b{font-size:13.5px}.req-list{margin:8px 0 0;padding-left:18px;font-size:13px;color:var(--ink2);display:grid;gap:5px}.req-note{margin:10px 0 0;font-size:12.5px;color:var(--muted)}.linklike{background:none;border:0;padding:0;color:#9a4a00;font-weight:600;cursor:pointer;text-decoration:underline;font-size:inherit;font-family:inherit}@media(prefers-color-scheme:dark){.linklike{color:var(--orange-dark)}}.file-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-top:12px;text-align:left}.file-row b{font-size:13.5px}.file-row span{font-size:12.5px;color:var(--muted);display:block}.file-ok{color:var(--green);font-weight:700;font-size:12px;white-space:nowrap}.kv{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.kv div{background:var(--card2);border:1px solid var(--line2);border-radius:12px;padding:10px 12px}.kv b{font-size:18px;font-family:Space Grotesk,sans-serif}.kv span{font-size:12px;color:var(--muted);display:block}.maplike{border-radius:14px;border:1px solid var(--line);overflow:hidden;background:var(--card2);padding:0;margin-bottom:12px}.map-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.map-head b{font-size:13.5px}.map-head span{font-size:12.5px;color:var(--muted)}.choropleth{padding:14px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}@media(max-width:520px){.choropleth{grid-template-columns:repeat(3,1fr)}}.tile{border-radius:10px;padding:9px 8px;min-height:58px;color:#111}.tile b{font-size:11px;line-height:1.2;display:block}.tile span{font-size:11px;opacity:.8;font-family:JetBrains Mono,monospace}.legend{display:flex;gap:12px;flex-wrap:wrap;padding:0 14px 14px;font-size:12px;color:var(--muted)}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block;vertical-align:-1px;margin-right:5px}.pad{padding:14px}.roles-list{display:grid;gap:6px;margin-top:6px}.role-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;border:1px solid var(--line2);border-radius:10px;padding:7px 10px}.role-row.review{border-color:var(--amber);background:#fffbeb}@media(prefers-color-scheme:dark){.role-row.review{background:#2a2107}}.role-col b{font-size:13px;display:block}.role-col span{font-size:12px;color:var(--muted);display:block}.role-row select{padding:7px 9px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:13px}.role-conf{font-size:12px;color:var(--muted);min-width:74px;text-align:right}.review-tag{color:var(--amber);font-weight:700;font-style:normal;margin-left:6px}.cov-file{margin-top:14px;border-top:1px solid var(--line2);padding-top:12px}.cov-file b{font-size:13.5px}.issue-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px;font-size:13px}.issue-list li{border:1px solid var(--line);border-left:4px solid var(--amber);border-radius:8px;padding:8px 10px;background:var(--card2);color:var(--ink2)}.issue-list li.error,.issue-list li.blocking{border-left-color:var(--red)}.issue-list li.warning{border-left-color:var(--amber)}.issue-list li.info{border-left-color:var(--teal)}.field{margin-bottom:14px}.field label{font-size:13px;font-weight:600;display:block;margin-bottom:6px}.field select,.field input[type=text]{width:100%;padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink)}.checks{display:grid;gap:8px}.check{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:11px 12px;cursor:pointer;background:var(--card)}.check input{margin-top:3px;accent-color:var(--orange);width:16px;height:16px}.check b{font-size:13.5px;display:block}.check span{font-size:12.5px;color:var(--muted)}.toggle-row{display:flex;gap:8px;flex-wrap:wrap}.toggle-row.small .toggle{padding:5px 9px;font-size:12px}.toggle{padding:8px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;font-weight:600;font-size:13px}.toggle.on{background:var(--ink);color:var(--bg2);border-color:var(--ink)}.code{font-family:JetBrains Mono,monospace;font-size:12.5px;background:var(--navy);color:#e2e8f0;border-radius:12px;padding:14px;line-height:1.7;overflow:auto;white-space:pre}.indicator-block{display:grid;gap:6px}.cov-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:8px 12px;background:var(--card)}.cov-row b{font-size:13.5px}.rule-builder{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--card2);display:grid;gap:8px}.rule-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.rule-value{font-size:13px}.rule-count{color:var(--muted)}.progress{margin-top:12px}.run-error{color:var(--red);font-size:13.5px;margin:10px 0 0}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:14px}.toolbar-left{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.search{padding:9px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink);min-width:200px}.toolbar select{padding:9px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink)}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}@media(max-width:760px){.stats-row{grid-template-columns:1fr 1fr}}.stat{border:1px solid var(--line);border-radius:14px;padding:13px 14px;background:var(--card2)}.stat b{font-family:Space Grotesk,sans-serif;font-size:21px;display:block;line-height:1.1}.stat span{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.02em}.stat small{font-size:12px;color:var(--muted);display:block;margin-top:4px}.table-wrap{border:1px solid var(--line);border-radius:14px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{text-align:right;padding:11px 12px;background:var(--card2);border-bottom:1px solid var(--line);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap;user-select:none}tbody td{padding:10px 12px;border-bottom:1px solid var(--line2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}tbody td:first-child{text-align:left;font-weight:600;white-space:normal}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--card2)}.th-sort{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-transform:inherit;letter-spacing:inherit}@media(max-width:720px){.hide-sm{display:none}}.table-note{font-size:12.5px;color:var(--muted);margin:10px 2px 0}.flag{font-size:11px;font-weight:700;padding:3px 7px;border-radius:999px;background:#fef3c7;color:#92400e;white-space:normal}.flag.suppressed{background:#fee2e2;color:var(--red)}@media(prefers-color-scheme:dark){.flag{background:#3a2a0a;color:#fbbf24}.flag.suppressed{background:#3a0a0a;color:#fca5a5}}.chart-card{margin-top:16px}.chart-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin-bottom:8px}.chart-legend i{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:-1px}svg.shrinkage-chart{width:100%;height:auto;display:block}.chart-area{font-size:11.5px;fill:var(--ink2)}.interp{border-left:4px solid var(--orange);background:var(--orange-soft);border-radius:0 14px 14px 0;padding:16px 18px;margin-top:16px}.interp h2{margin:0 0 6px;font-size:15px}.interp p{margin:0 0 8px;font-size:14px;color:var(--ink2)}.interp p:last-child{margin:0}.stale-note{border:1px solid var(--amber);background:#fffbeb;color:var(--ink2);border-radius:12px;padding:10px 12px;font-size:13.5px;margin:0 0 14px}@media(prefers-color-scheme:dark){.stale-note{background:#2a2107}}.export-quick{display:flex;gap:8px;flex-wrap:wrap}.diag-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:760px){.diag-grid{grid-template-columns:1fr}}.diag-item{margin-bottom:14px}.diag-head{display:flex;justify-content:space-between;font-size:13px;gap:10px}.diag-head span{color:var(--muted)}.diag-note{font-size:12.5px;color:var(--muted);margin:6px 0 0}.meter{height:8px;background:var(--line);border-radius:999px;overflow:hidden;margin-top:6px}.meter i{display:block;height:100%;background:var(--teal);border-radius:999px}.checklist{list-style:none;margin:0;padding:0;display:grid;gap:10px;font-size:13.5px}.checklist li{display:flex;gap:9px}.checklist li:before{content:"✓";width:22px;height:22px;border-radius:50%;background:var(--teal-soft);color:var(--teal);display:grid;place-items:center;font-weight:800;flex:0 0 auto;font-size:12px}.checklist li.fail:before{content:"!";background:#fef3c7;color:#92400e}.export-list{display:grid;gap:8px}.export-detail{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:2px}.lock-note{display:flex;gap:9px;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:11px 12px;font-size:13px;color:var(--ink2);margin:0 0 14px}.card .lock-note{margin:12px 0 0}.qc-check{margin-top:10px}.qc-check b{font-size:13px}.dialog-backdrop{position:fixed;inset:0;background:#0a0c108c;display:grid;place-items:center;padding:18px;z-index:60}.dialog{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--orange);border-radius:18px;padding:22px;max-width:520px;width:100%;box-shadow:var(--shadow);max-height:calc(100vh - 36px);overflow:auto}.dialog h2{font-family:Space Grotesk,sans-serif;font-size:22px;line-height:1.15;letter-spacing:-.02em;margin:8px 0}.dialog p{color:var(--ink2);font-size:14px}.unlock-eyebrow{font-size:11.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--orange-dark)}.fgroup{margin-bottom:12px}.fgroup label{font-size:12.5px;font-weight:600;display:block;margin-bottom:6px}.fgroup input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card2);color:var(--ink)}.dialog-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:14px}.dialog-msg{font-size:13.5px;color:var(--ink2);background:var(--orange-soft);border-radius:10px;padding:9px 11px}.unlock-success{background:var(--teal-soft);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:13.5px}.unlock-help{font-size:12.5px;color:var(--muted);margin:12px 0 0;line-height:1.5}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
