.abs-dropzone {
  border: 2px dashed var(--ss-border, #d1cfc9); border-radius: 10px; padding: 24px 16px;
  text-align: center; cursor: pointer; transition: all .25s ease;
  background: var(--ss-bg-secondary, #f9f7f4);
}
.abs-dropzone:hover { border-color: var(--ss-accent, #2d4a43); background: rgba(188,210,203,.15); }
.abs-dropzone.abs-dropzone-drag { border-color: var(--ss-accent, #2d4a43); background: rgba(188,210,203,.25); transform: scale(1.01); }
.abs-dropzone-content { display: flex; flex-direction: column; align-items: center; gap: 6px; color: var(--ss-text-secondary, #6B6B69); }
.abs-dropzone-content i { font-size: 2rem; color: var(--ss-accent, #2d4a43); opacity: .6; }
.abs-dropzone-content span { font-size: .88rem; font-weight: 500; }
.abs-dropzone-content small { font-size: .75rem; opacity: .7; }
.abs-dropzone-file { display: flex; align-items: center; gap: 10px; padding: 4px 0; }
.abs-dropzone-file i { font-size: 1.4rem; color: var(--ss-accent, #2d4a43); }
.abs-dropzone-file .abs-file-info { flex: 1; text-align: left; }
.abs-dropzone-file .abs-file-info .abs-file-name { font-size: .85rem; font-weight: 600; color: var(--ss-text, #1A1A18); }
.abs-dropzone-file .abs-file-info .abs-file-size { font-size: .75rem; color: var(--ss-text-secondary, #6B6B69); }
.abs-dropzone-file .abs-file-remove { background: none; border: none; color: #7B3B2C; cursor: pointer; font-size: 1.1rem; padding: 4px; border-radius: 50%; transition: background .2s; }
.abs-dropzone-file .abs-file-remove:hover { background: #E2B8AE; }

.ss-lightbox { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 9999; display: flex; align-items: center; justify-content: center; animation: ztLbFadeIn .3s ease; }
.ss-lightbox-hidden { display: none !important; }
.ss-lightbox-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,.8); backdrop-filter: blur(10px); }
.ss-lightbox-content { position: relative; width: 100%; height: 100%; overflow: hidden; }
.ss-lightbox-stage { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; cursor: default; user-select: none; }
.ss-lightbox-stage img { max-width: 90vw; max-height: calc(100vh - 120px); width: auto; height: auto; object-fit: contain; border-radius: 8px; box-shadow: 0 20px 60px rgba(0,0,0,.5); will-change: transform; }
.ss-lightbox-stage iframe { width: 85vw; height: calc(100vh - 120px); border: none; border-radius: 8px; box-shadow: 0 20px 60px rgba(0,0,0,.5); background: #fff; }
.ss-lightbox-close { position: absolute; top: 20px; right: 20px; background: rgba(255,255,255,.1); border: none; color: #fff; width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all .3s; backdrop-filter: blur(10px); z-index: 10; font-size: 24px; }
.ss-lightbox-close:hover { background: rgba(255,255,255,.2); transform: scale(1.1); }
.ss-lightbox-title { position: absolute; top: 20px; left: 50%; transform: translateX(-50%); background: rgba(255,255,255,.15); color: #fff; padding: 10px 24px; border-radius: 24px; font-size: 15px; font-weight: 600; backdrop-filter: blur(10px); z-index: 11; }
.ss-lightbox-toolbar { position: absolute; bottom: 28px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 4px; background: rgba(30,30,30,.85); backdrop-filter: blur(12px); border-radius: 999px; padding: 6px 16px; z-index: 12; }
.ss-lb-btn { width: 40px; height: 40px; border: none; background: transparent; color: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 18px; transition: background .2s; }
.ss-lb-btn:hover { background: rgba(255,255,255,.15); }
.ss-lb-zoom { color: #fff; font-size: 14px; font-weight: 600; min-width: 48px; text-align: center; user-select: none; }
.ss-lightbox-stage.ss-zoomed { cursor: grab; }
.ss-lightbox-stage.ss-dragging { cursor: grabbing !important; }
@keyframes ztLbFadeIn { from { opacity: 0; } to { opacity: 1; } }
.cov-day-card{border-radius:10px;padding:0.75rem;border:1px solid var(--ss-border-light,#e5e5e5);cursor:pointer;transition:all .15s;text-align:center}
.cov-day-card:hover{border-color:var(--ss-teal,#191918);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.cov-day-card.active{border-color:var(--ss-teal);background:var(--ss-accent-bg)}
.cov-day-card.rest{opacity:.4;cursor:default}
.cov-day-name{font-size:0.75rem;text-transform:uppercase;color:var(--ss-text-muted);margin-bottom:2px}
.cov-day-date{font-size:0.9rem;font-weight:600;margin-bottom:4px}
.cov-day-shift{font-size:0.75rem;padding:2px 6px;border-radius:4px;display:inline-block}
.cov-day-count{font-size:0.72rem;color:var(--ss-text-muted);margin-top:3px}
.cov-match-item{display:flex;align-items:center;gap:0.75rem;padding:0.65rem 0;border-bottom:1px solid var(--ss-border-light,#eee)}
.cov-match-item:last-child{border-bottom:none}
.cov-avatar{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:0.8rem;flex-shrink:0}
.cov-match-badge{font-size:0.7rem;padding:2px 6px;border-radius:4px;font-weight:500}
.cov-match-exact{background:#e8f5e9;color:#2e7d32}
.cov-match-overlap{background:#fff3e0;color:#e65100}
/* Buddy list */
.cov-buddy-item{display:flex;align-items:center;gap:0.75rem;padding:8px 0;border-bottom:1px solid var(--ss-border-light,#eee)}
.cov-buddy-item:last-child{border-bottom:none}
.cov-search-item{display:flex;align-items:center;gap:0.75rem;padding:8px 10px;border-radius:8px;cursor:pointer;transition:background .15s}
.cov-search-item:hover{background:var(--ss-accent-bg)}
.cov-search-item.is-buddy{opacity:.5;cursor:default}
.ch-week-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 0.75rem;
}
.ch-day-card {
  background: var(--ss-bg-card);
  border: 1px solid var(--ss-border-light);
  border-radius: var(--ss-radius-md);
  padding: 1rem;
  box-shadow: var(--ss-shadow-sm);
  transition: box-shadow 0.15s, transform 0.15s;
  position: relative;
}
.ch-day-card:hover { box-shadow: var(--ss-shadow-md); transform: translateY(-1px); }
.ch-day-card.is-today { border-left: 3px solid var(--ss-teal); }
.ch-day-card--empty {
  background: transparent;
  border: 2px dashed var(--ss-border);
  box-shadow: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 140px;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}
.ch-day-card--empty:hover {
  border-color: var(--ss-teal);
  background: var(--ss-accent-bg);
}
.ch-day-card--empty:hover .ch-add-icon { color: var(--ss-teal); }
.ch-add-icon {
  font-size: 2rem;
  color: var(--ss-text-muted);
  transition: color 0.15s;
}
.ch-day-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.5rem;
}
.ch-day-name {
  font-weight: 700;
  font-size: 0.92rem;
}
.ch-day-date {
  font-size: 0.75rem;
  color: var(--ss-text-muted);
}
.ch-repas-block {
  padding: 0.4rem 0;
  border-top: 1px solid var(--ss-border-light);
}
.ch-repas-block:first-of-type { border-top: none; }
.ch-repas-tag {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 0.1rem 0.4rem;
  border-radius: 3px;
  margin-bottom: 0.25rem;
}
.ch-repas-tag.midi { background: #fef3c7; color: #92400e; }
.ch-repas-tag.soir { background: #1e293b; color: #e2e8f0; }
.ch-menu-plat { font-weight: 600; font-size: 0.88rem; margin-bottom: 0.15rem; }
.ch-menu-detail { font-size: 0.78rem; color: var(--ss-text-secondary); }
.ch-menu-actions {
  display: flex;
  gap: 0.25rem;
  margin-top: 0.4rem;
}
.ch-menu-actions .btn { font-size: 0.7rem; padding: 0.15rem 0.4rem; }
.ch-couv-badge {
  font-size: 0.68rem;
  padding: 0.1rem 0.45rem;
  border-radius: 10px;
  background: var(--ss-accent-bg);
  color: var(--ss-text-secondary);
  border: 1px solid var(--ss-border-light);
}
.cm-week-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 1rem;
}
/* Card — same as admin .card */
.cm-card {
  background: var(--ss-bg-card, #fff);
  border: 1px solid #E8E5E0;
  border-radius: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.02);
  overflow: hidden;
  transition: box-shadow 0.2s ease;
}
.cm-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.06); }
.cm-card.is-today { border-color: #bcd2cb; }
/* Card header — same as admin .card-header */
.cm-card-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.85rem 1.25rem;
  border-bottom: 1px solid #E8E5E0;
}
.cm-card-day { font-weight: 700; font-size: 0.92rem; color: #1A1A18; }
.cm-card-body { padding: 1rem 1.25rem; }

/* Meal blocks */
.cm-meal { margin-bottom: 0.75rem; }
.cm-meal:last-child { margin-bottom: 0; }
.cm-meal-label {
  font-size: 0.7rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.5px; margin-bottom: 0.35rem;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 8px; border-radius: 6px;
}
.cm-meal-label.midi { background: #bcd2cb; color: #2d4a43; }
.cm-meal-label.soir { background: #D0C4D8; color: #5B4B6B; }
.cm-meal-items { font-size: 0.875rem; color: #555; line-height: 1.6; margin-top: 0.3rem; }
.cm-meal-items strong { color: #1A1A18; font-weight: 600; }
.cm-meal-empty { font-size: 0.82rem; color: #aaa; font-style: italic; padding: 6px 0; }
.cm-meal-remark {
  font-size: 0.75rem; color: #888; font-style: italic; margin-top: 4px;
  padding: 4px 8px; background: #f9fafb; border-radius: 6px; border: 1px solid #E8E5E0;
}
.cm-meal-stats {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 0.65rem; font-weight: 600;
  background: #B8C9D4; color: #3B4F6B;
  padding: 2px 8px; border-radius: 10px; margin-left: 6px;
}
.cm-divider { border: none; border-top: 1px solid #E8E5E0; margin: 0.6rem 0; }

/* Actions — same radius as admin buttons */
.cm-card-actions { display: flex; gap: 0.3rem; margin-top: 0.5rem; }
.cm-card-actions .btn {
  font-size: 0.72rem; padding: 0.25rem 0.6rem; border-radius: 8px;
  transition: opacity 0.25s ease;
}
.cm-card-actions .btn:hover { opacity: 0.75; }

/* Empty card */
.cm-card--empty {
  border: 2px dashed #D4D0CA;
  background: transparent; box-shadow: none;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  min-height: 180px; cursor: pointer;
  transition: border-color 0.2s, background 0.2s;
  border-radius: 16px;
}
.cm-card--empty:hover { border-color: #191918; background: rgba(25,25,24,0.04); }
.cm-card--empty .cm-add-icon {
  font-size: 2.2rem; color: #D4D0CA; margin-bottom: 0.4rem; transition: color 0.2s;
}
.cm-card--empty:hover .cm-add-icon { color: #191918; }
.cm-card--empty .cm-card-day { color: #888; }
.cr-stats-row {
  display: flex; align-items: stretch; gap: .75rem; margin-bottom: 1rem; flex-wrap: wrap;
}
.cr-stat-card {
  display: flex; align-items: center; gap: .75rem; flex: 1; min-width: 150px;
  padding: 1rem 1.25rem;
  background: #fff; border: 1px solid #E8E5E0; border-radius: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04); transition: box-shadow 0.2s;
}
.cr-stat-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.06); }
.cr-stat-icon {
  width: 44px; height: 44px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem; flex-shrink: 0;
}
.cr-stat-value { font-size: 1.4rem; font-weight: 700; line-height: 1.2; color: #1A1A18; }
.cr-stat-label { font-size: .75rem; color: #6b7280; margin-top: 2px; }
.cr-stat-add {
  display: flex; align-items: center; justify-content: center; gap: .5rem;
  min-width: 180px; padding: 1rem 1.25rem;
  background: #191918; color: #fff; border-radius: 16px;
  font-weight: 600; font-size: .9rem; cursor: pointer;
  transition: opacity 0.25s ease;
}
.cr-stat-add:hover { opacity: 0.8; }
.cr-stat-add i { font-size: 1.2rem; }
/* Halo pulsé sur les jours sélectionnés (non encore validés) */
.desir-cal-day.selected {
  position: relative;
  --halo-color: 26, 26, 26;
  animation: desirDayPulse 1.8s ease-in-out infinite;
  z-index: 1;
}
@keyframes desirDayPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(var(--halo-color), .5); }
  50%      { box-shadow: 0 0 0 8px rgba(var(--halo-color), 0); }
}

.desir-cal-nav {
  background: transparent;
  border: 1px solid #d1cfc5;
  color: #1a1a1a;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .15s, border-color .15s;
  font-size: .8rem;
  padding: 0;
}
.desir-cal-nav:hover:not(:disabled) { background: rgba(26,26,26,0.08); border-color: #1a1a1a; }
.desir-cal-nav:disabled { opacity: .3; cursor: not-allowed; }
.desir-calendar { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; margin-bottom: 0.75rem; }
.desir-calendar.desir-cal-readonly .desir-cal-day:not(.empty) { cursor: default; }
.desir-calendar.desir-cal-readonly .desir-cal-day:not(.has-desir):hover { background: transparent; border-color: transparent; }
.desir-cal-header { text-align: center; font-size: 0.7rem; font-weight: 700; color: var(--text-muted, #888); padding: 4px 0; text-transform: uppercase; }
.desir-cal-day {
  text-align: center; padding: 8px 2px; border-radius: 8px; cursor: pointer;
  font-size: 0.85rem; font-weight: 500; border: 2px solid transparent;
  transition: all 0.15s; user-select: none; background: var(--card-bg, #fff);
}
.desir-cal-day:hover { background: rgba(26,26,26,0.08); border-color:#cfc5b6; cursor: pointer; }
.desir-cal-day.selected { background: rgba(26,26,26,0.08); border-color: #cfc5b6; color: #1a1a1a; font-weight: 700; position: relative; }
.desir-cal-day-chip {
  position: absolute;
  top: -6px;
  right: -6px;
  min-width: 20px;
  height: 16px;
  padding: 0 5px;
  border-radius: 10px;
  background: #1a1a1a;
  color: #fff;
  font-size: .6rem;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
  box-shadow: 0 1px 3px rgba(0,0,0,.25);
  pointer-events: none;
  text-transform: uppercase;
  letter-spacing: .3px;
}
.desir-cal-day.disabled { opacity: 0.3; pointer-events: none; }
.desir-cal-day.has-desir { background: rgba(26,26,26,0.1); border-color: #1a1a1a; color: #1a1a1a; font-weight: 700; position: relative; }
.desir-cal-day.has-desir::after { content: ''; position: absolute; bottom: 3px; left: 50%; transform: translateX(-50%); width: 6px; height: 6px; background: #1a1a1a; border-radius: 50%; }
.desir-cal-day.has-desir.selected { background: rgba(26,26,26,0.15); border-color: #1a1a1a; color: #1a1a1a; }
.desir-cal-day.weekend { color: var(--text-muted, #999); }
.desir-cal-day.empty { visibility: hidden; }
.desir-count-info { font-size: 0.8rem; }
.mode-toggle { display: flex; gap: 0; border-radius: 10px; overflow: hidden; border: 2px solid #d1cfc5; }
.mode-toggle-btn {
  flex: 1; text-align: center; padding: 8px 14px; cursor: pointer; font-size: 0.82rem;
  font-weight: 600; transition: all 0.25s; border: none; background: transparent; color: #6c757d;
}
.mode-toggle-btn:hover:not(.active) { background: #f5f3ee; color: #1a1a1a; }
.mode-toggle-btn.active { background: #1a1a1a; color: #fff; }
.mode-toggle-btn:first-child { border-right: 1px solid #d1cfc5; }
/* Ancien sélecteur (conservé pour compat) */
.horaire-option { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 6px; cursor: pointer; transition: background 0.1s; }
.horaire-option:hover { background: rgba(0,0,0,0.04); }
.horaire-option.selected { background: rgba(26,26,26,0.08); outline: 2px solid #1a1a1a; }

/* Nouveau sélecteur compact en grille */
.horaires-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.horaire-chip {
  position: relative;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 10px;
  border: 2px solid var(--border-color, #dee2e6);
  background: #fff;
  cursor: pointer;
  font-family: inherit;
  transition: transform .12s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease;
  text-align: left;
  min-height: 48px;
}
.horaire-chip:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0,0,0,.08);
  border-color: #e0d5c2;
  background: #faf7f0;
}
.horaire-chip.selected {
  border-color: #1a1a1a;
  background: #faf7f0;
  box-shadow: 0 0 0 2px rgba(26,26,26,.08);
}
.horaire-chip.selected::before {
  content: '\F633';
  font-family: 'bootstrap-icons';
  position: absolute;
  top: -8px;
  right: -8px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #1a1a1a;
  color: #fff;
  font-size: .7rem;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 6px rgba(0,0,0,.2);
  opacity: 1;
  z-index: 2;
}
.horaire-chip-code {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 6px;
  border-radius: 8px;
  color: #fff;
  font-weight: 700;
  font-size: .8rem;
  letter-spacing: .5px;
}
.horaire-chip-time {
  font-size: .65rem;
  line-height: 1.15;
  color: var(--text-muted, #888);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
/* Tooltip custom via data-tooltip */
.horaire-chip::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%) scale(.9);
  background: #1a1a1a;
  color: #fff;
  padding: 6px 10px;
  border-radius: 8px;
  font-size: .72rem;
  font-weight: 500;
  white-space: nowrap;
  letter-spacing: normal;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s ease, transform .15s ease;
  z-index: 100;
  box-shadow: 0 4px 14px rgba(0,0,0,.2);
}
.horaire-chip::before {
  content: '';
  position: absolute;
  bottom: calc(100% + 2px);
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: #1a1a1a;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s ease;
  z-index: 100;
}
.horaire-chip:hover::after,
.horaire-chip:hover::before {
  opacity: 1;
}
.horaire-chip:hover::after {
  transform: translateX(-50%) scale(1);
}
.horaire-badge { min-width: 36px; text-align: center; padding: 2px 6px; border-radius: 4px; color: #fff; font-weight: 700; font-size: 0.82rem; }
.horaire-label { font-size: 0.8rem; }
.horaire-time { font-size: 0.72rem; color: var(--text-muted, #888); }
.desir-table-row { cursor: pointer; transition: background 0.15s; }
.desir-table-row:hover,
.desir-table-row:hover td,
#desirsTableBody tr:hover,
#desirsTableBody tr:hover td {
  background: #faf7f0 !important;
}

/* Colonnes largeur fixe pour aligner les deux tableaux (désirs + permanents) */
.desir-col-when { width: 12%; }
.desir-col-type { width: 14%; }
.desir-col-horaire { width: 14%; }
.desir-col-detail { width: 30%; }
.desir-col-statut { width: 18%; }
.desir-col-actions { width: 110px; text-align: right; }

/* Boutons actions (Modifier / Supprimer) — style identique admin */
.btn-desir-edit {
  background: #f7f5f2;
  border: 1px solid #e8e4da;
  color: #8a8578;
  border-radius: 8px;
  padding: 4px 8px;
  transition: all .15s ease;
  font-size: .85rem;
  line-height: 1;
}
.btn-desir-edit:hover {
  background: #bcd2cb;
  color: #2d4a43;
  border-color: #bcd2cb;
}
.btn-desir-delete {
  background: #f7f5f2;
  border: 1px solid #e8e4da;
  color: #8a8578;
  border-radius: 8px;
  padding: 4px 8px;
  transition: all .15s ease;
  font-size: .85rem;
  line-height: 1;
}
.btn-desir-delete:hover {
  background: #E2B8AE;
  color: #7B3B2C;
  border-color: #E2B8AE;
}

/* Modal confirmation suppression */
.desir-confirm-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.45);
  backdrop-filter: blur(3px);
  z-index: 9999;
  display: none; /* caché par défaut — ouvert via JS style.display='flex' */
  align-items: center;
  justify-content: center;
  animation: desirConfirmFadeIn .2s ease-out;
}
@keyframes desirConfirmFadeIn { from { opacity: 0; } to { opacity: 1; } }
.desir-confirm-box {
  background: #fff;
  border-radius: 16px;
  padding: 28px 30px 22px;
  max-width: 440px;
  width: 92%;
  box-shadow: 0 20px 60px rgba(0,0,0,.25);
  animation: desirConfirmSlide .25s cubic-bezier(.22,1,.36,1);
}
@keyframes desirConfirmSlide {
  from { transform: translateY(10px) scale(.97); opacity: 0; }
  to { transform: none; opacity: 1; }
}
.desir-confirm-header {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 12px;
}
.desir-confirm-icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #f8dfda;
  color: #7B3B2C;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  flex-shrink: 0;
}
.desir-confirm-box h3 {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 700;
  color: #1a1a1a;
}
.desir-confirm-msg {
  font-size: .88rem;
  color: #6b7280;
  margin: 0 0 22px;
  line-height: 1.5;
}
.desir-confirm-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}
.btn-desir-cancel {
  background: none;
  border: 1px solid #e5e7eb;
  color: #6b7280;
  padding: 8px 18px;
  border-radius: 10px;
  cursor: pointer;
  font-size: .88rem;
  font-family: inherit;
  transition: background .15s ease;
}
.btn-desir-cancel:hover { background: #f9fafb; }
.btn-desir-confirm {
  background: #E2B8AE;
  border: 1px solid #E2B8AE;
  color: #7B3B2C;
  padding: 8px 18px;
  border-radius: 10px;
  cursor: pointer;
  font-size: .88rem;
  font-weight: 600;
  font-family: inherit;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: background .15s ease, transform .12s ease;
}
.btn-desir-confirm:hover { background: #d9a59a; transform: translateY(-1px); }
/* Permanent table rows hover */
#permanentsTableBody tr { transition: background 0.15s; cursor: pointer; }
#permanentsTableBody tr:hover,
#permanentsTableBody tr:hover td {
  background: #faf7f0 !important;
}

/* Stats cards en haut de page */
.desir-stats-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 1.25rem;
}
@media (max-width: 900px) {
  .desir-stats-row { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
  .desir-stats-row { grid-template-columns: 1fr; }
}
.desir-stat-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  background: #fff;
  border: 1px solid #e8e4da;
  border-radius: 14px;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.desir-stat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0,0,0,.06);
  border-color: #d1cfc5;
}
.desir-stat-icon {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
}
.desir-stat-body { min-width: 0; flex: 1; }
.desir-stat-label {
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .4px;
  color: #8a8578;
  margin-bottom: 2px;
}
.desir-stat-value {
  font-size: 1.3rem;
  font-weight: 700;
  color: #1a1a1a;
  line-height: 1.1;
}
.desir-stat-sub {
  font-size: .72rem;
  color: #8a8578;
  margin-top: 2px;
}
/* Detail panel pulse animation */
@keyframes desirDetailPulse {
  0% { background: #ede8df; }
  100% { background: #f7f5f2; }
}
#desirDetailPanel.desir-detail-pulse {
  animation: desirDetailPulse 0.6s ease-out;
}
/* ─── Document service filter pills ─── */
.doc-filter-pill {
    display:inline-flex; align-items:center; gap:.4rem; padding:.4rem .85rem;
    border-radius:2rem; border:1px solid var(--ss-border-light); background:var(--ss-bg);
    cursor:pointer; font-size:.82rem; font-weight:500; transition:all .2s;
    white-space:nowrap;
}
.doc-filter-pill:hover { border-color:var(--ss-accent); }
.doc-filter-pill.active { background:var(--ss-accent); color:#fff; border-color:var(--ss-accent); }
.doc-filter-pill .pill-icon { font-size:.9rem; }
.doc-filter-pill .pill-count { font-size:.72rem; opacity:.7; margin-left:.15rem; }

/* ─── Documents grid ─── */
.doc-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:1rem; }

/* ─── Document card ─── */
.doc-card {
    background:var(--ss-card-bg, #fff); border:1px solid var(--ss-border-light); border-radius:.75rem;
    padding:1.25rem; transition:all .2s; cursor:pointer; position:relative; overflow:hidden;
}
.doc-card:hover { border-color:var(--ss-accent); transform:translateY(-2px); box-shadow:0 4px 16px rgba(0,0,0,.06); }
.doc-card .doc-card-top { display:flex; align-items:flex-start; gap:.75rem; margin-bottom:.75rem; }
.doc-card .doc-icon-box {
    width:48px; height:48px; border-radius:.6rem; display:flex; align-items:center; justify-content:center;
    font-size:1.5rem; flex-shrink:0;
}
.doc-card .doc-icon-box.pdf { background:rgba(220,53,69,.1); color:#dc3545; }
.doc-card .doc-icon-box.word { background:rgba(13,110,253,.1); color:#0d6efd; }
.doc-card .doc-icon-box.excel { background:rgba(25,135,84,.1); color:#198754; }
.doc-card .doc-icon-box.ppt { background:rgba(253,126,20,.1); color:#fd7e14; }
.doc-card .doc-icon-box.image { background:rgba(111,66,193,.1); color:#6f42c1; }
.doc-card .doc-icon-box.other { background:rgba(108,117,125,.1); color:#6c757d; }

.doc-card .doc-card-title { font-weight:600; font-size:.9rem; line-height:1.3; margin-bottom:.15rem; }
.doc-card .doc-card-filename { font-size:.75rem; color:var(--ss-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:180px; }

.doc-card .doc-card-desc { font-size:.8rem; color:var(--ss-text-secondary); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; margin-bottom:.75rem; min-height:2.2rem; }

.doc-card .doc-card-footer { display:flex; align-items:center; justify-content:space-between; }
.doc-card .doc-card-meta { font-size:.72rem; color:var(--ss-text-muted); display:flex; align-items:center; gap:.75rem; }
.doc-card .doc-service-badge {
    display:inline-flex; align-items:center; gap:.25rem; font-size:.7rem; padding:.15rem .5rem;
    border-radius:.3rem; font-weight:500;
}
.doc-card .doc-card-actions { display:flex; gap:.35rem; }
.doc-card .doc-action-btn {
    width:30px; height:30px; border-radius:.35rem; border:1px solid var(--ss-border-light);
    background:transparent; display:flex; align-items:center; justify-content:center;
    font-size:.85rem; color:var(--ss-text-secondary); cursor:pointer; transition:all .15s;
}
.doc-card .doc-action-btn:hover { background:var(--ss-accent); color:#fff; border-color:var(--ss-accent); }

.doc-card-desc-empty { opacity:.4; }

.doc-empty-state { grid-column:1/-1; text-align:center; padding:3rem 1rem; color:var(--ss-text-muted); }
.doc-empty-state i { font-size:3rem; display:block; margin-bottom:.5rem; opacity:.4; }

/* ─── Document highlight (depuis notification) ─── */
.doc-highlight {
    outline: 2px solid var(--cl-teal-fg, #2d4a43);
    outline-offset: 3px;
    animation: docHighlightPulse 1.5s ease-in-out 2;
}
@keyframes docHighlightPulse {
    0%, 100% { outline-color: var(--cl-teal-fg, #2d4a43); }
    50% { outline-color: transparent; }
}

/* ─── Lightbox viewer (copié de l'admin) ─── */
.doc-lb { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; animation: docLbIn .2s ease; }
.doc-lb-hidden { display: none !important; }
.doc-lb-overlay { position: absolute; inset: 0; background: rgba(0,0,0,.82); backdrop-filter: blur(8px); }
.doc-lb-stage { position: relative; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; z-index: 1; }
.doc-lb-stage img { max-width: 90vw; max-height: calc(100vh - 100px); object-fit: contain; border-radius: 8px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.doc-lb-stage iframe { width: 85vw; height: calc(100vh - 100px); border: none; border-radius: 8px; box-shadow: 0 20px 60px rgba(0,0,0,.5); background: #fff; }
.doc-lb-close { position: absolute; top: 16px; right: 16px; background: rgba(255,255,255,.12); border: none; color: #fff; width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 1.2rem; z-index: 10; backdrop-filter: blur(8px); transition: background .2s; }
.doc-lb-close:hover { background: rgba(255,255,255,.22); }
.doc-lb-title { position: absolute; top: 16px; left: 50%; transform: translateX(-50%); background: rgba(255,255,255,.12); color: #fff; padding: 8px 20px; border-radius: 20px; font-size: .85rem; font-weight: 600; backdrop-filter: blur(8px); z-index: 10; max-width: 60vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.doc-lb-dl, .doc-lb-fs { position: absolute; top: 16px; background: rgba(255,255,255,.12); border: none; color: #fff; width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 1.1rem; z-index: 10; backdrop-filter: blur(8px); text-decoration: none; transition: background .2s; }
.doc-lb-dl { right: 70px; }
.doc-lb-fs { right: 120px; }
.doc-lb-dl:hover, .doc-lb-fs:hover { background: rgba(255,255,255,.22); color: #fff; }
.doc-lb-fs.d-none { display: none !important; }
@keyframes docLbIn { from { opacity: 0; } to { opacity: 1; } }

/* ─── Word / PDF wrapper ─── */
.doc-lb-word-wrap {
    width: 95vw; max-width: 1000px; height: 92vh;
    display: flex; flex-direction: column;
    background: var(--ss-card-bg, #fff); border-radius: 14px;
    box-shadow: 0 20px 60px rgba(0,0,0,.4); overflow: hidden;
}
.doc-lb-word-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 20px; border-bottom: 1px solid var(--ss-border-light); flex-shrink: 0;
}
.doc-lb-word-header h6 { margin: 0; font-weight: 700; font-size: .95rem; display: flex; align-items: center; gap: 8px; flex: 1; }
.doc-lb-word-close {
    width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--ss-border);
    background: var(--ss-bg, #f9fafb); cursor: pointer; display: flex; align-items: center;
    justify-content: center; font-size: .85rem; color: var(--ss-text-muted); transition: all .15s; flex-shrink: 0;
}
.doc-lb-word-close:hover { background: var(--ss-border-light); color: var(--ss-text); }
.doc-lb-word-body {
    flex: 1; overflow-y: auto; padding: 24px;
    background: var(--ss-bg, #F7F5F2);
}
.doc-lb-word-body .docx-wrapper,
.doc-lb-word-body > div { background: var(--ss-bg, #F7F5F2) !important; padding: 20px !important; display: flex; flex-direction: column; align-items: center; gap: 24px; }
.doc-lb-word-body .docx-wrapper > section,
.doc-lb-word-body .docx-wrapper section.docx,
.doc-lb-word-body section[style] {
    background: #fff !important; box-shadow: 0 2px 12px rgba(0,0,0,.1) !important;
    margin: 0 auto !important; border-radius: 10px !important; border: none !important;
}
.doc-lb-word-body [style*="background"] { background: var(--ss-bg, #F7F5F2) !important; }
.doc-lb-word-body section[style*="background"] { background: #fff !important; }
.doc-lb-word-footer {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 20px; border-top: 1px solid var(--ss-border-light); flex-shrink: 0;
}
.doc-lb-word-footer input[type="range"] { accent-color: #bcd2cb; }
@media (max-width: 900px) {
    .doc-lb-word-wrap { width: 100vw; height: 100vh; border-radius: 0; }
}
.doc-lb-word-loading { text-align: center; padding: 60px 20px; color: #999; }
.doc-lb-word-content { padding: 24px; }
.colleague-dropdown{position:absolute;top:100%;left:0;right:0;z-index:999;background:#fff;border:1px solid var(--ss-border);border-radius:0 0 6px 6px;max-height:220px;overflow-y:auto;display:none;box-shadow:0 4px 12px rgba(0,0,0,.12)}
.colleague-dropdown.open{display:block}
.colleague-dropdown .cd-item{padding:0.45rem 0.75rem;cursor:pointer;font-size:0.85rem;display:flex;align-items:center;gap:0.5rem}
.colleague-dropdown .cd-item:hover,.colleague-dropdown .cd-item.active{background:var(--ss-accent-bg,rgba(0,180,160,.08))}
.colleague-dropdown .cd-group{padding:0.3rem 0.75rem;font-weight:700;font-size:0.75rem;color:var(--ss-text-muted);text-transform:uppercase;letter-spacing:0.03em}
.colleague-dropdown .cd-empty{padding:0.6rem 0.75rem;color:var(--ss-text-muted);font-size:0.85rem;text-align:center}
#app-content { padding: 0.5rem; padding-top: 1rem; }

.planning-toolbar {
  display: flex; justify-content: space-between; align-items: center;
  gap: .5rem; flex-wrap: wrap; margin-bottom: 0.5rem;
}
.planning-week-nav {
  display: flex; align-items: center; justify-content: center; padding: .5rem 0;
}

/* ── View switch (carousel toggle) ── */
.plan-switch {
  position: relative;
  display: inline-flex;
  background: #f0eee6;
  border: 1px solid #e8e6dd;
  border-radius: 8px;
  padding: 3px;
  height: 34px;
  gap: 0;
}
.plan-switch-bg {
  position: absolute;
  top: 3px;
  left: 3px;
  height: calc(100% - 6px);
  width: calc(50% - 3px);
  background: #fff;
  border-radius: 6px;
  box-shadow: 0 1px 3px rgba(0,0,0,.08);
  transition: transform .25s ease;
  pointer-events: none;
  z-index: 0;
}
.plan-switch-bg.right {
  transform: translateX(100%);
}
.plan-switch-btn {
  position: relative;
  z-index: 1;
  background: none;
  border: none;
  padding: 0 14px;
  font-size: .82rem;
  font-weight: 500;
  color: #888;
  cursor: pointer;
  transition: color .2s;
  white-space: nowrap;
  line-height: 28px;
}
.plan-switch-btn.active {
  color: #1a1a1a;
  font-weight: 600;
}
.plan-switch-btn:hover:not(.active) {
  color: #555;
}

/* ── Grid wrapper ── */
.pg-wrap {
  overflow-x: auto;
  overflow-y: auto;
  max-height: calc(100vh - 130px);
  border: 1px solid #e8e5e0;
  border-radius: 6px;
  padding-bottom: 10px;
}

/* ── Table ── */
.pg {
  border-collapse: collapse;
  width: 100%;
  font-size: .76rem;
  background: #fff;
}
.pg th, .pg td {
  border: 1px solid #f0ede8;
  padding: 4px 6px;
  text-align: center;
  white-space: nowrap;
  height: 36px;
}

/* ── Header ── */
.pg thead th {
  position: sticky;
  top: 0;
  z-index: 10;
  background: #f9f7f4;
  font-weight: 600;
  font-size: .72rem;
  text-transform: uppercase;
}

/* ── Col: Nom (sticky left) ── */
.pg .c-name {
  position: sticky;
  left: 0;
  z-index: 5;
  background: #fff;
  text-align: left;
  width: 150px;
  min-width: 150px;
  max-width: 150px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pg thead .c-name { z-index: 20; background: #f9f7f4; }

/* ── Col: Fonction (sticky left after name) ── */
.pg .c-fn {
  position: sticky;
  left: 150px;
  z-index: 5;
  background: #fff;
  width: 46px;
  min-width: 46px;
  max-width: 46px;
  font-size: .62rem;
  font-weight: 600;
  color: #495057;
  overflow: hidden;
}
.pg thead .c-fn { z-index: 20; background: #f9f7f4; }
.pg .c-fn .fn-tag {
  display: inline-block;
  padding: 1px 4px;
  border-radius: 3px;
  background: #e9ecef;
  font-size: .6rem;
  font-weight: 600;
  line-height: 1.3;
}

/* ── Col: Taux (sticky left after fn) ── */
.pg .c-taux {
  position: sticky;
  left: 196px;
  z-index: 5;
  background: #f7f6f2;
  width: 34px;
  min-width: 34px;
  max-width: 34px;
  font-size: .68rem;
  font-weight: 500;
  color: #666;
}
.pg thead .c-taux { z-index: 20; background: #efece6; }

/* ── Col: Total (sticky right) ── */
.pg .c-tot {
  position: sticky;
  right: 0;
  z-index: 5;
  background: #f9f7f4;
  font-weight: 600;
  width: 58px;
  min-width: 58px;
  max-width: 58px;
  border-left: 2px solid #ddd9d0;
  box-shadow: -3px 0 6px rgba(0,0,0,.06);
}
.pg thead .c-tot { z-index: 20; }

/* ── Day cells ── */
.pg .c-day {
  min-width: 42px;
}
.pg .c-day .sc {
  display: inline-block;
  padding: 3px 6px;
  border-radius: 4px;
  color: #fff;
  font-weight: 700;
  font-size: .72rem;
  line-height: 1.2;
}
.pg .c-day.absent { background: #fff3f3; }
.pg .c-day.repos  { background: #f5f5f5; }
.pg .c-day.we     { background: #f8f6f2; }
.pg thead .we     { background: #f0ede6 !important; }
.pg thead .we .we-day-num { color: #aaa; }

/* ── Holiday cells ── */
.pg .c-day.holiday     { border-left: 2px solid #e8b84b; border-right: 2px solid #e8b84b; }
.pg thead .holiday     { border-left: 2px solid #e8b84b; border-right: 2px solid #e8b84b; border-top: 2px solid #e8b84b; }
.pg tbody tr:last-child .c-day.holiday { border-bottom: 2px solid #e8b84b; }
.pg .holiday-icon {
  display: block;
  font-size: .55rem;
  line-height: 1;
  margin-top: 1px;
}

/* ── Holiday bar (inside toolbar) ── */
.pg-holiday-bar {
  display: flex;
  align-items: center;
  gap: 5px;
  overflow-x: auto;
  flex: 1;
  min-width: 0;
}
.pg-holiday-bar:empty { display: none; }
.pg-holiday-bar .hb-item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: transparent;
  border: 1px solid #d5d2c8;
  border-radius: 6px;
  font-size: .74rem;
  font-weight: 500;
  color: #1a1a1a;
  white-space: nowrap;
  flex-shrink: 0;
  height: 34px;
}
.pg-holiday-bar .hb-item .hb-icon { font-size: .85rem; }
.pg-holiday-bar .hb-item .hb-days {
  font-size: .62rem;
  color: #888;
  font-weight: 600;
}

/* ── Module separator ── */
.pg .mod td {
  background: #1a1a1a !important;
  color: #fff;
  font-weight: 700;
  font-size: .75rem;
  text-align: left;
  padding: 5px;
  border-color: #333;
}
.pg .mod .c-name { background: #1a1a1a !important; color: #fff; }
.pg .mod .c-fn   { background: #1a1a1a !important; color: #fff; }
.pg .mod .c-taux { background: #1a1a1a !important; color: #fff; text-align: center; }
.pg .mod .c-tot  { background: #1a1a1a !important; border-left-color: #333; }

/* ── Row hover ── */
.pg tbody tr:not(.mod):hover td { background: #f5f3ee; }
.pg tbody tr:not(.mod):hover .c-name { background: #edeae3; }
.pg tbody tr:not(.mod):hover .c-fn   { background: #edeae3; }
.pg tbody tr:not(.mod):hover .c-taux { background: #e8e5de; }
.pg tbody tr:not(.mod):hover .c-tot  { background: #edeae3; }

/* ── My row (connected user) — overrides everything including weekends ── */
.pg .me td,
.pg .me td.c-day,
.pg .me td.c-day.we { background: #ede8d8; }
.pg .me .c-name { background: #e5dfc9; font-weight: 600; }
.pg .me .c-fn   { background: #e5dfc9; }
.pg .me .c-taux { background: #ddd7c1; }
.pg .me .c-tot  { background: #e5dfc9; }

.h-over  { color: #dc3545; }
.h-under { color: #ffc107; }
.h-ok    { color: #28a745; }

/* ── Filter active banner ── */
.pg-filter-banner {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  margin-bottom: 8px;
  background: #f9f7f2;
  border: 1px solid #e8e6dd;
  border-radius: 8px;
  font-size: .82rem;
  color: #1a1a1a;
}
.pg-filter-banner strong { font-weight: 600; }
.pg-filter-banner .pg-filter-clear {
  margin-left: auto;
  padding: 3px 10px;
  border: 1px solid #e8e6dd;
  border-radius: 6px;
  background: #fff;
  font-size: .78rem;
  font-weight: 500;
  color: #555;
  cursor: pointer;
  transition: all .15s;
}
.pg-filter-banner .pg-filter-clear:hover {
  background: #f0eee6;
  color: #1a1a1a;
}

/* ── Filter modal: fonction tags ── */
.pf-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border: 1px solid #e8e6dd;
  border-radius: 6px;
  background: #fff;
  font-size: .8rem;
  font-weight: 500;
  color: #555;
  cursor: pointer;
  transition: all .2s;
}
.pf-tag:hover {
  background: #f0eee6;
  border-color: #d5d2c8;
  color: #1a1a1a;
}
.pf-tag.active {
  background: #1a1a1a;
  border-color: #1a1a1a;
  color: #fff;
}
.pf-tag.active .pf-tag-count {
  background: rgba(255,255,255,.2);
  color: #fff;
}
.pf-tag .pf-tag-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 18px;
  padding: 0 5px;
  border-radius: 10px;
  background: #e9ecef;
  font-size: .68rem;
  font-weight: 600;
  color: #495057;
}

/* ── Filter modal: module tabs ── */
.pf-mod-tab {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 12px;
  border: 1px solid #e8e6dd;
  border-radius: 8px;
  background: #f0eee6;
  font-size: .78rem;
  font-weight: 600;
  color: #1a1a1a;
  cursor: pointer;
  transition: all .2s;
}
.pf-mod-tab:hover {
  background: #e8e5dc;
  border-color: #ccc8be;
}
.pf-mod-tab.active {
  background: #1a1a1a;
  border-color: #1a1a1a;
  color: #fff;
}
.pf-mod-tab.active .pf-tag-count {
  background: rgba(255,255,255,.2);
  color: #fff;
}
.pf-mod-tab .pf-tag-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 18px;
  padding: 0 5px;
  border-radius: 10px;
  background: #1a1a1a;
  color: #fff;
  font-size: .68rem;
  font-weight: 600;
}

/* ── Filter modal: user list ── */
.pf-user {
  display: flex;
  align-items: center;
  padding: 8px 10px;
  border-bottom: 1px solid #f5f3ef;
  cursor: pointer;
  transition: background .15s;
  border-radius: 4px;
  margin-bottom: 1px;
}
.pf-user:hover {
  background: #f9f8f5;
}
.pf-user.selected {
  background: rgba(40, 167, 69, .07);
}
.pf-user .pf-user-name {
  flex: 1;
  font-weight: 500;
  font-size: .85rem;
  color: #1a1a1a;
}
.pf-user .pf-user-fn {
  font-size: .7rem;
  font-weight: 600;
  color: #888;
  margin-left: 6px;
}
.pf-user .pf-user-mod {
  font-size: .7rem;
  color: #aaa;
  margin-left: auto;
  margin-right: 8px;
}
.pf-user .pf-check {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  flex-shrink: 0;
  opacity: 0;
  transition: opacity .15s;
}
.pf-user.selected .pf-check {
  opacity: 1;
  background: rgba(40, 167, 69, .15);
  color: #28a745;
}

/* ── Planning status overlay ── */
.pg-status-wrap {
  position: relative;
}
.pg-status-wrap .pg-wrap {
  opacity: .15;
  pointer-events: none;
  filter: blur(1px);
}
.pg-status-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 30;
}
.pg-status-card {
  background: #fff;
  border: 1px solid #e8e6dd;
  border-radius: 14px;
  padding: 2rem 2.5rem;
  text-align: center;
  max-width: 420px;
  width: 90%;
  box-shadow: 0 8px 32px rgba(0,0,0,.08);
}
.pg-status-icon {
  font-size: 2.5rem;
  margin-bottom: .75rem;
}
.pg-status-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: #1a1a1a;
  margin-bottom: .25rem;
}
.pg-status-sub {
  font-size: .82rem;
  color: #888;
  margin-bottom: 1.25rem;
}
.pg-progress-track {
  display: flex;
  align-items: center;
  gap: 0;
  margin: 0 auto;
  max-width: 340px;
}
.pg-progress-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1;
  position: relative;
}
.pg-progress-dot {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #e8e6dd;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .6rem;
  font-weight: 700;
  color: #aaa;
  position: relative;
  z-index: 2;
  transition: all .3s;
}
.pg-progress-step.done .pg-progress-dot {
  background: #28a745;
  color: #fff;
}
.pg-progress-step.active .pg-progress-dot {
  background: #f0c040;
  color: #1a1a1a;
  box-shadow: 0 0 0 4px rgba(240,192,64,.25);
}
.pg-progress-label {
  font-size: .62rem;
  font-weight: 600;
  color: #999;
  margin-top: 5px;
  white-space: nowrap;
}
.pg-progress-step.done .pg-progress-label { color: #28a745; }
.pg-progress-step.active .pg-progress-label { color: #1a1a1a; font-weight: 700; }
.pg-progress-line {
  flex: 1;
  height: 3px;
  background: #e8e6dd;
  margin: 0 -2px;
  margin-bottom: 18px;
  position: relative;
  z-index: 1;
}
.pg-progress-line.done { background: #28a745; }

/* ── Mobile ── */
@media (max-width: 768px) {
  .planning-toolbar { flex-direction: column; align-items: stretch; }
  .pg { font-size: .68rem; }
  .pg .c-name { width: 110px; min-width: 110px; max-width: 110px; }
  .pg .c-fn   { left: 110px; width: 38px; min-width: 38px; max-width: 38px; }
  .pg .c-taux { left: 148px; width: 30px; min-width: 30px; max-width: 30px; }
  .pg .c-day  { min-width: 30px; }
  .pg .c-tot  { width: 48px; min-width: 48px; max-width: 48px; }
}
/* PV list items — use shared split-list-item */
#pvListContainer .pv-item {
  padding: 12px 15px;
  border-bottom: 1px solid var(--ss-border-light);
  cursor: pointer;
  transition: background var(--ss-transition);
}
#pvListContainer .pv-item:hover {
  background: var(--ss-accent-bg);
}
#pvListContainer .pv-item.selected {
  background: var(--ss-accent-bg);
  border-left: 4px solid var(--ss-navy);
  padding-left: 11px;
}
.pv-item-title {
  font-size: 0.95rem;
  font-weight: 500;
  color: #333;
  margin-bottom: 4px;
}
.pv-item-meta {
  font-size: 0.8rem;
  color: #999;
}
.pv-detail-card {
  background: var(--ss-bg-card);
  border-radius: var(--ss-radius-md);
  padding: 25px;
  box-shadow: var(--ss-shadow-md);
  border: 1px solid var(--ss-border);
}
.pv-detail-header {
  border-bottom: 2px solid var(--ss-border-light);
  margin-bottom: 20px;
  padding-bottom: 15px;
}
.pv-detail-title {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--ss-text);
  margin: 0 0 8px 0;
}
.pv-detail-status {
  display: inline-block;
  font-size: 0.75rem;
  padding: 3px 8px;
  border-radius: 12px;
}
.pv-detail-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
  margin-bottom: 20px;
  padding: 15px;
  background: var(--ss-bg);
  border-radius: 6px;
  font-size: 0.9rem;
}
.pv-meta-item strong {
  display: block;
  margin-bottom: 3px;
  color: #666;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.pv-meta-item {
  color: #333;
}
.pv-section-title {
  font-size: 0.85rem;
  font-weight: 600;
  text-transform: uppercase;
  color: #999;
  margin-top: 20px;
  margin-bottom: 10px;
  letter-spacing: 0.5px;
}
.pv-content-box {
  background: var(--ss-bg-card);
  border: 1px solid var(--ss-border);
  border-radius: var(--ss-radius-md);
  padding: 12px;
  line-height: 1.6;
  color: var(--ss-text);
  white-space: pre-wrap;
  word-wrap: break-word;
  min-height: 100px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.pv-participants {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.pv-participant-badge {
  display: inline-block;
  background: var(--ss-accent-bg);
  color: var(--ss-text);
  padding: 4px 10px;
  border-radius: 12px;
  font-size: 0.8rem;
  border-left: 3px solid var(--ss-navy);
}

/* Rating & Comments */
.pv-rating-stars {
  display: inline-flex;
  gap: 4px;
  font-size: 1.3rem;
  color: #ddd;
  cursor: pointer;
}
.pv-rating-stars i {
  transition: color 0.2s;
}
.pv-rating-stars i.active,
.pv-rating-stars i:hover,
.pv-rating-stars i:hover ~ i {
  color: #FFC107;
}
.pv-rating-stars:hover i {
  color: #FFC107;
}
.pv-rating-stars i:hover ~ i {
  color: #ddd !important;
}

.pv-comment-box {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 14px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.03);
}
.pv-comment-top { display: flex; gap: 12px; }
.pv-comment-avatar {
  width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0; object-fit: cover;
  border: 2px solid #f0ede8;
}
.pv-comment-avatar-initials {
  width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
  background: var(--ss-bg-alt, #f0ede8); color: var(--ss-navy, #2a3b4d);
  display: flex; align-items: center; justify-content: center;
  font-size: .7rem; font-weight: 700; border: 2px solid #f0ede8;
}
.pv-comment-content { flex: 1; min-width: 0; }
.pv-comment-header {
  display: flex;
  justify-content: space-between;
  margin-bottom: 6px;
  font-size: 0.85rem;
}
.pv-comment-author {
  font-weight: 600;
  color: var(--ss-navy);
}
.pv-comment-date {
  color: #999;
}
.pv-comment-body {
  font-size: 0.95rem;
  color: #444;
  line-height: 1.5;
}
/* Likes */
.pv-comment-footer { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding-top: 8px; border-top: 1px solid #f5f3f0; }
.pv-like-btn {
  background: none; border: none; cursor: pointer; display: inline-flex; align-items: center; gap: 4px;
  font-size: .82rem; color: #999; padding: 3px 8px; border-radius: 6px; transition: all .15s;
}
.pv-like-btn:hover { background: #f5f3f0; color: #666; }
.pv-like-btn.liked { color: #C53030; }
.pv-like-btn.liked i { font-weight: 700; }
.pv-like-avatars { display: flex; margin-left: 4px; }
.pv-like-avatars img, .pv-like-avatars .pv-like-av-init {
  width: 24px; height: 24px; border-radius: 50%; border: 2px solid #fff;
  margin-left: -6px; object-fit: cover;
}
.pv-like-avatars img:first-child, .pv-like-avatars .pv-like-av-init:first-child { margin-left: 0; }
.pv-like-av-init {
  width: 24px; height: 24px; border-radius: 50%; border: 2px solid #fff;
  background: #f0ede8; color: #666; display: flex; align-items: center;
  justify-content: center; font-size: .55rem; font-weight: 700;
}
.pv-like-count { font-size: .78rem; color: #999; margin-left: 4px; }
.pv-editor-container {
  border: 1px solid #ddd;
  border-radius: 6px;
  background: #fff;
  overflow: hidden;
}
.pv-editor-container .zs-ed-content {
  min-height: 100px;
  padding: 10px;
}
/* Module sections — scrollable */
.rep-section { margin-bottom: 1rem; }
.rep-section-header { padding: .4rem .75rem; font-weight: 600; font-size: .85rem; color: #fff; border-radius: 6px 6px 0 0; display: flex; align-items: center; gap: .5rem; }
.rep-section-header .badge { font-size: .68rem; background: rgba(255,255,255,.25); }
.rep-section-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; scroll-behavior: smooth; cursor: grab; border: 1px solid var(--ss-border-light, #e9ecef); border-top: 0; border-radius: 0 0 6px 6px; }
.rep-section-scroll:focus { outline: none; box-shadow: 0 0 0 2px rgba(45,74,67,.3); }

.rep-tbl { width: 100%; min-width: 1500px; border-collapse: separate; border-spacing: 0; font-size: .76rem; }
.rep-tbl th, .rep-tbl td { border: 1px solid #dee2e6; padding: .2rem .3rem; vertical-align: middle; }
.rep-tbl thead th { background: var(--ss-bg, #f1f3f5); font-weight: 600; text-align: center; position: sticky; top: 0; z-index: 2; font-size: .7rem; }
.rep-tbl th.col-fn { width: 70px; position: sticky; left: 0; z-index: 4; background: var(--ss-bg, #f1f3f5); }
.rep-tbl th.col-slot { width: 50px; position: sticky; left: 70px; z-index: 4; background: var(--ss-bg, #f1f3f5); }
.rep-tbl th.col-day-head { font-size: .72rem; border-bottom: 0; }
.rep-tbl th.col-day-head.weekend { background: rgba(254,252,243,.5); }
.rep-tbl th.col-sub { font-size: .64rem; color: #888; font-weight: 500; border-top: 0; text-align: center; }
.rep-tbl th.col-sub-nom { width: 110px; }
.rep-tbl th.col-sub-hor { width: 38px; }
.rep-tbl th.col-sub-et { width: 35px; }
.rep-tbl td.day-first { border-left: 2px solid #adb5bd; }

.rep-tbl td.cell-fn { font-weight: 700; font-size: .68rem; color: var(--ss-text, #333); background: var(--ss-bg, #f8f9fa); text-align: center; border-right: 2px solid #ccc; position: sticky; left: 0; z-index: 1; }
.rep-tbl td.cell-slot { font-size: .66rem; font-weight: 600; color: #555; background: var(--ss-bg-card, #fdfdfd); text-align: center; position: sticky; left: 70px; z-index: 1; }
.rep-tbl tr.fn-first td { border-top: 2px solid #adb5bd; }

.rep-tbl td.cell-nom { font-size: .72rem; font-weight: 600; color: var(--ss-text, #222); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 110px; }
.rep-tbl td.cell-nom.weekend { background: rgba(254,252,243,.3); }
.rep-tbl td.cell-hor { text-align: center; padding: .15rem .1rem; }
.rep-tbl td.cell-hor.weekend { background: rgba(254,252,243,.3); }
.rep-tbl td.cell-et { text-align: center; font-size: .66rem; font-weight: 600; color: #555; }
.rep-tbl td.cell-et.weekend { background: rgba(254,252,243,.3); }

.rep-badge { display: inline-block; padding: 1px 5px; border-radius: 3px; font-size: .62rem; font-weight: 600; color: #fff; white-space: nowrap; line-height: 1.3; }
.rep-note-dot { color: #999; font-size: .6rem; vertical-align: super; }

/* Module colors */
.rep-c-M1 { background: #2196F3; } .rep-c-M2 { background: #4CAF50; }
.rep-c-M3 { background: #FF9800; } .rep-c-M4 { background: #9C27B0; }
.rep-c-NUIT { background: #37474F; } .rep-c-POOL { background: #795548; }
.rep-c-RS { background: #607D8B; } .rep-c-DEFAULT { background: #6c757d; }

/* Day view — single day column wider */
.rep-tbl.rep-day-view th.col-sub-nom { width: 180px; }

@media print {
  .page-header, #repInfoBtn, #repViewToggle { display: none !important; }
  .rep-section-scroll { overflow: visible; }
  .rep-tbl { min-width: 0; font-size: .64rem; }
  .rep-badge, .rep-section-header { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}
/* ── Layout ── */
.vac-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}
.vac-header-left{display:flex;align-items:center;gap:.75rem}
.vac-header-right{display:flex;align-items:center;gap:.75rem}
.vac-title{font-size:1.1rem;font-weight:700;margin:0;color:var(--ss-navy,#1B2A4A)}

/* Solde */
.vac-solde{background:linear-gradient(135deg,#e8f5e9,#c8e6c9);border-radius:8px;padding:5px 12px;text-align:center}
.vac-solde-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;color:#388e3c;font-weight:600}
.vac-solde-value{font-size:1.3rem;font-weight:800;color:#2e7d32;line-height:1.1}
.vac-solde-detail{font-size:.6rem;color:#558b2f}
.vac-solde.low{background:linear-gradient(135deg,#fff3e0,#ffe0b2)}
.vac-solde.low .vac-solde-value{color:#e65100}
.vac-solde.low .vac-solde-label,.vac-solde.low .vac-solde-detail{color:#bf360c}

.vac-controls{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.4rem}
.vac-current-month{font-size:1rem;font-weight:700;min-width:140px;text-align:center;color:var(--ss-navy,#1B2A4A)}

.vac-month-pills{display:flex;gap:3px;margin-bottom:.5rem;overflow-x:auto;padding:2px 0}
.vac-month-pill{border:1px solid #dee2e6;background:#fff;border-radius:4px;padding:2px 9px;font-size:.68rem;font-weight:600;cursor:pointer;white-space:nowrap}
.vac-month-pill:hover{background:#e3f2fd;border-color:#90caf9}
.vac-month-pill.active{background:var(--ss-navy,#1B2A4A);color:#fff;border-color:var(--ss-navy,#1B2A4A)}

/* ══ Section: Ma ligne ══ */
.vac-my-section{background:#f5f4ed;border:2px solid #eceae2;border-radius:10px;padding:10px 12px 8px;margin-bottom:12px}
.vac-my-label{font-size:.85rem;font-weight:700;color:#1a1a1a;margin-bottom:2px}
.vac-my-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.vac-drag-hint{font-size:.7rem;color:#66bb6a}
.vac-legend-inline{display:flex;align-items:center;gap:8px;font-size:.65rem;color:#555;flex-shrink:0}
.vac-drag-info{background:linear-gradient(90deg,#ff9800,#f57c00);color:#fff;padding:5px 12px;font-size:.78rem;font-weight:500;display:flex;align-items:center;gap:6px;border-radius:5px;margin-bottom:6px}

/* My grid — large cells */
.vac-my-wrap{overflow-x:auto;border-radius:6px;padding-bottom:10px}
.vac-my-table{border-collapse:separate;border-spacing:0;width:100%;user-select:none;-webkit-user-select:none}
.vac-my-table th{background:#e8f5e9;border:1px solid #c8e6c9;padding:4px 2px;text-align:center;font-size:.72rem;font-weight:600;color:#2e7d32;white-space:nowrap}
.vac-my-table th.th-we{background:#fff8e1;color:#856404;border-color:#ffe082}
.vac-my-table th.th-today{background:#faf5eb;color:#8d6e27;font-weight:700}
.vac-my-table td.mc{min-width:44px;height:44px;border:1px solid #c8e6c9;background:#fff;position:relative;cursor:crosshair;transition:all .15s;text-align:center;vertical-align:middle}
.vac-my-table td.mc:hover{background:#e3f2fd;border-color:#90caf9}
.vac-my-table td.mc.we{background:#fffbf0;cursor:default}
.vac-my-table td.mc.blocked{background:repeating-linear-gradient(45deg,#ffcdd2,#ffcdd2 2px,#fff 2px,#fff 5px);cursor:not-allowed}
.vac-my-table td.mc.today{background:repeating-linear-gradient(135deg,#faf5eb,#faf5eb 3px,#f5eed8 3px,#f5eed8 5px)}
.vac-my-table td.mc.vv{background:#a5d6a7;cursor:default}
.vac-my-table td.mc.va{background:#ffe082;cursor:pointer}
.vac-my-table td.mc.drag-hl{background:#ffcc80!important;outline:2px solid #ff9800;outline-offset:-2px}
.vac-my-table td.mc .my-lbl{font-size:.6rem;font-weight:700;color:#1b5e20}
.vac-my-table td.mc.va .my-lbl{color:#e65100}
.vac-my-table td.mc .my-del{position:absolute;top:-5px;right:-5px;z-index:6;width:16px;height:16px;border-radius:50%;background:#fff;color:#d32f2f;font-size:.6rem;display:none;align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,0,0,.3);cursor:pointer;line-height:1;border:1px solid #ffcdd2;transition:all .2s}
.vac-my-table td.mc:hover .my-del{display:flex}
.vac-my-table td.mc.del-confirm{background:#ffcdd2!important;border-color:#e53935!important;animation:vac-pulse-red .6s ease-in-out infinite alternate}
.vac-my-table td.mc.del-confirm .my-del{display:flex;background:#d32f2f;color:#fff;border-color:#b71c1c;width:20px;height:20px;font-size:.7rem}
.vac-my-table td.mc.del-confirm .my-lbl{color:#c62828}
@keyframes vac-pulse-red{from{background:#ffcdd2}to{background:#ef9a9a}}

/* ══ Section: Équipe ══ */
.vac-team-section{margin-bottom:8px}
.vac-team-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;gap:8px;flex-wrap:wrap}
.vac-team-label{font-size:.85rem;font-weight:700;color:var(--ss-navy,#1B2A4A)}
.vac-size-btn{font-size:.85rem;padding:.25rem .4rem}
.vac-size-btn.active{background:var(--ss-navy,#1B2A4A);color:#fff;border-color:var(--ss-navy,#1B2A4A)}
.vac-team-wrap{overflow-x:auto;border:1px solid #e0e0e0;border-radius:6px;max-height:calc(100vh - 280px);overflow-y:auto}
.vac-team-table{border-collapse:separate;border-spacing:0;width:100%;font-size:.72rem;user-select:none;-webkit-user-select:none}
.vac-team-table th,.vac-team-table td{border:1px solid #ececec;padding:1px 3px;text-align:center;white-space:nowrap;vertical-align:middle}
.vac-team-table thead th{position:sticky;top:0;z-index:10;background:#f8f9fa;font-weight:600;font-size:.68rem}
.vac-team-table .col-user{position:sticky;left:0;z-index:5;background:#fff;text-align:left;min-width:150px;max-width:180px;font-weight:500;padding:1px 5px;overflow:hidden;text-overflow:ellipsis}
.vac-team-table thead .col-user{z-index:15;background:#f8f9fa}
.vac-team-table .module-sep td{background:#2c3e50;color:#fff;font-weight:700;font-size:.75rem;text-align:left;padding:3px 8px;border-color:#2c3e50}
.vac-team-table .fn-badge{display:inline-block;font-size:.6rem;padding:0 3px;border-radius:3px;background:#e9ecef;color:#495057;font-weight:600;margin-right:2px;vertical-align:middle}
.vac-team-table .tc{min-width:30px;height:22px;position:relative;cursor:default;transition:all .15s}
.vac-team-table .tc.we{background:#fffbf0}
.vac-team-table .tc.today{background:repeating-linear-gradient(135deg,#faf5eb,#faf5eb 3px,#f5eed8 3px,#f5eed8 5px)}
.vac-team-table .tc.vv{background:#a5d6a7}
.vac-team-table .tc.va{background:#ffe082}

/* Cell sizing */
#vacTeamGrid.size-small .vac-team-table .tc{min-width:20px;height:16px;padding:0 1px}
#vacTeamGrid.size-small .vac-team-table .col-user{min-width:100px;max-width:120px}
#vacTeamGrid.size-large .vac-team-table .tc{min-width:45px;height:32px;padding:0 4px}
#vacTeamGrid.size-large .vac-team-table .col-user{min-width:170px;max-width:200px}
#vacTeamGrid.size-large .t-lbl{font-size:.6rem}
.vac-team-table .th-we{background:#fff8e1!important;color:#856404}
.vac-team-table .th-today{background:#faf5eb!important;color:#8d6e27;font-weight:700}
.vac-team-table .myrow td{background:rgba(25,135,84,.07)}
.vac-team-table .myrow .col-user{background:rgba(25,135,84,.12);font-weight:700;color:#1b5e20}
.vac-team-table .myrow td:first-child{border-left:3px solid #43a047}
.vac-team-table .t-lbl{position:absolute;top:0;left:0;bottom:0;display:flex;align-items:center;padding:0 2px;font-size:.52rem;font-weight:700;color:#1b5e20;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;z-index:2}
.vac-team-table .t-lbl.att{color:#e65100}
.vac-my-table tr.del-confirm td { background: #ffcdd2 !important; border-color: #e53935 !important; animation: vac-pulse-red .6s ease-in-out infinite alternate; }
.vac-my-table tr.del-confirm td.mc .my-del { display: flex !important; background: #d32f2f; color: #fff; border-color: #b71c1c; width: 20px; height: 20px; font-size: .7rem; }

/* ── Legend ── */
.vac-leg{display:flex;align-items:center;gap:3px}
.vac-sw{display:inline-block;width:14px;height:10px;border:1px solid #bbb;border-radius:2px}
.vac-sw-blocked{background:repeating-linear-gradient(45deg,#ffcdd2,#ffcdd2 2px,#fff 2px,#fff 5px)}
.vac-sw-today{background:repeating-linear-gradient(135deg,#faf5eb,#faf5eb 3px,#f5eed8 3px,#f5eed8 5px)}
.vac-empty{text-align:center;padding:2rem;color:#999}

@media(max-width:768px){
  .vac-header{flex-direction:column;align-items:stretch}
  .vac-controls{flex-direction:column;align-items:stretch}
  .vac-my-table td.mc{min-width:32px;height:36px}
  .vac-team-table .tc{min-width:22px}
  .vac-team-table .col-user{min-width:100px;max-width:120px}
}
.wiki-cat-btn { border:1px solid #dee2e6; background:#fff; border-radius:20px; padding:5px 14px; font-size:.8rem; cursor:pointer; transition:all .2s; display:inline-flex; align-items:center; gap:5px; }
.wiki-cat-btn:hover, .wiki-cat-btn.active { color:#fff; border-color:transparent; }

.wiki-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:12px; }
.wiki-card { background:#fff; border:1px solid #e9ecef; border-radius:10px; padding:14px; cursor:pointer; transition:all .2s; position:relative; }
.wiki-card:hover { border-color:#2d4a43; box-shadow:0 2px 8px rgba(0,0,0,.06); transform:translateY(-1px); }
.wiki-card.pinned { border-left:3px solid #2d4a43; }
.wiki-card-title { font-weight:600; font-size:.92rem; margin-bottom:4px; }
.wiki-card-desc { font-size:.78rem; color:#6c757d; margin-bottom:8px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.wiki-card-meta { font-size:.7rem; color:#adb5bd; display:flex; gap:8px; align-items:center; }
.wiki-card-cat { font-size:.68rem; padding:2px 8px; border-radius:10px; color:#fff; display:inline-flex; align-items:center; gap:3px; }
.wiki-card-pin { position:absolute; top:8px; right:10px; color:#2d4a43; }

.wiki-read-panel { background:#fff; border:1px solid #e9ecef; border-radius:10px; overflow:hidden; }
.wiki-read-hero { width:100%; max-height:300px; object-fit:cover; display:block; }
.wiki-read-content-wrap { padding:24px; }
.wiki-read-content-wrap h1 { font-size:1.3rem; font-weight:700; margin-bottom:4px; }
.wiki-read-meta { font-size:.78rem; color:#6c757d; margin-bottom:16px; padding-bottom:12px; border-bottom:1px solid #f0f0f0; }
.wiki-read-content { font-size:.9rem; line-height:1.7; }
.wiki-read-content h2 { font-size:1.1rem; font-weight:700; margin-top:20px; margin-bottom:8px; color:#2d4a43; }
.wiki-read-content h3 { font-size:.95rem; font-weight:600; margin-top:16px; }
.wiki-read-content img { max-width:100%; border-radius:6px; margin:8px 0; }
.wiki-read-content blockquote { border-left:3px solid #2d4a43; padding-left:12px; color:#6c757d; margin:12px 0; font-style:italic; }
.wiki-read-content ul, .wiki-read-content ol { padding-left:20px; }
.wiki-read-content table { border-collapse:collapse; width:100%; margin:12px 0; border:1px solid #dee2e6; }
.wiki-read-content table th { background:#f8f9fa; font-weight:600; font-size:.85rem; padding:10px 12px; border:1px solid #dee2e6; text-align:left; }
.wiki-read-content table td { padding:10px 12px; border:1px solid #dee2e6; font-size:.88rem; vertical-align:top; }
.wiki-read-content table tr:hover td { background:#fafaf7; }

.wiki-tag { font-size:.65rem; padding:2px 7px; border-radius:8px; color:#fff; display:inline-flex; align-items:center; gap:2px; font-weight:600; }
.wiki-tags-row { display:flex; flex-wrap:wrap; gap:3px; margin-top:4px; }
.wiki-tag-filter { border:1px solid #dee2e6; background:#fff; border-radius:14px; padding:3px 10px; font-size:.72rem; cursor:pointer; transition:all .15s; display:inline-flex; align-items:center; gap:3px; }
.wiki-tag-filter:hover, .wiki-tag-filter.active { color:#fff; border-color:transparent; }
.wiki-fav-btn { background:none; border:none; cursor:pointer; font-size:1rem; color:#ccc; transition:all .15s; padding:2px; }
.wiki-fav-btn:hover { color:#dc3545; }
.wiki-fav-btn.active { color:#dc3545; }
.wiki-fav-filter { border:1px solid #dee2e6; background:#fff; border-radius:14px; padding:3px 10px; font-size:.72rem; cursor:pointer; transition:all .15s; display:inline-flex; align-items:center; gap:3px; }
.wiki-fav-filter.active { background:#dc3545; color:#fff; border-color:#dc3545; }
.wiki-verify-badge { font-size:.68rem; padding:2px 8px; border-radius:8px; font-weight:600; display:inline-flex; align-items:center; gap:3px; }
.wiki-verify-ok { background:#bcd2cb; color:#2d4a43; }
.wiki-verify-expired { background:#E2B8AE; color:#7B3B2C; }
.wiki-expert-badge { font-size:.68rem; color:#3B4F6B; display:inline-flex; align-items:center; gap:3px; }
