:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-contrast: #ffffff;--color-primary-soft: #eef4ff;--color-secondary: #0f766e;--color-secondary-hover: #0d635c;--color-secondary-contrast: #ffffff;--color-secondary-soft: #ecfdf6;--color-bg: #f4f6fa;--color-surface: #ffffff;--color-surface-2: #f8fafc;--color-overlay: rgba(15, 23, 42, .45);--color-sidebar-bg: #0f172a;--color-sidebar-bg-2: #111c33;--color-sidebar-text: #94a3b8;--color-sidebar-text-active: #ffffff;--color-sidebar-active-bg: rgba(255, 255, 255, .1);--color-sidebar-hover-bg: rgba(255, 255, 255, .05);--color-sidebar-border: rgba(255, 255, 255, .08);--color-text: #0f172a;--color-text-muted: #64748b;--color-text-faint: #94a3b8;--color-text-inverse: #ffffff;--color-link: var(--color-primary);--color-border: #e5e9f0;--color-border-strong: #cbd5e1;--color-positive: #15803d;--color-positive-strong: #166534;--color-positive-soft: #f0fdf4;--color-negative: #dc2626;--color-negative-strong: #b91c1c;--color-negative-soft: #fef2f2;--color-warning: #b45309;--color-warning-soft: #fffbeb;--color-warning-border: #fcd34d;--color-info: #0369a1;--color-info-soft: #f0f9ff;--color-neutral-soft: #f1f5f9;--chart-1: #2563eb;--chart-2: #0f766e;--chart-3: #d97706;--chart-4: #7c3aed;--chart-5: #db2777;--chart-6: #0891b2;--chart-7: #65a30d;--chart-8: #dc2626;--chart-grid: #e5e9f0;--font-sans: "Inter", "Segoe UI", Roboto, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--font-mono: "SFMono-Regular", ui-monospace, Menlo, Consolas, monospace;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--radius-pill: 999px;--shadow-card: 0 1px 2px rgba(15, 23, 42, .04), 0 6px 16px rgba(15, 23, 42, .06);--shadow-pop: 0 12px 32px rgba(15, 23, 42, .16);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--sidebar-width: 248px;--topbar-height: 60px;--content-max-width: 1280px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;font-weight:600;color:var(--color-text);line-height:1.25}h1{font-size:22px}h2{font-size:18px}h3{font-size:15px}p{margin:0}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.6}input,select,textarea{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:var(--radius-pill)}::-webkit-scrollbar-track{background:transparent}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh}.app-main{display:flex;flex-direction:column;min-width:0}.app-content{flex:1;padding:var(--space-6);width:100%;max-width:var(--content-max-width);margin:0 auto}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-header .subtitle{color:var(--color-text-muted);margin-top:2px}.sidebar{background:var(--color-sidebar-bg);color:var(--color-sidebar-text);display:flex;flex-direction:column;padding:var(--space-4) var(--space-3);gap:var(--space-2);position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-4);color:var(--color-sidebar-text-active);font-weight:700;font-size:15px;letter-spacing:.2px}.sidebar-brand img{max-height:32px;max-width:160px;object-fit:contain}.sidebar-section-label{text-transform:uppercase;font-size:11px;letter-spacing:.08em;color:var(--color-text-faint);padding:var(--space-3) var(--space-3) var(--space-1)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:9px var(--space-3);border-radius:var(--radius-sm);color:var(--color-sidebar-text);text-decoration:none;font-size:13.5px;font-weight:500;transition:background .12s ease,color .12s ease}.nav-item:hover{background:var(--color-sidebar-hover-bg);color:var(--color-sidebar-text-active);text-decoration:none}.nav-item.active{background:var(--color-sidebar-active-bg);color:var(--color-sidebar-text-active)}.nav-item .nav-index{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-sm);background:#ffffff14;font-size:11px;font-weight:700}.nav-item.active .nav-index{background:var(--color-primary);color:var(--color-primary-contrast)}.sidebar-spacer{flex:1}.sidebar-footer{padding:var(--space-3);font-size:11px;color:var(--color-text-faint);border-top:1px solid var(--color-sidebar-border)}.topbar{height:var(--topbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:var(--space-4);padding:0 var(--space-6);position:sticky;top:0;z-index:20}.topbar .topbar-field{display:flex;align-items:center;gap:var(--space-2)}.topbar .topbar-field label{font-size:12px;color:var(--color-text-muted);font-weight:600}.topbar-spacer{flex:1}.topbar-status{font-size:12px;color:var(--color-text-muted)}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:12.5px;font-weight:600;color:var(--color-text)}.field .hint{font-size:12px;color:var(--color-text-muted)}.field .error-text{font-size:12px;color:var(--color-negative)}.input,.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:8px 10px;color:var(--color-text);outline:none;transition:border-color .12s ease,box-shadow .12s ease;min-width:0}.input:focus,.select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.select{padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2364748b' d='M6 8 0 0h12z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.input[type=color]{padding:4px;width:48px;height:36px;cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 14px;font-weight:600;font-size:13px;background:var(--color-surface-2);color:var(--color-text);border-color:var(--color-border-strong);transition:background .12s ease,border-color .12s ease,color .12s ease}.btn:hover{background:var(--color-neutral-soft)}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-secondary);color:var(--color-secondary-contrast);border-color:var(--color-secondary)}.btn-secondary:hover{background:var(--color-secondary-hover)}.btn-danger{background:var(--color-surface);color:var(--color-negative);border-color:var(--color-negative)}.btn-danger:hover{background:var(--color-negative-soft)}.btn-ghost{background:transparent;border-color:transparent;color:var(--color-text-muted)}.btn-ghost:hover{background:var(--color-neutral-soft);color:var(--color-text)}.btn-sm{padding:5px 10px;font-size:12px}.btn-xs{padding:2px 6px;font-size:11px;line-height:1.3}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-card)}.card-pad{padding:var(--space-5)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.card-header h3{font-size:14px}.card-body{padding:var(--space-5)}.grid{display:grid;gap:var(--space-4)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-5{grid-template-columns:repeat(5,1fr)}.grid-6{grid-template-columns:repeat(6,1fr)}@media(max-width:1100px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.grid-5,.grid-6{grid-template-columns:repeat(3,1fr)}}@media(max-width:720px){.grid-2,.grid-3,.grid-4,.grid-5,.grid-6{grid-template-columns:1fr}}.kpi-grid-compact{gap:var(--space-3)}.kpi-grid-compact .kpi{padding:var(--space-3) var(--space-4);gap:3px}.kpi-grid-compact .kpi-label{font-size:11.5px}.kpi-grid-compact .kpi-value{font-size:19px}.kpi-grid-compact .kpi-value.big{font-size:22px}.kpi-grid-compact .kpi-sub{font-size:10.5px}.report-printable.pdf-printing .grid-2{grid-template-columns:1fr}.report-printable.pdf-printing .table-wrap{overflow:visible}.report-printable.pdf-printing table.data-table{font-size:9.5px}.report-printable.pdf-printing table.data-table th,.report-printable.pdf-printing table.data-table td{padding:4px 6px;white-space:normal;word-break:break-word}.report-printable.pdf-printing table.data-table th.num,.report-printable.pdf-printing table.data-table td.num{white-space:nowrap;word-break:normal}.kpi{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:var(--space-5);display:flex;flex-direction:column;gap:6px}.kpi .kpi-label{font-size:12.5px;color:var(--color-text-muted);font-weight:600}.kpi .kpi-value{font-size:26px;font-weight:700;letter-spacing:-.01em}.kpi .kpi-value.big{font-size:32px}.kpi .kpi-sub{font-size:12px;color:var(--color-text-muted)}.kpi .kpi-trend{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:600}.value-positive{color:var(--color-positive)}.value-negative{color:var(--color-negative)}.value-warning{color:var(--color-warning)}.kpi--accent-positive{border-top:3px solid var(--color-positive)}.kpi--accent-negative{border-top:3px solid var(--color-negative)}.kpi--accent-primary{border-top:3px solid var(--color-primary)}.table-wrap{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:13px}table.data-table th,table.data-table td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--color-border);white-space:nowrap}table.data-table th{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-surface-2);position:sticky;top:0}table.data-table td.num,table.data-table th.num{text-align:right;font-variant-numeric:tabular-nums}table.data-table tbody tr:hover{background:var(--color-surface-2)}table.data-table.data-table-compact{font-size:12px}table.data-table.data-table-compact th,table.data-table.data-table-compact td{padding:6px 8px}table.data-table.data-table-compact th.small{font-size:10px;text-transform:none;letter-spacing:0}table.data-table tr.row-group{background:var(--color-neutral-soft);font-weight:700}table.data-table tr.row-total{background:var(--color-primary-soft);font-weight:700}table.data-table tfoot td,table.data-table tr.row-subtotal{font-weight:700;border-top:2px solid var(--color-border-strong)}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:var(--radius-pill);font-size:11.5px;font-weight:600;line-height:1.6}.badge-ok{background:var(--color-positive-soft);color:var(--color-positive-strong)}.badge-error{background:var(--color-negative-soft);color:var(--color-negative-strong)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-neutral{background:var(--color-neutral-soft);color:var(--color-text-muted)}.badge-info{background:var(--color-info-soft);color:var(--color-info)}.badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.banner{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid;font-size:13px}.banner-warning{background:var(--color-warning-soft);border-color:var(--color-warning-border);color:var(--color-warning)}.banner-error{background:var(--color-negative-soft);border-color:var(--color-negative);color:var(--color-negative-strong)}.banner-info{background:var(--color-info-soft);border-color:var(--color-info);color:var(--color-info)}.banner-success{background:var(--color-positive-soft);border-color:var(--color-positive);color:var(--color-positive-strong)}.banner ul{margin:4px 0 0;padding-left:18px}.banner .banner-title{font-weight:700}.state-block{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);text-align:center;padding:var(--space-7) var(--space-5);color:var(--color-text-muted)}.state-block .state-title{font-size:16px;font-weight:600;color:var(--color-text)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--color-border);border-top-color:var(--color-primary);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-overlay);display:flex;align-items:flex-start;justify-content:center;padding:6vh var(--space-4);z-index:50;overflow-y:auto}.modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);width:100%;max-width:560px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-5) var(--space-3)}.modal-body{padding:var(--space-3) var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5) var(--space-5)}.row{display:flex;align-items:center;gap:var(--space-3)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.wrap{flex-wrap:wrap}.muted{color:var(--color-text-muted)}.faint{color:var(--color-text-faint)}.small{font-size:12px}.strong{font-weight:700}.nowrap{white-space:nowrap}.text-right{text-align:right}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-5{margin-top:var(--space-5)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.flex-1{flex:1}.divider{height:1px;background:var(--color-border);margin:var(--space-4) 0}.section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:var(--space-3)}.tag-link{color:var(--color-link);cursor:pointer}.clickable{cursor:pointer}@media print{.sidebar,.topbar,.no-print{display:none!important}.app-shell{display:block}.app-content{max-width:none;padding:0}body{background:#fff}}
