:root{--primary: #1a3a5c;--primary-dark: #0f2540;--primary-light: #2a5a8c;--accent: #00d4aa;--accent-dark: #00a885;--accent-light: #33e0be;--warning: #ffc107;--danger: #dc3545;--info: #17a2b8;--bg-primary: #1e1e2f;--bg-secondary: #2a2a3d;--bg-tertiary: #35354a;--bg-card: #252538;--text-primary: #ffffff;--text-secondary: #a0a0b0;--text-muted: #6c6c7c;--border-color: #3a3a4d;--sidebar-width: 260px;--sidebar-collapsed-width: 70px;--header-height: 64px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 4px 6px rgba(0, 0, 0, .25);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .3);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:Inter,Roboto,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-light)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-accent{color:var(--accent)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.text-success{color:var(--accent)}.bg-card{background:var(--bg-card)}.bg-secondary{background:var(--bg-secondary)}.mt-1{margin-top:var(--spacing-sm)}.mt-2{margin-top:var(--spacing-md)}.mt-3{margin-top:var(--spacing-lg)}.mb-1{margin-bottom:var(--spacing-sm)}.mb-2{margin-bottom:var(--spacing-md)}.mb-3{margin-bottom:var(--spacing-lg)}.p-1{padding:var(--spacing-sm)}.p-2{padding:var(--spacing-md)}.p-3{padding:var(--spacing-lg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing-sm)}.gap-2{gap:var(--spacing-md)}.gap-3{gap:var(--spacing-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-normal);border:none;border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-lg)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:var(--text-primary)}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-md)}.btn-accent{background:linear-gradient(135deg,var(--accent),var(--accent-light));color:var(--bg-primary);font-weight:600}.btn-accent:hover:not(:disabled){box-shadow:0 0 20px #00d4aa4d;transform:translateY(-1px)}.btn-outline{background:transparent;border:1px solid var(--border-color);color:var(--text-primary)}.btn-outline:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--text-muted)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#bd2130}.btn-sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.form-group label{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.form-control{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);color:var(--text-primary);font-size:var(--font-size-base);transition:border-color var(--transition-fast)}.form-control:focus{outline:none;border-color:var(--accent)}.form-control::placeholder{color:var(--text-muted)}textarea.form-control{min-height:100px;resize:vertical}.card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border-color);padding:var(--spacing-lg)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--border-color)}.card-header h2,.card-header h3{font-size:var(--font-size-lg);font-weight:600}.table-container{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--border-color)}table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}table th,table td{padding:var(--spacing-md);text-align:left;border-bottom:1px solid var(--border-color)}table th{background:var(--bg-tertiary);color:var(--text-secondary);font-weight:600;text-transform:uppercase;font-size:var(--font-size-xs);letter-spacing:.5px}table tr:hover td{background:#00d4aa0d}table tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600}.badge-success{background:#00d4aa26;color:var(--accent)}.badge-danger,.badge-error{background:#dc354526;color:var(--danger)}.badge-warning{background:#ffc10726;color:var(--warning)}.badge-info{background:#17a2b826;color:var(--info)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{transform:translate(-20px);opacity:0}to{transform:translate(0);opacity:1}}.animate-fade-in{animation:fadeIn var(--transition-normal) forwards}.animate-slide-in{animation:slideIn var(--transition-normal) forwards}@media print{router-outlet,router-outlet+*,app-toast-container{display:none!important;visibility:hidden!important;height:0!important;overflow:hidden!important}app-file-viewer-modal{display:block!important;visibility:visible!important}.modal-header,.modal-actions,.close-btn{display:none!important}html,body{background:#fff!important;margin:0!important;padding:0!important;height:auto!important;overflow:visible!important}app-root{display:block!important;background:#fff!important}.modal-overlay{position:static!important;display:block!important;background:#fff!important;padding:0!important;margin:0!important;inset:unset!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.modal-container{position:static!important;display:block!important;width:100%!important;max-width:none!important;height:auto!important;border:none!important;box-shadow:none!important;border-radius:0!important;background:#fff!important;margin:0!important;padding:0!important;animation:none!important}.modal-content{display:block!important;position:static!important;height:auto!important;overflow:visible!important;background:#fff!important;padding:20px!important;margin:0!important}.content-viewer{display:block!important;background:#fff!important;color:#000!important}.content-viewer *,.content-viewer h1,.content-viewer h2,.content-viewer h3,.content-viewer h4,.content-viewer h5,.content-viewer h6,.content-viewer p,.content-viewer li,.content-viewer span,.content-viewer div{color:#000!important}.content-viewer code,.content-viewer pre{background:#f5f5f5!important;color:#333!important;border:1px solid #ddd!important;white-space:pre-wrap!important;page-break-inside:avoid}.json-tree,.json-tree *{color:#000!important}}@media(max-width:768px){:root{--sidebar-width: 0px;--header-height: 56px;--spacing-xl: 1rem;--spacing-lg: 1rem;--spacing-2xl: 1.5rem;--font-size-xl: 1.1rem;--font-size-2xl: 1.25rem;--font-size-3xl: 1.5rem}body{font-size:14px}.card{padding:var(--spacing-md);border-radius:var(--radius-md)}table th,table td{padding:var(--spacing-sm) var(--spacing-sm);font-size:var(--font-size-xs)}.btn{padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-xs)}.form-control{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm)}}
