@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmmono/v16/aFTU7PB1QTsUX8KYthSQBLyM.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmmono/v16/aFTU7PB1QTsUX8KYthqQBA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmmono/v16/aFTR7PB1QTsUX8KYvumzEY2tbZX9.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmmono/v16/aFTR7PB1QTsUX8KYvumzEYOtbQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-primary: #f8f9fb;--bg-surface: #ffffff;--bg-card: #ffffff;--bg-sidebar: #111318;--bg-hover: #f4f6fa;--bg-selected: #e8f0fe;--bg-input: #ffffff;--accent-primary: #2563eb;--accent-secondary: #0ea5e9;--accent-success: #16a34a;--accent-warning: #d97706;--accent-danger: #dc2626;--text-primary: #111827;--text-secondary: #6b7280;--text-muted: #9ca3af;--text-inverse: #ffffff;--border-default: #e5e7eb;--border-subtle: #f0f2f5;--border-focus: #2563eb;--sidebar-text: #d1d5db;--sidebar-active-bg: #1e293b;--sidebar-active-text: #ffffff;--sidebar-icon: #9ca3af;--sidebar-width: 240px;--sidebar-collapsed-width: 64px;--table-header-bg: #fafbfc;--table-row-hover: #f8f9fb;--table-border: #f0f2f5;--topbar-height: 60px;--topbar-bg: #ffffff;--shadow-card: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);--shadow-dropdown: 0 4px 20px rgba(0,0,0,.12);--shadow-lg: 0 10px 40px rgba(0,0,0,.15);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease}body.dark{--bg-primary: #0d0f14;--bg-surface: #161a23;--bg-card: #1a1f2e;--bg-hover: #1f2535;--bg-selected: #1e3a5f;--bg-input: #1a1f2e;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--border-default: #2a3040;--border-subtle: #1e2535;--table-header-bg: #161a23;--table-row-hover: #1f2535;--table-border: #1e2535;--topbar-bg: #161a23;--shadow-card: 0 1px 3px rgba(0,0,0,.4), 0 1px 2px rgba(0,0,0,.3);--shadow-dropdown: 0 4px 20px rgba(0,0,0,.5)}h1{font-size:28px;font-weight:700;line-height:1.2;color:var(--text-primary)}h2{font-size:22px;font-weight:600;line-height:1.3;color:var(--text-primary)}h3{font-size:18px;font-weight:600;line-height:1.4;color:var(--text-primary)}h4{font-size:16px;font-weight:600;line-height:1.4;color:var(--text-primary)}h5{font-size:14px;font-weight:600;line-height:1.4;color:var(--text-primary)}h6{font-size:12px;font-weight:600;line-height:1.4;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}p{font-size:14px;line-height:1.6;color:var(--text-secondary)}.text-xs{font-size:11px}.text-sm{font-size:12px}.text-base{font-size:14px}.text-lg{font-size:16px}.text-xl{font-size:18px}.text-2xl{font-size:22px}.text-3xl{font-size:28px}.text-4xl{font-size:36px}.font-light{font-weight:300}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-primary{color:var(--text-primary)!important}.text-secondary{color:var(--text-secondary)!important}.text-muted{color:var(--text-muted)!important}.text-accent{color:var(--accent-primary)!important}.text-success{color:var(--accent-success)!important}.text-warning{color:var(--accent-warning)!important}.text-danger{color:var(--accent-danger)!important}.text-white{color:#fff!important}.mono,.data-value{font-family:DM Mono,monospace}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;cursor:pointer;border:none;transition:all var(--transition-fast);font-family:inherit;white-space:nowrap}.btn:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.btn.btn-primary{background:var(--accent-primary);color:#fff}.btn.btn-primary:hover{background:#1d4ed8;box-shadow:0 4px 12px #2563eb4d}.btn.btn-primary:active{transform:scale(.98)}.btn.btn-secondary{background:var(--bg-hover);color:var(--text-primary);border:1px solid var(--border-default)}.btn.btn-secondary:hover{background:#e9ecf0}.btn.btn-danger{background:var(--accent-danger);color:#fff}.btn.btn-danger:hover{background:#b91c1c}.btn.btn-ghost{background:transparent;color:var(--text-secondary)}.btn.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.btn.btn-sm{padding:5px 10px;font-size:12px}.btn.btn-lg{padding:10px 20px;font-size:16px}.btn .material-icons{font-size:18px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge.badge-success{background:#dcfce7;color:#15803d}.badge.badge-warning{background:#fef3c7;color:#b45309}.badge.badge-danger{background:#fee2e2;color:#b91c1c}.badge.badge-info{background:#dbeafe;color:#1d4ed8}.badge.badge-neutral{background:#f3f4f6;color:#374151}.badge.badge-purple{background:#ede9fe;color:#6d28d9}.badge.badge-orange{background:#ffedd5;color:#c2410c}.badge.badge-teal{background:#ccfbf1;color:#0f766e}.badge .dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:currentColor}.badge .dot.pulse{animation:pulse 1.5s ease-in-out infinite}.trend-chip{display:inline-flex;align-items:center;gap:2px;font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px}.trend-chip.up{background:#dcfce7;color:#15803d}.trend-chip.down{background:#fee2e2;color:#b91c1c}.trend-chip.neutral{background:#f3f4f6;color:#6b7280}.card{background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);border:1px solid var(--border-default)}.card.card-hoverable{transition:box-shadow var(--transition-normal),transform var(--transition-normal);cursor:pointer}.card.card-hoverable:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px);border-color:#d1d5db}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.section-header h3{margin:0}.divider{border:none;border-top:1px solid var(--border-default);margin:16px 0}.progress-bar-wrap{background:#f0f2f5;border-radius:4px;height:6px;overflow:hidden}.progress-bar-wrap .progress-bar-fill{height:100%;border-radius:4px;background:var(--accent-primary);transition:width var(--transition-normal)}.data-table-wrap{width:100%;overflow-x:auto}.data-table-wrap table{width:100%;border-collapse:collapse;font-size:14px}.data-table-wrap table thead th{padding:10px 14px;text-align:left;font-weight:600;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border-default);white-space:nowrap;background:#fafbfc}.data-table-wrap table tbody tr{border-bottom:1px solid #f0f2f5;transition:background var(--transition-fast);cursor:pointer}.data-table-wrap table tbody tr:hover{background:var(--bg-hover)}.data-table-wrap table tbody tr.selected{background:var(--bg-selected)}.data-table-wrap table tbody tr:last-child{border-bottom:none}.data-table-wrap table tbody td{padding:12px 14px;color:var(--text-primary);vertical-align:middle}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-group label{font-size:13px;font-weight:600;color:var(--text-primary)}.form-group label span.required{color:var(--accent-danger);margin-left:2px}.form-group input[type=text],.form-group input[type=email],.form-group input[type=password],.form-group input[type=number],.form-group select,.form-group textarea{padding:9px 12px;border-radius:var(--radius-sm);border:1px solid var(--border-default);font-size:14px;font-family:inherit;color:var(--text-primary);background:var(--bg-input);transition:border-color var(--transition-fast);width:100%;box-sizing:border-box}.form-group input[type=text]:focus,.form-group input[type=email]:focus,.form-group input[type=password]:focus,.form-group input[type=number]:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #2563eb1a}.form-group input[type=text]::placeholder,.form-group input[type=email]::placeholder,.form-group input[type=password]::placeholder,.form-group input[type=number]::placeholder,.form-group select::placeholder,.form-group textarea::placeholder{color:var(--text-muted)}.form-group input[type=text]:disabled,.form-group input[type=email]:disabled,.form-group input[type=password]:disabled,.form-group input[type=number]:disabled,.form-group select:disabled,.form-group textarea:disabled{background:#f9fafb;color:var(--text-muted);cursor:not-allowed}.form-group textarea{resize:vertical;min-height:80px}.skeleton{background:linear-gradient(90deg,#f0f2f5 25%,#e8eaed,#f0f2f5 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:var(--radius-sm)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.fade-in{animation:fadeIn .3s ease forwards}.slide-in-right{animation:slideInRight .3s ease forwards}.d-flex{display:flex}.d-none{display:none}.flex-1{flex:1}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-4{gap:4px}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-24{gap:24px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mb-4{margin-bottom:4px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.p-0{padding:0!important}.w-full{width:100%}.cursor-pointer{cursor:pointer}.relative{position:relative}.overflow-hidden{overflow:hidden}.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--bg-hover);border:1px solid var(--border-default);border-radius:999px;font-size:12px;font-weight:500;color:var(--text-secondary)}.chip .close{cursor:pointer;font-size:14px}.chip.chip-active{background:var(--bg-selected);border-color:var(--accent-primary);color:var(--accent-primary)}.alert-banner{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;margin-bottom:8px;border:1px solid transparent}.alert-banner.alert-warning{background:#fef3c7;border-color:#fcd34d;color:#92400e}.alert-banner.alert-danger{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.alert-banner.alert-info{background:#dbeafe;border-color:#93c5fd;color:#1e40af}.alert-banner.alert-success{background:#dcfce7;border-color:#86efac;color:#14532d}.alert-banner .close-btn{margin-left:auto;cursor:pointer;opacity:.7}.alert-banner .close-btn:hover{opacity:1}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;background:var(--bg-primary);font-family:DM Sans,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mat-mdc-snack-bar-container{font-family:DM Sans,sans-serif!important}.app-shell{display:flex;height:100vh;overflow:hidden}.content-area{flex:1;display:flex;flex-direction:column;overflow:hidden}.main-content{flex:1;overflow-y:auto;padding:24px;background:var(--bg-primary);transition:background var(--transition-normal)}.main-content::-webkit-scrollbar{width:6px;height:6px}.main-content::-webkit-scrollbar-track{background:transparent}.main-content::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.main-content::-webkit-scrollbar-thumb:hover{background:#9ca3af}.page-header{margin-bottom:24px}.page-header h1{font-size:22px;font-weight:700;color:var(--text-primary);margin:0 0 4px}.page-header p{color:var(--text-secondary);margin:0;font-size:14px}.kpi-grid{display:grid;gap:16px}.kpi-grid.cols-4{grid-template-columns:repeat(4,1fr)}.kpi-grid.cols-5{grid-template-columns:repeat(5,1fr)}.kpi-grid.cols-3{grid-template-columns:repeat(3,1fr)}.kpi-grid.cols-2{grid-template-columns:repeat(2,1fr)}@media (max-width: 1200px){.kpi-grid.cols-5{grid-template-columns:repeat(3,1fr)}.kpi-grid.cols-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.kpi-grid{grid-template-columns:1fr 1fr!important}}@media (max-width: 480px){.kpi-grid{grid-template-columns:1fr!important}}.charts-grid{display:grid;gap:16px}.charts-grid.grid-6040{grid-template-columns:1.5fr 1fr}.charts-grid.grid-3{grid-template-columns:repeat(3,1fr)}.charts-grid.grid-equal{grid-template-columns:1fr 1fr}.charts-grid.grid-6535{grid-template-columns:1.85fr 1fr}@media (max-width: 1024px){.charts-grid{grid-template-columns:1fr!important}}.chart-card{background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);border:1px solid var(--border-default);padding:20px}.chart-card .chart-title{font-size:15px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.chart-card .chart-subtitle{font-size:12px;color:var(--text-muted);margin:0 0 16px}.chart-card canvas{max-height:280px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}
