:root,[data-theme=light]{--font-sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-heading: "Space Grotesk", sans-serif;--bg-main: #f1f5f9;--bg-card: #ffffff;--bg-card-hover: #f8fafc;--bg-glass: rgba(255, 255, 255, .9);--bg-input: #ffffff;--bg-table-header: #e2e8f0;--text-table-header: #0f172a;--border-color: #cbd5e1;--border-color-focus: #4f46e5;--text-primary: #0f172a;--text-secondary: #334155;--text-muted: #64748b;--accent-primary: #4f46e5;--accent-primary-hover: #4338ca;--accent-secondary: #0284c7;--accent-success: #10b981;--accent-warning: #d97706;--accent-danger: #ef4444;--accent-purple: #7c3aed;--badge-pending-text: #b45309;--badge-pending-bg: rgba(245, 158, 11, .15);--badge-pending-border: rgba(245, 158, 11, .4);--badge-assigned-text: #047857;--badge-assigned-bg: rgba(16, 185, 129, .15);--badge-assigned-border: rgba(16, 185, 129, .4);--badge-archived-text: #475569;--badge-archived-bg: rgba(148, 163, 184, .2);--badge-archived-border: rgba(148, 163, 184, .4);--badge-grouped-text: #4338ca;--badge-grouped-bg: rgba(99, 102, 241, .15);--badge-grouped-border: rgba(99, 102, 241, .4);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-full: 9999px;--shadow-sm: 0 2px 6px rgba(0, 0, 0, .05);--shadow-md: 0 10px 25px rgba(15, 23, 42, .08);--shadow-glow: 0 0 20px rgba(79, 70, 229, .2)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-main);color:var(--text-primary);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;transition:background-color .3s ease,color .3s ease}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.app-container{min-height:100vh;display:flex;flex-direction:column}.navbar{background:var(--bg-glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:100;padding:.9rem 2rem}.navbar-content{max-width:1600px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:.75rem;font-family:var(--font-heading);font-weight:700;font-size:1.25rem;color:var(--text-primary);text-decoration:none}.brand-icon{width:40px;height:40px;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:var(--shadow-glow)}.nav-links{display:flex;align-items:center;gap:.5rem}.nav-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.1rem;border-radius:var(--radius-md);font-weight:600;font-size:.9rem;color:var(--text-secondary);background:transparent;border:1px solid transparent;cursor:pointer;transition:all .2s ease;text-decoration:none}.nav-btn:hover{color:var(--text-primary);background:#ffffff0d}.nav-btn.active{color:#fff;background:var(--accent-primary);box-shadow:0 4px 14px #6366f159}.user-profile-badge{display:flex;align-items:center;gap:.75rem;background:#ffffff0d;padding:.4rem .8rem;border-radius:var(--radius-full);border:1px solid var(--border-color)}.user-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#f59e0b,#ef4444);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;color:#fff}.main-content{flex:1;max-width:1600px;width:100%;margin:0 auto;padding:2rem}.page-header{margin-bottom:2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.page-title-group h1{font-family:var(--font-heading);font-size:1.8rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.page-title-group p{color:var(--text-secondary);font-size:.95rem;margin-top:.25rem}.glass-card{background:var(--bg-card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.75rem;box-shadow:var(--shadow-md);margin-bottom:1.5rem;transition:border-color .2s ease,transform .2s ease}.glass-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.glass-card-title{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;display:flex;align-items:center;gap:.6rem;color:var(--text-primary)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group.full-width{grid-column:1 / -1}.form-label{font-size:.85rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:.4rem}.form-control,.form-select,.form-textarea{width:100%;padding:.75rem 1rem;background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:.95rem;transition:all .2s ease;outline:none}.form-control:focus,.form-select:focus,.form-textarea:focus{border-color:var(--border-color-focus);box-shadow:0 0 0 3px #6366f133}.form-textarea{min-height:110px;resize:vertical}.pdf-upload-zone{border:2px dashed rgba(99,102,241,.4);background:#6366f10a;border-radius:var(--radius-md);padding:1.75rem;text-align:center;cursor:pointer;transition:all .2s ease;position:relative}.pdf-upload-zone:hover{border-color:var(--accent-primary);background:#6366f114}.pdf-upload-zone.active-file{border-color:var(--accent-success);background:#10b9810f}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1.5rem;border-radius:var(--radius-md);font-weight:600;font-size:.95rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent;text-decoration:none}.btn-primary{background:linear-gradient(135deg,var(--accent-primary),var(--accent-primary-hover));color:#fff;box-shadow:0 4px 14px #6366f14d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #6366f173}.btn-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff;box-shadow:0 4px 14px #10b9814d}.btn-success:hover{transform:translateY(-1px);box-shadow:0 6px 20px #10b98173}.btn-outline{background:transparent;border-color:var(--border-color);color:var(--text-primary)}.btn-outline:hover{background:#ffffff0d;border-color:#fff3}.btn-sm{padding:.4rem .8rem;font-size:.85rem}.btn-danger{background:#ef444426;color:var(--accent-danger);border:1px solid rgba(239,68,68,.3)}.btn-danger:hover{background:var(--accent-danger);color:#fff}.btn-warning{background:#f59e0b26;color:var(--accent-warning);border:1px solid rgba(245,158,11,.4)}.btn-warning:hover{background:var(--accent-warning);color:#fff}.tabs-header{display:flex;gap:.5rem;background:var(--bg-glass);padding:.4rem;border-radius:var(--radius-md);border:1px solid var(--border-color);margin-bottom:1.5rem;overflow-x:auto}.tab-btn{padding:.65rem 1.25rem;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-secondary);font-weight:600;font-size:.9rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.5rem;white-space:nowrap}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{background:var(--bg-card);color:var(--text-primary);box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .75rem;border-radius:var(--radius-full);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.badge-pending{background:var(--badge-pending-bg);color:var(--badge-pending-text);border:1px solid var(--badge-pending-border)}.badge-assigned{background:var(--badge-assigned-bg);color:var(--badge-assigned-text);border:1px solid var(--badge-assigned-border)}.badge-archived{background:var(--badge-archived-bg);color:var(--badge-archived-text);border:1px solid var(--badge-archived-border)}.badge-grouped{background:var(--badge-grouped-bg);color:var(--badge-grouped-text);border:1px solid var(--badge-grouped-border)}.badge-epac{background:#10b98126;color:#10b981;border:1px solid rgba(16,185,129,.4)}.badge-ds{background:#f59e0b26;color:#f59e0b;border:1px solid rgba(245,158,11,.4)}.badge-rattrapage{background:#6366f126;color:#6366f1;border:1px solid rgba(99,102,241,.4)}.table-wrapper{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border-color)}.custom-table{width:100%;border-collapse:collapse;text-align:left;font-size:.9rem}.custom-table th{background:var(--bg-table-header);padding:1rem 1.25rem;font-weight:700;font-size:.8rem;text-transform:uppercase;color:var(--text-table-header);letter-spacing:.05em;border-bottom:1px solid var(--border-color)}.custom-table td{padding:1rem 1.25rem;border-bottom:1px solid var(--border-color);color:var(--text-primary);vertical-align:middle}.custom-table tr:hover td{background:#ffffff05}.epac-banner-card{background:#10b98114;border-left:4px solid #10b981;padding:1rem 1.25rem;border-radius:8px;margin-bottom:1.5rem}.epac-banner-card h3{margin:0 0 .5rem;color:var(--text-main);font-size:1.05rem;display:flex;align-items:center;gap:8px}.epac-banner-card p{margin:0 0 .75rem;font-size:.9rem;color:var(--text-secondary);line-height:1.5}.epac-banner-card ul{margin:0;padding-left:1.25rem;font-size:.88rem;color:var(--text-main);line-height:1.6}.group-suggestion-box{background:linear-gradient(135deg,#6366f126,#06b6d41a);border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-md);padding:1.25rem;margin-bottom:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem}.modal-content{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);max-width:600px;width:100%;padding:2rem;box-shadow:var(--shadow-md);position:relative;max-height:90vh;overflow-y:auto}.email-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:1.25rem;margin-bottom:1rem}.email-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.email-body-box{background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:1rem;font-family:monospace;font-size:.85rem;white-space:pre-wrap;color:var(--text-primary)}.alert{padding:1rem 1.25rem;border-radius:var(--radius-md);margin-bottom:1.5rem;display:flex;align-items:center;gap:.75rem;font-size:.9rem;font-weight:500}.alert-success{background:#10b98126;border:1px solid rgba(16,185,129,.3);color:#34d399}.alert-danger{background:#ef444426;border:1px solid rgba(239,68,68,.3);color:#f87171}@media (max-width: 768px){.navbar-content{flex-direction:column;gap:1rem}.main-content{padding:1rem}.page-header{flex-direction:column;align-items:flex-start}}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:1rem}.calendar-header-day{text-align:center;font-weight:700;font-size:.85rem;padding:.6rem;color:var(--text-secondary);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.calendar-day-cell{min-height:115px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.5rem;display:flex;flex-direction:column;gap:4px;transition:border-color .2s ease,box-shadow .2s ease;cursor:pointer}.calendar-day-cell:hover{border-color:var(--accent-primary);box-shadow:0 4px 12px #00000014}.calendar-day-cell.other-month{opacity:.45;background:#00000005}.calendar-day-cell.today,.calendar-day-cell.is-today{background:linear-gradient(135deg,#4f46e51f,#6366f138);border:2px solid var(--accent-primary);box-shadow:0 0 14px #4f46e559;position:relative}.calendar-day-cell.today:hover,.calendar-day-cell.is-today:hover{background:linear-gradient(135deg,#4f46e52e,#6366f147);box-shadow:0 0 18px #4f46e573}.day-number,.calendar-day-number{font-weight:700;font-size:.85rem;margin-bottom:4px;display:flex;justify-content:space-between;align-items:center}.calendar-day-cell.today .day-number span:first-child,.calendar-day-cell.is-today .day-number span:first-child{color:var(--accent-primary);font-weight:800;font-size:.95rem}.today-badge{background:linear-gradient(135deg,var(--accent-primary),var(--accent-primary-hover));color:#fff;font-size:.65rem;font-weight:500;padding:2px 7px;border-radius:12px;text-transform:none;letter-spacing:.04em;box-shadow:0 2px 5px #4f46e559;display:none}.calendar-event-pill{font-size:.72rem;padding:3px 6px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-weight:600;display:flex;align-items:center;gap:4px}.calendar-event-pill.assigned{background:#10b98126;border:1px solid rgba(16,185,129,.4);color:#059669}.calendar-event-pill.pending{background:#f59e0b26;border:1px solid rgba(245,158,11,.4);color:#d97706}@media (max-width: 900px){.calendar-grid{grid-template-columns:repeat(1,1fr)}.calendar-day-cell{min-height:auto}}.week-grid-scroll{overflow-x:auto;padding-bottom:4px}.week-grid{display:grid;grid-template-columns:72px repeat(5,minmax(130px,1fr));gap:4px;min-width:780px}.week-day-header{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:.45rem;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-card);font-size:.82rem;font-weight:700}.week-day-header.is-today{border-color:var(--accent-primary);color:var(--accent-primary);box-shadow:0 0 10px #4f46e540}.week-day-date{font-size:.72rem;font-weight:500;color:var(--text-secondary)}.week-day-header.is-today .week-day-date{color:var(--accent-primary)}.week-time-label{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;padding-right:6px;border-top:1px dashed var(--border-color);font-size:.68rem;font-weight:600;color:var(--text-secondary)}.week-time-label span{font-size:.6rem;font-weight:500;color:var(--text-muted)}.week-cell{min-height:50px;display:flex;flex-direction:column;gap:2px;padding:2px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-card)}.week-cell.is-today{background:#6366f114;border-color:#6366f159}.week-cell.is-closed{background-color:#64748b1a;background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(100,116,139,.09) 6px 12px);border-style:dashed;border-color:#64748b59}.week-event{display:flex;flex-direction:column;gap:1px;padding:2px 4px;border-radius:4px;font-size:.66rem;font-weight:600;overflow:hidden}.week-event.week-rattrapage{background:#6366f126;border:1px solid rgba(99,102,241,.4);color:#6366f1}.week-event.week-epac{background:#10b98126;border:1px solid rgba(16,185,129,.4);color:#10b981}.week-event.week-ds{background:#f59e0b26;border:1px solid rgba(245,158,11,.4);color:#f59e0b}.week-event.is-pending{border-style:dashed;opacity:.9}.week-event.is-refused{background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#dc2626}.week-event-title{display:flex;align-items:center;gap:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-event-sub,.week-event-time{font-size:.6rem;font-weight:500;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats-toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1.25rem}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:1.5rem}.kpi-card{display:flex;flex-direction:column;gap:.25rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:1rem 1.25rem;box-shadow:var(--shadow-sm)}.kpi-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);font-weight:600}.kpi-value{font-family:var(--font-heading);font-size:1.9rem;font-weight:700;line-height:1.1;color:var(--text-primary)}.kpi-sub{font-size:.78rem;color:var(--text-secondary)}.stats-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;align-items:start}.stat-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.stat-legend-item{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--text-secondary)}.stat-legend-item i{width:12px;height:12px;border-radius:3px;display:inline-block}.bar-list{display:flex;flex-direction:column;gap:.55rem}.bar-row{display:grid;grid-template-columns:5.5rem 1fr 3rem;align-items:center;gap:.75rem}.bar-label{font-size:.82rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{position:relative;height:16px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-full);overflow:hidden}.bar-fill{display:block;height:100%;background:var(--accent-primary);border-radius:var(--radius-full);transition:width .4s ease;min-width:2px}.bar-fill>span{display:block;height:100%}.bar-value{font-size:.85rem;font-weight:700;text-align:right;color:var(--text-primary)}.stat-list{display:flex;flex-direction:column}.stat-list-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border-color);font-size:.88rem;color:var(--text-primary)}.stat-list-row:last-child{border-bottom:none}.stat-empty{color:var(--text-muted);font-size:.88rem;font-style:italic}@media (max-width: 768px){.bar-row{grid-template-columns:4rem 1fr 2.5rem;gap:.5rem}}
