:root{--font-body: "Inter", system-ui, sans-serif;--font-display: "Barlow", "Inter", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--c-ink: #0f1117;--c-ink-2: #4b5563;--c-muted: #6b7280;--c-subtle: #9ca3af;--c-surface: #ffffff;--c-canvas: #f0f2f5;--c-field: #f3f4f6;--c-border: #e2e5eb;--c-nav-bg: #161b27;--c-nav-bg-2: #1a2035;--c-nav-border: #242d42;--c-nav-text: #7a8ba3;--c-nav-section: #4e6280;--c-accent: #e8730a;--c-accent-ink: #ffffff;--c-accent-soft: #fff4ea;--c-ok: #059669;--c-ok-soft: #ecfdf5;--c-ok-ring: #a7f3d0;--c-info: #2563eb;--c-info-soft: #eff6ff;--c-info-ring: #bfdbfe;--c-warn: #92400e;--c-warn-soft: #fffbeb;--c-warn-ring: #fde68a;--c-danger: #dc2626;--c-danger-soft: #fef2f2;--c-danger-ring: #fecaca;--c-violet: #7c3aed;--c-violet-soft: #f5f3ff;--c-violet-ring: #ddd6fe;--c-neutral-soft: #f3f4f6;--c-neutral-ring: #d1d5db;--r-sm: 3px;--r-md: 6px;--r-lg: 8px;--sidebar-w: 240px;--topbar-h: 56px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-body);font-size:13.5px;color:var(--c-ink);background:var(--c-canvas);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.shell.collapsed{grid-template-columns:64px 1fr}.sidebar{background:var(--c-nav-bg);color:var(--c-nav-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;border-right:1px solid var(--c-nav-border)}.brand{display:flex;align-items:center;gap:12px;padding:12px 20px;height:var(--topbar-h);border-bottom:1px solid var(--c-nav-border)}.brand-mark{width:32px;height:32px;border-radius:var(--r-md);background:var(--c-accent);color:#fff;display:grid;place-items:center;flex:none}.brand-logo{display:block;height:42px;width:auto;max-width:100%}.brand-mark-img{display:block;width:36px;height:36px;flex:none}.shell.collapsed .brand{padding:10px 14px;justify-content:center}.brand-name{font-family:var(--font-display);font-weight:800;color:#fff;font-size:16px;line-height:1;letter-spacing:.02em}.brand-sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;color:var(--c-nav-text);text-transform:uppercase}.nav-section{font-family:var(--font-display);font-weight:600;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--c-nav-section);padding:22px 20px 8px}.nav-link{display:flex;align-items:center;gap:12px;padding:9px 20px;color:var(--c-nav-text);text-decoration:none;border-left:3px solid transparent;font-size:14px}.nav-link:hover{color:#cbd5e1;background:#ffffff08}.nav-link.active{color:var(--c-accent);background:var(--c-nav-bg-2);border-left-color:var(--c-accent)}.nav-badge{margin-left:auto;background:var(--c-danger);color:#fff;font-size:10px;font-weight:600;border-radius:999px;min-width:18px;padding:1px 6px;text-align:center}.sidebar-foot{margin-top:auto;border-top:1px solid var(--c-nav-border);padding:14px 16px;display:flex;align-items:center;gap:12px}.avatar{width:32px;height:32px;border-radius:50%;background:#2a3550;color:#c7d2fe;display:grid;place-items:center;font-size:12px;font-weight:600;flex:none}.user-name{color:#fff;font-weight:600;font-size:13px}.user-role{font-size:12px}.icon-btn{background:transparent;border:1px solid var(--c-border);border-radius:var(--r-md);width:36px;height:36px;display:grid;place-items:center;cursor:pointer;color:var(--c-ink-2)}.sidebar .icon-btn{border-color:transparent;color:var(--c-nav-text)}.main{display:flex;flex-direction:column;min-width:0}.topbar{height:var(--topbar-h);background:var(--c-surface);border-bottom:1px solid var(--c-border);display:flex;align-items:center;gap:16px;padding:0 24px;position:sticky;top:0;z-index:5}.topbar h1{font-family:var(--font-display);font-size:18px;font-weight:700;margin:0}.topbar .spacer{flex:1}.content{padding:24px;display:flex;flex-direction:column;gap:20px;max-width:1600px;width:100%}.env-banner{background:var(--c-warn-soft);color:var(--c-warn);border-bottom:1px solid var(--c-warn-ring);font-size:12px;padding:6px 24px}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg)}.card-head{display:flex;align-items:center;gap:12px;padding:18px 20px 0}.card-title{font-weight:600;font-size:13.5px;margin:0}.card-sub{color:var(--c-muted);font-size:12px;margin:2px 0 0}.card-body{padding:16px 20px 20px}.card-link{margin-left:auto;color:var(--c-accent);font-weight:600;font-size:12px;text-decoration:none;background:none;border:0;cursor:pointer}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.kpi{border-top:3px solid var(--kpi, var(--c-accent));padding:18px 20px;position:relative}.kpi-label{font-family:var(--font-display);font-weight:600;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--c-muted)}.kpi-value{font-family:var(--font-display);font-weight:800;font-size:36px;line-height:1.1;margin:14px 0 6px}.kpi-foot{color:var(--c-muted);font-size:12px}.kpi-icon{position:absolute;top:18px;right:20px;width:32px;height:32px;border-radius:var(--r-md);display:grid;place-items:center;background:color-mix(in srgb,var(--kpi, var(--c-accent)) 12%,white);color:var(--kpi, var(--c-accent))}.grid-2{display:grid;grid-template-columns:2fr 1fr;gap:16px}.grid-2-even{display:grid;grid-template-columns:1fr 1fr;gap:16px}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--r-sm);white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill.flat:before{display:none}.pill.ok{color:var(--c-ok);background:var(--c-ok-soft);box-shadow:inset 0 0 0 1px var(--c-ok-ring)}.pill.info{color:var(--c-info);background:var(--c-info-soft);box-shadow:inset 0 0 0 1px var(--c-info-ring)}.pill.warn{color:var(--c-warn);background:var(--c-warn-soft);box-shadow:inset 0 0 0 1px var(--c-warn-ring)}.pill.danger{color:var(--c-danger);background:var(--c-danger-soft);box-shadow:inset 0 0 0 1px var(--c-danger-ring)}.pill.violet{color:var(--c-violet);background:var(--c-violet-soft);box-shadow:inset 0 0 0 1px var(--c-violet-ring)}.pill.neutral{color:var(--c-ink-2);background:var(--c-neutral-soft);box-shadow:inset 0 0 0 1px var(--c-neutral-ring)}.mono{font-family:var(--font-mono);font-size:12px}.id-link{font-family:var(--font-mono);font-size:12px;color:var(--c-accent);text-decoration:none}.muted{color:var(--c-muted)}.small{font-size:12px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse}table.data th{font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);text-align:left;padding:12px 16px;border-bottom:1px solid var(--c-border);background:#fafbfc;white-space:nowrap}table.data th button{all:unset;cursor:pointer}table.data td{padding:12px 16px;border-bottom:1px solid var(--c-border);vertical-align:middle}table.data tr:last-child td{border-bottom:0}table.data tbody tr:hover{background:#fafbfc}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}.table-foot{display:flex;align-items:center;padding:12px 16px;border-top:1px solid var(--c-border);color:var(--c-muted);font-size:12px;gap:8px}.table-foot .spacer{flex:1}.empty{padding:40px 20px;text-align:center;color:var(--c-muted)}.btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-md);border:1px solid var(--c-border);background:var(--c-surface);padding:7px 14px;font-weight:600;font-size:13px;cursor:pointer;white-space:nowrap}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-accent-ink)}.btn.danger{color:var(--c-danger);border-color:var(--c-danger-ring)}.btn.ghost{border-color:transparent;background:transparent}.btn.sm{padding:4px 10px;font-size:12px}.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:14px 16px}.input,.select,.textarea{width:100%;border:1px solid var(--c-border);background:var(--c-field);border-radius:var(--r-md);padding:7px 10px;min-height:34px}.input:focus,.select:focus,.textarea:focus{background:#fff;border-color:var(--c-accent);outline:none}.input[aria-invalid=true]{border-color:var(--c-danger);background:var(--c-danger-soft)}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field label{font-size:12px;font-weight:600;color:var(--c-ink-2)}.field .hint{font-size:11.5px;color:var(--c-muted)}.field .err{font-size:11.5px;color:var(--c-danger)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px 16px}.fieldset{border:0;padding:0;margin:0}.fieldset legend{font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);margin-bottom:10px}.check{display:inline-flex;gap:8px;align-items:center;font-size:13px}.alert{border-radius:var(--r-md);padding:10px 14px;font-size:13px}.alert.error{background:var(--c-danger-soft);color:#991b1b;box-shadow:inset 0 0 0 1px var(--c-danger-ring)}.alert.warn{background:var(--c-warn-soft);color:var(--c-warn);box-shadow:inset 0 0 0 1px var(--c-warn-ring)}.alert.ok{background:var(--c-ok-soft);color:#065f46;box-shadow:inset 0 0 0 1px var(--c-ok-ring)}.alert.info{background:var(--c-info-soft);color:#1e40af;box-shadow:inset 0 0 0 1px var(--c-info-ring)}.progress{height:8px;background:var(--c-field);border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--c-accent)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f111773;display:grid;place-items:center;z-index:50;padding:16px}.dialog{background:#fff;border-radius:var(--r-lg);width:min(560px,100%);max-height:90vh;overflow:auto;box-shadow:0 20px 50px #00000040}.dialog-head{padding:18px 20px;border-bottom:1px solid var(--c-border);font-weight:700;font-family:var(--font-display);font-size:16px}.dialog-body{padding:20px;display:flex;flex-direction:column;gap:14px}.dialog-foot{padding:14px 20px;border-top:1px solid var(--c-border);display:flex;justify-content:flex-end;gap:8px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--c-border);padding:0 16px}.tab{padding:12px 14px;border:0;background:none;cursor:pointer;color:var(--c-muted);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}.tab[aria-selected=true]{color:var(--c-accent);border-bottom-color:var(--c-accent)}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.stepper{display:flex;gap:4px;flex-wrap:wrap}.step{font-size:11px;font-weight:600;padding:3px 8px;border-radius:var(--r-sm);background:var(--c-field);color:var(--c-muted)}.step.done{background:var(--c-ok-soft);color:var(--c-ok)}.step.current{background:var(--c-accent-soft);color:var(--c-accent);box-shadow:inset 0 0 0 1px var(--c-accent)}@media (max-width: 1000px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:40;width:var(--sidebar-w);transform:translate(-100%);transition:transform .2s}.shell.nav-open .sidebar{transform:none}.grid-2,.grid-2-even{grid-template-columns:1fr}.content{padding:16px}}@media print{.sidebar,.topbar,.no-print{display:none!important}.shell{display:block}.content{padding:0}.card{border:0}}.seg{display:inline-flex;border:1px solid var(--c-border);border-radius:var(--r-md);overflow:hidden;background:var(--c-surface)}.seg-btn{border:0;background:transparent;padding:7px 14px;font-weight:600;font-size:13px;color:var(--c-muted);cursor:pointer;border-right:1px solid var(--c-border)}.seg-btn:last-child{border-right:0}.seg-btn[aria-selected=true]{background:var(--c-accent-soft);color:var(--c-accent)}a.btn{text-decoration:none;color:inherit}a.btn.primary{color:var(--c-accent-ink)}.btn[aria-disabled=true]{opacity:.55;pointer-events:none}table.data.dense th,table.data.dense td{padding:8px 10px}table.data tr.dirty td{background:var(--c-accent-soft)}table.data tfoot td{border-top:1px solid var(--c-border);background:#fafbfc;padding:10px 16px}table.data.dense tfoot td{padding:8px 10px}.num-input{width:104px;min-height:30px;padding:4px 8px;text-align:right;font-variant-numeric:tabular-nums}.tally{display:inline-flex;align-items:center;gap:6px}.tally .count{min-width:28px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600}th.today,td.today{background:var(--c-accent-soft)!important}.filters{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end;padding:14px 16px}.filters .field{min-width:150px}.filters .field.wide{min-width:280px;flex:1}.report-summary{display:flex;flex-wrap:wrap;gap:24px;padding:14px 20px;border-top:1px solid var(--c-border)}.report-summary .kpi-value{font-size:24px;margin:4px 0 0}.pivot td.cell{text-align:right;font-variant-numeric:tabular-nums}.pivot td.cell .sub{display:block;color:var(--c-muted);font-size:11px}.pivot td.cell.met{background:var(--c-ok-soft)}.print-only{display:none}@media print{.print-only{display:block}.filters,.toolbar,.tabs,.seg,.btn,.report-actions{display:none!important}.report-summary{border:0;padding:4px 0 10px}table.data th{background:none;padding:4px 6px}table.data td{padding:4px 6px}table.data tr{break-inside:avoid}table.data thead{display:table-header-group}.card{break-inside:auto}}.print-root{min-height:100vh;background:#e5e7eb;padding:0 0 32px;color:#000}.print-toolbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 24px;background:var(--c-nav-bg);color:#fff;margin-bottom:24px}.print-toolbar h1{font-family:var(--font-display);font-size:16px;font-weight:700;margin:0}.print-toolbar .muted{color:var(--c-nav-text)}.print-toolbar .btn{color:var(--c-ink)}.print-toolbar .spacer{flex:1}.print-status{max-width:8.5in;margin:0 auto 16px}.sheet{background:#fff;width:8.5in;min-height:11in;margin:0 auto 24px;padding:.5in;box-shadow:0 2px 10px #00000026;font-size:11pt;line-height:1.3;break-after:page;page-break-after:always}.sheet:last-of-type{break-after:auto;page-break-after:auto}.sheet.landscape{width:11in;min-height:8.5in}.sheet h2{font-family:var(--font-display);font-size:18pt;margin:0}.sheet .doc-title{font-family:var(--font-display);font-weight:800;font-size:20pt;letter-spacing:.02em;text-transform:uppercase}.doc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:2px solid #000;padding-bottom:10px;margin-bottom:12px}.doc-meta{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;font-size:10.5pt}.doc-meta dt{font-weight:700;text-transform:uppercase;font-size:9pt;letter-spacing:.04em}.doc-meta dd{margin:0}.doc-banner{border:3px solid #000;font-family:var(--font-display);font-weight:800;font-size:22pt;text-transform:uppercase;padding:4px 18px;letter-spacing:.1em}.doc-foot{margin-top:18px;display:flex;gap:32px;font-size:10pt}.doc-foot .line{flex:1;border-bottom:1px solid #000;min-width:160px;height:18px}table.print{width:100%;border-collapse:collapse;font-size:9.5pt}table.print th{text-align:left;font-size:8pt;text-transform:uppercase;letter-spacing:.05em;border-bottom:1.5px solid #000;padding:4px 6px}table.print td{border-bottom:1px solid #bbb;padding:5px 6px;vertical-align:top}table.print td.num,table.print th.num{text-align:right;font-variant-numeric:tabular-nums}table.print td.box{border:1px solid #000;width:.7in;text-align:center;font-weight:700}table.print tr.removed td{text-decoration:line-through;color:#555}table.print tfoot td{border-top:1.5px solid #000;border-bottom:0;font-weight:700}.label-sheet{padding:.5in .15625in}.label-grid{display:grid;grid-template-columns:repeat(2,4in);grid-auto-rows:2in;column-gap:.1875in}.label{padding:.12in .18in;overflow:hidden;display:flex;flex-direction:column;gap:2px;break-inside:avoid;outline:1px dashed #d1d5db;outline-offset:-1px}.label .l-top{display:flex;justify-content:space-between;gap:8px;font-size:9pt}.label .l-title{font-family:var(--font-display);font-weight:800;font-size:15pt;line-height:1.1}.label .l-sub{font-size:9pt;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.label .barcode{margin-top:auto}.label.card{align-items:center;justify-content:center;text-align:center}.label.card .l-title{font-size:18pt}.label.card .barcode{margin-top:8px}.barcode{margin:0;display:inline-flex;flex-direction:column;align-items:center}.barcode svg{display:block;max-width:100%}.barcode-text{font-family:var(--font-mono);font-size:9pt;letter-spacing:.08em}.barcode-error{border:1px solid #b91c1c;color:#b91c1c;padding:4px 8px;font-size:9pt}@media print{@page{size:letter;margin:0}@page wide{size:letter landscape;margin:0}.sheet.landscape{page:wide}html,body,.print-root{background:#fff!important}.print-root{padding:0}.print-toolbar,.print-status,.no-print{display:none!important}.sheet{box-shadow:none;margin:0}.label{outline:0}table.print thead{display:table-header-group}table.print tr{break-inside:avoid;page-break-inside:avoid}}
