:root{--color-primary: #2c7be5;--color-primary-light: #e8f1fd;--color-primary-dark: #1a68d1;--color-danger: #e63757;--color-danger-light: #fee2e2;--color-success: #00d27a;--color-success-light: #d1fae5;--color-warning: #f5803e;--color-warning-light: #fef3c7;--color-info: #27bcfd;--color-info-light: #dbeafe;--color-bg: #f9fafd;--color-bg-card: #ffffff;--color-bg-hover: #f0f4ff;--color-sidebar-bg: #ffffff;--color-text: #344050;--color-text-muted: #748194;--color-text-light: #a0aec0;--color-border: #e3e6ef;--color-border-focus: #2c7be5;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 999px;--shadow-sm: 0 1px 4px rgba(0, 0, 0, .06);--shadow-md: 0 4px 16px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .14);--font-size-xs: .7rem;--font-size-sm: .8rem;--font-size-base: .875rem;--font-size-md: .95rem;--font-size-lg: 1.1rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.3;--line-height-normal: 1.5;--line-height-loose: 1.75;--transition-fast: .1s ease;--transition-base: .15s ease;--transition-slow: .25s ease;--z-dropdown: 100;--z-modal: 200;--z-toast: 300;--z-tooltip: 400;--sidebar-width: 240px;--sidebar-width-collapsed: 60px;--navbar-height: 60px;--content-max-width: 1400px}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-base)}a:hover{color:var(--color-primary-dark)}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);color:var(--color-text)}h1{font-size:var(--font-size-2xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}h4{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold)}h5{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}p{margin:0 0 var(--spacing-md)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg);gap:var(--spacing-md)}.page-header h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.page-header .page-header-actions{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.page-header .header-actions{display:flex;gap:var(--spacing-sm)}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);padding:.5rem 1rem;border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);line-height:1;cursor:pointer;transition:background var(--transition-base),opacity var(--transition-base),border-color var(--transition-base);text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.btn.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn.btn-primary:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.btn.btn-secondary{background:#e9ecef;color:var(--color-text);border-color:var(--color-border)}.btn.btn-secondary:hover{background:#dee2e6}.btn.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn.btn-danger:hover{opacity:.88}.btn.btn-success{background:var(--color-success);color:#fff;border-color:var(--color-success)}.btn.btn-success:hover{opacity:.88}.btn.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn.btn-ghost:hover{background:var(--color-bg-hover);color:var(--color-text)}.btn.btn-outline{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}.btn.btn-outline:hover{background:var(--color-primary-light)}.btn.btn-sm{padding:.3rem .65rem;font-size:var(--font-size-sm)}.btn.btn-lg{padding:.7rem 1.4rem;font-size:var(--font-size-md)}.btn.btn-icon-only{padding:.4rem}.btn-icon{width:14px;height:14px;flex-shrink:0}.form-group{display:flex;flex-direction:column;gap:.35rem;margin-bottom:var(--spacing-md)}.form-group label{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text)}.form-group input,.form-group select,.form-group textarea{padding:.55rem .875rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-md);font-family:inherit;background:var(--color-bg);color:var(--color-text);transition:border-color var(--transition-base);width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 3px #2c7be51f}.form-group input:disabled,.form-group select:disabled,.form-group textarea:disabled{background:#f4f4f4;cursor:not-allowed;color:var(--color-text-muted)}.form-group input::placeholder,.form-group select::placeholder,.form-group textarea::placeholder{color:var(--color-text-light)}.form-group.has-error input,.form-group.has-error select,.form-group.has-error textarea{border-color:var(--color-danger)}.form-group.has-error:focus-within input,.form-group.has-error:focus-within select{box-shadow:0 0 0 3px #e637571f}.form-group .error-msg{font-size:var(--font-size-xs);color:var(--color-danger)}.form-group .hint-msg{font-size:var(--font-size-xs);color:var(--color-text-muted)}.form-group.form-check{flex-direction:row;align-items:center;gap:var(--spacing-sm)}.form-group.form-check input{width:auto}.form-actions{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-md)}.alert{padding:.75rem 1rem;border-radius:var(--radius-sm);font-size:var(--font-size-base);margin-bottom:var(--spacing-md);display:flex;align-items:flex-start;gap:var(--spacing-sm)}.alert.alert-danger{background:var(--color-danger-light);color:#991b1b;border:1px solid #fca5a5}.alert.alert-success{background:var(--color-success-light);color:#065f46;border:1px solid #6ee7b7}.alert.alert-info{background:var(--color-info-light);color:#1e40af;border:1px solid #93c5fd}.alert.alert-warning{background:var(--color-warning-light);color:#92400e;border:1px solid #fcd34d}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-base)}.table th{padding:.75rem 1rem;text-align:left;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);white-space:nowrap}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.sortable:hover{color:var(--color-primary)}.table td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border);color:var(--color-text);font-size:var(--font-size-base);vertical-align:middle}.table tbody tr{transition:background var(--transition-fast)}.table tbody tr:hover{background:var(--color-bg-hover)}.table tbody tr:last-child td{border-bottom:none}.table .sort-icon{margin-left:.3rem;font-size:var(--font-size-xs);opacity:.6}.table .text-center{text-align:center}.table .empty{color:var(--color-text-muted);padding:2rem;font-size:var(--font-size-base)}.badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);line-height:1;white-space:nowrap}.badge.badge-primary{background:var(--color-primary-light);color:var(--color-primary)}.badge.badge-success{background:var(--color-success-light);color:#065f46}.badge.badge-danger{background:var(--color-danger-light);color:#991b1b}.badge.badge-warning{background:var(--color-warning-light);color:#92400e}.badge.badge-muted{background:var(--color-border);color:var(--color-text-muted)}.filter-row{display:flex;align-items:flex-end;gap:var(--spacing-md);flex-wrap:wrap}.filter-btns{display:flex;gap:var(--spacing-xs)}.filter-btns .btn{border-color:var(--color-border)}.search-input{padding:.55rem .875rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-md);background:var(--color-bg);color:var(--color-text);transition:border-color var(--transition-base);width:100%}.search-input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 3px #2c7be51f}.search-input::placeholder{color:var(--color-text-light)}.action-btns,.row-actions{display:flex;align-items:center;gap:var(--spacing-xs);flex-wrap:nowrap}.detail-card .detail-row{display:flex;align-items:center;gap:var(--spacing-md);padding:.75rem 0;border-bottom:1px solid var(--color-border)}.detail-card .detail-row:last-child{border-bottom:none}.detail-card .detail-row .label{width:180px;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-muted);flex-shrink:0}.detail-card .detail-row .value{font-size:var(--font-size-md);color:var(--color-text)}.detail-card .detail-row .roles{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.text-center{text-align:center}.text-right{text-align:right}.text-muted{color:var(--color-text-muted)}.text-primary{color:var(--color-primary)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.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-bold{font-weight:var(--font-weight-bold)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.d-flex{display:flex}.align-center{align-items:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.w-100{width:100%}.divider{border:none;border-top:1px solid var(--color-border);margin:var(--spacing-md) 0}
