:root{font-family:Inter,Segoe UI,sans-serif;background:#f4f6f9;color:#172033}*{box-sizing:border-box}body{margin:0}header{background:#fff;border-bottom:1px solid #dde3eb;padding:16px max(20px,calc((100vw - 1180px)/2));display:flex;justify-content:space-between;gap:20px}nav{display:flex;gap:16px;flex-wrap:wrap}nav a{text-decoration:none;font-weight:650}main{max-width:1180px;margin:28px auto;padding:0 20px}.card{background:#fff;border:1px solid #dde3eb;border-radius:14px;padding:20px;margin-bottom:18px}.narrow{max-width:620px;margin:45px auto}.head,.navweek{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap}.navweek{margin:18px 0}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.metrics span{display:block;color:#667085}.metrics strong{font-size:1.8rem}label{display:block;font-weight:650;margin:12px 0}input,select,textarea{width:100%;padding:10px;border:1px solid #bbc5d2;border-radius:8px;margin-top:6px;font:inherit}textarea{min-height:90px}button,.button{display:inline-block;background:#155eef;color:white;border:0;border-radius:8px;padding:10px 14px;font-weight:700;text-decoration:none;cursor:pointer}.secondary{background:#e9eef6!important;color:#253247!important}.small{padding:7px 10px}.dangerbtn{background:#b42318}.alert{padding:12px;border-radius:8px;margin-bottom:16px}.success{background:#dcfae6;color:#067647}.danger{background:#fee4e2;color:#b42318}.muted{color:#667085}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.columns{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #e5e7eb}.badge{display:inline-block;background:#eef2f6;border-radius:999px;padding:4px 8px;font-size:.85rem}.info{background:#eef4ff;padding:12px;border-radius:8px}.check{display:flex;gap:10px;align-items:center}.check input,.checkbox{width:auto}.inline{display:inline}.week{overflow:auto}.status{display:flex;justify-content:space-between;align-items:center}.status form{margin:0}@media(max-width:800px){header,.status{flex-direction:column;align-items:flex-start}.metrics,.grid3,.columns{grid-template-columns:1fr}table{min-width:700px}.card{overflow:auto}}

.status{display:inline-block;padding:.25rem .55rem;border-radius:999px;font-size:.85rem;font-weight:700;background:#e9ecef}.status.pending{background:#fff3cd}.status.approved{background:#d1e7dd}.status.rejected{background:#f8d7da}.status.cancelled{background:#e2e3e5}.grid-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.grid-form .full{grid-column:1/-1}.table-wrap{overflow-x:auto}.filters{display:flex;gap:.5rem;flex-wrap:wrap}textarea{width:100%;box-sizing:border-box}button.danger{background:#b42318}@media(max-width:700px){.grid-form{grid-template-columns:1fr}}

/* Navigation v12 */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-header{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.96);border-bottom:1px solid #dde3eb;padding:0;box-shadow:0 4px 14px rgba(23,32,51,.04);backdrop-filter:blur(10px)}
.header-inner{width:100%;max-width:1180px;min-height:70px;margin:0 auto;padding:0 20px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:flex;align-items:center;gap:11px;color:#172033;text-decoration:none;min-width:max-content}
.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#155eef;color:#fff;font-size:.86rem;font-weight:800;letter-spacing:.04em}
.brand-text{display:flex;flex-direction:column;line-height:1.15}
.brand-text strong{font-size:1rem}
.brand-text small{max-width:180px;margin-top:4px;color:#667085;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.main-nav{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-left:auto}
.nav-group{position:relative}
.nav-group-toggle{display:flex;align-items:center;gap:8px;background:transparent;color:#344054;border:0;border-radius:9px;padding:10px 12px;font-size:.93rem;font-weight:700;cursor:pointer}
.nav-group-toggle::after{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .18s ease}
.nav-group.open>.nav-group-toggle,.nav-group-toggle:hover{background:#f2f4f7;color:#155eef}
.nav-group.open>.nav-group-toggle::after{transform:rotate(225deg) translate(-2px,-2px)}
.avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#eef4ff;color:#155eef;font-size:.82rem;font-weight:800}
.nav-dropdown{position:absolute;top:calc(100% + 8px);left:0;display:none;min-width:225px;padding:7px;background:#fff;border:1px solid #e2e7ee;border-radius:12px;box-shadow:0 14px 35px rgba(23,32,51,.14)}
.nav-group.open>.nav-dropdown{display:block}
.nav-dropdown-right{right:0;left:auto}
.nav-dropdown a{display:block;padding:10px 11px;border-radius:8px;color:#344054;text-decoration:none;font-size:.91rem;font-weight:600;white-space:nowrap}
.nav-dropdown a:hover{background:#f2f4f7;color:#155eef}
.nav-dropdown a.active{background:#eef4ff;color:#155eef}
.nav-dropdown .logout-link{color:#b42318}
.nav-dropdown .logout-link:hover{background:#fff1f0;color:#b42318}
.nav-separator{height:1px;margin:6px 4px;background:#e7ebf0}
.menu-toggle{display:none;width:44px;height:42px;padding:9px;background:#f2f4f7;border:0;border-radius:9px}
.menu-toggle span:not(.sr-only){display:block;width:23px;height:2px;margin:4px auto;background:#344054;border-radius:2px;transition:.2s}

@media(max-width:860px){
  body.menu-open{overflow:hidden}
  .header-inner{min-height:64px;padding:0 16px}
  .brand-text small{max-width:145px}
  .menu-toggle{display:block;margin-left:auto}
  .main-nav{position:fixed;top:64px;right:0;bottom:0;left:0;display:none;align-items:stretch;justify-content:flex-start;flex-direction:column;gap:8px;margin:0;padding:14px 16px 30px;background:#f7f8fa;overflow-y:auto;border-top:1px solid #e7ebf0}
  .main-nav.open{display:flex}
  .nav-group{width:100%}
  .nav-group-toggle{width:100%;justify-content:space-between;padding:13px 14px;background:#fff;border:1px solid #e2e7ee}
  .account-toggle{justify-content:flex-start}
  .account-toggle::after{margin-left:auto}
  .nav-dropdown,.nav-dropdown-right{position:static;display:none;width:100%;min-width:0;margin-top:5px;padding:6px;border:1px solid #e2e7ee;border-radius:10px;box-shadow:none}
  .nav-group.open>.nav-dropdown{display:block}
  .nav-dropdown a{padding:12px 13px;white-space:normal}
}

@media(max-width:480px){
  .brand-mark{width:35px;height:35px}
  .brand-text strong{font-size:.92rem}
  .brand-text small{max-width:115px}
  main{margin-top:20px;padding:0 14px}
}


/* Dashboard v13 */
.dashboard-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px;padding:8px 0}.dashboard-hero h1{margin:.15rem 0;font-size:2rem}.eyebrow{margin:0;color:#155eef;font-size:.78rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.employee-switcher{min-width:240px}.employee-switcher label{margin:0}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.kpi-card{position:relative;min-height:150px;padding:20px;background:#fff;border:1px solid #dde3eb;border-radius:16px;box-shadow:0 5px 18px rgba(23,32,51,.04)}.kpi-card.kpi-primary{background:linear-gradient(145deg,#155eef,#004eea);color:#fff;border-color:transparent}.kpi-icon{display:grid;place-items:center;width:36px;height:36px;margin-bottom:18px;border-radius:10px;background:#eef4ff;font-size:1.05rem}.kpi-primary .kpi-icon{background:rgba(255,255,255,.18)}.kpi-label{display:block;margin-bottom:5px;color:#667085;font-size:.85rem;font-weight:700}.kpi-primary .kpi-label,.kpi-primary small{color:rgba(255,255,255,.82)}.kpi-card strong{display:block;font-size:1.65rem;line-height:1.2}.kpi-card small{display:block;margin-top:7px;color:#667085}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.8fr);gap:18px}.section-head,.section-title{display:flex;align-items:center;justify-content:space-between;gap:15px}.section-head h2,.section-title h2,.card h2{margin:0;font-size:1.1rem}.section-head p,.section-title p{margin:.25rem 0 0}.progress-card{min-height:260px}.progress-track{height:13px;margin:28px 0 10px;background:#e8edf5;border-radius:999px;overflow:hidden}.progress-track span{display:block;height:100%;background:linear-gradient(90deg,#155eef,#4f8cff);border-radius:inherit}.progress-legend{display:flex;justify-content:space-between;color:#667085;font-size:.86rem}.month-breakdown{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:27px}.month-breakdown span{padding:12px;background:#f7f9fc;border-radius:10px;color:#667085;font-size:.82rem}.month-breakdown strong{display:block;margin-top:3px;color:#172033;font-size:1rem}.action-list{display:grid;gap:8px;margin-top:16px}.action-list a{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #e3e8ef;border-radius:11px;color:#172033;text-decoration:none}.action-list a:hover{background:#f7f9fc;border-color:#cdd7e5}.action-list a>span{display:grid;place-items:center;flex:0 0 35px;height:35px;border-radius:9px;background:#eef4ff;color:#155eef;font-weight:800}.action-list strong,.action-list small{display:block}.action-list small{margin-top:2px;color:#667085}.section-title{margin:28px 0 12px}.manager-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.manager-card{display:block;padding:17px;background:#fff;border:1px solid #dde3eb;border-radius:14px;color:#172033;text-decoration:none}.manager-card>span{display:block;margin-bottom:13px}.manager-card strong{display:block;font-size:1.65rem}.manager-card small{color:#667085}.manager-card.attention{border-color:#f4d58d;background:#fffaf0}.lower-grid{grid-template-columns:1.5fr 1fr;margin-top:18px}.notification-list{list-style:none;padding:0;margin:14px 0 0}.notification-list li{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid #edf0f4}.notification-list li:last-child{border-bottom:0}.notification-list span{color:#155eef;font-weight:900}.empty-state{margin-top:14px;padding:18px;background:#f7f9fc;border-radius:10px;color:#667085}.next-leave-card>strong{display:block;margin-top:20px;font-size:1.15rem}.weekly-section{margin-top:32px;padding-top:5px;border-top:1px solid #dde3eb}.compact-metrics .card{padding:16px}.compact-metrics strong{font-size:1.45rem}
@media(max-width:1050px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.manager-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.dashboard-hero{align-items:stretch;flex-direction:column}.employee-switcher{min-width:0;width:100%}.dashboard-grid,.lower-grid{grid-template-columns:1fr}.manager-grid{grid-template-columns:repeat(2,1fr)}.month-breakdown{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.kpi-grid,.manager-grid{grid-template-columns:1fr}.kpi-card{min-height:0}.dashboard-hero h1{font-size:1.65rem}.progress-legend{gap:10px;font-size:.78rem}.compact-metrics{grid-template-columns:1fr}}


/* Sprint 1 v15: calendrier et notifications */
.notification-button{position:relative;display:grid;place-items:center;width:42px;height:42px;border-radius:10px;color:#344054;text-decoration:none}.notification-button:hover,.notification-button.active{background:#eef4ff}.notification-button strong{position:absolute;top:1px;right:0;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#d92d20;color:#fff;font-size:.68rem;line-height:18px;text-align:center}
.page-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.page-hero h1{margin:.15rem 0}.calendar-controls,.view-tabs{display:flex;gap:8px}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.calendar-toolbar form{margin:0}.calendar-toolbar select{min-width:230px;margin:0}.calendar-card{padding:0;overflow:hidden}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekdays{background:#f7f9fc;border-bottom:1px solid #e4e9f0}.calendar-weekdays strong{padding:12px;text-align:center;color:#667085;font-size:.82rem}.calendar-day{min-height:130px;padding:9px;border-right:1px solid #edf0f4;border-bottom:1px solid #edf0f4;background:#fff}.calendar-day:nth-child(7n){border-right:0}.calendar-day.outside{background:#fafbfc;color:#98a2b3}.calendar-day.today{box-shadow:inset 0 0 0 2px #155eef}.calendar-date{font-weight:800;margin-bottom:7px}.calendar-events{display:grid;gap:4px}.calendar-event{display:block;padding:5px 6px;border-radius:6px;background:#eef4ff;color:#175cd3;font-size:.72rem;line-height:1.2;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.calendar-event.type-sick,.calendar-event.calendar-event.type-holiday,.calendar-event.calendar-event.notification-center{padding:0;overflow:hidden}.notification-item{display:flex;align-items:flex-start;gap:14px;padding:17px 19px;border-bottom:1px solid #edf0f4}.notification-item:last-child{border-bottom:0}.notification-item.unread{background:#f8fbff}.notification-symbol{display:grid;place-items:center;flex:0 0 34px;height:34px;border-radius:50%;background:#eef4ff;color:#155eef;font-weight:800}.category-success .notification-symbol{background:#dcfae6;color:#067647}.category-danger .notification-symbol{background:#fee4e2;color:#b42318}.category-warning .notification-symbol{background:#fff3cd;color:#b54708}.notification-content{flex:1}.notification-heading{display:flex;justify-content:space-between;gap:14px}.notification-heading time{color:#98a2b3;font-size:.78rem}.notification-content p{margin:.35rem 0 0;color:#475467}.notification-item form{margin:0}.sprint-summary{display:grid;grid-template-columns:1fr 2fr auto;align-items:center;gap:22px;margin-bottom:18px}.sprint-summary p{margin:0}.sprint-summary h2{margin:.15rem 0 0}
@media(max-width:860px){.notification-button{margin-left:auto}.calendar-day{min-height:105px;padding:6px}.calendar-event{font-size:.65rem}.sprint-summary{grid-template-columns:1fr}.page-hero,.calendar-toolbar{align-items:stretch;flex-direction:column}.calendar-toolbar select{width:100%;min-width:0}.notification-item{flex-wrap:wrap}.notification-item form{margin-left:48px}}
@media(max-width:600px){.calendar-card{overflow-x:auto}.calendar-weekdays,.calendar-grid{min-width:760px}.notification-heading{flex-direction:column;gap:3px}}


.type-color-swatch{
  display:inline-block;
  width:1.1rem;
  height:1.1rem;
  border-radius:50%;
  border:1px solid rgba(0,0,0,.15);
  vertical-align:middle;
}
.calendar-day,
td.calendar-day{
  position:relative;
}
.calendar-day-action-link{
  position:absolute;
  inset:0;
  z-index:1;
}
.calendar-day .calendar-event,
.calendar-day .day-number,
.calendar-day button,
.calendar-day a:not(.calendar-day-action-link){
  position:relative;
  z-index:2;
}
.quick-actions-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:1rem;
}
.quick-action-card{
  display:flex;
  flex-direction:column;
  gap:.35rem;
  padding:1rem;
  border:1px solid rgba(0,0,0,.1);
  border-radius:12px;
  text-decoration:none;
  background:#fff;
}
.quick-action-card:hover{
  transform:translateY(-1px);
  box-shadow:0 8px 24px rgba(0,0,0,.08);
}

.type-color-preview{
  display:inline-block;
  width:2rem;
  height:2rem;
  margin-left:.5rem;
  border-radius:.5rem;
  border:1px solid rgba(0,0,0,.2);
  vertical-align:middle;
}

.quick-action-card.disabled{
  opacity:.65;
  cursor:not-allowed;
}
.calendar-date a{
  color:inherit;
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:1.8rem;
  min-height:1.8rem;
  border-radius:50%;
}
.calendar-date a:hover{
  background:rgba(79,70,229,.10);
}


.color-picker-row{
  display:flex;
  align-items:center;
  gap:.65rem;
  margin-top:.4rem;
}
.color-picker-row input[type="color"]{
  width:3.25rem;
  height:2.5rem;
  padding:.15rem;
  border:1px solid rgba(0,0,0,.18);
  border-radius:.55rem;
  background:#fff;
  cursor:pointer;
}
.type-color-preview{
  display:inline-block;
  width:2rem;
  height:2rem;
  flex:0 0 2rem;
  border-radius:.5rem;
  border:1px solid rgba(0,0,0,.22);
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.25);
}
.color-code{
  min-width:5.5rem;
  font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size:.9rem;
  font-weight:600;
}


.calendar-event{
  border-left:4px solid currentColor;
}



.calendar-event{
  display:block;
  padding:.48rem .65rem;
  border-radius:.55rem;
  border:1px solid transparent;
  font-weight:700;
  line-height:1.15;
  opacity:1 !important;
  box-shadow:
    inset 0 -1px 0 rgba(0,0,0,.10),
    0 1px 2px rgba(15,23,42,.08);
  text-decoration:none;
}
.calendar-event:hover{
  transform:translateY(-1px);
  filter:saturate(1.18) brightness(.98);
  box-shadow:
    inset 0 -1px 0 rgba(0,0,0,.12),
    0 4px 10px rgba(15,23,42,.14);
}
.calendar-event strong{
  color:inherit;
}


.report-filters{
  margin-bottom:1rem;
}
.report-filter-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(180px,1fr)) auto;
  gap:1rem;
  align-items:end;
}
.report-filter-action{
  padding-bottom:.05rem;
}
.report-actions{
  display:flex;
  flex-wrap:wrap;
  gap:.65rem;
  margin:0 0 1rem;
}
.report-kpis{
  margin-bottom:1rem;
}
.report-table{
  width:100%;
  border-collapse:collapse;
}
.report-table th,
.report-table td{
  padding:.8rem .75rem;
  border-bottom:1px solid rgba(15,23,42,.10);
  text-align:left;
  vertical-align:middle;
}
.report-table th{
  white-space:nowrap;
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:#526173;
}
.report-table td small{
  display:block;
  margin-top:.15rem;
  color:#718096;
}
.report-table tbody tr:hover{
  background:rgba(30,58,95,.035);
}
.report-detail-table td:last-child{
  min-width:220px;
}
.table-scroll{
  width:100%;
  overflow-x:auto;
}


.empty-state{
  padding:2rem !important;
  text-align:center !important;
  color:#718096;
}
@media (max-width:900px){
  .report-filter-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media (max-width:600px){
  .report-filter-grid{
    grid-template-columns:1fr;
  }
  .report-actions .button{
    flex:1 1 auto;
    text-align:center;
  }
}

.contextual-back{
  display:flex;
  justify-content:flex-start;
  margin-bottom:1rem;
}


.calendar-legend{
  display:flex;
  align-items:flex-start;
  gap:1rem;
  margin-bottom:1rem;
}
.calendar-legend > strong{
  padding-top:.15rem;
  white-space:nowrap;
}
.calendar-legend-items{
  display:flex;
  flex-wrap:wrap;
  gap:.55rem 1rem;
}
.calendar-legend-item{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  font-size:.9rem;
}
.calendar-legend-item i{
  width:.9rem;
  height:.9rem;
  border-radius:.25rem;
  border:1px solid rgba(15,23,42,.18);
  flex:0 0 .9rem;
}


/* Semantic display of time differences and balances */
.positive{
  color:#16803c !important;
  font-weight:700;
}
.negative{
  color:#c62828 !important;
  font-weight:700;
}
.neutral{
  color:#6b7280 !important;
  font-weight:700;
}



/* V17.6 - Uniform calendar event spacing */
.calendar-events,
.day-events,
.calendar-cell-events {
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-top:8px;
}

.calendar-event,
.calendar-entry,
.day-event,
.event-pill {
  display:flex;
  align-items:center;
  width:100%;
  min-height:30px;
  box-sizing:border-box;
  padding:6px 10px;
  margin:0;
  line-height:1.2;
  border-radius:10px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}

/* Also normalize links/buttons used directly as calendar events */
.calendar-day a[class*="event"],
.calendar-day .event,
.calendar-cell a[class*="event"],
.calendar-cell .event {
  min-height:30px;
  box-sizing:border-box;
  padding:6px 10px;
  line-height:1.2;
  border-radius:10px;
  margin:0 0 6px;
  display:flex;
  align-items:center;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}

/* Prevent compact yellow labels from collapsing vertically */
.calendar-event[style*="background"],
.calendar-entry[style*="background"],
.event-pill[style*="background"] {
  min-height:30px;
  padding-top:6px;
  padding-bottom:6px;
}


/* V17.7 - Direct validation of planned hours */
.time-row-actions {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
}

.time-row-actions form {
  display:inline-flex;
  margin:0;
}

.button.success,
button.success {
  background:#16803c;
  border-color:#16803c;
  color:#fff;
}

.button.success:hover,
button.success:hover {
  background:#116832;
  border-color:#116832;
}


/* V17.8 - Validation multiple du prévu */
.planned-bulk-toolbar{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:12px;
  margin-bottom:12px;
}
.planned-bulk-toolbar .button{margin-left:auto}
.selection-column{width:42px;text-align:center}
.planned-day-checkbox{width:18px;height:18px;cursor:pointer}
.selection-disabled{color:#6b7280;font-weight:700}
.planned-off{color:#6b7280;font-weight:600}
.button:disabled,button:disabled{cursor:not-allowed;opacity:.5}
@media(max-width:700px){
  .planned-bulk-toolbar{align-items:flex-start;flex-direction:column}
  .planned-bulk-toolbar .button{width:100%;margin-left:0}
}


/* V17.9 - Rest days included in Select all */
.selection-column {
  position:relative;
}

.selection-column .planned-day-checkbox {
  display:inline-block;
  width:18px;
  height:18px;
  margin:0;
  cursor:pointer;
  vertical-align:middle;
}

tr:has(.planned-off) .selection-column,
tr:has(.planned-off) .planned-day-checkbox {
  cursor:pointer;
}


/* V18.0 - Separate dashboard and hour-entry pages */
.dashboard-week-summary {
  display:grid;
  grid-template-columns:minmax(220px,1fr) auto auto;
  align-items:center;
  gap:20px;
  margin-top:18px;
}

.compact-week-metrics {
  display:flex;
  flex-wrap:wrap;
  gap:14px;
}

.compact-week-metrics span {
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:88px;
}

.hours-hero {
  margin-bottom:14px;
}

.hours-week-header {
  margin-bottom:14px;
}

.hours-week-header .navweek {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  margin-bottom:12px;
}

.hours-week-header .navweek > div {
  display:flex;
  flex-direction:column;
  align-items:center;
  min-width:210px;
}

.planned-bulk-toolbar.card {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:14px;
  margin-bottom:12px;
  padding:12px 14px;
}

.select-all-control {
  display:inline-flex;
  align-items:center;
  gap:8px;
  cursor:pointer;
  font-weight:700;
}

.select-all-control input,
.planned-day-checkbox {
  width:19px;
  height:19px;
  margin:0;
  cursor:pointer;
  accent-color:currentColor;
}

.planned-bulk-toolbar .button {
  margin-left:auto;
}

.hours-table .selection-column {
  width:66px;
  text-align:center;
}

.hours-table tr.selectable-day {
  cursor:default;
}

.hours-table tr.already-entered {
  opacity:.88;
}

.hours-status {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin-top:14px;
}

@media (max-width: 850px) {
  .dashboard-week-summary {
    grid-template-columns:1fr;
  }
}

@media (max-width: 680px) {
  .planned-bulk-toolbar.card {
    align-items:stretch;
    flex-direction:column;
  }

  .planned-bulk-toolbar .button {
    width:100%;
    margin-left:0;
  }

  .hours-status {
    align-items:stretch;
    flex-direction:column;
  }
}


/* V18.1 - Dashboard upcoming events and bottom week navigation */
.dashboard-info-grid {
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:14px;
  margin-bottom:16px;
}

.dashboard-info-card {
  display:flex;
  align-items:flex-start;
  gap:13px;
  min-height:112px;
}

.dashboard-info-card > div {
  display:flex;
  flex-direction:column;
  gap:5px;
}

.dashboard-info-card strong {
  font-size:1.08rem;
}

.dashboard-info-icon {
  font-size:1.5rem;
  line-height:1;
}

.bottom-week-navigation {
  display:grid;
  grid-template-columns:auto minmax(180px, 1fr) auto;
  align-items:center;
  gap:14px;
  margin:16px 0;
}

.bottom-week-navigation > div {
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
}

@media (max-width: 820px) {
  .dashboard-info-grid {
    grid-template-columns:1fr;
  }
}

@media (max-width: 650px) {
  .bottom-week-navigation {
    grid-template-columns:1fr;
  }

  .bottom-week-navigation .button {
    width:100%;
    text-align:center;
  }

  .bottom-week-navigation > div {
    order:-1;
  }
}

/* V18.3 - Leave validation */
.leave-status-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.leave-status-tabs a{display:inline-flex;align-items:center;gap:7px;padding:9px 12px;border:1px solid rgba(107,114,128,.25);border-radius:10px;text-decoration:none}
.leave-status-tabs a.active{font-weight:700;box-shadow:0 3px 12px rgba(0,0,0,.08)}
.leave-validation-list{display:grid;gap:14px}
.leave-validation-card{display:grid;gap:16px}
.leave-validation-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.leave-validation-details{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.leave-validation-details>div{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid rgba(107,114,128,.2);border-radius:10px}
.leave-review-form{display:grid;gap:12px}.leave-review-actions{display:flex;flex-wrap:wrap;gap:10px}
.button.danger{background:#b91c1c;color:#fff;border-color:#b91c1c}
.leave-status-pending{background:#fef3c7;color:#92400e}.leave-status-approved{background:#dcfce7;color:#166534}.leave-status-rejected{background:#fee2e2;color:#991b1b}
.dashboard-validation-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.dashboard-validation-summary a{display:flex;flex-direction:column;gap:3px;padding:12px;border:1px solid rgba(107,114,128,.22);border-radius:10px;text-decoration:none}
.dashboard-validation-summary strong{font-size:1.35rem}
@media(max-width:760px){.leave-validation-details,.dashboard-validation-summary{grid-template-columns:1fr}.leave-review-actions{flex-direction:column}.leave-review-actions .button{width:100%}}


/* V18.5 - Calendar and leave validation hours */
.hours-date-picker {
  display:flex;
  align-items:end;
  justify-content:flex-end;
  gap:12px;
  margin:0 0 16px;
  padding:14px;
  border:1px solid rgba(107,114,128,.2);
  border-radius:12px;
}

.hours-date-picker label {
  flex:1;
  margin:0;
  font-weight:600;
}

.hours-date-picker-row {
  display:flex;
  align-items:center;
  gap:8px;
}

.hours-date-picker input[type="date"] {
  min-width:170px;
}

.leave-hours-fieldset {
  margin:0;
  padding:14px;
  border:1px solid rgba(107,114,128,.25);
  border-radius:12px;
}

.leave-hours-fieldset legend {
  padding:0 7px;
  font-weight:700;
}

.leave-hours-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:10px;
  margin-top:10px;
}

.leave-hours-day {
  display:grid;
  gap:6px;
  margin:0;
  padding:10px;
  border:1px solid rgba(107,114,128,.18);
  border-radius:10px;
}

.leave-hours-day > span {
  display:flex;
  justify-content:space-between;
  gap:8px;
}

.leave-hours-day input[type="time"] {
  font-size:1rem;
  font-weight:700;
}

.leave-hours-day small {
  opacity:.75;
}

@media(max-width:760px) {
  .hours-date-picker {
    align-items:stretch;
    flex-direction:column;
  }

  .hours-date-picker-row {
    align-items:stretch;
    flex-direction:column;
  }

  .hours-date-picker input[type="date"],
  .hours-date-picker .button {
    width:100%;
  }
}

/* V19.0 */
.calendar-month-nav-bottom{display:flex;justify-content:space-between;gap:12px;margin-top:18px}
.notification-tabs{display:flex;gap:8px;margin-bottom:16px}
.notification-tabs a{display:inline-flex;align-items:center;gap:7px;padding:9px 12px;border:1px solid rgba(107,114,128,.24);border-radius:10px;text-decoration:none}
.notification-tabs a.active{font-weight:700;box-shadow:0 3px 12px rgba(0,0,0,.08)}
.notification-actions{display:flex;flex-wrap:wrap;gap:8px}
button.danger{background:#b91c1c;color:#fff;border-color:#b91c1c}
@media(max-width:760px){.calendar-month-nav-bottom,.notification-actions{flex-direction:column}.calendar-month-nav-bottom .button,.notification-actions button{width:100%}}


/* V19.1 */
.calendar-quick-select{margin:16px 0;padding:14px}
.calendar-quick-select-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}
.calendar-quick-select-form>div{min-width:150px}
.calendar-quick-select-form label{display:block;margin-bottom:6px;font-weight:600}
.calendar-quick-select-form select{width:100%}
.calendar-month-nav-bottom{display:flex!important;visibility:visible!important;justify-content:space-between;gap:12px;margin:20px 0 4px;padding-top:16px;border-top:1px solid rgba(107,114,128,.2)}
.calendar-day.public-holiday{background:rgba(251,191,36,.10)}
.calendar-public-holiday{margin:4px 0 6px;padding:4px 6px;border-radius:6px;background:rgba(251,191,36,.20);font-size:.72rem;font-weight:700;line-height:1.2}
.holiday-legend-dot{background:#f59e0b!important}
.leave-annual-summary{margin:16px 0}
.leave-annual-summary strong{display:block;font-size:2rem;margin:4px 0}
.leave-annual-summary span{opacity:.75}
@media(max-width:760px){
  .calendar-quick-select-form,.calendar-month-nav-bottom{align-items:stretch;flex-direction:column}
  .calendar-quick-select-form>div,.calendar-quick-select-form .button,.calendar-month-nav-bottom .button{width:100%}
}


/* V19.2 - Annual leave allowance */
.leave-allowance-fieldset {
  margin:16px 0;
  padding:14px;
  border:1px solid rgba(107,114,128,.25);
  border-radius:12px;
}

.leave-allowance-fieldset legend {
  padding:0 7px;
  font-weight:700;
}

.leave-allowance-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}

.leave-balance-summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin:16px 0;
}

.leave-balance-summary > div:first-child strong {
  display:block;
  margin:4px 0;
  font-size:2rem;
}

.leave-balance-breakdown {
  display:flex;
  gap:20px;
}

.leave-balance-breakdown span {
  display:flex;
  flex-direction:column;
  gap:4px;
}

@media(max-width:760px) {
  .leave-allowance-grid {
    grid-template-columns:1fr;
  }

  .leave-balance-summary,
  .leave-balance-breakdown {
    align-items:stretch;
    flex-direction:column;
  }
}


/* V19.3 - Leave statistics */
.stats-leave-section {
  margin:24px 0;
}

.leave-stats-metrics {
  margin-bottom:16px;
}

.leave-quota-progress {
  margin-bottom:16px;
}

.leave-quota-progress h3,
.stats-leave-section h3 {
  margin-top:0;
}

.muted-row {
  opacity:.55;
}

.leave-balance-stat {
  border-left:4px solid currentColor;
}

@media(max-width:760px) {
  .leave-stats-metrics {
    grid-template-columns:1fr;
  }
}


/* V20 - complete leave lifecycle */
.leave-history-list { display:grid; gap:16px; }
.leave-history-card { border:1px solid var(--border, #ddd); border-radius:14px; padding:18px; }
.leave-history-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.leave-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:14px; align-items:flex-start; }
.leave-action-panel { min-width:260px; }
.leave-action-panel summary { cursor:pointer; list-style:none; }
.leave-action-panel form { margin-top:12px; padding:14px; border:1px solid var(--border, #ddd); border-radius:12px; }
.compact-form { grid-template-columns:repeat(2,minmax(0,1fr)); }
.leave-timeline { margin-top:16px; }
.leave-timeline ol { border-left:2px solid var(--border, #ddd); margin-left:8px; padding-left:22px; }
.leave-timeline li { margin:12px 0; }
.leave-timeline small { display:block; opacity:.7; margin-top:3px; }
.leave-comparison { display:grid; grid-template-columns:1fr auto 1fr; gap:18px; align-items:center; padding:16px; border-radius:12px; background:rgba(127,127,127,.08); margin:16px 0; }
.leave-comparison-arrow { font-size:28px; }
.leave-day-off { opacity:.65; }
.info.compact, .warning { padding:10px 12px; border-radius:10px; margin:10px 0; }
.warning { background:rgba(245,158,11,.12); }

@media(max-width:760px) {
  .leave-history-head, .leave-comparison { grid-template-columns:1fr; display:grid; }
  .leave-comparison-arrow { transform:rotate(90deg); text-align:center; }
  .compact-form { grid-template-columns:1fr; }
}


/* V21 - Absence management */
.absence-dot {
  display:inline-block;
  width:10px;
  height:10px;
  border-radius:50%;
  margin-right:8px;
}
.mobile-ready-form input,
.mobile-ready-form select,
.mobile-ready-form textarea,
.mobile-ready-form button {
  min-height:44px;
}
.stats-highlight {
  margin-bottom:18px;
}
@media(max-width:760px) {
  .mobile-ready-form {
    grid-template-columns:1fr !important;
  }
  .mobile-ready-form .full {
    grid-column:1 !important;
  }
}


/* V21.1 - Administrator employee view */
.impersonation-banner {
  position:sticky;
  top:0;
  z-index:1000;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:10px 18px;
  background:#f59e0b;
  color:#111827;
  box-shadow:0 2px 10px rgba(0,0,0,.18);
}
.impersonation-banner div {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.impersonation-banner button {
  min-height:38px;
  background:#111827;
  color:white;
  border:0;
  white-space:nowrap;
}
.impersonation-select-card {
  max-width:760px;
}
@media(max-width:760px) {
  .impersonation-banner {
    align-items:stretch;
    flex-direction:column;
  }
  .impersonation-banner form,
  .impersonation-banner button {
    width:100%;
  }
}


/* V21.2 - Absences in calendar */
.calendar-absence-event {
  font-weight:700;
  box-shadow:inset 4px 0 rgba(255,255,255,.45);
}


/* V21.3 - HR administration */
.inline-form {
  display:inline-block;
  margin:0 0 0 6px;
}
.table-responsive {
  overflow-x:auto;
}
.delete-request-form button {
  min-height:36px;
}


/* V22.0 — PWA et navigation mobile */
.pwa-install-banner {
  position:fixed;
  right:18px;
  bottom:18px;
  z-index:1200;
  display:flex;
  align-items:center;
  gap:14px;
  max-width:420px;
  padding:14px 16px;
  border-radius:16px;
  background:#ffffff;
  box-shadow:0 18px 50px rgba(15,23,42,.22);
  border:1px solid rgba(31,79,138,.18);
}
.pwa-install-banner[hidden] { display:none; }
.pwa-install-banner div { display:grid; gap:2px; }
.pwa-install-banner small { color:#64748b; }
.pwa-install-close {
  min-width:34px;
  min-height:34px;
  padding:0;
  border-radius:50%;
  background:transparent;
  color:#64748b;
  font-size:22px;
}
.mobile-bottom-nav { display:none; }
body.is-offline::before {
  content:"Mode hors connexion";
  position:fixed;
  top:0;
  left:50%;
  z-index:2000;
  transform:translateX(-50%);
  padding:6px 14px;
  border-radius:0 0 10px 10px;
  background:#b45309;
  color:#fff;
  font-size:13px;
  font-weight:700;
}
.offline-body {
  min-height:100vh;
  display:grid;
  place-items:center;
  margin:0;
  background:#f4f7fb;
}
.offline-page {
  max-width:520px;
  padding:32px;
  text-align:center;
}
.offline-page img { border-radius:22px; }
.offline-page h1 { margin:22px 0 10px; }
.offline-page p { color:#64748b; }

@media (max-width: 860px) {
  body {
    padding-bottom:calc(76px + env(safe-area-inset-bottom));
  }
  main {
    padding-left:14px;
    padding-right:14px;
  }
  .mobile-bottom-nav {
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:1100;
    display:grid;
    grid-template-columns:repeat(5, minmax(0,1fr));
    padding:7px 8px calc(7px + env(safe-area-inset-bottom));
    border-top:1px solid rgba(148,163,184,.28);
    background:rgba(255,255,255,.96);
    backdrop-filter:blur(14px);
    box-shadow:0 -8px 26px rgba(15,23,42,.08);
  }
  .mobile-bottom-nav a {
    display:flex;
    min-width:0;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:2px;
    min-height:50px;
    border-radius:12px;
    color:#64748b;
    text-decoration:none;
  }
  .mobile-bottom-nav a span {
    font-size:22px;
    line-height:1;
  }
  .mobile-bottom-nav a small {
    max-width:100%;
    overflow:hidden;
    font-size:10px;
    font-weight:700;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .mobile-bottom-nav a.active {
    color:#1f4f8a;
    background:#eaf1fb;
  }
  .pwa-install-banner {
    left:12px;
    right:12px;
    bottom:calc(84px + env(safe-area-inset-bottom));
    max-width:none;
  }
  input, select, textarea, button {
    font-size:16px;
  }
  .card {
    border-radius:16px;
  }
  .calendar-card {
    overflow-x:auto;
  }
}


/* V22.2 */
.document-upload-field input[type="file"]{display:block;width:100%;margin-top:8px;padding:12px;border:1px dashed #94a3b8;border-radius:12px;background:#f8fafc}.absence-document-panel{margin-top:14px;padding:14px;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc}.document-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}.document-actions form{margin:0}.file-button{position:relative;display:inline-flex;cursor:pointer}.file-button input[type="file"]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
@media (max-width:860px){.main-nav.open{z-index:1250;max-height:calc(100dvh - 74px - env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;padding-bottom:calc(28px + env(safe-area-inset-bottom))}body.menu-open .mobile-bottom-nav{display:none}body.menu-open{padding-bottom:0;overflow:hidden}.document-actions{align-items:stretch}.document-actions>*,.document-actions .button,.document-actions button,.document-actions .file-button{width:100%;justify-content:center}}


/* V22.3 — bannière d'impersonation et légende repliable */
.impersonation-banner {
  position:relative;
  top:auto;
  z-index:20;
}
.app-header {
  z-index:1100;
}
.nav-dropdown {
  z-index:1200;
}
.calendar-legend-collapsible {
  display:block;
  margin-top:1rem;
  margin-bottom:1rem;
  padding:0;
  overflow:hidden;
}
.calendar-legend-collapsible > summary {
  position:relative;
  padding:15px 48px 15px 18px;
  cursor:pointer;
  color:#172033;
  font-weight:800;
  list-style:none;
  user-select:none;
}
.calendar-legend-collapsible > summary::-webkit-details-marker { display:none; }
.calendar-legend-collapsible > summary::after {
  content:'+';
  position:absolute;
  top:50%;
  right:18px;
  transform:translateY(-50%);
  color:#155eef;
  font-size:1.35rem;
}
.calendar-legend-collapsible[open] > summary::after { content:'−'; }
.calendar-legend-collapsible[open] > summary {
  border-bottom:1px solid #e2e8f0;
}
.calendar-legend-collapsible .calendar-legend-items {
  padding:15px 18px 18px;
}
@media(max-width:860px) {
  .impersonation-banner {
    position:relative;
    z-index:20;
  }
  .app-header,
  .main-nav.open {
    z-index:1300;
  }
}


/* V22.4 — correction définitive de l'empilement du menu mobile */
@media (max-width: 860px) {
  .app-header {
    position: sticky;
    top: 0;
    z-index: 50000 !important;
    isolation: isolate;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .header-inner,
  .menu-toggle {
    position: relative;
    z-index: 50002;
  }

  .main-nav,
  .main-nav.open {
    position: fixed !important;
    top: 64px !important;
    right: 0 !important;
    bottom: 0 !important;
    left: 0 !important;
    z-index: 50001 !important;
    width: 100vw;
    height: calc(100dvh - 64px);
    max-height: none !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    padding: 16px 16px calc(36px + env(safe-area-inset-bottom));
    background: #f7f8fa !important;
    opacity: 1;
    transform: none;
    box-shadow: 0 20px 50px rgba(15, 23, 42, .24);
  }

  body.menu-open::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 49999;
    background: rgba(15, 23, 42, .35);
  }

  body.menu-open main,
  body.menu-open .impersonation-banner,
  body.menu-open .pwa-install-banner,
  body.menu-open .mobile-bottom-nav {
    pointer-events: none;
  }

  body.menu-open .mobile-bottom-nav,
  body.menu-open .pwa-install-banner {
    display: none !important;
  }

  .main-nav .nav-group,
  .main-nav .notification-button {
    position: relative;
    z-index: 50003;
  }

  .main-nav .nav-dropdown {
    position: static;
    z-index: auto;
    box-shadow: none;
  }
}


/* V22.5 — assistance d’installation iOS */
.ios-install-banner {
  bottom:18px;
}
.ios-install-dialog {
  width:min(92vw, 560px);
  max-height:88vh;
  padding:0;
  border:0;
  border-radius:22px;
  box-shadow:0 30px 90px rgba(15,23,42,.32);
}
.ios-install-dialog::backdrop {
  background:rgba(15,23,42,.55);
  backdrop-filter:blur(4px);
}
.ios-dialog-close {
  position:absolute;
  top:12px;
  right:12px;
  z-index:2;
  width:38px;
  height:38px;
  min-width:38px;
  padding:0;
  border-radius:50%;
  background:#eef2f7;
  color:#334155;
  font-size:24px;
}
.ios-install-content {
  padding:32px 28px 28px;
}
.ios-install-icon {
  display:grid;
  place-items:center;
  width:72px;
  height:72px;
  margin:0 auto 18px;
  border-radius:18px;
  background:#1f4f8a;
  color:#fff;
  font-size:26px;
  font-weight:800;
}
.ios-install-content h2 {
  margin:0 0 22px;
  text-align:center;
}
.ios-install-content ol {
  display:grid;
  gap:14px;
  margin:0;
  padding-left:24px;
}
.ios-install-content li {
  padding-left:6px;
  line-height:1.5;
}
.ios-share-icon {
  display:inline-grid;
  place-items:center;
  min-width:26px;
  height:26px;
  padding:0 6px;
  border:1px solid #94a3b8;
  border-radius:7px;
  font-weight:800;
}
.ios-help-note {
  margin-top:22px;
  padding:16px;
  border-radius:14px;
  background:#eef6ff;
  border:1px solid #bfdbfe;
}
.ios-help-note p {
  margin:7px 0 0;
  color:#475569;
}
.ios-help-note code {
  white-space:nowrap;
}
@media (max-width: 860px) {
  .ios-install-banner {
    bottom:calc(84px + env(safe-area-inset-bottom));
  }
  .ios-install-dialog {
    width:calc(100vw - 24px);
    max-height:calc(100dvh - 24px);
  }
  .ios-install-content {
    padding:28px 20px 22px;
  }
}


/* V22.7 — calendrier mois, semaine et liste */
.calendar-mode-toolbar { margin-bottom:16px; }
.calendar-view-switcher {
  display:inline-flex;
  gap:6px;
  padding:5px;
  border:1px solid #dbe3ee;
  border-radius:14px;
  background:#f8fafc;
}
.calendar-view-button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:40px;
  padding:8px 18px;
  border-radius:10px;
  color:#475569;
  font-weight:700;
  text-decoration:none;
}
.calendar-view-button:hover { background:#eaf0f7; color:#1e3a5f; }
.calendar-view-button.active {
  background:#1f4f8a;
  color:#fff;
  box-shadow:0 4px 12px rgba(31,79,138,.22);
}
.calendar-week-navigation {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:16px;
}
.calendar-week-view {
  display:grid;
  grid-template-columns:repeat(7,minmax(170px,1fr));
  gap:10px;
  overflow-x:auto;
  padding-bottom:10px;
}
.calendar-week-day {
  min-height:250px;
  border:1px solid #dbe3ee;
  border-radius:14px;
  background:#fff;
  overflow:hidden;
}
.calendar-week-day > header {
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:12px;
  background:#f8fafc;
  border-bottom:1px solid #e2e8f0;
}
.calendar-week-day > header div {
  display:grid;
  gap:2px;
}
.calendar-week-day > header span { color:#64748b; }
.calendar-week-events,
.calendar-list-events {
  display:grid;
  gap:8px;
  padding:10px;
}
.calendar-list-view { display:grid; gap:10px; }
.calendar-list-day {
  display:grid;
  grid-template-columns:minmax(140px,180px) 1fr;
  gap:14px;
  border:1px solid #dbe3ee;
  border-radius:14px;
  background:#fff;
  overflow:hidden;
}
.calendar-list-date {
  display:grid;
  align-content:start;
  gap:3px;
  padding:14px;
  background:#f8fafc;
  color:#1f4f8a;
}
.calendar-list-date span { color:#64748b; font-size:.9rem; }
.calendar-empty-state {
  padding:18px;
  text-align:center;
  color:#64748b;
  border:1px dashed #cbd5e1;
  border-radius:12px;
}
@media (max-width:860px) {
  .calendar-view-switcher {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    width:100%;
  }
  .calendar-view-button { padding:8px; }
  .calendar-week-navigation {
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .calendar-week-navigation strong {
    grid-column:1/-1;
    grid-row:1;
    text-align:center;
  }
  .calendar-week-view {
    grid-template-columns:repeat(7,minmax(250px,82vw));
    scroll-snap-type:x proximity;
  }
  .calendar-week-day { scroll-snap-align:start; }
  .calendar-list-day { grid-template-columns:1fr; }
}

/* Gestion des utilisateurs : archivage et réactivation */
.user-actions{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.user-actions form{margin:0}
.user-status-active{background:#dcfae6;color:#067647}
.user-status-archived{background:#e5e7eb;color:#475467}
.current-account-note{font-size:.85rem;white-space:nowrap}
