:root{--font-family-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-mono: "JetBrains Mono", monospace;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--border-radius-sm: 6px;--border-radius-md: 10px;--border-radius-lg: 16px}:root[data-theme=dark]{--bg-app: #0a0f1d;--bg-surface: #111827;--bg-surface-elevated: #1f2937;--bg-surface-hover: #374151;--border-color: #1f2937;--border-color-highlight: #374151;--text-main: #f9fafb;--text-muted: #9ca3af;--text-dim: #6b7280;--color-primary: #38bdf8;--color-primary-glow: rgba(56, 189, 248, .25);--color-secondary: #34d399;--color-warning: #fbbf24;--color-danger: #f87171;--shadow-card: 0 10px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .3)}:root[data-theme=light]{--bg-app: #ffffff;--bg-surface: #f8fafc;--bg-surface-elevated: #f1f5f9;--bg-surface-hover: #e2e8f0;--border-color: #e2e8f0;--border-color-highlight: #cbd5e1;--text-main: #1e3a8a;--text-muted: #334155;--text-dim: #64748b;--color-primary: #1e3a8a;--color-primary-glow: rgba(30, 58, 138, .15);--color-secondary: #14532d;--color-warning: #d97706;--color-danger: #dc2626;--shadow-card: 0 10px 20px -3px rgba(30, 58, 138, .08), 0 4px 6px -4px rgba(0, 0, 0, .04)}.drawer-enter{transform:translate(100%);transition:transform var(--transition-normal)}.drawer-enter-active{transform:translate(0)}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.shake{animation:shake .45s cubic-bezier(.36,.07,.19,.97)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:var(--font-family-sans);background:var(--bg-app);color:var(--text-main);transition:background var(--transition-normal),color var(--transition-normal);font-size:14px;line-height:1.45}[dir=rtl] body{text-align:right}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}.app-shell{min-height:100vh;display:flex;flex-direction:column}.page{flex:1;padding:24px;max-width:1500px;margin:0 auto;width:100%}@media(max-width:720px){.page{padding:16px}}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-header h1{font-size:22px}.page-header .sub{color:var(--text-muted);font-size:13px;margin-top:4px}.app-header{position:sticky;top:0;z-index:1000;height:64px;display:flex;align-items:center;gap:18px;padding:0 20px;background:var(--bg-surface);border-bottom:1px solid var(--border-color);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;letter-spacing:.02em;white-space:nowrap}.brand .logo{width:26px;height:26px}.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--color-secondary);background:color-mix(in srgb,var(--color-secondary) 12%,transparent);border:1px solid color-mix(in srgb,var(--color-secondary) 35%,transparent);padding:3px 10px;border-radius:999px;white-space:nowrap}.status-pill:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--color-secondary);box-shadow:0 0 8px var(--color-secondary)}.status-pill.idle{color:var(--text-dim);background:transparent;border-color:var(--border-color-highlight)}.status-pill.idle:before{background:var(--text-dim);box-shadow:none}@media(max-width:960px){.status-pill{display:none}}.nav-tabs{display:flex;gap:4px;flex:1;justify-content:center;overflow-x:auto}.nav-tab{padding:7px 13px;border-radius:var(--border-radius-md);font-size:13px;font-weight:550;color:var(--text-muted);white-space:nowrap;border:1px solid transparent;transition:all var(--transition-fast)}.nav-tab:hover{color:var(--text-main);background:var(--bg-surface-hover);text-decoration:none}.nav-tab.active{color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 12%,transparent);border-color:color-mix(in srgb,var(--color-primary) 30%,transparent)}.header-right{display:flex;align-items:center;gap:10px}.language-select select{padding:4px 8px;border-radius:999px;border:1px solid var(--border-color-highlight);background:var(--bg-surface-elevated);color:var(--text-muted);font:inherit;font-size:11px;cursor:pointer;outline:none}.language-select select:focus{border-color:var(--color-primary)}.theme-badge{font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;padding:4px 10px;border-radius:999px;border:1px solid var(--border-color-highlight);color:var(--text-muted);cursor:pointer;background:var(--bg-surface-elevated);transition:all var(--transition-fast)}.theme-badge:hover{border-color:var(--color-primary);color:var(--color-primary)}.avatar-btn{width:36px;height:36px;border-radius:50%;border:2px solid var(--color-primary);background:var(--bg-surface-elevated);color:var(--color-primary);font-weight:700;font-size:13px;cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.avatar-btn:hover{transform:scale(1.06);box-shadow:0 0 14px var(--color-primary-glow)}.avatar-menu{position:absolute;right:16px;top:68px;z-index:1100;min-width:240px;background:var(--bg-surface-elevated);border:1px solid var(--border-color-highlight);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-card);padding:6px;animation:menu-pop var(--transition-fast)}[dir=rtl] .avatar-menu{right:auto;left:16px}@keyframes menu-pop{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.avatar-menu .menu-head{padding:10px 12px 8px;border-bottom:1px solid var(--border-color);margin-bottom:4px}.avatar-menu .menu-head .name{font-weight:650;font-size:13.5px}.avatar-menu .menu-head .role{font-size:11.5px;color:var(--text-muted)}.menu-item{width:100%;display:flex;align-items:center;gap:10px;padding:9px 12px;border:none;background:transparent;color:var(--text-main);font-size:13px;font-family:inherit;border-radius:var(--border-radius-md);cursor:pointer;text-align:start;transition:background var(--transition-fast)}.menu-item:hover{background:var(--bg-surface-hover)}.menu-item.danger{color:var(--color-danger)}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--border-radius-md);border:1px solid var(--border-color-highlight);background:var(--bg-surface-elevated);color:var(--text-main);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:all var(--transition-fast)}.btn:hover{border-color:var(--color-primary);color:var(--color-primary);box-shadow:0 0 12px var(--color-primary-glow);text-decoration:none}.btn.primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn.primary:hover{filter:brightness(1.1);color:#fff}.btn.danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn.ghost{background:transparent}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;border:1px solid var(--border-color-highlight);background:var(--bg-surface-elevated);color:var(--text-muted);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--transition-fast);font-family:inherit}.chip:hover{color:var(--text-main)}.chip.active{border-color:var(--color-primary);color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,transparent)}.filter-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.search-input,.select-input{padding:8px 12px;border-radius:var(--border-radius-md);border:1px solid var(--border-color-highlight);background:var(--bg-surface-elevated);color:var(--text-main);font-size:13px;font-family:inherit;outline:none;transition:border-color var(--transition-fast)}.search-input:focus,.select-input:focus{border-color:var(--color-primary)}.search-input{min-width:220px}.card{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:16px;box-shadow:var(--shadow-card)}.entity-card{min-width:0}.entity-card-interactive{cursor:pointer;transition:transform var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.entity-card-interactive:hover{transform:translateY(-2px);border-color:var(--border-color-highlight);background:var(--bg-surface-elevated)}.entity-card-interactive:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}.entity-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}.entity-card-heading{display:flex;align-items:flex-start;gap:8px;min-width:0}.entity-card-title{font-size:15px}.entity-card-subtitle{margin-top:2px;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.entity-card-trailing{flex:0 0 auto}.entity-metric-row{display:flex;justify-content:space-between;gap:12px;padding:5px 0;font-size:12px;color:var(--text-muted)}.entity-metric-row b{color:var(--text-main);text-align:end}.entity-card-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:12px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.badge.sev-low{background:#34d39926;color:#34d399;border:1px solid rgba(52,211,153,.4)}.badge.sev-moderate{background:#fbbf2426;color:#fbbf24;border:1px solid rgba(251,191,36,.4)}.badge.sev-critical{background:#f8717126;color:#f87171;border:1px solid rgba(248,113,113,.45)}.badge.tag{background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary);border:1px solid color-mix(in srgb,var(--color-primary) 30%,transparent)}.health-bar{height:8px;border-radius:999px;background:var(--bg-surface-hover);overflow:hidden}.health-fill{height:100%;border-radius:999px;transition:width var(--transition-normal),background var(--transition-normal)}.health-fill.green{background:var(--color-secondary)}.health-fill.amber{background:var(--color-warning)}.health-fill.red{background:var(--color-danger)}.health-row{display:flex;align-items:center;gap:10px}.health-row .value{font-weight:700;font-size:13px;width:38px;text-align:end}.modal-overlay{position:fixed;inset:0;z-index:2000;background:#0000008c;display:flex;align-items:center;justify-content:center;animation:fade-in var(--transition-fast)}.modal-overlay.closing{animation:fade-out .18s ease forwards}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{to{opacity:0}}.modal-card{width:min(640px,calc(100vw - 40px));max-height:80vh;overflow:auto;background:var(--bg-surface-elevated);border:1px solid var(--border-color-highlight);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-card);padding:20px;animation:rise var(--transition-normal)}.modal-card.closing{animation:sink .18s ease forwards}@keyframes rise{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes sink{to{opacity:0;transform:translateY(10px) scale(.98)}}.modal-header{display:flex;align-items:center;gap:12px;margin-bottom:14px}.modal-header h3{margin:0}.modal-close{width:30px;height:30px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-color-highlight);border-radius:50%;background:var(--bg-surface);color:var(--text-muted);font:inherit;font-size:22px;line-height:1;cursor:pointer;transition:all var(--transition-fast)}.modal-close:hover,.modal-close:focus-visible{border-color:var(--color-primary);color:var(--text-main);background:var(--bg-surface-hover);outline:none}.modal-body{color:var(--text-main)}.modal-message{margin:0;color:var(--text-muted);font-size:13.5px;line-height:1.55}.entity-dialog-details .entity-metric-row{padding:8px 0;border-bottom:1px solid var(--border-color);font-size:13px}.entity-dialog-copy{padding:12px 0 4px;color:var(--text-muted);font-size:13px;line-height:1.55}.entity-dialog-copy b{color:var(--text-main)}.entity-dialog-copy p{margin-top:4px}@media(prefers-reduced-motion:reduce){.modal-overlay,.modal-overlay.closing,.modal-card,.modal-card.closing{animation-duration:1ms}}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.drawer{position:fixed;inset-inline-end:0;top:64px;bottom:0;width:min(480px,92vw);z-index:1900;background:#0b1120;color:#cbd5e1;border-inline-start:1px solid #1f2937;box-shadow:var(--shadow-card);display:flex;flex-direction:column;font-family:var(--font-family-mono);font-size:12px}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #1f2937;font-family:var(--font-family-sans)}.drawer-body{flex:1;overflow:auto;padding:10px 14px}.log-line{padding:3px 0;border-bottom:1px dashed rgba(148,163,184,.12);white-space:pre-wrap;word-break:break-word}.log-line .lvl-INFO{color:#38bdf8}.log-line .lvl-WARN{color:#fbbf24}.log-line .lvl-ERROR{color:#f87171}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 20%,var(--color-primary-glow),transparent 55%),linear-gradient(135deg,var(--bg-app),var(--bg-surface));padding:20px}.login-language-select{position:absolute;inset-block-start:20px;inset-inline-end:20px}.login-card{width:min(420px,100%);background:var(--bg-surface-elevated);border:1px solid var(--border-color-highlight);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-card);padding:32px}.login-card h2{margin-bottom:4px}.login-card .hint{color:var(--text-muted);font-size:13px;margin-bottom:22px}.login-field{margin-bottom:18px}.login-field label{display:block;font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:7px}.login-field input[type=email]{width:100%;direction:ltr;text-align:start;padding:11px 13px;border-radius:var(--border-radius-md);border:1px solid var(--border-color-highlight);background:var(--bg-surface);color:var(--text-main);font-size:14px;font-family:inherit;outline:none}.login-field input[type=email]:focus{border-color:var(--color-primary)}.pin-row{direction:ltr;display:flex;justify-content:space-evenly;gap:10px}.pin-box{width:58px;height:62px;text-align:center;font-size:26px;font-weight:700;font-family:var(--font-family-mono);border-radius:var(--border-radius-md);border:1.5px solid var(--border-color-highlight);background:var(--bg-surface);color:var(--text-main);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.pin-box:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-glow)}.pin-row.invalid .pin-box{border-color:var(--color-danger)}.login-error{color:var(--color-danger);font-size:13px;margin-top:10px;min-height:18px}.login-otp-reveal{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:8px;padding:9px 12px;border-radius:var(--border-radius-md);border:1px dashed color-mix(in srgb,var(--color-primary) 40%,transparent);background:color-mix(in srgb,var(--color-primary) 8%,transparent);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.login-otp-reveal b{direction:ltr;font-family:var(--font-family-mono);font-size:17px;letter-spacing:.22em;color:var(--color-primary)}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}@media(max-width:960px){.stats-strip{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:14px 16px}.stat-card .label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:6px}.stat-card .value{font-size:24px;font-weight:750;font-family:var(--font-family-mono)}.stat-card .sub{font-size:12px;color:var(--text-muted);margin-top:4px}.stage-dots{display:flex;align-items:center;gap:6px;margin:12px 0 4px;font-size:11px;color:var(--text-dim)}.stage-dots .dot{width:12px;height:12px;border-radius:50%;background:var(--bg-surface-hover);border:1.5px solid var(--border-color-highlight);transition:all var(--transition-fast)}.stage-dots .dot.lit{background:var(--color-primary);border-color:var(--color-primary);box-shadow:0 0 8px var(--color-primary-glow)}.stage-dots .dot-line{flex:1;height:2px;background:var(--border-color)}.stage-dots .dot-line.lit{background:var(--color-primary)}.entity-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media(max-width:1200px){.entity-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.entity-grid{grid-template-columns:1fr}}.entity-grid.two-up{grid-template-columns:repeat(2,1fr)}@media(max-width:960px){.entity-grid.two-up{grid-template-columns:1fr}}.audit-table,.data-table{width:100%;border-collapse:collapse;font-size:12.5px}.audit-table th,.audit-table td,.data-table th,.data-table td{text-align:start;padding:7px 8px;border-bottom:1px solid var(--border-color)}.audit-table th,.data-table th{color:var(--text-muted);font-weight:650;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.audit-table td{font-family:var(--font-family-mono)}.data-table td.num{text-align:end;font-family:var(--font-family-mono)}.table-scroll{overflow-x:auto}.empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:56px 24px;border:1px dashed var(--border-color-highlight);border-radius:var(--border-radius-lg);background:color-mix(in srgb,var(--bg-surface) 60%,transparent)}.empty-state .empty-glyph{width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:color-mix(in srgb,var(--color-primary) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-primary) 28%,transparent);color:var(--color-primary);font-size:20px}.empty-state h2{font-size:16px;color:var(--text-main)}.empty-state p{margin:0;max-width:46ch;color:var(--text-muted);font-size:13px;line-height:1.6}.empty-state .empty-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:4px}.dropzone{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:44px 24px;border:2px dashed var(--border-color-highlight);border-radius:var(--border-radius-lg);background:var(--bg-surface);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.dropzone:hover,.dropzone:focus-visible,.dropzone.dragging{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 6%,var(--bg-surface));outline:none}.dropzone .dz-glyph{font-size:26px}.dropzone .dz-title{font-weight:650;font-size:15px}.dropzone .dz-hint{color:var(--text-muted);font-size:12.5px;max-width:52ch}.dropzone input[type=file]{display:none}.ingest-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:16px;align-items:start}@media(max-width:960px){.ingest-layout{grid-template-columns:1fr}}.source-list{display:flex;flex-direction:column;gap:10px}.source-row{display:flex;align-items:center;gap:12px;width:100%;padding:11px 14px;border:1px solid var(--border-color);border-radius:var(--border-radius-md);background:var(--bg-surface);color:inherit;font:inherit;text-align:start;cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.source-row:hover{border-color:var(--border-color-highlight);background:var(--bg-surface-elevated)}.source-row:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.source-row .sr-name{flex:1;min-width:0;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-row .sr-meta{color:var(--text-muted);font-size:11.5px;font-family:var(--font-family-mono);white-space:nowrap}.ingest-error{margin-top:12px;padding:10px 12px;border-radius:var(--border-radius-md);border:1px solid color-mix(in srgb,var(--color-danger) 45%,transparent);background:color-mix(in srgb,var(--color-danger) 10%,transparent);color:var(--color-danger);font-size:12.5px}.invoice-lines{margin-top:12px}.invoice-total-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border-color-highlight);font-size:15px;font-weight:700}.invoice-total-row .amount{font-family:var(--font-family-mono);font-size:19px;color:var(--color-primary)}@media print{.app-header,.filter-bar,.page-header,.modal-close,.modal-actions,.entity-card-actions,.drawer{display:none!important}.modal-overlay{position:static;background:none;display:block}.modal-card{width:100%;max-height:none;border:none;box-shadow:none;animation:none}body{background:#fff;color:#000}}
