:root{--ink: #1c2430;--ink-2: #4a5566;--muted: #6b7686;--faint: #8b95a5;--line: #d5dae2;--line-2: #e3e7ed;--bg: #eef0f3;--panel: #ffffff;--panel-2: #f7f8fa;--blue: #1f5fa8;--blue-bg: #e8f0fb;--green: #2e7d4f;--green-bg: #e3f1e8;--amber: #d9a441;--amber-ink: #8a5a00;--amber-bg: #fdf3dc;--red: #b3261e;--red-ink: #8f1d17;--red-bg: #fbe4e2;--paper: #f4f1ea;--paper-2: #fbfaf6;--paper-line: #d8d2c4;--paper-ink: #2b2721;--paper-muted: #6b655a;--oxblood: #7a3b2e;--sans: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono: "IBM Plex Mono", Menlo, monospace;--serif: "Source Serif 4", Georgia, serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--bg)}a{color:var(--blue)}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}.muted{color:var(--muted)}.faint{color:var(--faint)}.pos{color:var(--green)}.neg{color:var(--red)}.app{display:flex;flex-direction:column;height:100%}.topbar{height:48px;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--ink);color:#e6eaf0;flex-shrink:0}.topbar .brand{font-weight:600;letter-spacing:.02em;color:#fff;text-decoration:none}.topbar .sep{width:1px;height:24px;background:#3a4556}.topbar .nav a{padding:6px 10px;border-radius:3px;color:#9aa6b8;text-decoration:none}.topbar .nav a.active{background:#2a3444;color:#fff;font-weight:500}.topbar .ctx{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#2a3444;border-radius:3px}.topbar .ctx span:first-child{color:#9aa6b8}.grow{flex-grow:1}.status{padding:3px 8px;border-radius:2px;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.status.DRAFT,.status.NONE{background:#eef0f3;color:var(--ink-2)}.status.IN_PROGRESS,.status.REOPENED{background:var(--blue-bg);color:var(--blue)}.status.TO_VALIDATE{background:var(--amber);color:var(--ink)}.status.VALIDATED{background:var(--green-bg);color:#1f5c38}.steps{height:44px;display:flex;align-items:center;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--line);flex-shrink:0}.steps a{display:flex;align-items:center;gap:8px;padding:0 20px;height:44px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent}.steps a.active{color:var(--ink);font-weight:600;border-bottom-color:var(--blue)}.steps a.done{color:var(--green)}.steps .n{width:18px;height:18px;border-radius:9px;border:1px solid #c3cad4;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-family:var(--mono)}.steps a.active .n{background:var(--blue);color:#fff;border-color:var(--blue)}.main{flex-grow:1;min-height:0;display:flex;flex-direction:column}.page{padding:20px 16px;display:flex;flex-direction:column;gap:16px;overflow:auto}.btn{height:32px;padding:0 12px;border:1px solid #c3cad4;background:#fff;border-radius:3px;color:var(--ink);white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:500}.btn.success{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}.btn.danger{border-color:var(--red);color:var(--red)}.btn.ghost{background:transparent}.btn.sm{height:26px;padding:0 8px;font-size:12px}.chip{padding:4px 10px;border-radius:2px;background:#fff;border:1px solid #c3cad4;font-size:12px;white-space:nowrap;cursor:pointer}.chip.on,a.chip.on{background:var(--ink);color:#fff!important;border-color:var(--ink);font-weight:500}.tag{font-size:11px;padding:2px 6px;border-radius:2px;font-weight:600;white-space:nowrap}.tag.amber{background:var(--amber-bg);color:var(--amber-ink)}.tag.grey{background:#eef0f3;color:var(--ink-2)}.tag.red{background:var(--red-bg);color:var(--red-ink)}.tag.green{background:var(--green-bg);color:#1f5c38}.tag.blue{background:var(--blue-bg);color:var(--blue)}.card{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.kpi{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);border-radius:3px}.kpi .lab{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.kpi .val{font-family:var(--mono);font-size:24px;font-weight:500}.lab{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.banner{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line)}.banner.error{background:var(--red-bg);color:#5b2b27}.banner.error b{color:var(--red-ink)}.banner.warning{background:#fff8e6;color:#5b4300}.banner.ok{background:var(--green-bg);color:#1f5c38}.input,select.input,textarea.input{height:30px;padding:0 8px;background:#fff;border:1px solid #c3cad4;border-radius:3px;color:var(--ink)}textarea.input{height:auto;padding:6px 8px}.field{display:flex;flex-direction:column;gap:4px}.row{display:flex;align-items:center;gap:8px}.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);flex-grow:1;min-height:0}.pane{display:flex;flex-direction:column;background:var(--panel);min-height:0}.pane-head{height:36px;display:flex;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--panel-2);flex-shrink:0}.pane-body{overflow:auto;flex-grow:1}table.grid{width:100%;border-collapse:collapse}table.grid th{position:sticky;top:0;background:var(--panel-2);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line-2);font-weight:500;z-index:1}table.grid td{padding:0 8px;height:34px;border-bottom:1px solid #eef0f3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:380px}table.grid td.r,table.grid th.r{text-align:right}table.grid tr.sel td{background:var(--blue-bg)}table.grid tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--blue)}table.grid tr.clickable{cursor:pointer}table.grid tr.clickable:hover td{background:#f4f6f9}table.grid tr.dim td{color:var(--faint)}.bottombar{height:64px;display:flex;align-items:center;gap:20px;padding:0 16px;background:var(--ink);color:#e6eaf0;flex-shrink:0}.bottombar .lab{color:#9aa6b8}.bottombar .btn{border-color:#3a4556;background:transparent;color:#e6eaf0;height:36px}.bottombar .btn.success{background:var(--green);border-color:var(--green)}.cb{width:14px;height:14px;border:1px solid #c3cad4;border-radius:2px;display:inline-block;vertical-align:middle}.cb.on{background:var(--blue);border-color:var(--blue)}.drop{border:1px dashed #c3cad4;border-radius:3px;padding:28px;text-align:center;color:var(--muted);background:#fff;cursor:pointer}.drop.over{border-color:var(--blue);background:var(--blue-bg)}.drop.busy{cursor:wait;pointer-events:none;border-style:solid;background:var(--blue-bg);color:var(--blue)}.spin{width:22px;height:22px;border:2px solid #c3cad4;border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.extract-wait{display:flex;align-items:center;gap:16px;padding:28px;background:var(--panel);border:1px solid var(--line);border-radius:3px}.extract-wait b{display:block;font-size:15px;margin-bottom:4px}.extract-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#eef0f3d1;display:flex;align-items:center;justify-content:center;z-index:5}.toast{position:fixed;bottom:80px;right:16px;background:var(--ink);color:#fff;padding:10px 14px;border-radius:3px;box-shadow:0 4px 16px #00000040;max-width:420px;z-index:50}.toast.error{background:var(--red-ink)}.progress{height:6px;background:var(--line-2);border-radius:3px;overflow:hidden;display:flex}.progress>span{display:block;height:100%}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c243073;display:flex;align-items:center;justify-content:center;z-index:40}.modal{background:#fff;border-radius:4px;width:560px;max-width:95vw;max-height:90vh;overflow:auto;padding:20px;display:flex;flex-direction:column;gap:12px}.kbd{font-family:var(--mono);font-size:11px;border:1px solid #c3cad4;padding:0 4px;border-radius:2px}.paper{background:var(--paper);color:var(--paper-ink);font-family:var(--sans);flex-grow:1;overflow:auto}.paper h1{font-family:var(--serif);font-weight:600;font-size:28px;margin:0}.paper h2{font-family:var(--serif);font-weight:600;font-size:16px;margin:0}.paper .box{background:var(--paper-2);border:1px solid var(--paper-line);border-radius:6px;padding:20px 24px;display:flex;flex-direction:column;gap:10px}.paper .ledger{display:flex;justify-content:space-between;gap:12px}.paper .ledger.total{font-weight:600;padding-top:8px;border-top:1px solid var(--paper-line)}.paper .ledger.head{padding-bottom:8px;border-bottom:1px solid var(--paper-ink);font-family:var(--serif);font-weight:600}.paper table{width:100%;border-collapse:collapse}.paper th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--paper-muted);border-bottom:1px solid var(--paper-ink);padding:6px 8px}.paper td{padding:8px;border-bottom:1px solid #e3ded2}.paper .code{color:var(--oxblood);font-weight:600}.paper .btn.primary{background:var(--oxblood);border-color:var(--oxblood)}.paper .btn{background:transparent;border-color:#b8b0a0;color:var(--paper-ink)}.paper .btn.primary{color:#fff}.dot{width:8px;height:8px;border-radius:4px;display:inline-block;margin-right:8px;flex-shrink:0}.login{height:100%;display:flex;align-items:center;justify-content:center;background:var(--ink)}.login .card{width:360px;padding:28px;gap:14px}.mapping{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.mapping .col{display:flex;flex-direction:column;gap:6px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:3px;min-width:0}.mapping .col.ok{border-color:var(--green)}.mapping .cell{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}.pdf-frame{width:100%;height:100%;border:0;background:#dfe3e9}.pane-head>*{white-space:nowrap}.pane-head .muted{overflow:hidden;text-overflow:ellipsis;min-width:0;flex-shrink:1}.pane-head b{flex-shrink:0}a.btn{text-decoration:none;display:inline-flex;align-items:center}a.btn.disabled{opacity:.5;pointer-events:none}.drop-compact .drop{padding:6px 12px;font-size:12px}
