:root{--color-bg-base: #f5f6fa;--color-bg-page: #f5f6fa;--color-bg-surface: #fafbfd;--color-bg-secondary: #ffffff;--color-bg-card: #ffffff;--color-bg-raised: #ffffff;--color-surface-raised: #f0f0fb;--color-border: #e2e4f0;--color-border-strong: #cdd2dc;--color-text-primary: #0b0f26;--color-text-main: #0b0f26;--color-text-muted: #2b3350;--color-text-secondary: #2b3350;--color-text-tertiary: #4a5578;--color-text-on-dark: #ffffff;--color-primary: #2a24a0;--color-primary-hover: #352dc2;--color-primary-light: #eeedf7;--color-secondary: #4338ca;--color-gold: #2a24a0;--color-gold-light: #eeedf7;--color-gold-hover: #352dc2;--color-accent: #2a24a0;--color-accent-light: #eeedf7;--color-sidebar-accent: #f5a623;--color-button-bg: #2a24a0;--color-button-bg-hover: #352dc2;--color-button-bg-focus: #3b32d6;--color-navy: #2a24a0;--color-navy-dark: #211c82;--color-dark-header: #160a6b;--color-white: #ffffff;--color-danger: #dc2626;--color-danger-light: #fef2f2;--color-success: #16a34a;--color-success-light: #ecfdf5;--color-warning: #d97706;--color-warning-light: #fefce8;--color-info: #2563eb;--color-info-light: #eff6ff;--color-sidebar-bg: #160a6b;--color-sidebar-bg-dark: #0d0640;--color-sidebar-text: #ffffff;--color-sidebar-text-muted: rgba(255, 255, 255, .85);--color-sidebar-hover: rgba(255, 255, 255, .08);--color-sidebar-active-bg: rgba(255, 255, 255, .12);--color-sidebar-border: rgba(255, 255, 255, .08);--font-display: "Playfair Display", serif;--font-heading: "Playfair Display", serif;--font-body: "DM Sans", sans-serif;--font-mono: "DM Mono", monospace;--text-xs: 11px;--text-sm: 13px;--text-base: 15px;--text-lg: 18px;--text-xl: 24px;--text-2xl: 32px;--text-display: 48px;--sidebar-width: 260px;--sidebar-collapsed-width: 68px;--header-height: 56px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 20px;--border-radius: 8px;--border-radius-sm: 4px;--border-radius-lg: 12px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .08);--ease-default: .2s cubic-bezier(.4, 0, .2, 1);--ease-spring: .3s cubic-bezier(.34, 1.56, .64, 1);--transition: all .2s cubic-bezier(.4, 0, .2, 1);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px}.form-select:focus{border-color:#2a24a059;box-shadow:0 0 0 3px #2a24a014;background:#ffffff0f}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);font-weight:700;color:var(--color-text-main);background-color:var(--color-bg-base);line-height:1.6;min-height:100vh}body,button,input,select,textarea,p,span,li,td,th,label,small,strong,a,.mat-mdc-button,.mat-mdc-list-item,.mat-mdc-menu-item{font-weight:700}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;line-height:1.3}h1{font-size:1.875rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.1rem}a{color:var(--color-navy);text-decoration:none}a:hover{color:var(--color-navy-dark)}button{font-family:var(--font-body);cursor:pointer;border:none;outline:none}button:active,.btn:active{transform:scale(.98)}input,select,textarea{font-family:var(--font-body);font-size:.9375rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:var(--border-radius-sm);font-size:.875rem;font-weight:700;transition:var(--transition);border:none;cursor:pointer;line-height:1.4}.btn:focus,.btn:focus-visible,.btn-icon:focus,.btn-icon:focus-visible,.filter-btn:focus,.filter-btn:focus-visible{outline:none;box-shadow:0 0 0 3px #2a24a059}.btn-primary,.btn-gold,a.btn-primary,a.btn-gold,a.btn-primary:visited,a.btn-gold:visited,a.btn-primary:active,a.btn-gold:active{background-color:var(--color-gold);color:var(--color-white)!important}.btn-primary:hover,.btn-gold:hover,a.btn-primary:hover,a.btn-gold:hover{background-color:var(--color-gold-hover);color:var(--color-white)!important;box-shadow:var(--shadow-md)}.btn-primary:focus,.btn-gold:focus,.btn-primary:focus-visible,.btn-gold:focus-visible,.btn-primary:active,.btn-gold:active,a.btn-primary:focus,a.btn-gold:focus,a.btn-primary:focus-visible,a.btn-gold:focus-visible{color:var(--color-white)!important;outline:none;box-shadow:0 0 0 3px #2a24a059}.btn-outline{background-color:transparent;color:var(--color-text-main);border:1.5px solid var(--color-gold)}.btn-outline:hover{background-color:var(--color-gold);color:var(--color-white)}.btn-danger{background-color:var(--color-danger);color:var(--color-white)}.btn-danger:hover{background-color:#b91c1c}.btn-danger:focus,.btn-danger:focus-visible,.btn-danger:active{color:var(--color-white)!important;outline:none;box-shadow:0 0 0 3px #dc262659}.btn-ghost{background:transparent;color:var(--color-text-primary);border:1.5px solid var(--color-border)}.btn-ghost:hover{border-color:var(--color-gold);color:var(--color-gold);background:#2a24a00f}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}.btn-lg{padding:.875rem 1.5rem;font-size:.9375rem;font-weight:600;min-height:48px}.btn-pill{border-radius:9999px}.btn-icon{width:34px;height:34px;padding:0;border-radius:var(--border-radius-sm);display:inline-flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1)}.btn-icon.btn-sm{width:32px;height:32px}.btn-icon-view{background:var(--color-bg-page);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-icon-view:hover{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary);transform:scale(1.04)}.btn-icon-edit{background:var(--color-bg-page);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-icon-edit:hover{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary);transform:scale(1.04)}.btn-icon-validate{background:var(--color-bg-page);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-icon-validate:hover{background:var(--color-success-light);border-color:var(--color-success);color:var(--color-success);transform:scale(1.04)}.btn-icon-danger{background:var(--color-bg-page);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-icon-danger:hover{background:var(--color-danger-light);border-color:var(--color-danger);color:var(--color-danger);transform:scale(1.04)}.btn-icon-pdf{background:var(--color-bg-page);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-icon-pdf:hover{background:var(--color-primary-light);border-color:var(--color-text-muted);color:var(--color-text-main);transform:scale(1.04)}.btn-icon-toggle{background:var(--color-bg-page);color:var(--color-text-muted);border:1px solid var(--color-border)}.btn-icon-toggle:hover{background:var(--color-primary-light);color:var(--color-text-main);border-color:var(--color-text-muted);transform:scale(1.04)}.btn-icon-link{background:var(--color-bg-page);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-icon-link:hover{background:var(--color-primary-light);border-color:var(--color-text-muted);transform:scale(1.04)}.btn:disabled{opacity:.5;cursor:not-allowed}.filter-btn{padding:.45rem 1rem;background:var(--color-white);border:1.5px solid var(--color-border);border-radius:8px;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:700;cursor:pointer;transition:var(--transition);white-space:nowrap}.filter-btn:hover{color:var(--color-text-primary);border-color:var(--color-gold)}.filter-btn.active{color:var(--color-white);background:linear-gradient(145deg,var(--color-primary-hover) 0%,var(--color-primary) 100%);border-color:var(--color-gold);font-weight:600}.card{background:var(--color-white);border:1px solid var(--color-bg-surface);border-radius:var(--border-radius);padding:1.5rem;transition:var(--transition)}.card-hover:hover{transform:translateY(-2px);border-color:var(--color-gold);box-shadow:var(--shadow-lg)}.form-group{margin-bottom:1.25rem}.form-label{display:block;font-size:.8125rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.04em}.form-input{width:100%;padding:.6875rem 1rem;border:1.5px solid rgba(0,0,0,.1);border-radius:10px;font-size:.9375rem;color:var(--color-text-main);background:var(--color-white);box-shadow:0 1px 4px #0000000a,0 0 0 0 transparent;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.form-input:hover{border-color:#2a24a059}.form-input:focus{outline:none;border-color:var(--color-gold);box-shadow:0 0 0 3px #2a24a026}.form-input.ng-invalid.ng-touched{border-color:var(--color-danger)}.form-input::placeholder{color:var(--color-text-muted);opacity:.55;font-weight:400}.form-error{font-size:.75rem;color:var(--color-danger);margin-top:.25rem}.form-select{width:100%;padding:.6875rem 2rem .6875rem 1rem;border:1.5px solid rgba(0,0,0,.1);border-radius:10px;font-size:.9375rem;color:var(--color-text-main);background:var(--color-white);box-shadow:0 1px 4px #0000000a;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%236b7280' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center}.form-select:hover{border-color:#2a24a059}.form-select:focus{outline:none;border-color:var(--color-gold);box-shadow:0 0 0 3px #2a24a026}.data-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:.9rem}.data-table thead th{background:var(--color-dark-header);color:var(--color-text-on-dark);font-weight:600;text-align:left;text-transform:uppercase;letter-spacing:.5px;padding:.8rem 1rem;position:sticky;top:0;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table thead th:first-child{border-radius:var(--border-radius-sm) 0 0 0}.data-table thead th:last-child{border-radius:0 var(--border-radius-sm) 0 0}.data-table tbody td{padding:.8rem 1rem;border-bottom:1px solid var(--color-bg-surface);vertical-align:middle;font-weight:700;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody tr:nth-child(2n){background-color:var(--color-bg-base)}.data-table tbody tr:hover{background-color:var(--color-surface-raised)}.badge{display:inline-flex;align-items:center;padding:.2rem .625rem;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.3px;text-transform:uppercase}.badge-brouillon{background-color:var(--color-warning-light);color:var(--color-warning)}.badge-validee{background-color:var(--color-success-light);color:var(--color-success)}.badge-annulee{background-color:var(--color-danger-light);color:var(--color-danger)}.badge-active{background-color:var(--color-success-light);color:var(--color-success)}.badge-inactive{background-color:var(--color-danger-light);color:var(--color-danger)}.badge-role{background-color:#0000001a;color:var(--color-navy)}@keyframes skeleton-pulse{0%,to{opacity:.4}50%{opacity:1}}.skeleton{background:linear-gradient(90deg,var(--color-bg-surface) 25%,#d4d4d4 50%,var(--color-bg-surface) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:var(--border-radius-sm)}.skeleton-text{height:1rem;margin-bottom:.5rem}.skeleton-title{height:1.5rem;width:60%;margin-bottom:.75rem}.skeleton-card{height:120px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-fade-in-up{animation:fadeInUp .4s ease-out both}.animate-fade-in{animation:fadeIn .3s ease-out both}.animate-scale-in{animation:scaleIn .25s ease-out both}.drawer-overlay{position:fixed;inset:0;background:#2a24a080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:1100;display:flex;justify-content:flex-end;align-items:stretch}.drawer-panel{width:820px;max-width:100%;height:100%;background:var(--color-bg-base);border-left:3px solid var(--color-primary);box-shadow:-20px 0 60px #10182824,-6px 0 20px #1018280f,0 0 0 1px #0000000a;transform:translate(100%);animation:slideIn .32s cubic-bezier(.22,.9,.22,1) forwards;overflow-y:auto;padding:0;display:flex;flex-direction:column}@keyframes slideIn{0%{transform:translate(100%);opacity:.6}to{transform:translate(0);opacity:1}}.drawer-header{display:flex;align-items:center;gap:1rem;padding:1.375rem 2rem;border-bottom:1.5px solid rgba(42,36,160,.12);background:linear-gradient(135deg,#fafbfd,#f0f2f8);flex-shrink:0}.drawer-header h3{font-family:var(--font-display);font-size:1.1875rem;font-weight:700;color:var(--color-text-main);margin:0;letter-spacing:-.01em}.drawer-body{padding:1.75rem 2rem 2.25rem;flex:1;overflow-y:auto}.drawer-panel::-webkit-scrollbar,.drawer-body::-webkit-scrollbar{width:6px}.drawer-panel::-webkit-scrollbar-track,.drawer-body::-webkit-scrollbar-track{background:transparent}.drawer-panel::-webkit-scrollbar-thumb,.drawer-body::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}.drawer-panel::-webkit-scrollbar-thumb:hover,.drawer-body::-webkit-scrollbar-thumb:hover{background:#0003}.drawer-body .form-group{margin-bottom:1.5rem}.drawer-body .form-row{gap:1.375rem}.drawer-body .modal-actions{margin-top:1.75rem;padding-top:1.375rem;border-top:1.5px solid rgba(42,36,160,.1)}.drawer-sm{width:600px}.stagger-children>*:nth-child(1){animation-delay:0ms}.stagger-children>*:nth-child(2){animation-delay:60ms}.stagger-children>*:nth-child(3){animation-delay:.12s}.stagger-children>*:nth-child(4){animation-delay:.18s}.stagger-children>*:nth-child(5){animation-delay:.24s}.stagger-children>*:nth-child(6){animation-delay:.3s}.stagger-children>*:nth-child(7){animation-delay:.36s}.stagger-children>*:nth-child(8){animation-delay:.42s}.page-wrapper{padding:1.5rem 2rem;max-width:1610px;position:relative;z-index:1}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.page-title{font-family:var(--font-display);font-size:1.625rem;color:var(--color-navy)}.page-subtitle{font-size:.875rem;color:var(--color-text-muted);margin-top:.25rem}.grid{display:grid;gap:1.25rem}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media(max-width:1024px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.page-wrapper{padding:1rem}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1.5rem;text-align:center;background:linear-gradient(180deg,#fff,#f7f8fe);border:1px solid #e4e6f1;border-radius:14px}.empty-state>svg{width:64px;height:64px;color:#160a6b;stroke:#160a6b;opacity:.55;margin-bottom:.75rem}.empty-state h3{font-weight:600;color:#160a6b;margin-bottom:.5rem}.empty-state p{color:var(--color-text-muted);font-size:.875rem;line-height:1.5;max-width:380px;margin-bottom:1.25rem}.fixed-tooltip{position:fixed;display:none;background:var(--color-text-main);color:var(--color-white);font-size:.75rem;padding:.25rem .5rem;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:9999}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-bg-surface);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}@media print{@page{size:landscape;margin:10mm}body{background:#fff!important;font-size:9pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}.no-print{display:none!important}.print-only{display:block!important}.card{border:none;box-shadow:none;padding:0}app-sidebar,.mobile-backdrop{display:none!important}.main-content{margin-left:0!important}}.print-only{display:none}.table-wrapper,.card.table-wrapper{background:#fff!important;position:relative}.data-table tbody tr:nth-child(2n) td{background:#faf8f5}.data-table tbody tr:hover td{background:color-mix(in srgb,#2a24a0 10%,#ffffff)!important}.data-table thead th{background:var(--color-dark-header)!important}body,p,span,div,a,li,dt,dd,ul,ol,table,thead,tbody,tr,td,th,caption,label,legend,small,strong,b,em,i,code,time,abbr,mark,blockquote,button,input,select,textarea,option,optgroup,h1,h2,h3,h4,h5,h6{font-weight:700!important}input::placeholder,textarea::placeholder{font-weight:600!important}
