@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}html{color-scheme:light;--mat-sys-background: light-dark(#faf9fd, #121316);--mat-sys-error: light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container: light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface: light-dark(#f2f0f4, #2f3033);--mat-sys-inverse-primary: light-dark(#abc7ff, #005cbb);--mat-sys-inverse-surface: light-dark(#2f3033, #e3e2e6);--mat-sys-on-background: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-error: light-dark(#ffffff, #690005);--mat-sys-on-error-container: light-dark(#93000a, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #002f65);--mat-sys-on-primary-container: light-dark(#00458f, #d7e3ff);--mat-sys-on-primary-fixed: light-dark(#001b3f, #001b3f);--mat-sys-on-primary-fixed-variant: light-dark(#00458f, #00458f);--mat-sys-on-secondary: light-dark(#ffffff, #283041);--mat-sys-on-secondary-container: light-dark(#3e4759, #dae2f9);--mat-sys-on-secondary-fixed: light-dark(#131c2b, #131c2b);--mat-sys-on-secondary-fixed-variant: light-dark(#3e4759, #3e4759);--mat-sys-on-surface: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-surface-variant: light-dark(#44474e, #e0e2ec);--mat-sys-on-tertiary: light-dark(#ffffff, #003737);--mat-sys-on-tertiary-container: light-dark(#004f4f, #00fbfb);--mat-sys-on-tertiary-fixed: light-dark(#002020, #002020);--mat-sys-on-tertiary-fixed-variant: light-dark(#004f4f, #004f4f);--mat-sys-outline: light-dark(#74777f, #8e9099);--mat-sys-outline-variant: light-dark(#c4c6d0, #44474e);--mat-sys-primary: light-dark(#005cbb, #abc7ff);--mat-sys-primary-container: light-dark(#d7e3ff, #00458f);--mat-sys-primary-fixed: light-dark(#d7e3ff, #d7e3ff);--mat-sys-primary-fixed-dim: light-dark(#abc7ff, #abc7ff);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#565e71, #bec6dc);--mat-sys-secondary-container: light-dark(#dae2f9, #3e4759);--mat-sys-secondary-fixed: light-dark(#dae2f9, #dae2f9);--mat-sys-secondary-fixed-dim: light-dark(#bec6dc, #bec6dc);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#faf9fd, #121316);--mat-sys-surface-bright: light-dark(#faf9fd, #38393c);--mat-sys-surface-container: light-dark(#efedf0, #1f2022);--mat-sys-surface-container-high: light-dark(#e9e7eb, #292a2c);--mat-sys-surface-container-highest: light-dark(#e3e2e6, #343537);--mat-sys-surface-container-low: light-dark(#f4f3f6, #1a1b1f);--mat-sys-surface-container-lowest: light-dark(#ffffff, #0d0e11);--mat-sys-surface-dim: light-dark(#dbd9dd, #121316);--mat-sys-surface-tint: light-dark(#005cbb, #abc7ff);--mat-sys-surface-variant: light-dark(#e0e2ec, #44474e);--mat-sys-tertiary: light-dark(#006a6a, #00dddd);--mat-sys-tertiary-container: light-dark(#00fbfb, #004f4f);--mat-sys-tertiary-fixed: light-dark(#00fbfb, #00fbfb);--mat-sys-tertiary-fixed-dim: light-dark(#00dddd, #00dddd);--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-body-large-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-body-medium-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-body-small-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-display-large-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-display-medium-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-display-small-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-headline-large-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-headline-medium-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-headline-small-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-label-large-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 600;--mat-sys-label-medium: 500 .75rem / 1rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-label-medium-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 600;--mat-sys-label-small: 500 .688rem / 1rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-label-small-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-title-large-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-title-medium-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-title-small-font: Inter, Segoe UI, system-ui, -apple-system, Roboto, Helvetica Neue, sans-serif;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}html.dark{color-scheme:dark}:root{--brand-primary: #3949ab;--brand-primary-strong: #283593;--brand-accent: #00897b;--brand-accent-soft: rgba(0, 137, 123, .12);--status-received: #64748b;--status-ai_processed: #2563eb;--status-finance_review: #d97706;--status-approval: #7c3aed;--status-ready_for_payment: #0891b2;--status-paid: #16a34a;--status-closed: #6b7280;--status-rejected: #dc2626;--status-failed: #b91c1c;--status-on_hold: #ea580c;--ok: #16a34a;--warn: #d97706;--err: #dc2626;--chart-1: #4f6bd8;--chart-2: #14957f;--chart-3: #a855f7;--chart-4: #d97706;--chart-5: #0891b2;--chart-grid: #e7ebf1;--chart-axis-text: #8b94a7;--surface-page: #f4f6fa;--surface-card: #ffffff;--surface-raised: #ffffff;--surface-inset: #eef1f6;--border-subtle: #e3e8ef;--border-strong: #c6cdd8;--text-primary: #1a2233;--text-secondary: #5a6579;--text-faint: #8b94a7;--shadow-card: 0 1px 2px rgba(16, 24, 40, .05);--shadow-pop: 0 8px 24px rgba(16, 24, 40, .14);--skeleton-base: #e7ebf1;--skeleton-shine: #f4f6fa;--sidebar-bg: #171c2e;--sidebar-text: #aab2c8;--sidebar-text-active: #ffffff;--sidebar-active-bg: rgba(92, 108, 214, .24)}html.dark{--brand-primary: #7986cb;--brand-primary-strong: #9fa8da;--brand-accent: #4db6ac;--brand-accent-soft: rgba(77, 182, 172, .16);--status-received: #94a3b8;--status-ai_processed: #60a5fa;--status-finance_review: #fbbf24;--status-approval: #a78bfa;--status-ready_for_payment: #22d3ee;--status-paid: #4ade80;--status-closed: #9ca3af;--status-rejected: #f87171;--status-failed: #ef4444;--status-on_hold: #fb923c;--ok: #4ade80;--warn: #fbbf24;--err: #f87171;--chart-1: #5b7be0;--chart-2: #0da88e;--chart-3: #a06af8;--chart-4: #c77414;--chart-5: #0aa2c0;--chart-grid: #29314a;--chart-axis-text: #6e7891;--surface-page: #0f1320;--surface-card: #1a2032;--surface-raised: #202940;--surface-inset: #141a2b;--border-subtle: #29314a;--border-strong: #3b4562;--text-primary: #e8ecf5;--text-secondary: #a4adc2;--text-faint: #6e7891;--shadow-card: 0 1px 2px rgba(0, 0, 0, .3);--shadow-pop: 0 8px 24px rgba(0, 0, 0, .5);--skeleton-base: #232b42;--skeleton-shine: #2c3552;--sidebar-bg: #12172a;--sidebar-text: #8e97b0;--sidebar-text-active: #ffffff;--sidebar-active-bg: rgba(121, 134, 203, .22)}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:Inter,Segoe UI,system-ui,-apple-system,Roboto,Helvetica Neue,sans-serif;font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--surface-page);-webkit-font-smoothing:antialiased}a{color:var(--brand-primary);text-decoration:none}a:hover{text-decoration:underline}.app-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:10px;box-shadow:var(--shadow-card)}.skeleton{background:linear-gradient(100deg,var(--skeleton-base) 40%,var(--skeleton-shine) 50%,var(--skeleton-base) 60%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite;border-radius:6px;color:transparent;-webkit-user-select:none;user-select:none}.text-secondary{color:var(--text-secondary)}.text-faint{color:var(--text-faint)}.mono{font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.92em}.page{padding:24px;max-width:1560px;margin:0 auto}@media(max-width:600px){.page{padding:16px}}.error-banner{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:6px;border:1px solid color-mix(in srgb,var(--err) 40%,transparent);background:color-mix(in srgb,var(--err) 8%,transparent);color:var(--err);margin-bottom:16px}.error-banner .mat-icon{flex-shrink:0}table.mat-mdc-table{background:transparent}table.mat-mdc-table .mat-mdc-header-cell{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);border-bottom-color:var(--border-subtle);background:var(--surface-card)}table.mat-mdc-table .mat-mdc-cell{border-bottom-color:var(--border-subtle);color:var(--text-primary);font-size:13.5px}table.mat-mdc-table .mat-mdc-row{height:52px}table.mat-mdc-table .mat-mdc-row:hover{background:var(--surface-inset)}.row-clickable{cursor:pointer}.table-scroll{overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.mat-mdc-dialog-surface{border-radius:14px!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
