@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";
:root{--color-bg-app:#1a1a2e;--color-bg-surface:#202040;--color-bg-surface-hover:#2a2a50;--color-bg-surface-active:#303060;--color-bg-surface-secondary:#16162e;--color-bg-input:#1e1e3a;--color-bg-critical:#e43e3e1f;--color-bg-success:#10b9811f;--color-bg-warning:#fbbf241f;--color-bg-info:#3b82f61f;--color-text:#e1e1e6;--color-text-secondary:#8c8ca1;--color-text-disabled:#555570;--color-text-critical:#e43e3e;--color-text-success:#10b981;--color-text-warning:#fbbf24;--color-text-info:#60a5fa;--color-border:#ffffff14;--color-border-hover:#ffffff26;--color-border-focus:#6366f1;--color-border-critical:#e43e3e;--color-primary:#6366f1;--color-primary-hover:#5558e6;--color-primary-text:#fff;--color-success:#10b981;--color-success-hover:#0ea572;--color-critical:#e43e3e;--color-critical-hover:#cc3535;--color-warning:#fbbf24;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs:.75rem;--font-size-sm:.8125rem;--font-size-md:.875rem;--font-size-lg:1rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-heading:1.75rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-base:1.5;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 2px 8px #0000004d;--shadow-lg:0 4px 16px #0006;--shadow-card:0 1px 3px #0003, 0 0 0 1px var(--color-border);--sidebar-width:240px;--sidebar-collapsed-width:64px;--header-height:56px;--transition-fast:.12s ease;--transition-base:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-md);line-height:var(--line-height-base);color:var(--color-text);background-color:var(--color-bg-app);min-height:100vh}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app-layout{min-height:100vh;display:flex}.app-sidebar{width:var(--sidebar-width);background:var(--color-bg-surface-secondary);border-right:1px solid var(--color-border);z-index:100;transition:width var(--transition-base);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.app-sidebar__logo{height:var(--header-height);padding:0 var(--space-5);border-bottom:1px solid var(--color-border);align-items:center;gap:var(--space-3);display:flex}.app-sidebar__logo-mark{border-radius:var(--radius-sm);width:28px;height:28px;font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);color:#fff;background:linear-gradient(135deg,#6366f1,#818cf8);flex-shrink:0;justify-content:center;align-items:center;display:flex}.app-sidebar__logo-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);letter-spacing:-.02em}.app-sidebar__nav{padding:var(--space-3) var(--space-2);flex:1;overflow-y:auto}.app-sidebar__section-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-4) var(--space-3) var(--space-2)}.nav-item{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);text-align:left;background:0 0;border:none;width:100%;text-decoration:none;display:flex}.nav-item:hover{background:var(--color-bg-surface-hover);color:var(--color-text);text-decoration:none}.nav-item.active{background:var(--color-bg-surface-active);color:var(--color-text)}.nav-item__icon{width:20px;height:20px;font-size:var(--font-size-lg);flex-shrink:0;justify-content:center;align-items:center;display:flex}.app-main{margin-left:var(--sidebar-width);flex:1;min-height:100vh}.app-header{height:var(--header-height);background:var(--color-bg-surface-secondary);border-bottom:1px solid var(--color-border);padding:0 var(--space-6);z-index:50;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-header__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.app-header__actions{align-items:center;gap:var(--space-3);display:flex}.app-content{padding:var(--space-6);max-width:1200px}.page-header{margin-bottom:var(--space-6)}.page-header__title{font-size:var(--font-size-heading);font-weight:var(--font-weight-bold);letter-spacing:-.02em;margin-bottom:var(--space-1)}.page-header__subtitle{font-size:var(--font-size-md);color:var(--color-text-secondary)}.card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.card__header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.card__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.card__body{padding:var(--space-5)}.card__footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);justify-content:flex-end;gap:var(--space-3);display:flex}.stats-grid{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.stat-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);transition:border-color var(--transition-fast)}.stat-card:hover{border-color:var(--color-border-hover)}.stat-card__label{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.stat-card__value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);letter-spacing:-.02em}.stat-card__meta{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:var(--space-2)}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-family);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:1px solid #0000;line-height:1.4;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-primary-text);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-success{background:var(--color-success);color:#fff;border-color:var(--color-success)}.btn-success:hover:not(:disabled){background:var(--color-success-hover);border-color:var(--color-success-hover)}.btn-critical{background:var(--color-critical);color:#fff;border-color:var(--color-critical)}.btn-critical:hover:not(:disabled){background:var(--color-critical-hover);border-color:var(--color-critical-hover)}.btn-outline{color:var(--color-text);border-color:var(--color-border);background:0 0}.btn-outline:hover:not(:disabled){background:var(--color-bg-surface-hover);border-color:var(--color-border-hover)}.btn-ghost{color:var(--color-text-secondary);background:0 0;border:none}.btn-ghost:hover:not(:disabled){background:var(--color-bg-surface-hover);color:var(--color-text)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-md)}.badge{align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:1.4;display:inline-flex}.badge-pending{background:var(--color-bg-warning);color:var(--color-text-warning)}.badge-approved{background:var(--color-bg-success);color:var(--color-text-success)}.badge-rejected{background:var(--color-bg-critical);color:var(--color-text-critical)}.badge-pushed,.badge-info{background:var(--color-bg-info);color:var(--color-text-info)}.badge-risk-low{color:#10b981;background:#10b98126}.badge-risk-medium{color:#fbbf24;background:#fbbf2426}.badge-risk-high{color:#e43e3e;background:#e43e3e26}.table-container{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;padding:var(--space-3) var(--space-4);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-border);background:var(--color-bg-surface-secondary)}.data-table td{padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border);vertical-align:middle}.data-table tr:hover td{background:var(--color-bg-surface-hover)}.data-table tr:last-child td{border-bottom:none}.form-group{margin-bottom:var(--space-4)}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:var(--space-1);display:block}.form-input{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-bg-input);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--font-size-md);font-family:var(--font-family);transition:border-color var(--transition-fast);outline:none}.form-input:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 2px #6366f133}.form-input::placeholder{color:var(--color-text-disabled)}.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238c8ca1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-8)}.form-textarea{resize:vertical;min-height:80px}.diff-block{border-radius:var(--radius-md);border:1px solid var(--color-border);margin-bottom:var(--space-4);font-family:JetBrains Mono,Fira Code,monospace;font-size:var(--font-size-sm);overflow:hidden}.diff-header{padding:var(--space-2) var(--space-4);background:var(--color-bg-surface-secondary);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.diff-line-removed{color:#f87171;padding:var(--space-2) var(--space-4);background:#e43e3e1a;border-left:3px solid #e43e3e}.diff-line-added{color:#6ee7b7;padding:var(--space-2) var(--space-4);background:#10b9811a;border-left:3px solid #10b981}.filter-bar{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.filter-bar .form-input,.filter-bar .form-select{width:auto;min-width:160px}.empty-state{text-align:center;padding:var(--space-12) var(--space-6);color:var(--color-text-secondary)}.empty-state__icon{margin-bottom:var(--space-4);opacity:.5;font-size:3rem}.empty-state__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:var(--space-2)}.empty-state__description{font-size:var(--font-size-md);max-width:400px;margin:0 auto}.banner{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.banner-info{background:var(--color-bg-info);border:1px solid #3b82f633}.banner-success{background:var(--color-bg-success);border:1px solid #10b98133}.banner-warning{background:var(--color-bg-warning);border:1px solid #fbbf2433}.banner-critical{background:var(--color-bg-critical);border:1px solid #e43e3e33}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:80vh;overflow-y:auto}.modal__header{padding:var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.modal__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.modal__body{padding:var(--space-5)}.modal__footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);justify-content:flex-end;gap:var(--space-3);display:flex}.text-secondary{color:var(--color-text-secondary)}.text-success{color:var(--color-text-success)}.text-critical{color:var(--color-text-critical)}.text-warning{color:var(--color-text-warning)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg, var(--color-bg-surface) 25%, var(--color-bg-surface-hover) 50%, var(--color-bg-surface) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}
