:root{--color-primary: #16256B;--color-primary-hover: #0D57AC;--color-primary-light: rgba(22, 37, 107, .1);--color-secondary: #0D57AC;--color-accent: #53BEC7;--color-accent-hover: #3fa8b1;--color-danger: #FF594F;--color-danger-hover: #e04a41;--color-success: #4caf50;--color-warning: #ff9800;--color-bg: #e3f2fd;--color-bg-light: #f2f9ff;--color-surface: #fff;--color-surface-alt: #F5F5F7;--color-border: #ccc;--color-border-light: #eee;--color-text: #333;--color-text-heading: #16256B;--color-text-muted: #666;--color-text-light: #999;--color-text-label: #555;--color-nav-bg: #16256B;--color-nav-text: #ccc;--color-nav-text-active: #fff;--color-nav-hover: rgba(255, 255, 255, .08);--color-nav-active: rgba(255, 255, 255, .12);--chart-sales: #16256B;--chart-sales-light: rgba(22, 37, 107, .1);--chart-cost: #E05252;--chart-cost-light: rgba(224, 82, 82, .1);--chart-gp: #53BEC7;--chart-gp-light: rgba(83, 190, 199, .1);--chart-wo: #0D57AC;--chart-wo-light: rgba(13, 87, 172, .1);--chart-customers: #F5A623;--chart-customers-light: rgba(245, 166, 35, .1);--chart-activity: #7B61FF;--chart-activity-light: rgba(123, 97, 255, .1);--chart-prev-period: #B0BEC5;--chart-prev-period-light: rgba(176, 190, 197, .15);--color-growth-up: #2E7D32;--color-growth-up-bg: #e8f5e9;--color-growth-down: #C62828;--color-growth-down-bg: #ffebee;--color-kpi-green: #2E7D32;--color-kpi-green-bg: #e8f5e9;--color-kpi-amber: #E08A00;--color-kpi-amber-bg: #fff3e0;--color-kpi-red: #C62828;--color-kpi-red-bg: #ffebee;--color-kpi-neutral: #90A4AE;--color-kpi-neutral-bg: #f5f5f7;--color-status-completed: #2e7d32;--color-status-completed-bg: #e8f5e9;--color-status-scheduled: #1565c0;--color-status-scheduled-bg: #e3f2fd;--color-status-draft: #e65100;--color-status-draft-bg: #fff3e0;--color-status-invoiced: #7b1fa2;--color-status-invoiced-bg: #f3e5f5;--color-status-inprogress: #0D57AC;--color-status-inprogress-bg: #e3f2fd;--color-status-onhold: #ff9800;--color-status-onhold-bg: #fff3e0;--color-status-cancelled: #999;--color-status-cancelled-bg: #f5f5f5;--color-btn-secondary-bg: #e9ecef;--color-btn-secondary-hover: #dee2e6;--color-table-header-bg: #f2f9ff;--color-table-row-hover: #f2f9ff;--color-focus-ring: rgba(13, 87, 172, .2);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--shadow-card: 0 1px 3px rgba(0, 0, 0, .08);--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-lg: 16px;--font-size-xl: 24px;--font-size-stat: 28px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--max-width: 1400px;--nav-height: 56px;--transition-fast: .2s ease}.view-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-lg)}.view-bar.end{justify-content:flex-end}.view-bar-right,.toggle-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm)}.toggle-row{justify-content:space-between;gap:12px;margin-bottom:var(--space-md)}.view-toggle{display:inline-flex;flex-wrap:wrap;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.view-toggle button{padding:6px 16px;border:none;border-right:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.view-toggle button:last-child{border-right:none}.view-toggle button.active{background:var(--color-primary);color:#fff}.view-toggle button:not(.active):hover{background:var(--color-btn-secondary-bg)}.btn-export{padding:6px 16px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-fast)}.btn-export:hover{background:var(--color-btn-secondary-bg)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--space-md);margin-bottom:var(--space-lg)}.tiles.small{margin-bottom:var(--space-sm)}.page-header .header-right{display:flex;align-items:center;gap:10px}.kpi-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--c);margin-right:7px;vertical-align:middle}.card.no-clip{overflow:visible}.empty{padding:14px;text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.text-right{text-align:right}.text-danger{color:var(--color-danger);font-weight:var(--font-weight-semibold)}.text-warn{color:var(--color-warning);font-weight:var(--font-weight-semibold)}.text-success{color:var(--color-success)}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--color-primary)}.sort-ico{font-size:14px;vertical-align:middle;opacity:.6}.stat-card.alert{border-left:3px solid var(--color-danger)}.stat-card.warn{border-left:3px solid var(--color-warning)}.stat-card.alert .stat-value{color:var(--color-danger)}.stat-card.warn .stat-value{color:var(--color-warning)}@media(max-width:768px){.view-bar{flex-direction:column;align-items:stretch}.view-bar-right{justify-content:flex-start}}.title-row{display:flex;align-items:center;gap:10px}.title-icon{font-size:28px;color:var(--color-primary)}.section-label{font-size:11px;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);margin-bottom:var(--space-sm)}.alert-error{padding:10px 16px;border-radius:var(--radius-md);margin-bottom:var(--space-md);font-size:13px;background:#ffebee;color:#c62828;border:1px solid #ffcdd2}.config-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;margin-bottom:18px;background:#f7f8fa;border:1px solid #eee;border-radius:var(--radius-md)}.config-bar app-info-tip{margin-left:auto}.code{font-family:monospace;font-size:12px;background:#f5f5f5;padding:2px 6px;border-radius:4px;color:#555}.module-tag{display:inline-block;padding:2px 6px;margin:1px 2px;border-radius:4px;font-size:11px;background:#f5f5f5;color:#555}.status{font-size:12px;font-weight:var(--font-weight-medium);color:var(--color-text-muted)}.status.active{color:#2e7d32}.btn-icon{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#666}.btn-icon:hover:not(:disabled){background:#f0f0f0;color:#333}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-icon.tick{color:#2e7d32}.btn-icon.tick:hover:not(:disabled){background:#e8f5e9}.btn-icon.discard{color:#000}.btn-icon.tick:disabled,.btn-icon.discard:disabled{color:#bbb}.row-actions{white-space:nowrap}.cell-input{width:90px;padding:4px 6px;border:1px solid #ddd;border-radius:4px;font-size:13px;text-align:right}.cell-input.text{width:150px;text-align:left}.cell-input:focus{outline:none;border-color:var(--color-primary)}.modal-backdrop{position:fixed;inset:0;background:#0006;z-index:200}.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:201;background:var(--color-surface);border-radius:12px;padding:24px;min-width:min(420px,100vw - 32px);max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0003}.modal h2{margin:0 0 20px;font-size:18px;font-weight:var(--font-weight-semibold)}.modal p{font-size:13px;color:#555;margin:0}.modal label{display:block;margin-bottom:12px;font-size:13px;font-weight:var(--font-weight-medium);color:#555}.modal input[type=text],.modal input[type=email],.modal input[type=number],.modal select{display:block;width:100%;padding:8px 10px;margin-top:4px;border:1px solid #ddd;border-radius:6px;font-size:13px}.modal input[type=text]:focus,.modal input[type=email]:focus,.modal input[type=number]:focus,.modal select:focus{outline:none;border-color:var(--color-primary)}.modal fieldset{border:1px solid #e0e0e0;border-radius:6px;padding:12px;margin-bottom:12px}.modal legend{font-size:13px;font-weight:var(--font-weight-medium);color:#555;padding:0 4px}.modal.small{min-width:min(360px,100vw - 32px);max-width:420px}.modal .form-row{display:flex;gap:12px}.modal .form-row label{flex:1}.modal .checkbox-label{display:flex;align-items:center;gap:8px;font-weight:400}.modal .checkbox-label input[type=checkbox]{width:auto;margin:0}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-family);background-color:var(--color-bg);color:var(--color-text);line-height:1.5}.page-container{max-width:var(--max-width);margin:0 auto;padding:var(--space-lg)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-lg)}.page-header h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.page-header.no-title{justify-content:flex-end;margin-bottom:var(--space-sm)}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px;margin-bottom:var(--space-md)}.stat-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-md) 20px;text-align:center}.stat-card .stat-value{font-size:var(--font-size-stat);font-weight:var(--font-weight-bold);color:var(--color-text-heading)}.stat-card .stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:var(--space-xs)}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn .material-icons{font-size:18px}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-btn-secondary-bg);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--color-btn-secondary-hover)}.btn-sm{padding:var(--space-xs) 10px;font-size:var(--font-size-sm)}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--color-border-light)}.data-table th{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);background:var(--color-table-header-bg)}.data-table tr:hover td{background:var(--color-table-row-hover)}.data-table .text-right{text-align:right}.data-table .text-center{text-align:center}.data-table td.empty{text-align:center;color:var(--color-text-muted);padding:24px}.data-table tr.inactive td{opacity:.5}.card,.chart-container{overflow-x:auto;-webkit-overflow-scrolling:touch}.form-group{margin-bottom:var(--space-md)}.form-group label{display:block;font-size:13px;font-weight:var(--font-weight-medium);color:var(--color-text-label);margin-bottom:var(--space-xs)}.form-control{width:100%;padding:var(--space-sm) 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);transition:border-color var(--transition-fast)}.form-control:focus{outline:none;border-color:var(--color-secondary);box-shadow:0 0 0 3px var(--color-focus-ring)}.form-control.is-invalid{border-color:var(--color-danger)}.badge{display:inline-block;padding:3px var(--space-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase}.grid{display:grid;gap:var(--space-md);margin-bottom:var(--space-lg)}.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-6{grid-template-columns:repeat(6,1fr)}.grid-7{grid-template-columns:repeat(7,1fr)}@media(max-width:1200px){.grid-6{grid-template-columns:repeat(3,1fr)}.grid-7{grid-template-columns:repeat(4,1fr)}}@media(max-width:768px){.grid-3,.grid-4,.grid-6,.grid-7{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.page-header h1,.stat-card .stat-value{font-size:20px}.chart-container,.card{padding:12px}.data-table{font-size:var(--font-size-sm)}.data-table th,.data-table td{padding:8px 6px;white-space:nowrap}}@media(max-width:480px){.grid-2,.grid-3,.grid-4,.grid-6,.grid-7{grid-template-columns:1fr}}.tab-bar{display:flex;flex-wrap:wrap;border-bottom:2px solid var(--color-border-light);margin-bottom:var(--space-md)}.tab{display:inline-flex;align-items:center;gap:6px;background:none;border:none;border-bottom:2px solid transparent;text-decoration:none;white-space:nowrap;padding:10px 20px;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-muted);cursor:pointer;margin-bottom:-2px;transition:all var(--transition-fast)}.tab .material-icons{font-size:18px}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.tab:hover:not(.active){color:var(--color-text)}.filters-bar{display:flex;align-items:flex-start;gap:var(--space-sm);flex-wrap:wrap}.filters-bar select{padding:6px 10px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);background:var(--color-surface);color:var(--color-text);min-width:0;max-width:100%}.filters-bar select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}@media(max-width:768px){.filters-bar{flex-direction:column;align-items:stretch}.filters-bar select{width:100%}}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--color-border-light);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--color-text-muted);gap:12px}.last-refreshed{font-size:var(--font-size-xs);color:var(--color-text-light);text-align:right;margin-top:var(--space-sm)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.chart-container{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px;margin-bottom:var(--space-md)}.chart-container h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-heading);margin-bottom:var(--space-md)}.chart-container [echarts]{max-width:100%}.section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-md)}.section-head h3{margin:0}@media(max-width:768px){.chart-container [echarts]{height:250px!important}}
