:root{
  --opuss-dark:#2d3f47;--opuss-dark-2:#263740;--blue:#2196f3;--blue-700:#1976d2;--teal:#26a69a;--line:#ddd;--bg:#f5f5f5;--text:#1f2937;--muted:#6b7280;--danger:#ef4444;--success:#4caf50;--warning:#ffb300;
}
*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:'Nunito',Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:inherit}.navbar{height:56px;background:var(--opuss-dark);color:#fff;display:flex;align-items:center;gap:16px;padding:0 16px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px;min-width:220px}.brand img{height:34px}.brand-title{font-weight:700;line-height:1.1}.brand-title small{display:block;color:#cbd5e1;font-weight:400}.nav-spacer{flex:1}.season-badge{background:#22c55e;color:#fff;padding:4px 8px;border-radius:3px;font-size:12px;font-weight:700}.user-pill{display:flex;align-items:center;gap:8px}.avatar{width:34px;height:34px;border-radius:50%;background:#f97316;display:inline-flex;align-items:center;justify-content:center;font-weight:800;color:#fff}.layout{display:flex;min-height:calc(100vh - 56px)}.sidebar{width:248px;background:#fff;border-right:1px solid #ddd;flex:0 0 248px}.sidebar .season-block{padding:18px;text-align:center;border-bottom:1px solid #eee}.side-group-title{padding:14px 18px 6px;color:#6b7280;text-transform:uppercase;font-size:11px;font-weight:700}.side-link{display:flex;align-items:center;gap:10px;padding:10px 18px;text-decoration:none;border-left:3px solid transparent;color:#374151}.side-link:hover,.side-link.active{background:#eaf4ff;color:#0d6efd;border-left-color:var(--blue)}.content-wrapper{flex:1;min-width:0}.breadcrumb-line{background:#fff;border-bottom:1px solid #ddd;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 18px;color:#374151}.breadcrumb{display:flex;gap:8px;align-items:center;font-size:13px}.page-header{background:#fff;border-bottom:1px solid #ddd;padding:24px 24px}.page-header h1{margin:0;font-size:22px;font-weight:600}.page-header small{display:block;margin-top:4px;color:#475569}.content{padding:20px}.card{background:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.05);margin-bottom:16px}.card.border-top-blue{border-top:2px solid #1565c0}.card-header{padding:14px 16px;border-bottom:1px solid #eee;font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:10px}.card-body{padding:16px}.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.form-field label,.fieldset-title{display:block;font-weight:700;color:#0d6efd;border-bottom:2px solid #0d6efd;padding-bottom:8px;margin-bottom:10px}.form-field input,.form-field select,.form-field textarea,.login-card input{width:100%;border:1px solid #d5dce3;border-radius:3px;padding:10px 12px;background:#fff;min-height:38px;font:inherit}.form-field textarea{min-height:86px;resize:vertical}.btn{border:1px solid #cfd8dc;background:#fff;color:#263238;padding:9px 14px;border-radius:3px;cursor:pointer;font-weight:700;display:inline-flex;align-items:center;gap:7px;text-decoration:none;justify-content:center}.btn:hover{filter:brightness(.98)}.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn-success{background:var(--teal);border-color:var(--teal);color:#fff}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-outline{background:#fff;color:var(--blue);border-color:var(--blue)}.btn-sm{padding:6px 9px;font-size:12px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.status{display:inline-flex;align-items:center;justify-content:center;min-width:80px;padding:4px 8px;border-radius:999px;font-weight:800;font-size:12px}.status.qualifiee{background:#e8f5e9;color:#15803d}.status.repechage{background:#fff8e1;color:#b45309}.status.supprimee{background:#fee2e2;color:#b91c1c}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;background:#fff}.table th,.table td{padding:11px 10px;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:top}.table th{background:#fafafa;font-weight:700;white-space:nowrap}.table tbody tr:hover{background:#f8fbff}.muted{color:#6b7280}.small{font-size:12px}.counter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.counter{padding:16px;border:1px solid #e5e7eb;background:#fff;border-radius:4px}.counter .label{color:#6b7280;font-weight:700}.counter .value{font-size:28px;font-weight:800;margin-top:4px}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(180deg,#eef5ff,#f8fafc)}.login-card{width:560px;max-width:calc(100vw - 32px);background:#fff;border:1px solid #dbe5f4;border-radius:24px;padding:26px;box-shadow:0 24px 60px rgba(28,48,110,.10),0 8px 24px rgba(28,48,110,.06)}.login-unss-footer{display:flex;justify-content:center;margin-top:16px;padding-top:14px;border-top:1px solid #e8edf8}.login-unss-logo{height:72px;width:auto;object-fit:contain}.login-logo{width:178px;margin:0 auto 12px;padding:12px;background:#fff;border:1px solid #dce5fb;border-radius:18px;box-shadow:0 10px 24px rgba(23,53,159,.08)}.login-logo img{display:block;width:100%;height:auto}.login-title{text-align:center;font-size:20px;font-weight:900;margin:6px 0 20px}.login-card label{font-weight:800;display:block;margin:12px 0 5px}.login-card .btn{width:100%;min-height:48px;border-radius:14px;margin-top:16px}.login-status{text-align:center;color:#b91c1c;margin-top:10px;min-height:18px}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.35);display:none;align-items:center;justify-content:center;z-index:50}.modal{background:#fff;border-radius:5px;box-shadow:0 12px 50px rgba(0,0,0,.25);width:min(980px,calc(100vw - 30px));max-height:calc(100vh - 30px);overflow:auto}.modal-header{background:var(--blue);color:#fff;padding:14px 18px;font-weight:700;display:flex;justify-content:space-between}.modal-body{padding:18px}.switch{display:flex;align-items:center;gap:9px}.switch input{width:auto}.alert{padding:12px 14px;border-radius:4px;border:1px solid #bfdbfe;background:#dbeafe;color:#1e3a8a}.equipment-results{display:grid;gap:8px;margin-top:8px}.equipment-item{padding:10px;border:1px solid #d5dce3;border-radius:4px;background:#fff;cursor:pointer}.equipment-item:hover{background:#f0f9ff}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab-btn.active{background:#2196f3;border-color:#2196f3;color:#fff}.tab-panel{display:none}.tab-panel.active{display:block}.mobile-menu{display:none}.hidden{display:none!important}
.sidebar-news{margin:14px 14px 16px;padding:12px 14px;background:#f0f7ff;border:1px solid #cfe3fb;border-left:3px solid var(--blue);border-radius:6px}.sidebar-news-title{font-weight:800;font-size:12px;color:#0d6efd;margin-bottom:6px;display:flex;align-items:center;gap:6px}.sidebar-news-body{font-size:12px;color:#374151;line-height:1.5;word-break:break-word}.sidebar-news-date{font-size:10px;color:#6b7280;margin-top:8px;font-style:italic}.sidebar-news-preview-wrap .sidebar-news{margin:0;max-width:320px}
@media (max-width:900px){.sidebar-news{margin:10px}}
@media (max-width: 900px){.sidebar{display:none}.layout{display:block}.mobile-menu{display:flex}.navbar{gap:8px}.brand{min-width:auto}.brand-title small{display:none}.grid-2,.grid-3,.grid-4,.counter-grid{grid-template-columns:1fr}.content{padding:12px}.page-header{padding:18px}.breadcrumb-line{font-size:12px;overflow:auto}.table thead{display:none}.table,.table tbody,.table tr,.table td{display:block;width:100%}.table tr{border:1px solid #e5e7eb;border-radius:8px;margin-bottom:10px;background:#fff}.table td{border-bottom:0}.table td::before{content:attr(data-label);display:block;font-size:11px;text-transform:uppercase;color:#6b7280;font-weight:700;margin-bottom:4px}.counter-grid{gap:8px}.navbar .season-badge{display:none}}

/* Personnalisation UNSS Académie de Créteil */
:root{
  --opuss-dark:#17359f;
  --opuss-dark-2:#102978;
  --blue:#17359f;
  --blue-700:#102978;
  --light-blue:#eef3ff;
}
html,body,button,input,select,textarea,h1,h2,h3,p,li,a,span,div,label,strong,small{
  font-family:'Nunito',Arial,sans-serif !important;
}
.navbar{background:var(--opuss-dark)}
.brand img{height:38px;width:auto;object-fit:contain}.navbar{position:relative}.navbar-logo-center{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;pointer-events:none}.navbar-logo-center img{height:44px;width:auto;object-fit:contain}
.side-link:hover,.side-link.active{background:var(--light-blue);color:var(--blue);border-left-color:var(--blue)}
.card.border-top-blue{border-top-color:var(--blue)}
.form-field label,.fieldset-title{color:var(--blue);border-bottom-color:var(--blue)}
.form-field input[type="checkbox"],.form-field input[type="radio"]{width:16px;height:16px;min-height:0;padding:0;border:0;margin-right:6px;accent-color:var(--blue);cursor:pointer;vertical-align:middle;flex-shrink:0}
.tab-btn.active{background:var(--blue);border-color:var(--blue);color:#fff}
.alert{border-color:#bfd0fb;background:#eaf1ff;color:#17359f}
.login-page{background:linear-gradient(180deg,#eef3ff,#f8fafc)}
.login-logo{width:260px;max-width:78vw;border-color:#dce5fb;box-shadow:0 10px 24px rgba(23,53,159,.10)}
.login-logo img{max-height:150px;object-fit:contain}
.login-title{color:#172b86}
.avatar{background:#e6003c}
.btn-primary{background:var(--blue);border-color:var(--blue)}
.btn-outline{color:var(--blue);border-color:var(--blue)}
.btn-outline:hover{background:var(--light-blue)}
.equipment-search-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.95fr);gap:18px;align-items:start}
.equipment-search-panel,.equipment-map-panel{min-width:0}
.equipment-filter-grid{grid-template-columns:2fr .9fr 1.2fr}
.equipment-map{width:100%;height:300px;border:1px solid #d5dce3;border-radius:4px;overflow:hidden;background:#eef3ff}
.equipment-map-panel .small{margin-top:6px}
.equipment-item strong{color:#172b86}
.equipment-item:hover{background:#eef3ff;border-color:#bfd0fb}
@media (max-width: 1100px){
  .equipment-search-grid{grid-template-columns:1fr}
  .equipment-map{height:260px}
}
@media (max-width: 900px){
  .brand img{height:34px}
  .equipment-filter-grid{grid-template-columns:1fr}
  .equipment-map{height:240px}
}

/* V04 - Recherche AS dynamique + installation unifiée */
.as-picker{position:relative;z-index:12}
.as-results{display:none;position:absolute;left:0;right:0;top:100%;z-index:40;background:#fff;border:1px solid #d5dce3;border-top:none;box-shadow:0 12px 28px rgba(15,23,42,.14);max-height:320px;overflow:auto;border-radius:0 0 6px 6px}
.as-results.open{display:block}
.as-result-item{width:100%;border:0;background:#fff;text-align:left;padding:10px 12px;cursor:pointer;border-bottom:1px solid #eef2f7;font:inherit;color:#102978}
.as-result-item:hover,.as-result-item:focus{background:#eef3ff;outline:none}
.as-result-item strong{display:block;font-weight:800;color:#102978;margin-bottom:2px}
.as-result-item span{display:block;font-size:12px;color:#64748b}
.as-result-empty{padding:10px 12px;color:#64748b;font-size:12px}

/* V58 - Liste animateurs fiable au clic */
.animateur-picker{position:relative;z-index:11}
.animateur-results{display:none;position:absolute;left:0;right:0;top:100%;z-index:41;background:#fff;border:1px solid #d5dce3;border-top:none;box-shadow:0 12px 28px rgba(15,23,42,.14);max-height:320px;overflow:auto;border-radius:0 0 6px 6px}
.animateur-results.open{display:block}
.animateur-result-item{width:100%;border:0;background:#fff;text-align:left;padding:10px 12px;cursor:pointer;border-bottom:1px solid #eef2f7;font:inherit;color:#102978}
.animateur-result-item:hover,.animateur-result-item:focus{background:#eef3ff;outline:none}
.animateur-result-item strong{display:block;font-weight:800;color:#102978;margin-bottom:2px}
.animateur-result-item span{display:block;font-size:12px;color:#64748b}
.animateur-result-empty{padding:10px 12px;color:#64748b;font-size:12px}

.equipment-search-grid{display:none!important}
.equipment-unified-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:18px;align-items:start;margin-top:12px}
.equipment-form-panel,.equipment-map-panel{min-width:0}
.equipment-subtitle{font-weight:900;color:#172b86;margin:0 0 10px 0}
.manual-install-card{margin-top:14px;padding:14px;border:1px solid #dbe5f4;background:#fbfdff;border-radius:6px}
.manual-map-actions{margin-top:10px}
.equipment-map{height:360px}
.equipment-item{transition:background .15s ease,border-color .15s ease,transform .15s ease}
.equipment-item:hover{transform:translateY(-1px)}
.leaflet-marker-icon{cursor:grab}
.leaflet-marker-icon:active{cursor:grabbing}
@media (max-width: 1100px){
  .equipment-unified-grid{grid-template-columns:1fr}
  .equipment-map{height:300px}
}
@media (max-width: 900px){
  .equipment-unified-grid{grid-template-columns:1fr}
  .manual-install-card .grid-4{grid-template-columns:1fr}
  .equipment-map{height:260px}
}

/* V05 - Installation sportive sans doublons + carte stabilisée */
.equipment-main-grid{grid-template-columns:1fr 1fr}
.equipment-address-grid{grid-template-columns:1.4fr .7fr .9fr;margin-top:14px}
.equipment-map{position:relative;display:block;min-height:360px;background:#eef3ff}
.equipment-map .leaflet-tile-container img{max-width:none!important;max-height:none!important}
.equipment-map-panel{align-self:stretch}
@media (max-width:1100px){
  .equipment-main-grid,.equipment-address-grid{grid-template-columns:1fr}
}


/* V06 - Correctif Leaflet : tuiles complètes + curseur autonome */
#equipment-map.equipment-map,
#equipment-map.leaflet-container{
  width:100%!important;
  height:360px!important;
  min-height:360px!important;
  max-height:none!important;
  position:relative!important;
  overflow:hidden!important;
  background:#e8eef7!important;
}
#equipment-map .leaflet-pane,
#equipment-map .leaflet-map-pane,
#equipment-map .leaflet-tile-pane,
#equipment-map .leaflet-overlay-pane,
#equipment-map .leaflet-shadow-pane,
#equipment-map .leaflet-marker-pane,
#equipment-map .leaflet-tooltip-pane,
#equipment-map .leaflet-popup-pane{
  position:absolute!important;
  left:0;
  top:0;
}
#equipment-map .leaflet-tile,
#equipment-map img.leaflet-tile{
  width:256px!important;
  height:256px!important;
  max-width:none!important;
  max-height:none!important;
  min-width:0!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  display:block!important;
  object-fit:initial!important;
  box-sizing:content-box!important;
}
#equipment-map .leaflet-control-container img,
#equipment-map .leaflet-marker-icon,
#equipment-map .leaflet-marker-shadow{
  max-width:none!important;
  max-height:none!important;
}
.equipment-map-pin{
  width:30px!important;
  height:42px!important;
  margin-left:-15px!important;
  margin-top:-42px!important;
  background:transparent!important;
  border:0!important;
}
.equipment-map-pin span{
  position:absolute;
  left:5px;
  top:1px;
  width:20px;
  height:20px;
  background:#17359f;
  border:3px solid #fff;
  border-radius:50% 50% 50% 0;
  transform:rotate(-45deg);
  box-shadow:0 3px 8px rgba(0,0,0,.35);
}
.equipment-map-pin span::after{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:6px;
  height:6px;
  transform:translate(-50%,-50%);
  background:#fff;
  border-radius:50%;
}
@media (max-width:900px){
  #equipment-map.equipment-map,#equipment-map.leaflet-container{height:280px!important;min-height:280px!important}
}

/* V11 - catégories ouvertes, filtres rapides et navigation DT */
.quick-filter-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.category-pill{display:inline-flex;align-items:center;margin:2px 4px 2px 0;padding:3px 8px;border-radius:999px;background:#eef3ff;border:1px solid #bfd0fb;color:#172b86;font-size:12px;font-weight:800}
.form-field textarea#act-categories{min-height:120px}
.tab-btn.active.btn-primary,.quick-filter-row .btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}
@media print{.navbar,.sidebar,.breadcrumb-line,.actions{display:none!important}.layout{display:block}.content-wrapper{margin:0}}

/* V12 - page de garde OPUSS, inscriptions fermées, spécificités */
.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.equipment-hours-grid{margin-top:14px}
.result-pill{display:inline-flex;align-items:center;justify-content:center;background:#e7f8f5;color:#0f766e;border:1px solid #99f6e4;padding:7px 12px;border-radius:3px;font-weight:900}
.compta-archive-banner{display:inline-flex;align-items:center;gap:6px;background:#fff8e1;color:#8a6100;border:1px solid #ffe082;padding:7px 12px;border-radius:3px;font-weight:800}
.synth-filter-card .card-body{padding-top:18px}
.opuss-filter-grid .form-field label{font-size:13px;color:var(--blue);border-bottom:2px solid var(--blue);padding-bottom:8px;margin-bottom:10px}
.synth-table{font-size:13px}
.synth-table th{background:#fff;white-space:nowrap;border-bottom:1px solid #bdbdbd}
.synth-table .group-row td{background:#9b9b9b!important;color:#fff;font-weight:900;text-transform:uppercase;padding:8px 10px;border-bottom:0}
.synth-table tbody tr:not(.group-row):hover{background:#f8fbff}
.ok{color:#15803d;font-size:16px;font-weight:900}.ko{color:#dc2626;font-size:16px;font-weight:900}
.icon-search-btn{min-width:34px;justify-content:center}
.detail-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.detail-summary-grid h3{margin:.2rem 0 .4rem;color:#172b86}
.spec-pill{background:#f5f3ff;border-color:#ddd6fe;color:#5b21b6}
@media(max-width:1100px){.grid-5{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-summary-grid{grid-template-columns:1fr}}
@media(max-width:900px){.grid-5{grid-template-columns:1fr}.synth-table .group-row td{display:block}.opuss-filter-grid{grid-template-columns:1fr}}


/* V13 - page Équipes, impression filtrée et listing centré */
.side-icon{display:inline-flex;min-width:1.15em;align-items:center;justify-content:center;margin-right:2px}
.side-link{gap:8px}
.page-header-with-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.page-header-with-actions .btn{white-space:nowrap}
.synth-filter-card #quick-activity-row{display:none!important}
.synth-table{border-collapse:collapse}
.synth-table th,
.synth-table td{text-align:center;vertical-align:middle;border-bottom:1px solid #d1d5db;border-left:1px solid #e5e7eb;border-right:1px solid #e5e7eb}
.synth-table tbody tr:not(.group-row) td{background:#fff}
.synth-table tbody tr:not(.group-row):nth-child(even) td{background:#fcfcfc}
.synth-table tbody tr:not(.group-row):hover td{background:#f3f7ff}
.synth-table .group-row td{text-align:left;border-left:1px solid #8f8f8f;border-right:1px solid #8f8f8f}
.synth-table .group-row td.group-toggle-cell{text-align:center;padding:4px 0}
.as-code-link{white-space:nowrap;color:var(--blue);font-weight:900;text-decoration:underline;text-underline-offset:2px;display:inline-block}
.synth-table th:nth-child(3),.synth-table td:nth-child(3){white-space:nowrap;min-width:96px}
.synth-table th:nth-child(4),.synth-table td:nth-child(4){white-space:nowrap;min-width:70px}
@media print{.synth-filter-card,.page-header-with-actions .btn{display:none!important}}
@media(max-width:900px){.page-header-with-actions{align-items:flex-start}.page-header-with-actions .btn{width:100%}.as-code-link{white-space:normal}}


/* V15 - Décompte par département sur les lignes de groupe */
.synth-table .group-row-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  width:100%;
}
.synth-table .group-title{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.synth-table .group-counts{
  display:inline-flex;
  align-items:center;
  gap:10px;
  white-space:nowrap;
  margin-left:auto;
  font-size:12px;
  font-weight:900;
}
.synth-table .group-counts span{
  display:inline-flex;
  align-items:center;
}
@media(max-width:900px){
  .synth-table .group-row-inner{flex-direction:column;align-items:flex-start;gap:4px}
  .synth-table .group-counts{margin-left:0;flex-wrap:wrap;white-space:normal;font-size:11px}
}

/* Tableau de bord admin : recherche rapide */
.dashboard-filter-card{margin-bottom:16px}
.dashboard-filter-actions{align-items:stretch}
.dashboard-filter-actions input,
.dashboard-filter-actions select{border:1px solid #d5dce3;border-radius:3px;padding:9px 12px;min-height:38px;font:inherit;background:#fff}
.dashboard-filter-input{min-width:320px;flex:1}
.dashboard-quick-row{margin-top:10px}
.dashboard-quick-row .btn{border-radius:3px}
#dashboard-table th:nth-child(n+3),#dashboard-table td:nth-child(n+3){text-align:center}
@media(max-width:900px){.dashboard-filter-input{min-width:100%}.dashboard-filter-actions input,.dashboard-filter-actions select,.dashboard-filter-actions .btn{width:100%}}

/* v17 : sélection activité puis catégories */
.category-open-table td,.category-open-table th{vertical-align:middle}
.category-open-table td:nth-child(2){font-weight:800;color:var(--blue)}
.category-open-table th:nth-child(5),.category-open-table td:nth-child(5){text-align:center}
#category-picker-card{border-top:2px solid var(--blue)}
#team-form{border-top:2px solid var(--blue)}

.admin-cat-line{
  display:flex;
  flex-wrap:wrap;
  gap:6px 12px;
  align-items:center;
  padding:6px 0;
  border-bottom:1px solid #e5e7eb;
}
.admin-cat-line:last-child{border-bottom:none}
.admin-cat-line strong{min-width:220px;color:var(--blue)}
.admin-cat-line span{font-size:.86rem;color:#4b5563}
.activity-category-editor input{
  width:100%;
  padding:7px 8px;
  border:1px solid #d1d5db;
  border-radius:4px;
  font-family:inherit;
}
.activity-category-editor th,.activity-category-editor td{vertical-align:middle}

/* v21 - Membres CMD / CMR */
.commission-animator-picker{position:relative;z-index:15}
.commission-checks{display:flex;gap:16px;align-items:center;min-height:38px;padding:8px 0}
.commission-checks label{border:0!important;margin:0!important;padding:0!important;color:var(--text)!important;font-weight:800;display:inline-flex;gap:6px;align-items:center}
.commission-checks input{width:auto!important;min-height:0!important}
.commission-table th,.commission-table td{vertical-align:middle}
.commission-table th:nth-child(2),.commission-table td:nth-child(2),
.commission-table th:nth-child(3),.commission-table td:nth-child(3){text-align:center;white-space:nowrap}
.print-title{display:none;align-items:center;gap:20px;margin-bottom:14px}
.print-title img{height:70px;width:auto;object-fit:contain}.print-title h2{margin:0;color:#111827}.print-title p{margin:4px 0 0;color:#374151}
@media print{
  @page{size:landscape;margin:10mm}
  .navbar,.sidebar,.breadcrumb-line,.page-header,.commissions-print-hide{display:none!important}
  .layout{display:block}.content-wrapper{margin:0}.content{padding:0}
  .card{border:0;box-shadow:none;margin:0;page-break-inside:auto}.card-header{border:0;padding:0 0 8px}.card-body{padding:0}.print-title{display:flex!important}
  /* Reset CSS responsive mobile sur .table pour rétablir l'affichage horizontal */
  .table,.table tbody,.table tr{display:table!important;border-radius:0!important;margin:0!important}
  .table tbody{display:table-row-group!important}
  .table tr{display:table-row!important;border:none!important}
  .table thead{display:table-header-group!important}
  .table td,.table th{display:table-cell!important;width:auto!important}
  .table td::before{display:none!important}
  .commission-table{font-size:9px;width:100%!important;border-collapse:collapse!important}.commission-table th,.commission-table td{padding:5px 6px;border:1px solid #ccc}.commission-table th{background:#2f879f!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.commission-table .status{padding:2px 5px;min-width:0;font-size:8px}.as-code-link{font-size:9px}
}
@media(max-width:900px){.commission-checks{align-items:flex-start;flex-direction:column;gap:6px}}

/* V22 - Membres CMD/CMR : regroupement par activité avec barre grise repliable */
.commission-table .commission-group-row td{
  background:#9b9b9b!important;
  color:#fff!important;
  padding:0!important;
  border-bottom:0!important;
  border-top:1px solid #8f8f8f!important;
  border-left:1px solid #8f8f8f!important;
  border-right:1px solid #8f8f8f!important;
}
.commission-group-toggle{
  width:100%;
  border:0;
  background:transparent;
  color:#fff;
  cursor:pointer;
  font:inherit;
  font-weight:900;
  text-transform:uppercase;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:9px 12px;
  text-align:left;
}
.commission-group-toggle:hover{background:rgba(0,0,0,.08)}
.commission-group-title{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.commission-group-chevron{font-size:11px;line-height:1;display:inline-flex;align-items:center;justify-content:center;min-width:12px;text-align:left}
.commission-group-count{font-size:12px;font-weight:800;text-transform:none;opacity:.96;white-space:nowrap}
.commission-member-hidden{display:none!important}
/* Boutons filtre type établissement */
.etab-type-btn{background:#fff;border-color:#cfd8dc;color:#374151;transition:background .15s,border-color .15s,color .15s}
.etab-type-btn.etab-type-active{background:var(--blue);border-color:var(--blue);color:#fff}
.etab-type-btn:hover:not(.etab-type-active){background:#eaf4ff;border-color:var(--blue);color:var(--blue)}
/* Activités rapides pliables */
.commission-quick-selected-label{color:var(--blue);font-weight:700}
.commission-quick-collapsed .quick-act-hidden{display:none!important}
#commission-quick-toggle{padding:2px 0;cursor:pointer}
.quick-act-btn{transition:background .12s,border-color .12s}
/* Toggle mode membre externe */
.member-mode-btn{background:#fff;border-color:#cfd8dc;color:#374151;transition:background .15s,border-color .15s,color .15s}
.member-mode-btn.member-mode-active{background:var(--blue);border-color:var(--blue);color:#fff}
.member-mode-btn:hover:not(.member-mode-active){background:#eaf4ff;border-color:var(--blue);color:var(--blue)}
.required-star{color:#b91c1c;margin-left:2px}
/* Badge membre externe dans le listing */
.badge-ext{display:inline-block;padding:2px 6px;border-radius:3px;background:#f0f4ff;border:1px solid #1a3a8a;color:#1a3a8a;font-weight:800;font-size:11px}
/* === Boutons scroll haut/bas (fixe, suit le scroll) === */
.scroll-nav-btn{position:fixed;right:18px;z-index:9999;width:38px;height:38px;border-radius:50%;border:2px solid rgba(21,101,192,.25);background:rgba(255,255,255,.85);color:rgba(21,101,192,.5);font-size:20px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .18s,color .18s,border-color .18s,opacity .25s,transform .25s;box-shadow:0 2px 10px rgba(0,0,0,.12);opacity:.6;line-height:1;padding:0;backdrop-filter:blur(4px)}
.scroll-nav-btn:hover{background:#1565c0;color:#fff;border-color:#1565c0;opacity:1}
.scroll-nav-btn.scroll-invisible{opacity:0;pointer-events:none;transform:scale(.75)}
#scroll-to-bottom{bottom:30px}
#scroll-to-top{bottom:76px}
/* === Panneau survol pour toutes cellules tronquées (copier-coller possible) === */
.trunc-cell{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:default}
.trunc-cell:hover .trunc-tip{display:block}
.trunc-tip{display:none;position:absolute;left:0;top:calc(100% + 4px);z-index:500;background:#fff;border:1px solid #c8d0e0;border-radius:4px;box-shadow:0 4px 18px rgba(0,0,0,.16);padding:6px 10px;white-space:normal;word-break:break-all;min-width:180px;max-width:400px;font-size:12px;line-height:1.5;color:#111;pointer-events:auto;user-select:text;cursor:text}
/* Pour les cellules en fin de tableau, ouvrir vers la gauche */
.trunc-cell.tip-left .trunc-tip{left:auto;right:0}

/* === Tooltip autres activités dépliable === */
.other-acts-cell{position:relative;display:inline-block;max-width:108px}
.other-acts-preview{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-size:12px}
.other-acts-preview:hover{color:#1565c0;text-decoration:underline}
.other-acts-more{font-size:11px;font-weight:700;color:#1565c0;margin-left:3px}
.other-acts-tooltip{display:none;position:absolute;left:calc(100% + 6px);top:-4px;z-index:400;background:#fff;border:1px solid #c8d0e0;border-radius:4px;box-shadow:0 4px 18px rgba(0,0,0,.16);padding:8px 12px;min-width:220px;max-width:380px;font-size:12px;white-space:nowrap;line-height:1.7}
.other-acts-cell:hover .other-acts-tooltip,.other-acts-cell.pinned .other-acts-tooltip{display:block}
.commission-popup-line{padding:2px 0;border-bottom:1px solid #eee;white-space:nowrap}
.commission-popup-line:last-child{border-bottom:0}
.activity-popup-cell{display:block;width:100%;max-width:100%}
.activity-popup-preview{font-weight:600}
.activity-popup-tooltip{min-width:240px;max-width:440px}
/* Dropdown Fonction select */
.fonction-select-wrap{position:relative}
#member-fonction-select{width:100%;border:1px solid #d5dce3;border-radius:3px;padding:10px 12px;background:#fff;min-height:38px;font:inherit}
#member-fonction-select:disabled{background:#f5f7fa;color:#6b7280}
/* grid-6 */
.grid-6{grid-template-columns:repeat(6,minmax(0,1fr))}

@media(max-width:900px){
  .commission-group-toggle{align-items:flex-start;flex-direction:column;gap:4px}
  .commission-group-title,.commission-group-count{white-space:normal}
  .commission-table .commission-group-row td{display:block;width:100%}
  .commission-etab-filter-row{flex-wrap:wrap}
}
@media print{
  .commission-member-hidden{display:table-row!important}
  .commission-table .commission-group-row td{background:#777!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .commission-group-toggle{padding:6px 8px;color:#fff!important}
}

/* V24 - Administration activités : filtre déroulant + libellé CA */
.admin-activity-list-tools{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom:14px;
}
.admin-activity-filter-field{
  width:min(420px,100%);
  margin:0;
}
.admin-activity-filter-field label{margin-bottom:6px}
.admin-activities-table-wrap{
  max-height:520px;
  overflow:auto;
  border:1px solid #e5e7eb;
  border-radius:4px;
}
.admin-activities-table-wrap .table th{
  position:sticky;
  top:0;
  z-index:2;
}
#activities-filter-count{
  padding:0 0 10px 0;
}
@media(max-width:900px){
  .admin-activity-list-tools{align-items:stretch}
  .admin-activity-filter-field{width:100%}
  #activities-filter-count{padding:0}
}

/* Administration > Activités : tableau sobre */
#tab-activities #act-activity{
  background:#f8fafc;
  border-color:#cfd8e3;
  font-weight:500;
  color:#111827;
}

#tab-activities #act-activity::placeholder{
  color:#6b7280;
  font-weight:400;
}

#activities-table thead th{
  background:#e5e5e5;
  color:#111827;
  font-weight:700;
  border-bottom:1px solid #cfcfcf;
}

#activities-table tbody tr:nth-child(odd),
#activities-table tbody tr:nth-child(odd) td{
  background:#ffffff;
}

#activities-table tbody tr:nth-child(even),
#activities-table tbody tr:nth-child(even) td{
  background:#f7f7f7;
}

#activities-table tbody tr:hover,
#activities-table tbody tr:hover td{
  background:#f0f0f0;
}

#activities-table tbody td{
  border-bottom:1px solid #e3e3e3;
  font-weight:400;
}

#activities-table tbody td:first-child{
  font-weight:400;
}

/* Administration > Activités : centrage du tableau catégories / dates */
#act-categories-table th,
#act-categories-table td{
  text-align:center;
  vertical-align:middle;
}

#act-categories-table input{
  text-align:center;
}

#act-categories-table .cat-name{
  text-align:center;
}

/* V32 - badge CMD/CMR autorisée plus visible */
.status.qualifiee{
  background:#d9efe0;
  color:#0f6b3c;
  border:1px solid #abd4b8;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}

/* V33 - pop-up activité, options et saisie multiple */
.activity-modal{width:min(1180px,calc(100vw - 30px));}
.bulk-modal{width:min(850px,calc(100vw - 30px));}
#bulk-lines{min-height:220px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;}
.toggle-row{display:flex!important;align-items:center;gap:9px;border:0!important;margin:0!important;padding:0!important;color:#111827!important;font-weight:700!important;cursor:pointer;}
.toggle-row input{position:absolute;opacity:0;pointer-events:none;}
.toggle-dot{width:42px;height:24px;border-radius:999px;background:#d1d5db;position:relative;display:inline-flex;flex:0 0 42px;transition:.18s ease;}
.toggle-dot::after{content:'';position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;left:3px;top:3px;box-shadow:0 1px 4px rgba(0,0,0,.25);transition:.18s ease;}
.toggle-row input:checked + .toggle-dot{background:var(--blue,#1f36a3);}
.toggle-row input:checked + .toggle-dot::after{transform:translateX(18px);}
.option-pill{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:800;margin:2px 4px 2px 0;background:#eef2ff;color:#1e3a8a;border:1px solid #c7d2fe;}
.option-pill.off{background:#f3f4f6;color:#6b7280;border-color:#d1d5db;}
.category-actions-cell{min-width:230px;text-align:center;vertical-align:middle!important;}
.bulk-action-row{display:grid;grid-template-columns:116px 104px;gap:6px;justify-content:center;align-items:center;white-space:nowrap;}
.bulk-action-row .btn{width:100%;min-height:34px;}
.bulk-action-row .btn-placeholder{display:block;width:104px;min-height:34px;}
.bulk-action-row-closed{grid-template-columns:136px;}
.bulk-action-row-closed .btn{width:136px;}

/* V34 - options par catégorie */
.activity-category-editor th,
.activity-category-editor td{
  white-space:nowrap;
}
.mini-toggle{
  justify-content:center;
  margin:0 auto;
  min-width:auto;
}
.mini-toggle .toggle-dot{
  margin-right:0;
}
.admin-cat-options-line{
  gap:8px;
  align-items:center;
}
.admin-cat-options-line .option-pill{
  margin-right:0;
}

/* V36 - Administration activités : formulaire inline et listing compact */
#activity-form-card{
  margin-top:16px;
}
#activity-form-card.form-focus-pulse{
  box-shadow:0 0 0 3px rgba(33,150,243,.14);
}

#activities-table{
  table-layout:auto;
}
#activities-table th,
#activities-table td{
  vertical-align:middle;
}
#activities-table th:nth-child(1),
#activities-table td:nth-child(1){
  width:150px;
  white-space:nowrap;
}
#activities-table th:nth-child(2),
#activities-table td:nth-child(2){
  min-width:620px;
}
#activities-table th:nth-child(3),
#activities-table td:nth-child(3){
  width:130px;
  text-align:center;
}
#activities-table th:nth-child(4),
#activities-table td:nth-child(4){
  width:120px;
  text-align:center;
}
#activities-table th:nth-child(5),
#activities-table td:nth-child(5){
  width:70px;
  text-align:center;
}
#activities-table th:nth-child(6),
#activities-table td:nth-child(6){
  width:130px;
  text-align:center;
}

.admin-cat-line-compact{
  display:grid;
  grid-template-columns:minmax(190px,1.25fr) repeat(4, minmax(116px,.78fr)) minmax(250px,1.35fr);
  gap:6px 10px;
  align-items:center;
  padding:5px 0;
}
.admin-cat-line-compact strong{
  min-width:0;
  color:var(--blue);
  font-weight:800;
}
.admin-cat-line-compact span{
  font-size:12px;
  color:#374151;
}
.admin-cat-options{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  justify-content:flex-start;
}
.admin-cat-options .option-pill{
  margin:0;
  padding:2px 6px;
  font-size:11px;
  line-height:1.25;
}

.activity-category-editor{
  min-width:1120px;
}
.activity-category-editor th,
.activity-category-editor td{
  padding:7px 6px;
}
.activity-category-editor input{
  min-height:34px;
  padding:6px 7px;
}
.activity-category-editor .cat-name{
  min-width:250px;
}
.activity-category-editor .deadline-input{
  min-width:170px;
}
.activity-category-editor .cat-cf{
  min-width:130px;
}
.activity-category-editor th:nth-child(6),
.activity-category-editor th:nth-child(7),
.activity-category-editor th:nth-child(8),
.activity-category-editor td:nth-child(6),
.activity-category-editor td:nth-child(7),
.activity-category-editor td:nth-child(8){
  width:90px;
  white-space:normal;
  font-size:12px;
}
.mini-toggle .toggle-dot{
  transform:scale(.86);
}

/* V37 - lignes activités compactes type OPUSS */
#activities-table th,
#activities-table td{
  padding:8px 10px;
  line-height:1.25;
}

#activities-table td{
  vertical-align:middle;
}

#activities-table th:nth-child(2),
#activities-table td:nth-child(2){
  min-width:860px;
  white-space:nowrap;
}

.admin-cat-line-compact{
  display:flex;
  align-items:center;
  flex-wrap:nowrap;
  gap:10px;
  padding:0;
  min-height:32px;
  white-space:nowrap;
  border-bottom:0;
}

.admin-cat-line-compact strong{
  min-width:210px;
  max-width:260px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.admin-cat-line-compact span{
  white-space:nowrap;
  font-size:12px;
}

.admin-cat-options{
  display:inline-flex;
  flex-wrap:nowrap;
  gap:4px;
  align-items:center;
  margin-left:6px;
  white-space:nowrap;
}

.admin-cat-options .option-pill{
  padding:2px 6px;
  font-size:10.5px;
  line-height:1.15;
  margin:0;
  white-space:nowrap;
}

#activities-table .status{
  min-width:76px;
  padding:4px 8px;
}

#activities-table .btn-sm{
  padding:6px 9px;
}

/* V38 - grand pop-up pour les activités */
.activity-modal-large{
  width:min(1500px, calc(100vw - 28px));
}
.activity-modal-large .modal-body{
  max-height:calc(100vh - 120px);
  overflow:auto;
}
.activity-modal-large h3{
  margin-top:0;
}
.activity-modal-large .grid.grid-3{
  align-items:end;
}
.activity-modal-large .activity-category-editor{
  min-width:1380px;
}
.activity-modal-large .actions{
  position:sticky;
  bottom:0;
  background:#fff;
  padding-top:10px;
  margin-top:12px;
}

/* V43 - interrupteurs activité robustes */
.admin-switch{
  width:42px;
  height:24px;
  border:0;
  border-radius:999px;
  background:#cbd5e1;
  position:relative;
  display:inline-flex;
  align-items:center;
  padding:0;
  cursor:pointer;
  vertical-align:middle;
  transition:background .18s ease;
}
.admin-switch span{
  position:absolute;
  width:18px;
  height:18px;
  border-radius:50%;
  background:#fff;
  left:3px;
  top:3px;
  box-shadow:0 1px 4px rgba(0,0,0,.25);
  transition:transform .18s ease;
}
.admin-switch.is-on{
  background:var(--blue,#1f36a3);
}
.admin-switch.is-on span{
  transform:translateX(18px);
}
.activity-category-editor td:nth-child(6),
.activity-category-editor td:nth-child(7),
.activity-category-editor td:nth-child(8),
.activity-category-editor td:nth-child(9){
  text-align:center;
}
.admin-cat-line-compact.is-inactive{opacity:.62;}
.admin-cat-line-compact.is-inactive strong{text-decoration:line-through;}

/* V45 - Équipes : flèche de groupe et suppression */
.group-row-inner{
  display:flex;
  align-items:center;
  gap:8px;
}
.group-toggle-cell{
  width:34px;
  text-align:center;
  vertical-align:middle;
  padding:4px 0;
  border-left:1px solid #8f8f8f;
  border-right:1px solid #8f8f8f;
}
.group-toggle-btn{
  width:20px;
  height:20px;
  border:0;
  border-radius:4px;
  background:#7f7f7f;
  color:#fff;
  font-size:14px;
  font-weight:900;
  line-height:1;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
}
.group-toggle-btn:hover{
  background:#606060;
}
.synth-actions{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:6px;
  flex-wrap:nowrap;
}
.synth-actions .btn-danger{
  padding:6px 8px;
  font-size:12px;
}

/* V46 - compteur visible sur les barres grises équipes */
.group-counts{
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-left:auto;
  font-weight:800;
  color:#fff;
}
.group-counts span{
  white-space:nowrap;
}

/* V48 - inscription fermée */
.inscription-fermee-btn{
  background:#f3f4f6!important;
  color:#6b7280!important;
  border:1px solid #d1d5db!important;
  cursor:not-allowed!important;
  font-weight:800;
}


/* V53 - RAZ et journal des actions */
.raz-warning{
  border-color:#fecaca;
  background:#fff1f2;
  color:#991b1b;
}
.action-log-changes{
  margin-top:6px;
  line-height:1.45;
}
#action-log-table td:nth-child(4){
  min-width:360px;
}

/* Double authentification */
.two-factor-help{line-height:1.45;text-align:center;margin:-4px 0 12px}
.two-factor-remember{display:flex!important;align-items:center;gap:8px;border:0!important;padding:0!important;color:#334155!important;font-weight:800!important;margin:12px 0 0!important}
.two-factor-remember input{width:auto!important;min-height:0!important}
#two-factor-code{text-align:center;font-size:22px;font-weight:900;letter-spacing:8px}

/* V56 - Inscription AUCUNE EQUIPE et libellés obligatoire/facultatif */
.no-team-panel{
  border:1px dashed #93c5fd;
  background:#f8fbff;
  padding:12px;
  border-radius:6px;
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
}
.no-team-panel .small{flex:1 1 360px;}
.no-team-panel .no-team-dep-field{min-width:170px;margin:0;}
.no-team-panel .no-team-dep-field label{margin-bottom:6px;padding-bottom:5px;}
.status.aucune-equipe{background:#eef2ff;color:#3730a3;}
@media(max-width:900px){
  .no-team-panel{align-items:stretch;}
  .no-team-panel .btn,.no-team-panel .no-team-dep-field{width:100%;}
}

/* V57 - activités + catégories ouvertes / fermées */
.inscription-status-summary{
  margin:0 0 10px;
  padding:8px 10px;
  background:#f8fafc;
  border:1px solid #e5e7eb;
  border-radius:4px;
}
.inscription-filter-actions input,
.inscription-filter-actions select{
  min-height:38px;
  border:1px solid #d5dce3;
  border-radius:3px;
  background:#fff;
  font:inherit;
}
#admin-categories-table td:nth-child(9),
#archive-categories-table td:nth-child(9){
  min-width:150px;
}
#admin-categories-table td:nth-child(8),
#archive-categories-table td:nth-child(8){
  min-width:210px;
}


/* V59 - Administration : blocs de remontées repliables */
.collapsible-admin-card{overflow:hidden;}
.collapsible-admin-card > summary{list-style:none;cursor:pointer;user-select:none;}
.collapsible-admin-card > summary::-webkit-details-marker{display:none;}
.collapsible-summary{background:#fff;transition:background .18s ease;}
.collapsible-summary:hover{background:#f8fbff;}
.summary-chevron{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #dbe3ea;border-radius:999px;background:#fff;color:#1f36a3;font-weight:900;transition:transform .18s ease, background .18s ease;}
.collapsible-admin-card[open] .summary-chevron{transform:rotate(180deg);background:#eef6ff;}
.collapsible-help{margin-bottom:10px;}

/* V60 - bascule de vue des droits et impression CMD/CMR */
.view-switcher{
  display:flex;
  align-items:center;
  gap:6px;
  margin-right:4px;
}
.view-switcher label{
  color:#dbeafe;
  font-size:12px;
  font-weight:900;
}
.view-mode-select{
  min-height:32px;
  max-width:190px;
  border:1px solid rgba(255,255,255,.45);
  border-radius:6px;
  background:#fff;
  color:#102978;
  font-weight:800;
  padding:5px 8px;
}
.preview-badge{
  display:inline-flex;
  margin-left:6px;
  padding:1px 6px;
  border-radius:999px;
  background:#fef3c7;
  color:#92400e;
  font-size:10px;
  font-weight:900;
  vertical-align:middle;
}
.commissions-print-signature{display:none!important;}
.print-date-line{font-weight:800;color:#111827!important;margin-top:4px!important;}
@media print{
  .commissions-print-signature{display:table-cell!important;min-width:92px;height:30px;}
  .commission-table th.commissions-print-signature{background:#2f879f!important;color:#fff!important;}
  .commission-table td.commissions-print-signature{background:#fff!important;}
}
@media(max-width:900px){
  .user-pill{gap:6px;}
  .view-switcher{display:none;}
}

/* V62 - Affichage mot de passe */
.password-field{position:relative;display:block;width:100%;}
.password-field input{width:100%;padding-right:48px!important;}
.password-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:#eef2ff;color:#1f36a3;border-radius:999px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;font-weight:900;}
.password-toggle:hover,.password-toggle.is-visible{background:#dbeafe;}
.manager-pill{background:#ecfeff;color:#155e75;border-color:#a5f3fc;}
#user-managed-activities{min-height:140px;}
#users-table td:nth-child(5){min-width:220px;}

/* Commission table : scrollbar horizontale accessible */
.commission-table-wrap{overflow-x:scroll;overflow-y:visible;width:100%;-webkit-overflow-scrolling:touch;scrollbar-color:#6b82b0 #e8edf5;scrollbar-width:auto}
.commission-table-wrap::-webkit-scrollbar{height:10px;display:block}
.commission-table-wrap::-webkit-scrollbar-track{background:#e8edf5;border-radius:4px}
.commission-table-wrap::-webkit-scrollbar-thumb{background:#6b82b0;border-radius:4px;min-width:40px}
.commission-table-wrap::-webkit-scrollbar-thumb:hover{background:#1565c0}
.commission-horizontal-scrollbar{position:fixed;bottom:0;z-index:9998;height:20px;overflow-x:scroll;overflow-y:hidden;background:#f8fafc;border-top:1px solid #cbd5e1;box-shadow:0 -2px 8px rgba(15,23,42,.12);visibility:hidden;opacity:0;pointer-events:none;scrollbar-color:#516a9f #e8edf5;scrollbar-width:auto}
.commission-horizontal-scrollbar.is-visible{visibility:visible;opacity:1;pointer-events:auto}
.commission-horizontal-scrollbar-spacer{height:1px;min-width:1px}
.commission-horizontal-scrollbar::-webkit-scrollbar{height:16px;display:block}
.commission-horizontal-scrollbar::-webkit-scrollbar-track{background:#e8edf5}
.commission-horizontal-scrollbar::-webkit-scrollbar-thumb{background:#516a9f;border-radius:8px;border:3px solid #e8edf5;min-width:50px}
.commission-horizontal-scrollbar::-webkit-scrollbar-thumb:hover{background:#1565c0}

/* CMD/CMR/CMN : colonnes à largeur fixe */
.commission-table{table-layout:fixed;min-width:1900px;width:100%}
.commission-table th,.commission-table td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.commission-table th:nth-child(1),.commission-table td:nth-child(1){width:110px}  /* Activité */
.commission-table th:nth-child(2),.commission-table td:nth-child(2){width:90px}   /* Rôle */
.commission-table th:nth-child(3),.commission-table td:nth-child(3){width:46px;text-align:center} /* DEP */
.commission-table th:nth-child(4),.commission-table td:nth-child(4){width:86px;text-align:center} /* N° AS */
.commission-table th:nth-child(5),.commission-table td:nth-child(5){width:160px}  /* Établissement */
.commission-table th:nth-child(6),.commission-table td:nth-child(6){width:110px}  /* Ville */
.commission-table th:nth-child(7),.commission-table td:nth-child(7){width:155px}  /* Membre */
.commission-table th:nth-child(8),.commission-table td:nth-child(8){width:110px}  /* Fonction */
.commission-table th:nth-child(9),.commission-table td:nth-child(9){width:200px}  /* Mail */
.commission-table th:nth-child(10),.commission-table td:nth-child(10){width:115px} /* Téléphone */
.commission-table th:nth-child(11),.commission-table td:nth-child(11){width:200px} /* Mail CE */
.commission-table th:nth-child(12),.commission-table td:nth-child(12){overflow:visible;width:130px} /* Autres activités */
.commission-table th:nth-child(13),.commission-table td:nth-child(13){width:0;padding:0;border:none} /* Signature (hidden screen) */
.commission-table th:nth-child(14),.commission-table td:nth-child(14){width:120px;overflow:visible;white-space:nowrap} /* Actions */
.commission-table td.commission-activity-cell,.commission-table td.commission-establishment-cell,.commission-table td.commission-fonction-cell,.commission-table td.commission-other-activities-cell{overflow:visible}
.commission-table td.commission-member-name-cell,.commission-table td.commission-email-cell{white-space:normal;overflow:visible;text-overflow:clip}
.commission-member-name-full{display:block;white-space:normal;overflow-wrap:anywhere;line-height:1.3;font-weight:700}
.commission-email-full{display:block;white-space:pre-line;overflow-wrap:anywhere;word-break:break-word;line-height:1.3}
@media(max-width:900px){.commission-horizontal-scrollbar{display:none!important}}


/* V63 - Affectation multiple des activités aux utilisateurs */
.managed-activities-checkboxes{min-height:140px;max-height:240px;overflow:auto;border:1px solid #d5dce3;border-radius:3px;background:#fff;padding:8px;display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px;}
.managed-activity-option{display:flex;align-items:center;gap:8px;border:1px solid #e5e7eb;border-radius:8px;padding:7px 9px;font-weight:700;color:#1f2937;background:#fafafa;cursor:pointer;}
.managed-activity-option:hover{background:#eef6ff;border-color:#bfdbfe;}
.managed-activity-option input{width:auto!important;min-height:auto!important;margin:0;}

/* V64 - Sélecteur propre des activités gérées */
.user-managed-field{min-width:0;}
.managed-activities-selector{border:1px solid #d5dce3;border-radius:12px;background:#fff;overflow:hidden;}
.managed-activities-toggle{width:100%;border:0;background:#f8fafc;color:#0f172a;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;font-weight:900;cursor:pointer;border-bottom:1px solid #e5e7eb;}
.managed-activities-toggle:hover{background:#eef6ff;}
.managed-activities-arrow{font-size:16px;color:#1f36a3;}
.managed-activities-chips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px;border-bottom:1px solid #eef2f7;min-height:38px;align-items:center;}
.managed-chip{border:1px solid #a5f3fc;background:#ecfeff;color:#155e75;border-radius:999px;padding:4px 8px;display:inline-flex;align-items:center;gap:6px;font-weight:800;cursor:pointer;font-size:12px;max-width:230px;}
.managed-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.managed-chip strong{font-size:14px;line-height:1;}
.managed-chip:hover{background:#cffafe;}
.managed-activities-panel{padding:10px;background:#fff;}
.managed-activities-panel.is-collapsed{display:none;}
.managed-activities-tools{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-bottom:10px;flex-wrap:wrap;}
.managed-activities-tools input{min-width:260px;flex:1;padding:9px 10px;border:1px solid #cbd5e1;border-radius:8px;}
.managed-activities-actions{display:flex;gap:6px;flex-wrap:wrap;}
.managed-activities-checkboxes{min-height:110px;max-height:260px;overflow:auto;border:1px solid #d5dce3;border-radius:10px;background:#fff;padding:8px;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:7px;}
.managed-activity-option{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;border:1px solid #e5e7eb;border-radius:10px;padding:8px 9px;font-weight:800;color:#1f2937;background:#fafafa;cursor:pointer;min-width:0;}
.managed-activity-option span:not(.managed-activity-state){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.managed-activity-option:hover{background:#eef6ff;border-color:#bfdbfe;}
.managed-activity-option.is-selected{background:#eef2ff;border-color:#1f36a3;}
.managed-activity-option input{width:auto!important;min-height:auto!important;margin:0;}
.managed-activity-state{border-radius:999px;padding:2px 6px;font-size:10px;font-weight:900;text-transform:uppercase;white-space:nowrap;}
.managed-activity-state.is-open{background:#dcfce7;color:#166534;}
.managed-activity-state.is-closed{background:#fee2e2;color:#991b1b;}
.managed-label-summary{font-size:12px;margin-bottom:4px;color:#111827;}
.managed-label-pills{display:flex;gap:4px;flex-wrap:wrap;}
.manager-pill-more{background:#f1f5f9;color:#334155;border-color:#cbd5e1;}
@media(max-width:900px){
  .managed-activities-tools{display:block;}
  .managed-activities-tools input{width:100%;min-width:0;margin-bottom:8px;}
  .managed-activities-checkboxes{grid-template-columns:1fr;max-height:300px;}
}
.managed-activities-chips{max-height:90px;overflow:auto;}

/* V66 - Inscriptions individuelles */
.indiv-modal{max-width:1180px;width:96vw;}
.indiv-modal textarea{min-height:120px;}
.indiv-preview-wrap{max-height:360px;overflow:auto;border:1px solid #e5e7eb;border-radius:8px;}
.indiv-preview-table{min-width:980px;}
.indiv-preview-table th,.indiv-preview-table td{white-space:nowrap;}
.indiv-preview-table tr.is-error td{background:#fee2e2;color:#991b1b;font-weight:800;}
.admin-cat-line .option-pill{margin-left:4px;}
@media(max-width:900px){
  .indiv-modal{width:98vw;}
  .indiv-preview-wrap{max-height:320px;}
}


/* V67 - Impression individuelles, popup large et activités repliables */
.detail-modal{width:min(1500px, calc(100vw - 24px));}
.detail-modal .modal-body{max-height:calc(100vh - 110px);overflow:auto;}
.detail-modal .table-wrap{overflow-x:visible;}
.detail-modal .indiv-preview-table{min-width:0;width:100%;font-size:12px;}
.detail-modal .indiv-preview-table th,
.detail-modal .indiv-preview-table td{padding:9px 10px;}
.detail-modal .indiv-preview-table th:nth-child(5),
.detail-modal .indiv-preview-table td:nth-child(5){min-width:170px;}
.detail-modal .indiv-preview-table th:nth-child(8),
.detail-modal .indiv-preview-table td:nth-child(8){min-width:230px;white-space:normal;overflow-wrap:anywhere;}
.indiv-modal{max-width:1500px;width:98vw;}
.indiv-modal .indiv-preview-table{min-width:0;width:100%;font-size:12px;}
.indiv-modal .indiv-preview-table th:nth-child(8),
.indiv-modal .indiv-preview-table td:nth-child(8){white-space:normal;overflow-wrap:anywhere;min-width:220px;}
#activities-table{min-width:0;table-layout:auto;}
.admin-activities-table-wrap{overflow-x:hidden;}
#activities-table th:nth-child(1),
#activities-table td:nth-child(1){width:170px;white-space:nowrap;}
#activities-table th:nth-child(2),
#activities-table td:nth-child(2){min-width:0;width:auto;}
#activities-table th:nth-child(3),
#activities-table td:nth-child(3){width:150px;text-align:center;}
#activities-table th:nth-child(4),
#activities-table td:nth-child(4){width:150px;text-align:center;white-space:nowrap;}
#activities-table th:nth-child(n+5),
#activities-table td:nth-child(n+5){width:auto;}
.activity-extra-row.hidden{display:none!important;}
.activity-extra-row td{background:#f8fafc!important;padding:12px 14px!important;}
.activity-extra-panel{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:stretch;}
.activity-extra-block{border:1px solid #dbe5f4;background:#fff;border-radius:10px;padding:10px;min-width:0;}
.activity-extra-block strong{display:block;color:#172b86;margin-bottom:8px;font-size:12px;text-transform:uppercase;}
.activity-extra-block .category-pill{max-width:100%;}
.activity-extra-toggle{min-width:132px;}
.admin-cat-line-compact{flex-wrap:wrap;white-space:normal;}
.admin-cat-line-compact strong{max-width:none;}
@media(max-width:1100px){
  .activity-extra-panel{grid-template-columns:repeat(2,minmax(0,1fr));}
  .detail-modal .table-wrap{overflow-x:auto;}
}
@media(max-width:900px){
  .detail-modal{width:98vw;}
  .activity-extra-panel{grid-template-columns:1fr;}
  .admin-activities-table-wrap{overflow-x:auto;}
}

/* V68 - Activités : catégories compactes sur une seule ligne */
#activities-table .admin-cat-line-compact{
  display:flex;
  align-items:center;
  flex-wrap:nowrap;
  gap:6px;
  min-height:26px;
  padding:2px 0;
  white-space:nowrap;
  overflow:hidden;
  border-bottom:0;
  font-size:11px;
}
#activities-table .admin-cat-line-compact + .admin-cat-line-compact{
  margin-top:3px;
}
#activities-table .admin-cat-line-compact strong{
  flex:0 0 170px;
  min-width:0;
  max-width:170px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--blue);
  font-size:12px;
  font-weight:900;
}
#activities-table .cat-active-pill{
  flex:0 0 auto;
  min-width:52px;
  display:inline-flex;
  justify-content:center;
  align-items:center;
  padding:2px 7px;
  border-radius:999px;
  font-size:10.5px;
  font-weight:900;
  line-height:1.15;
  border:1px solid #bfdbfe;
}
#activities-table .cat-active-pill.is-on{
  background:#eef2ff;
  color:#1e3a8a;
}
#activities-table .cat-active-pill.is-off{
  background:#f3f4f6;
  color:#6b7280;
  border-color:#d1d5db;
}
#activities-table .admin-cat-date{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:3px;
  font-size:11px;
  color:#1f2937;
  line-height:1.15;
}
#activities-table .admin-cat-date b{
  color:#172b86;
  font-weight:900;
}
#activities-table .admin-cat-options{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  flex-wrap:nowrap;
  gap:3px;
  margin-left:4px;
  white-space:nowrap;
}
#activities-table .admin-cat-options .option-pill,
#activities-table .option-pill{
  min-width:42px;
  justify-content:center;
  margin:0;
  padding:2px 6px;
  border-radius:999px;
  font-size:10px;
  font-weight:900;
  line-height:1.1;
  border:1px solid var(--blue);
  background:var(--blue);
  color:#fff;
}
#activities-table .admin-cat-options .option-pill.off,
#activities-table .option-pill.off{
  border-color:#d1d5db;
  background:#f8fafc;
  color:#9ca3af;
}
#activities-table .admin-cat-line-compact.is-inactive{
  opacity:.58;
}
#activities-table .admin-cat-line-compact.is-inactive strong{
  text-decoration:line-through;
}
@media(max-width:1100px){
  .admin-activities-table-wrap{overflow-x:auto;}
  #activities-table{min-width:1180px;}
}


/* V69 - Réorganisation par glisser-déposer des inscriptions individuelles */
.indiv-preview-table th.drag-col,
.indiv-preview-table td.drag-col{width:58px;min-width:58px;text-align:center;white-space:nowrap;}
.indiv-drag-handle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:30px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#17359f;font-weight:900;cursor:grab;box-shadow:0 1px 2px rgba(15,23,42,.08);}
.indiv-drag-handle:active{cursor:grabbing;}
.indiv-preview-table tr.dragging td{opacity:.55;background:#e0ecff!important;}
.indiv-preview-table tr.drag-over td{box-shadow:inset 0 -3px 0 #17359f;}
.indiv-preview-table .drag-col{position:sticky;right:0;background:inherit;z-index:2;}
.indiv-preview-table th.drag-col{background:#f8fafc!important;z-index:3;}

/* V73 - Impression CMD/CMR façon feuille d'émargement propre */
@media print{
  @page{size:A4 landscape;margin:7mm;}
  html,body{background:#fff!important;color:#000!important;font-family:Arial, Helvetica, sans-serif!important;font-size:10pt!important;}
  body *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;color-adjust:exact!important;}
  .navbar,.sidebar,.breadcrumb-line,.page-header,.commissions-print-hide,#commission-filters,#commission-form-card,.commission-group-row{display:none!important;}
  .layout,.content-wrapper,.content{display:block!important;margin:0!important;padding:0!important;width:100%!important;max-width:none!important;}
  #commission-print-area,.card{border:0!important;box-shadow:none!important;margin:0!important;padding:0!important;background:#fff!important;}
  #commission-print-area .card-header{display:none!important;}
  #commission-print-area .card-body{padding:0!important;margin:0!important;}
  .print-title{
    display:flex!important;
    align-items:flex-start!important;
    gap:18px!important;
    margin:0 0 8px 0!important;
    padding:0!important;
    border:0!important;
  }
  .print-title img{
    height:62px!important;
    width:120px!important;
    object-fit:contain!important;
    border-right:1px solid #000!important;
    padding-right:16px!important;
    margin-right:2px!important;
  }
  .print-title h2{
    margin:2px 0 6px 0!important;
    font-size:18pt!important;
    line-height:1!important;
    color:#000!important;
    font-weight:900!important;
    text-transform:uppercase!important;
  }
  .print-title p{
    margin:0 0 4px 0!important;
    color:#000!important;
    font-size:11pt!important;
    line-height:1.15!important;
    font-weight:800!important;
  }
  .print-title .print-date-line{
    font-weight:900!important;
  }
  .table-wrap{overflow:visible!important;width:100%!important;}
  .commission-table{
    width:100%!important;
    min-width:0!important;
    border-collapse:collapse!important;
    table-layout:fixed!important;
    font-size:9.4pt!important;
    line-height:1.12!important;
    color:#000!important;
  }
  .commission-table thead{display:table-header-group!important;}
  .commission-table tr{break-inside:avoid!important;page-break-inside:avoid!important;}
  .commission-table th,.commission-table td{
    border:1px solid #000!important;
    padding:4px 4px!important;
    vertical-align:middle!important;
    background:#fff!important;
    color:#000!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    word-break:normal!important;
    overflow-wrap:anywhere!important;
    font-weight:500!important;
  }
  .commission-table th{
    font-weight:900!important;
    text-align:center!important;
    font-size:9pt!important;
    background:#fff!important;
  }
  .commission-table tbody tr:nth-child(even) td{background:#d9e8f7!important;}
  .commission-table tbody tr:nth-child(odd) td{background:#fff!important;}
  .commission-member-hidden{display:table-row!important;}
  .commission-table .status{
    background:transparent!important;
    border:0!important;
    color:#000!important;
    padding:0!important;
    min-width:0!important;
    font-size:9.2pt!important;
    font-weight:500!important;
    white-space:nowrap!important;
  }
  .as-code-link{font-size:9.2pt!important;color:#000!important;text-decoration:none!important;font-weight:500!important;}
  .commission-table strong{font-weight:600!important;}
  .commissions-print-signature{display:table-cell!important;background:inherit!important;}
  .commission-table th:nth-child(1),.commission-table td:nth-child(1){width:9%!important;}
  .commission-table th:nth-child(2),.commission-table td:nth-child(2){width:8%!important;text-align:center!important;}
  .commission-table th:nth-child(3),.commission-table td:nth-child(3){width:4%!important;text-align:center!important;}
  .commission-table th:nth-child(4),.commission-table td:nth-child(4){width:6%!important;text-align:center!important;}
  .commission-table th:nth-child(5),.commission-table td:nth-child(5){width:17%!important;}
  .commission-table th:nth-child(6),.commission-table td:nth-child(6){width:7%!important;}
  .commission-table th:nth-child(7),.commission-table td:nth-child(7){width:12%!important;}
  .commission-table th:nth-child(8),.commission-table td:nth-child(8){width:15%!important;}
  .commission-table th:nth-child(9),.commission-table td:nth-child(9){width:7%!important;text-align:center!important;}
  .commission-table th:nth-child(10),.commission-table td:nth-child(10){width:13%!important;}
  .commission-table th:nth-child(11),.commission-table td:nth-child(11){width:8%!important;text-align:center!important;}
  .commission-table th:nth-child(12),.commission-table td:nth-child(12){width:11%!important;}
  .commission-table th:nth-child(13),.commission-table td:nth-child(13){display:none!important;}
}

/* Bascule manuelle de la barre latérale (V1.3) */
.sidebar-collapsed .sidebar{display:none}
.sidebar-collapsed .layout{display:block}
.sidebar-toggle{border:1px solid #cfd8dc;background:#fff;color:#263238;padding:5px 10px;border-radius:3px;cursor:pointer;font-weight:700;font-size:12px;display:inline-flex;align-items:center;gap:6px;line-height:1}
.sidebar-toggle:hover{filter:brightness(.97)}
.sidebar-toggle .sidebar-toggle-icon{font-size:14px}
@media print{.sidebar-toggle{display:none!important}}

/* Catégories déroulantes dans l'onglet Activités */
#activities-table .act-cat-summary-row{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
#activities-table .act-cat-badges{
  display:flex;
  align-items:center;
  gap:5px;
  flex-wrap:wrap;
}
.act-cat-badge{
  display:inline-flex;
  align-items:center;
  padding:2px 8px;
  border-radius:999px;
  font-size:11px;
  font-weight:700;
  line-height:1.3;
  white-space:nowrap;
}
.act-cat-badge-total{
  background:#e0e7ff;
  color:#3730a3;
  border:1px solid #c7d2fe;
}
.act-cat-badge-open{
  background:#dcfce7;
  color:#166534;
  border:1px solid #86efac;
}
.act-cat-badge-off{
  background:#f3f4f6;
  color:#6b7280;
  border:1px solid #d1d5db;
}
.act-cat-toggle-btn{
  padding:2px 8px!important;
  font-size:11px!important;
  line-height:1.4!important;
  border:1px solid #c7d2fe!important;
  background:#eef2ff!important;
  color:#3730a3!important;
  border-radius:999px!important;
  white-space:nowrap;
  cursor:pointer;
}
.act-cat-toggle-btn:hover{
  background:#e0e7ff!important;
}
.act-cat-detail-block{
  margin-top:6px;
  padding:6px 0 2px 0;
  border-top:1px solid #e5e7eb;
}
.act-cat-detail-block.hidden{
  display:none!important;
}
#activities-table th:nth-child(2),
#activities-table td:nth-child(2){
  min-width:220px;
  white-space:normal;
}


/* ===== Dates limites à venir (tableau de bord administration) ===== */
.dash-deadlines{margin-top:14px;font-size:13px}
.dash-deadlines .dash-deadlines-title{font-weight:800;color:#111827;margin-bottom:6px}
.dash-deadline-item{display:flex;gap:8px;align-items:baseline;padding:3px 0;border-bottom:1px dashed #e2e8f0}
.dash-deadline-item:last-child{border-bottom:none}
.dash-deadline-date{font-weight:800;white-space:nowrap}
.dash-deadline-soon .dash-deadline-date{color:#b91c1c}

/* ===== Compteurs compacts du tableau de bord administration ===== */
.counter-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.counter{padding:10px 8px;text-align:center;border-radius:8px;background:#f8fafc;display:flex;flex-direction:column-reverse;justify-content:center;gap:2px;min-height:0}
.counter .label{font-size:11.5px;line-height:1.25;font-weight:700;color:#64748b}
.counter .value{font-size:22px;font-weight:800;line-height:1.1;margin-top:0;color:var(--opuss-dark)}
@media (max-width:1280px){.counter-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:1024px){.counter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.counter-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}

/* ============================================================
   Sous-menu navigation (groupe Commissions)
   ============================================================ */
.side-sub-toggle{width:100%;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer}
.side-sub-caret{margin-left:auto;font-size:11px;color:#6b7280}
.side-submenu .side-sublink{padding-left:38px;font-size:13px}

/* ============================================================
   Planning CMD / CMR / CMN — calendrier
   ============================================================ */
.planning-cal-header{flex-wrap:wrap}
.planning-legend{display:flex;gap:8px;margin-bottom:10px;align-items:center}
.planning-chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}
.planning-chip.level-cmd{background:#dbeafe;color:#1d4ed8}
.planning-chip.level-cmr{background:#ffedd5;color:#c2410c}
.planning-chip.level-cmn{background:#ede9fe;color:#6d28d9}

/* Grille mois */
.cal-month-head{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e5e7eb;border:1px solid #e5e7eb;border-bottom:0}
.cal-month-head>div{background:#fafafa;padding:6px 8px;font-weight:800;font-size:12px;color:#374151;text-transform:uppercase}
.cal-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e5e7eb;border:1px solid #e5e7eb}
.cal-cell{background:#fff;min-height:96px;padding:4px 6px;font-size:12px}
.cal-cell.cal-out{background:#f8fafc;color:#9ca3af}
.cal-cell.cal-today{background:#eef6ff;box-shadow:inset 0 0 0 2px #2196f3}
.cal-cell-day{font-weight:800;margin-bottom:3px}

/* Événements */
.planning-event{border-radius:3px;padding:2px 5px;margin:2px 0;font-size:11px;line-height:1.3;cursor:pointer;overflow:hidden;border-left:3px solid transparent}
.planning-event.level-cmd{background:#dbeafe;border-left-color:#1d4ed8;color:#1e3a8a}
.planning-event.level-cmr{background:#ffedd5;border-left-color:#c2410c;color:#7c2d12}
.planning-event.level-cmn{background:#ede9fe;border-left-color:#6d28d9;color:#4c1d95}
.planning-event:hover{filter:brightness(.96)}
.planning-event-time{font-weight:800}

/* Vue semaine */
.cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.cal-week-day{border:1px solid #e5e7eb;border-radius:4px;background:#fff;min-height:160px}
.cal-week-day.cal-today{box-shadow:inset 0 0 0 2px #2196f3}
.cal-week-day-head{padding:6px 8px;border-bottom:1px solid #eee;background:#fafafa;font-weight:800;font-size:12px}
.cal-week-empty{padding:6px 8px}
.planning-event-block{margin:6px;padding:6px 8px;font-size:12px;border-radius:4px}
.week-event-details{display:flex;flex-direction:column;gap:2px;margin-top:4px}
.week-event-notes{color:#6b7280;font-style:italic}

/* Vue liste */
.planning-row{cursor:pointer}
.planning-row-alt td{background:#f8fafc!important}
.planning-row:hover td{background:#f0f7ff!important}
.planning-row-notes{margin-top:2px;font-style:italic}

/* Tooltip survol */
#planning-tooltip{position:absolute;z-index:9999;background:#1e293b;color:#f1f5f9;border-radius:6px;padding:10px 12px;font-size:12px;line-height:1.5;max-width:300px;pointer-events:none;box-shadow:0 6px 24px rgba(0,0,0,.25);display:none}
#planning-tooltip .tt-title{font-weight:800;font-size:13px;margin-bottom:6px;color:#fff;border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:5px}
#planning-tooltip .tt-row{display:block}
#planning-tooltip .tt-sep{display:block;height:6px}
#planning-tooltip .tt-notes{color:#94a3b8;font-style:italic}
#planning-tooltip .planning-chip{font-size:10px}

@media (max-width:900px){.cal-week{grid-template-columns:1fr}.cal-month-grid .cal-cell{min-height:64px}}

/* ============================================================
   Calendrier des inscriptions AS — pastilles d'état + dates CA
   ============================================================ */
.calas-cal-header{flex-wrap:wrap;gap:10px}
.calas-legend{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:12px;font-size:12px;font-weight:700}
.calas-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:800}
.calas-chip.calas-state-open,.calas-event.calas-state-open{background:#e8f5e9;color:#1b5e20;border-left:3px solid #2e7d32}
.calas-chip.calas-state-soon,.calas-event.calas-state-soon{background:#fff3e0;color:#7c4a03;border-left:3px solid #e65100}
.calas-chip.calas-state-closed,.calas-event.calas-state-closed{background:#ffebee;color:#8c1c1c;border-left:3px solid #c62828}
.calas-chip.calas-type-ca,.calas-event.calas-type-ca{background:#ede7f6;color:#4527a0;border-left:3px solid #6a1b9a}
.calas-event{border-radius:3px;padding:2px 5px;margin:2px 0;font-size:11px;line-height:1.3;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.calas-event:hover{filter:brightness(.96)}
.calas-event-block{margin:6px;padding:6px 8px;font-size:12px;border-radius:4px;white-space:normal}
@media (max-width:900px){
  .calas-legend{font-size:11px;gap:8px}
  .cal-month-grid .cal-cell .calas-event{font-size:10px}
}

/* ============================================================
   Impression du planning
   ============================================================ */
@media print{
  @page{size:A4 landscape;margin:10mm}

  /* ---- Masquer tout ce qui n'est pas la zone d'impression ---- */
  .navbar,.sidebar,.breadcrumb-line,.page-header,.planning-print-hide,#planning-tooltip,
  .actions,.card-header .actions{display:none!important}

  /* ---- Éliminer les fonds et hauteurs résiduelles qui créent des pages blanches ---- */
  html,body{background:transparent!important;height:auto!important;min-height:0!important}
  .layout{display:block!important;background:transparent!important;min-height:0!important;height:auto!important}
  .content-wrapper{margin:0!important;background:transparent!important;min-height:0!important;height:auto!important}
  .content{padding:0!important;background:transparent!important;min-height:0!important;height:auto!important}
  .card{border:0!important;box-shadow:none!important;margin:0!important;page-break-inside:auto;background:transparent!important}
  .card-header{border:0!important;padding:0 0 6px!important;background:transparent!important}
  .card-body{padding:0!important;background:transparent!important}
  .print-title{display:flex!important}
  .planning-legend{display:flex!important}

  /* ---- Annuler le CSS responsive mobile qui passe .table en display:block ---- */
  /* Sans ça, l'impression hérite du breakpoint 900px et affiche en cartes verticales */
  .table,.table tbody,.table tr{display:table!important;width:100%!important;border-radius:0!important;margin:0!important}
  .table tbody{display:table-row-group!important}
  .table tr{display:table-row!important;border:none!important}
  .table thead{display:table-header-group!important}
  .table td,.table th{display:table-cell!important;width:auto!important;border-bottom:1px solid #e5e7eb!important}
  .table td::before{display:none!important}

  /* ---- Couleurs événements (forcer l'impression des fonds) ---- */
  .planning-event.level-cmd{background:#dbeafe!important;color:#1e3a8a!important;border-left-color:#1d4ed8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-event.level-cmr{background:#ffedd5!important;color:#7c2d12!important;border-left-color:#c2410c!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-event.level-cmn{background:#ede9fe!important;color:#4c1d95!important;border-left-color:#6d28d9!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-chip{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-chip.level-cmd{background:#dbeafe!important;color:#1d4ed8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-chip.level-cmr{background:#ffedd5!important;color:#c2410c!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-chip.level-cmn{background:#ede9fe!important;color:#6d28d9!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}

  /* ---- Vue MOIS ---- */
  .cal-month{page-break-inside:avoid}
  .cal-month-head>div{background:#f3f4f6!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cal-month-grid{border:1px solid #d1d5db!important}
  .cal-cell{min-height:60px;page-break-inside:avoid}
  .cal-cell.cal-today{background:#eef6ff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}

  /* ---- Vue SEMAINE : 7 colonnes côte à côte, identique à l'écran ---- */
  .cal-week{display:table!important;width:100%!important;border-collapse:collapse!important;gap:0!important;page-break-inside:avoid}
  .cal-week-day{display:table-cell!important;border:1px solid #d1d5db!important;vertical-align:top!important;width:14.28%!important;min-height:0!important;border-radius:0!important}
  .cal-week-day.cal-today{box-shadow:inset 0 0 0 2px #2196f3!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cal-week-day-head{background:#fafafa!important;font-size:9px!important;padding:4px 5px!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-event-block{margin:2px!important;padding:3px 4px!important;font-size:9px!important;border-radius:2px!important}
  .week-event-details{margin-top:2px!important;gap:1px!important}
  .week-event-notes{display:none!important}
  .cal-week-empty{padding:3px 5px!important;font-size:9px!important}

  /* ---- Vue LISTE : tableau horizontal zébré, identique à l'écran ---- */
  .table-wrap{overflow:visible!important}
  .planning-table{font-size:9px!important;border-collapse:collapse!important;width:100%!important;page-break-inside:auto}
  .planning-table thead{display:table-header-group!important}
  .planning-table tbody{display:table-row-group!important}
  .planning-table tr{display:table-row!important;border:none!important;border-radius:0!important;margin:0!important;break-inside:avoid;page-break-inside:avoid}
  .planning-table th,.planning-table td{display:table-cell!important;padding:4px 5px!important;border:1px solid #d1d5db!important;width:auto!important}
  .planning-table th::before,.planning-table td::before{display:none!important}
  .planning-table th{background:#2f879f!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;white-space:nowrap}
  .planning-row-alt td{background:#f8fafc!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .planning-row:hover td{background:transparent!important}
  .planning-row-notes{display:block!important;margin-top:1px!important}
}

/* ============================================================
   Bouton + Modale Synchroniser le calendrier (webcal)
   ============================================================ */
.btn-sync{background:#fff;border:2px solid #2196f3;color:#2196f3;font-weight:700}
.btn-sync:hover{background:#e8f4fe}

.sync-intro{margin:0 0 14px;line-height:1.55;color:#374151}
.sync-filters-summary{margin-bottom:14px;min-height:24px}
.sync-filters-active{background:#eef6ff;border:1px solid #bfdbfe;border-radius:6px;padding:8px 12px;font-size:13px;color:#1e3a8a}
.sync-filters-none{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:6px;padding:8px 12px;font-size:13px;color:#6b7280;font-style:italic}

.sync-url-block{margin-bottom:18px}
.sync-url-label{display:block;font-weight:700;font-size:13px;color:#374151;margin-bottom:6px}
.sync-url-sublabel{font-weight:400;font-size:11px;color:#6b7280}
.sync-url-row{display:flex;gap:8px;align-items:stretch}
.sync-url-input{flex:1;font-family:monospace;font-size:12px;background:#f8fafc;border:1px solid #d1d5db;border-radius:6px;padding:8px 10px;color:#374151;min-width:0}

.sync-how{background:#fafafa;border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px}
.sync-how-title{font-weight:800;font-size:14px;color:#111827;margin-bottom:10px}
.sync-how-steps{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.sync-step{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:#374151;line-height:1.45}
.sync-step-num{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:#2196f3;color:#fff;font-weight:800;font-size:11px;display:flex;align-items:center;justify-content:center;margin-top:1px}
.sync-note{margin:0;font-size:12px;color:#6b7280;line-height:1.5;border-top:1px solid #e5e7eb;padding-top:10px}

@media print{.btn-sync{display:none!important}}

/* Tableau tokens ICS (admin) */
.ics-filters-badge{display:inline-block;background:#eef6ff;border:1px solid #bfdbfe;color:#1e3a8a;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:700;white-space:nowrap}

/* Blocs d'upload de logos (admin > Paramètres) */
.logo-upload-block{border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px;background:#fafafa}
.logo-preview-wrap{min-height:64px;display:flex;align-items:center;justify-content:center;background:#f0f4ff;border:1.5px dashed #bfdbfe;border-radius:6px;padding:8px;margin-top:6px}
.logo-preview-img{max-height:64px;max-width:100%;object-fit:contain;border-radius:4px}
.logo-preview-empty{color:#94a3b8;font-style:italic}

/* ============================================================
   V-MOBILE — Responsive mobile complet (v1.9.8e)
   Cible : smartphones (≤600px), tablettes portrait (≤900px)
   ============================================================ */

/* -------- 1. DRAWER SIDEBAR mobile -------- */
/* Sur mobile la sidebar disparaît (règle existante ≤900px).
   On la transforme en drawer qui glisse depuis la gauche,
   activé par le sidebar-toggle existant via la classe sidebar-open
   ajoutée sur <html>. Un overlay sombre ferme le drawer au tap. */

/* Overlay mobile */
.mobile-sidebar-overlay{
  display:none;
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.45);
  z-index:199;
  cursor:pointer;
}
@media(max-width:900px){
  /* Activer l'overlay quand le drawer est ouvert */
  html.sidebar-open .mobile-sidebar-overlay{
    display:block;
  }
  /* Sidebar → drawer slide-in */
  .sidebar{
    position:fixed!important;
    top:56px;
    left:0;
    bottom:0;
    width:270px!important;
    z-index:200;
    transform:translateX(-100%);
    transition:transform .22s ease;
    overflow-y:auto;
    box-shadow:4px 0 20px rgba(0,0,0,.18);
  }
  html.sidebar-open .sidebar{
    transform:translateX(0)!important;
    display:flex!important;
    flex-direction:column;
  }
  /* Le sidebar-toggle en breadcrumb ouvre/ferme le drawer sur mobile */
  .sidebar-toggle{
    font-size:13px;
    padding:6px 12px;
    min-height:36px;
    border-radius:6px;
  }
}

/* -------- 2. NAVBAR mobile -------- */
@media(max-width:900px){
  .navbar{
    padding:0 10px;
    gap:8px;
    height:56px;
  }
  .brand{
    min-width:0!important;
    gap:6px;
    overflow:hidden;
    flex:1;
    min-width:0;
  }
  .brand img{
    height:30px;
    flex-shrink:0;
  }
  .brand-title{
    font-size:12px;
    line-height:1.15;
    overflow:hidden;
  }
  /* Logo OPRA centré : masqué sur mobile, trop encombrant */
  .navbar-logo-center{
    display:none!important;
  }
  /* user-pill plus compact */
  .user-pill{
    gap:4px;
    flex-shrink:0;
  }
  .avatar{
    width:30px;
    height:30px;
    font-size:12px;
  }
  .season-badge{
    display:none;
  }
}
@media(max-width:480px){
  .brand-title small{
    display:none;
  }
}

/* -------- 3. LAYOUT & CONTENT mobile -------- */
@media(max-width:900px){
  .content{
    padding:10px;
  }
  .page-header{
    padding:14px 12px;
  }
  .page-header h1{
    font-size:17px;
  }
  .breadcrumb-line{
    padding:8px 10px;
    flex-wrap:wrap;
    gap:6px;
  }
  .card-body{
    padding:12px;
  }
  .card-header{
    padding:10px 12px;
    font-size:13px;
    flex-wrap:wrap;
    gap:6px;
  }
  /* Grilles admin complexes */
  .grid-6{
    grid-template-columns:1fr 1fr!important;
  }
  /* Actions : boutons pleine largeur empilés */
  .card-header .actions{
    width:100%;
    justify-content:flex-end;
  }
}
@media(max-width:480px){
  .card-header .actions .btn,
  .card-header .actions a.btn{
    flex:1;
    justify-content:center;
  }
  .grid-6{
    grid-template-columns:1fr!important;
  }
}

/* -------- 4. MODALES mobile -------- */
@media(max-width:700px){
  .modal{
    width:100vw!important;
    max-width:100vw!important;
    max-height:100dvh!important;
    max-height:100vh!important;
    border-radius:0;
    margin:0;
  }
  .modal-backdrop{
    align-items:flex-end;
  }
  .modal-body{
    padding:12px;
    max-height:calc(100dvh - 56px);
    max-height:calc(100vh - 56px);
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
  }
  /* Modales très larges (activités, commissions) */
  .activity-modal-large,
  .detail-modal,
  .indiv-modal{
    width:100vw!important;
    max-width:100vw!important;
    border-radius:0!important;
  }
  .activity-modal-large .activity-category-editor,
  .activity-category-editor{
    min-width:0!important;
    overflow-x:auto;
  }
}

/* -------- 5. TABLEAUX mobile : vue "fiches" empilées -------- */
/* Synth table et Commission table passent en cartes lisibles au lieu du scroll horizontal */
@media(max-width:900px){
  .synth-table,.commission-table{
    min-width:0!important;
    table-layout:auto!important;
    width:100%!important;
  }
  .synth-table thead,.commission-table thead{
    display:none!important;
  }
  .synth-table,.synth-table tbody,.synth-table tr,
  .commission-table,.commission-table tbody,.commission-table tr{
    display:block!important;
    width:100%!important;
  }
  .synth-table td,.commission-table td{
    display:block!important;
    width:100%!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    border:0!important;
    border-bottom:1px solid #eef0f3!important;
    padding:7px 12px!important;
    text-align:left!important;
  }
  .synth-table tbody tr:not(.group-row),
  .commission-table tbody tr:not(.commission-group-row){
    border:1px solid #e0e4ea!important;
    border-radius:10px;
    margin-bottom:12px;
    background:#fff;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
    overflow:hidden;
  }
  .synth-table td:last-child,.commission-table td:last-child{
    border-bottom:0!important;
  }
  .synth-table td::before,.commission-table td::before{
    content:attr(data-label);
    display:block;
    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.03em;
    color:#90a0b7;
    font-weight:800;
    margin-bottom:3px;
  }
  .synth-table td:empty::after{content:"—";color:#c7ccd6}

  /* Carte condensée : un seul champ visible (Établissement / Membre), le reste replié */
  .synth-table tbody tr.group-entry-row td,
  .commission-table tbody tr.commission-member-row td{
    display:none!important;
  }
  .synth-table tbody tr.group-entry-row td[data-label="Établissement"],
  .commission-table tbody tr.commission-member-row td[data-label="Membre"]{
    display:block!important;
    position:relative;
    padding-right:36px!important;
    cursor:pointer;
  }
  .synth-table tbody tr.group-entry-row td[data-label="Établissement"]::after,
  .commission-table tbody tr.commission-member-row td[data-label="Membre"]::after{
    content:"▾";
    position:absolute;
    right:12px;
    top:50%;
    transform:translateY(-50%);
    color:#90a0b7;
    font-size:13px;
    font-weight:900;
  }
  .synth-table tbody tr.group-entry-row.row-expanded td,
  .commission-table tbody tr.commission-member-row.row-expanded td{
    display:block!important;
  }
  .synth-table tbody tr.group-entry-row.row-expanded td[data-label="Établissement"],
  .commission-table tbody tr.commission-member-row.row-expanded td[data-label="Membre"]{
    background:#eaf4ff;
    border-bottom:1px solid #d7e7fb!important;
  }
  .synth-table tbody tr.group-entry-row.row-expanded td[data-label="Établissement"]::after,
  .commission-table tbody tr.commission-member-row.row-expanded td[data-label="Membre"]::after{
    content:"✕";
    color:#1976d2;
    font-size:14px;
  }
  .synth-table tbody tr.group-entry-row.row-expanded,
  .commission-table tbody tr.commission-member-row.row-expanded{
    border-color:#1976d2!important;
    box-shadow:0 4px 16px rgba(25,118,210,.18)!important;
  }

  /* Bandeau de regroupement par activité : reste un bandeau compact (pas une fiche) */
  .synth-table .group-row{
    display:flex!important;
    align-items:center;
    width:100%;
  }
  .synth-table .group-row td{
    display:flex!important;
    align-items:center;
    border:0!important;
    padding:0!important;
    width:auto!important;
  }
  .synth-table .group-toggle-cell{
    flex:0 0 32px!important;
    justify-content:center;
  }
  .synth-table .group-row td[colspan]{
    flex:1!important;
    min-width:0;
  }
  .synth-table .group-row-inner{
    flex-wrap:wrap;
    width:100%;
  }
  .commission-table .commission-group-row{
    margin-bottom:6px;
  }
  .commission-group-toggle{
    padding:10px 12px!important;
  }

  .commission-table-wrap{
    overflow-x:visible!important;
    -webkit-overflow-scrolling:touch;
  }

  /* Table standard avec data-label : améliorer la lisibilité */
  .table td::before{
    font-size:10px;
    margin-bottom:3px;
  }

  /* Filtres de la synthèse */
  .opuss-filter-grid{
    grid-template-columns:1fr!important;
  }
  .synth-filter-card .card-header .actions{
    flex-direction:row;
    flex-wrap:wrap;
  }
  .synth-filter-card .card-header .actions .btn{
    flex:1;
    min-width:120px;
  }
}

/* -------- 6. PAGE ADMINISTRATION mobile -------- */
@media(max-width:900px){
  /* Tabs admin : scroll horizontal */
  .tabs{
    overflow-x:auto;
    flex-wrap:nowrap;
    padding-bottom:4px;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .tabs::-webkit-scrollbar{
    display:none;
  }
  .tab-btn{
    white-space:nowrap;
    flex-shrink:0;
  }
  /* Admin cat line : empiler sur mobile */
  .admin-cat-line{
    flex-direction:column;
    align-items:flex-start!important;
    gap:6px;
  }
  .admin-cat-line strong{
    min-width:0!important;
  }
  /* Blocs activités extra */
  .activity-extra-panel{
    grid-template-columns:1fr!important;
  }
  /* Filtres admin */
  .dashboard-filter-actions{
    flex-direction:column;
  }
  .dashboard-filter-actions input,
  .dashboard-filter-actions select,
  .dashboard-filter-actions .btn{
    width:100%;
  }
  /* Table users : scroll */
  #users-table{
    min-width:640px;
  }
  .admin-activities-table-wrap{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  #activities-table{
    min-width:560px!important;
  }
  /* RAZ section */
  .raz-block .actions{
    flex-direction:column;
  }
  .raz-block .actions .btn{
    width:100%;
    justify-content:center;
  }
  /* Compteurs dashboard */
  .counter-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px;
  }
  /* ICS tokens table */
  #ics-tokens-table{
    min-width:560px;
  }
  .table-wrap{
    -webkit-overflow-scrolling:touch;
  }
}
@media(max-width:480px){
  .counter-grid{
    grid-template-columns:1fr 1fr!important;
  }
  .admin-cat-line-compact{
    flex-wrap:wrap!important;
    white-space:normal!important;
  }
}

/* -------- 7. PAGE COMMISSIONS mobile -------- */
@media(max-width:900px){
  /* Formulaire ajout membre */
  #commission-form-card .grid-2,
  #commission-form-card .grid-3,
  #commission-form-card .grid-4{
    grid-template-columns:1fr!important;
  }
  /* Filtres commissions */
  #commission-filters .actions{
    flex-wrap:wrap;
  }
  #commission-filters .actions .btn{
    flex:1;
    min-width:100px;
  }
  /* Boutons mode membre */
  .member-mode-btn,
  .etab-type-btn{
    flex:1;
    justify-content:center;
    font-size:12px;
    padding:7px 6px;
  }
  /* Scrollbar fixe en bas : masqué, le wrap natif suffit */
  .commission-horizontal-scrollbar{
    display:none!important;
  }
}

/* -------- 8. PAGE APP (inscriptions AS) mobile -------- */
@media(max-width:900px){
  /* Formulaire inscription équipe */
  .app-form .grid-2,
  .app-form .grid-3{
    grid-template-columns:1fr!important;
  }
  /* Boutons no-team */
  .no-team-panel{
    flex-direction:column!important;
    align-items:stretch!important;
  }
  .no-team-panel .btn{
    width:100%;
    justify-content:center;
  }
  /* Category picker */
  #category-picker-card .card-body{
    padding:8px;
  }
  /* Remontées table */
  #remontees-table-wrap{
    -webkit-overflow-scrolling:touch;
  }
}

/* -------- 9. PAGE PLANNING mobile -------- */
@media(max-width:900px){
  /* Vue mois : grille scrollable */
  .cal-month-head,
  .cal-month-grid{
    min-width:560px;
  }
  .planning-cal-wrap{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  /* Vue semaine : 1 colonne (déjà géré), améliorer */
  .cal-week-day{
    min-height:80px;
  }
  /* Boutons navigation planning */
  .planning-cal-header{
    flex-wrap:wrap;
    gap:6px;
  }
  .planning-cal-header .actions{
    flex-wrap:wrap;
  }
  .planning-cal-header .btn{
    padding:7px 10px;
    font-size:12px;
  }
  /* Vue liste : scroll horizontal */
  .planning-table-wrap{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .planning-table{
    min-width:500px;
  }
  /* Légende */
  .planning-legend{
    flex-wrap:wrap;
    gap:6px;
  }
  /* Tooltip : désactivé sur mobile (touch) */
  #planning-tooltip{
    display:none!important;
  }
  /* Formulaire event planning */
  #planning-form-grid{
    grid-template-columns:1fr!important;
  }
}

/* -------- 10. FORMULAIRES & BOUTONS globaux mobile -------- */
@media(max-width:600px){
  /* Boutons d'actions groupés : empiler */
  .page-header-with-actions{
    flex-direction:column;
    align-items:stretch;
    gap:10px;
  }
  .page-header-with-actions .btn{
    width:100%;
    justify-content:center;
  }
  /* Formulaires : min-height inputs tactile friendly */
  input,select,textarea,.btn{
    min-height:44px;
  }
  .btn-sm{
    min-height:36px;
  }
  /* Modal body : padding réduit */
  .modal-body .grid-2,
  .modal-body .grid-3,
  .modal-body .grid-4{
    grid-template-columns:1fr!important;
  }
  /* Form-field select / input au touch */
  .form-field input,
  .form-field select,
  .form-field textarea{
    font-size:16px; /* évite le zoom auto iOS */
  }
}

/* -------- 11. AUTOCOMPLETE / DROPDOWNS mobile -------- */
@media(max-width:900px){
  .as-results,
  .animateur-results{
    max-height:200px;
  }
  .trunc-tip{
    position:fixed;
    left:8px!important;
    right:8px!important;
    top:auto!important;
    bottom:70px;
    width:auto;
    max-width:none;
  }
  .other-acts-tooltip{
    position:fixed;
    left:8px!important;
    right:8px!important;
    top:auto!important;
    bottom:70px;
    width:auto;
    max-width:none;
  }
}

/* -------- 12. CONNEXION (login) mobile -------- */
@media(max-width:480px){
  .login-card{
    padding:18px 14px;
    border-radius:16px;
  }
  .login-logo{
    width:140px;
  }
  .login-title{
    font-size:15px;
  }
}

/* -------- 13. Touches targets minimum (accessibilité) -------- */
@media(max-width:900px){
  .side-link,
  .tab-btn,
  .btn{
    min-height:42px;
  }
  .btn-sm{
    min-height:34px;
  }
  /* Sidebar links : plus hauts pour le touch */
  .side-link{
    padding:12px 18px;
  }
  .side-sublink{
    padding:10px 18px 10px 38px;
  }
}

/* ======================================================
   V-MOBILE-14 — Compléments mobiles v1.9.8e
   Grilles de formulaires non couvertes, admin, app,
   connexions, synth-table wrap, logo upload mobile
   ====================================================== */

/* -------- 14. Grilles globales non couvertes -------- */
/* Couvre TOUS les grid-3/4/5 hors modal qui ne sont pas
   déjà ciblés par une règle plus spécifique (app, commissions) */
@media(max-width:900px){
  /* Grilles dans les onglets admin (activités, users, settings, RAZ) */
  .tab-panel .grid-3,
  .tab-panel .grid-4{
    grid-template-columns:1fr 1fr!important;
  }
  /* Grilles en card-body général (RAZ, settings) */
  .card-body > .grid-3{
    grid-template-columns:1fr 1fr!important;
  }
}
@media(max-width:600px){
  /* Sur petit mobile : tout en 1 colonne */
  .tab-panel .grid-2,
  .tab-panel .grid-3,
  .tab-panel .grid-4,
  .tab-panel .grid-5,
  .card-body > .grid-3,
  .card-body > .grid-4{
    grid-template-columns:1fr!important;
  }
  /* Grilles dans les formulaires principaux (app.php inscriptions) */
  .grid-4,
  .grid-5{
    grid-template-columns:1fr!important;
  }
}

/* -------- 15. Page Inscriptions AS (app.php) -------- */
@media(max-width:900px){
  /* Toutes les grilles du formulaire d'inscription */
  .card-body .grid-2,
  .card-body .grid-3,
  .card-body .grid-4,
  .card-body .grid-5{
    grid-template-columns:1fr 1fr!important;
  }
}
@media(max-width:600px){
  .card-body .grid-2,
  .card-body .grid-3,
  .card-body .grid-4,
  .card-body .grid-5{
    grid-template-columns:1fr!important;
  }
  /* Boutons accompagnateur pleine largeur */
  #acc-name,#acc-mail,#acc-tel,#acc-adresse{
    width:100%;
  }
}

/* -------- 16. Admin — onglet Journal des connexions -------- */
@media(max-width:900px){
  /* Filtres connexions : empiler sur mobile */
  #tab-connexions .card-header .actions{
    flex-direction:column;
    align-items:stretch;
    gap:6px;
    width:100%;
  }
  #tab-connexions .card-header .actions input,
  #tab-connexions .card-header .actions select{
    width:100%!important;
    min-width:0!important;
    box-sizing:border-box;
  }
  #tab-connexions .card-header{
    flex-direction:column;
    align-items:flex-start;
    gap:8px;
  }
}

/* -------- 17. Admin — onglet RAZ -------- */
@media(max-width:600px){
  /* RAZ grid-3 → 1 colonne, bouton danger pleine largeur */
  #tab-raz .grid-3{
    grid-template-columns:1fr!important;
  }
  #tab-raz .btn-danger{
    width:100%;
    justify-content:center;
  }
}

/* -------- 18. Admin — onglet Paramètres / logos -------- */
@media(max-width:600px){
  /* Logo upload : 1 slot par ligne */
  #logo-upload-grid{
    grid-template-columns:1fr!important;
  }
  /* Input file tactile */
  #logo-upload-grid input[type="file"]{
    min-height:44px;
  }
}

/* -------- 19. Admin — onglet AS import -------- */
@media(max-width:600px){
  #tab-as .actions{
    flex-direction:column;
    align-items:stretch;
  }
  #tab-as .actions input[type="file"],
  #tab-as .actions .btn{
    width:100%;
    justify-content:center;
  }
  #as-filter{
    width:100%!important;
  }
}

/* -------- 20. Synth table wrap : scroll touch confirmé -------- */
@media(max-width:900px){
  .table-wrap{
    -webkit-overflow-scrolling:touch;
    overflow-x:auto;
  }
  /* Synth table : indicateur visuel de scroll */
  .synth-table-wrap-outer{
    position:relative;
  }
}

/* -------- 21. Commissions — table scroll indicator mobile -------- */
@media(max-width:900px){
  /* Indicateur "← →" au-dessus de la table commissions */
  .commission-table-wrap::before{
    content:"← Faire défiler →";
    display:block;
    text-align:center;
    font-size:11px;
    color:#6b7280;
    padding:3px 0;
    background:linear-gradient(to right,#f0f4ff,#fff,#f0f4ff);
  }
}

/* -------- 22. Planning — form grid -------- */
@media(max-width:900px){
  #planning-form-grid{
    grid-template-columns:1fr 1fr!important;
  }
}
@media(max-width:600px){
  #planning-form-grid{
    grid-template-columns:1fr!important;
  }
}

/* -------- 23. Page admin — onglet utilisateurs -------- */
@media(max-width:600px){
  /* Formulaire ajout user : 1 colonne */
  #tab-users .grid-4,
  #tab-users .grid-2{
    grid-template-columns:1fr!important;
  }
  /* Boutons save/cancel pleine largeur */
  #tab-users .actions .btn{
    flex:1;
    justify-content:center;
  }
}

/* -------- 24. Breadcrumb — heure sur mobile -------- */
@media(max-width:480px){
  /* Masquer l'horloge si trop serré */
  #clock{
    display:none;
  }
}

/* -------- 25. Scroll buttons : repositionner sur petit mobile -------- */
@media(max-width:480px){
  #scroll-to-bottom{
    bottom:16px;
    right:10px;
    width:34px;
    height:34px;
    font-size:17px;
  }
  #scroll-to-top{
    bottom:56px;
    right:10px;
    width:34px;
    height:34px;
    font-size:17px;
  }
}

/* -------- 26. Modales : header actions mobile -------- */
@media(max-width:600px){
  .modal-header{
    flex-direction:column;
    gap:8px;
    padding:12px;
  }
}

/* -------- 27. Admin onglet activités : category editor -------- */
@media(max-width:900px){
  /* La table des catégories d'activité scroll horizontalement */
  .table-wrap .activity-category-editor{
    min-width:860px;
  }
  /* Le formulaire activité grid-3 → 2 colonnes */
  #tab-activities .grid-3{
    grid-template-columns:1fr 1fr!important;
  }
}
@media(max-width:600px){
  #tab-activities .grid-3{
    grid-template-columns:1fr!important;
  }
}

/* -------- 28. Admin — filtres dashboard mobile -------- */
@media(max-width:900px){
  .dashboard-filter-actions{
    flex-direction:column;
    gap:6px;
  }
  .dashboard-filter-input{
    min-width:0!important;
    width:100%!important;
  }
  .dashboard-filter-actions input,
  .dashboard-filter-actions select,
  .dashboard-filter-actions .btn{
    width:100%!important;
  }
}

/* -------- 29. app.php — catégorie picker card -------- */
@media(max-width:600px){
  #category-picker-card .card-body{
    padding:8px;
  }
  /* Pills de catégories : wrap correct */
  .category-pill{
    font-size:11px;
    padding:4px 8px;
  }
}

/* -------- 30. Exports section -------- */
@media(max-width:600px){
  #tab-exports .actions,
  #tab-exports .card-body .actions{
    flex-direction:column;
    align-items:stretch;
  }
  #tab-exports .btn{
    width:100%;
    justify-content:center;
  }
}

/* -------- 31. Admin — styles desktop des inputs connexions -------- */
.connexions-search-input{
  padding:6px 10px;
  border:1px solid #ddd;
  border-radius:4px;
  min-width:200px;
}
.connexions-filter-select{
  padding:6px 10px;
  border:1px solid #ddd;
  border-radius:4px;
  min-height:auto;
}
@media(max-width:900px){
  .connexions-filter-actions{
    flex-direction:column;
    align-items:stretch;
    width:100%;
  }
  .connexions-search-input,
  .connexions-filter-select{
    min-width:0!important;
    width:100%;
  }
  #tab-connexions .card-header{
    flex-direction:column;
    align-items:flex-start;
    gap:8px;
  }
  #tab-connexions .connexions-filter-actions{
    width:100%;
  }
  /* Table connexions : scroll horizontal */
  #login-log-table{
    min-width:640px;
  }
}

/* ============================================================
   OPRA 1.9.9 — Nouveaux composants
   ============================================================ */

/* ── Multiselect activités (planning) ── */
.multiselect-activity-wrap{
  position:relative;
  display:inline-block;
  min-width:200px;
}
.multiselect-activity-btn{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  width:100%;
  padding:6px 12px;
  border:1px solid #ddd;
  border-radius:4px;
  background:#fff;
  cursor:pointer;
  font-size:14px;
  font-family:inherit;
  white-space:nowrap;
  min-height:38px;
}
.multiselect-activity-btn:hover{ border-color:#1a3a8a; }
.multiselect-activity-arrow{ color:#6b7280; font-size:11px; }
.multiselect-activity-panel{
  position:absolute;
  top:calc(100% + 4px);
  left:0;
  min-width:240px;
  max-width:340px;
  max-height:320px;
  overflow-y:auto;
  background:#fff;
  border:1px solid #ddd;
  border-radius:6px;
  box-shadow:0 4px 16px rgba(0,0,0,.12);
  z-index:200;
  padding:6px 0;
}
.multiselect-activity-item{
  display:flex;
  align-items:center;
  gap:8px;
  padding:6px 14px;
  cursor:pointer;
  font-size:13.5px;
  user-select:none;
}
.multiselect-activity-item:hover{ background:#f0f4ff; }
.multiselect-all-item{ font-weight:700; }
.multiselect-activity-divider{
  height:1px;
  background:#e5e7eb;
  margin:4px 0;
}
.multiselect-act-chk{ accent-color:#1a3a8a; cursor:pointer; }

/* ── No-installation checkbox ── */
.no-installation-wrap{
  display:inline-flex;
  align-items:center;
  gap:8px;
  background:#fffbeb;
  border:1px solid #fde68a;
  border-radius:6px;
  padding:5px 12px;
  font-size:14px;
}
.no-installation-label{
  display:flex;
  align-items:center;
  gap:8px;
  cursor:pointer;
  font-size:14px;
}
.no-installation-label input[type="checkbox"]{
  width:16px;
  height:16px;
  accent-color:#d97706;
  cursor:pointer;
}

/* ── Bouton "Enregistrer et Rester" ── */
.btn-success-alt{
  background:#0f766e;
  color:#fff;
  border:none;
}
.btn-success-alt:hover{ background:#0d6a62; }

/* ── Champ "Autres accompagnateurs" ── */
#acc-autres{
  border:1px solid #ddd;
  border-radius:4px;
  padding:8px 10px;
  font-size:14px;
  font-family:inherit;
}
#acc-autres:focus{ outline:none; border-color:#1a3a8a; box-shadow:0 0 0 2px rgba(26,58,138,.15); }

/* ── Bouton Places actif ── */
.btn-places-active{
  background:#dbeafe;
  border-color:#2563eb;
  color:#1d4ed8;
}

/* ── Tableau ajout multiple ── */
.bulk-anim-row-ok td{ background:#f0fdf4; }
.bulk-anim-row-notfound td{ background:#fef2f2; }
.bulk-anim-row-multi td{ background:#fffbeb; }
.bulk-anim-select{
  width:100%;
  padding:4px 6px;
  border:1px solid #ddd;
  border-radius:4px;
  font-size:13px;
  font-family:inherit;
}

/* ── Modale activité élargie ── */
.activity-modal-large{
  overflow-x:auto;
}
.activity-modal-large .activity-category-editor{
  min-width:1000px;
}

/* ── Agrandir l'en-tête du tableau catégories ── */
.activity-category-editor th,
.activity-category-editor td{
  white-space:nowrap;
  font-size:12px;
}

/* ── Tableau catégories dans la modale activité : colonnes compactes ── */
.activity-category-editor td,
.activity-category-editor th {
  padding: 4px 5px;
  font-size: 12px;
  white-space: nowrap;
}
/* Champ catégorie : laisse de la place */
.activity-category-editor .cat-name {
  min-width: 160px;
  width: 100%;
}
/* Dates : compact */
.activity-category-editor .cat-cf,
.activity-category-editor .deadline-input {
  width: 150px;
  min-width: 150px;
  font-size: 12px;
  padding: 3px 4px;
}
/* Colonnes toggle : taille minimale */
.activity-category-editor th:nth-child(6),
.activity-category-editor th:nth-child(7),
.activity-category-editor th:nth-child(8),
.activity-category-editor th:nth-child(9),
.activity-category-editor th:nth-child(10) {
  font-size: 11px;
  padding: 4px 3px;
  max-width: 68px;
}
/* Modal body scrollable en flex */
.activity-modal-large .modal-body {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 16px 20px;
}
/* Scroll horizontal uniquement sur le tableau, pas sur toute la modale */
.activity-modal-large .table-wrap {
  overflow-x: auto;
}

/* ── Modale ajout manuel licencié ── */
.indiv-manual-row:hover td { background:#f0f4ff; }
.indiv-manual-row.selected td { background:#dbeafe; }
.btn-outline {
  background:#fff;
  border:1px solid #1a3a8a;
  color:#1a3a8a;
}
.btn-outline:hover { background:#f0f4ff; }

/* PWA — zones sûres (encoche / barre de gestes) en mode plein écran (standalone) */
@media (display-mode: standalone), (display-mode: fullscreen){
  body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
  .navbar{padding-top:env(safe-area-inset-top);height:calc(56px + env(safe-area-inset-top))}
  .login-page{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
}
@media (max-width:480px){
  .btn{min-height:40px;padding:9px 12px}
  .side-link{padding:12px 18px}
  .login-card{padding:18px}
}

/* ============================================================
   Comptabilité — tableau Résultats compact et navigation fluide
   ============================================================ */
.compta-page .content-wrapper,
.compta-page .content,
.compta-page .card,
.compta-page .card-body{
  min-width:0;
}

.compta-page .compta-table-wrap{
  width:100%;
  max-width:100%;
  overflow:auto!important;
  border:1px solid #d5dde8;
  border-radius:4px;
  background:#fff;
  scrollbar-width:auto;
  scrollbar-color:#6078aa #e8edf5;
  overscroll-behavior:contain;
}

.compta-page .compta-results-scroll-area{
  height:clamp(360px,calc(100vh - 315px),680px);
  min-height:360px;
}

.compta-page .compta-table-wrap::-webkit-scrollbar,
.compta-page .compta-hscroll::-webkit-scrollbar{
  height:13px;
  width:11px;
}
.compta-page .compta-table-wrap::-webkit-scrollbar-track,
.compta-page .compta-hscroll::-webkit-scrollbar-track{
  background:#e8edf5;
}
.compta-page .compta-table-wrap::-webkit-scrollbar-thumb,
.compta-page .compta-hscroll::-webkit-scrollbar-thumb{
  background:#6078aa;
  border-radius:6px;
  border:2px solid #e8edf5;
}

/* Barre horizontale supérieure synchronisée avec la barre native inférieure. */
.compta-page .compta-hscroll{
  display:block;
  width:100%;
  height:18px;
  overflow-x:auto;
  overflow-y:hidden;
  margin:0 0 4px;
  border:1px solid #d5dde8;
  border-radius:4px;
  background:#f8fafc;
  scrollbar-width:auto;
  scrollbar-color:#6078aa #e8edf5;
}
.compta-page .compta-hscroll > div{
  height:1px;
  min-width:100%;
}

/* Zoom du tableau Résultats : --cz vaut 1 partout par défaut et n'est surchargé que sur la
   zone des résultats. Comme la variable est héritée, les règles partagées ci-dessous restent
   à l'échelle 1 pour les autres tableaux (Synthèse, Anomalies, Import). */
.compta-page{ --cz:1; }

.compta-page .compta-data-table{
  width:max-content;
  min-width:100%;
  table-layout:auto;
  border-collapse:separate;
  border-spacing:0;
  font-size:calc(10.5px * var(--cz));
  line-height:1.05;
}
.compta-page .compta-data-table th,
.compta-page .compta-data-table td{
  height:calc(25px * var(--cz));
  padding:calc(2px * var(--cz)) calc(4px * var(--cz))!important;
  white-space:nowrap;
  vertical-align:middle;
  border-right:1px solid #edf1f5;
  border-bottom:1px solid #e4e9ef!important;
  overflow:hidden;
  text-overflow:ellipsis;
}
.compta-page .compta-data-table tbody tr:nth-child(even) td{
  background:#f8fafc;
}
.compta-page .compta-data-table tbody tr:hover td{
  background:#eef4ff;
}
.compta-page .compta-data-table thead th{
  position:sticky;
  top:0;
  z-index:5;
  height:calc(31px * var(--cz));
  padding:calc(3px * var(--cz)) calc(4px * var(--cz))!important;
  background:#edf2f8!important;
  color:#21314f;
  box-shadow:0 1px 0 #c8d2df;
  font-size:calc(9.7px * var(--cz));
  font-weight:800;
  line-height:1.05;
  white-space:normal;
  text-align:left;
  cursor:default;
}
.compta-page .compta-data-table thead th[data-sort]{
  cursor:pointer;
}
.compta-page .compta-data-table thead th[data-sort]:hover{
  background:#e3ebf5!important;
}

/* Largeurs fixes et cohérentes du tableau Résultats, mises à l'échelle par le zoom (--cz). */
.compta-page #compta-res-table{
  width:calc(1847px * var(--cz));
  min-width:calc(1847px * var(--cz));
  max-width:calc(1847px * var(--cz));
  table-layout:fixed;
}
.compta-page #compta-res-table col.compta-col-activity{width:calc(90px * var(--cz))}
.compta-page #compta-res-table col.compta-col-level{width:calc(62px * var(--cz))}
.compta-page #compta-res-table col.compta-col-type{width:calc(110px * var(--cz))}
.compta-page #compta-res-table col.compta-col-competition{width:calc(180px * var(--cz))}
.compta-page #compta-res-table col.compta-col-date{width:calc(78px * var(--cz))}
.compta-page #compta-res-table col.compta-col-as{width:calc(68px * var(--cz))}
.compta-page #compta-res-table col.compta-col-establishment{width:calc(165px * var(--cz))}
.compta-page #compta-res-table col.compta-col-city{width:calc(90px * var(--cz))}
.compta-page #compta-res-table col.compta-col-department{width:calc(72px * var(--cz))}
.compta-page #compta-res-table col.compta-col-team{width:calc(45px * var(--cz))}
.compta-page #compta-res-table col.compta-col-venue{width:calc(145px * var(--cz))}
.compta-page #compta-res-table col.compta-col-distance{width:calc(82px * var(--cz))}
.compta-page #compta-res-table col.compta-col-km{width:calc(70px * var(--cz))}
.compta-page #compta-res-table col.compta-col-students{width:calc(48px * var(--cz))}
.compta-page #compta-res-table col.compta-col-amount{width:calc(82px * var(--cz))}
.compta-page #compta-res-table col.compta-col-verification{width:calc(92px * var(--cz))}
.compta-page #compta-res-table col.compta-col-verified-by{width:calc(95px * var(--cz))}
/* Jusqu'à 6 icônes d'action alignées sur une ligne. */
.compta-page #compta-res-table col.compta-col-actions{width:calc(168px * var(--cz))}

/* Boutons d'action et pastilles à l'intérieur du tableau Résultats : suivent le zoom. */
.compta-page #compta-res-table .btn-sm{
  font-size:calc(12px * var(--cz));
  padding:calc(6px * var(--cz)) calc(9px * var(--cz));
  gap:calc(7px * var(--cz));
}

/* ── Colonne Actions : icônes compactes ──
   Boutons carrés, alignés sur une ligne, suffisamment grands pour rester cliquables au doigt
   (28 px de base) tout en occupant beaucoup moins de place que les anciens boutons texte.
   Ils suivent le zoom du tableau Résultats via --cz. */
.compta-page .compta-actions-icons{
  display:flex;
  align-items:center;
  gap:calc(3px * var(--cz));
  /* Alignées à gauche et jamais recentrées : chaque icône garde la même position d'une ligne
     à l'autre, y compris quand une action ne s'applique pas (case réservée invisible). */
  justify-content:flex-start;
  flex-wrap:nowrap;
}
.compta-page .compta-icon-placeholder{
  visibility:hidden;
  pointer-events:none;
}
.compta-page .compta-icon-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:calc(24px * var(--cz));
  height:calc(24px * var(--cz));
  padding:0;
  border:1px solid #cfd8dc;
  border-radius:4px;
  background:#fff;
  color:#37474f;
  font-size:calc(13px * var(--cz));
  line-height:1;
  cursor:pointer;
  text-decoration:none;
  flex:0 0 auto;
}
.compta-page .compta-icon-btn:hover{background:#eef4ff;border-color:#9db8e8}
.compta-page .compta-icon-btn:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
.compta-page .compta-icon-btn[disabled]{opacity:.35;cursor:not-allowed;background:#f3f4f6}
.compta-page .compta-icon-btn[disabled]:hover{background:#f3f4f6;border-color:#cfd8dc}
/* États : la couleur porte le sens (vérifiée, anomalie, suppression). */
.compta-page .compta-icon-verify{color:#15803d;border-color:#bbe5c8}
.compta-page .compta-icon-verify:hover{background:#e8f7ee;border-color:#86d3a2}
.compta-page .compta-icon-verify.is-active{background:#15803d;border-color:#15803d;color:#fff}
.compta-page .compta-icon-verify.is-active:hover{background:#126b34}
.compta-page .compta-icon-anomaly{color:#b45309;border-color:#fadfae}
.compta-page .compta-icon-anomaly:hover{background:#fff8e6;border-color:#f0c469}
.compta-page .compta-icon-anomaly.is-active{background:#fff4d6;border-color:#e8b445;font-weight:800}
.compta-page .compta-icon-danger{color:#b91c1c;border-color:#f6c8c8}
.compta-page .compta-icon-danger:hover{background:#fdeaea;border-color:#e88a8a}
/* La colonne Actions ne doit jamais rogner les icônes. */
.compta-page .compta-cell-actions{white-space:nowrap}

/* Sur petit écran, les cellules passent en liste : les icônes restent groupées à droite. */
@media(max-width:900px){
  .compta-page .compta-actions-icons{gap:6px}
  .compta-page .compta-icon-btn{width:30px;height:30px;font-size:15px}
}

.compta-page .compta-purged-badge{
  display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;
  background:#fef2f2;border:1px solid #fecaca;color:#991b1b;font-size:10px;font-weight:800;
}

/* Remise à zéro (RAZ) — encadré volontairement distinct du reste des paramètres. */
.compta-page .compta-raz-card{border-top:2px solid var(--danger)}
.compta-page .compta-raz-alert{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.compta-page .compta-raz-choice{
  display:flex;align-items:flex-start;gap:8px;font-weight:400;color:inherit;
  border:0;padding:4px 0;margin:0 0 4px;
}
.compta-page .compta-raz-counts{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:10px;
}
.compta-page .compta-raz-counts div{
  border:1px solid #e5e7eb;border-radius:4px;padding:8px 10px;background:#fff;font-size:13px;
}
.compta-page .compta-raz-counts strong{display:block;font-size:20px;font-weight:800}
.compta-page #raz-expected-phrase{
  background:#111827;color:#fff;padding:2px 8px;border-radius:3px;font-weight:800;letter-spacing:.4px;
}

/* Outil de zoom (discret, au-dessus du tableau). */
.compta-page .compta-zoom{
  display:inline-flex;
  align-items:center;
  gap:2px;
  border:1px solid #cfd8dc;
  border-radius:3px;
  overflow:hidden;
}
.compta-page .compta-zoom .btn{
  border:0;
  border-radius:0;
  padding:6px 9px;
  font-size:12px;
  min-width:30px;
}
.compta-page .compta-zoom .btn:disabled{opacity:.4;cursor:default}
.compta-page .compta-zoom #compta-zoom-label{
  min-width:52px;
  text-align:center;
  font-variant-numeric:tabular-nums;
}

.compta-page #compta-synth-table{min-width:1450px}
.compta-page #compta-anom-table{min-width:1050px}
.compta-page #compta-import-bucket-table{min-width:1200px}

.compta-page .compta-cell-clip,
.compta-page .compta-cell-text{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.compta-page .compta-cell-text{
  display:block;
  width:100%;
}
.compta-page .compta-cell-number{
  text-align:right;
  font-variant-numeric:tabular-nums;
}
.compta-page .compta-cell-center{
  text-align:center;
  font-variant-numeric:tabular-nums;
}
.compta-page .compta-cell-actions{
  text-align:left;
  overflow:visible!important;
}

/* Code AS et établissement restent visibles pendant le déplacement horizontal. */
@media(min-width:901px){
  .compta-page #compta-res-table th:nth-child(6),
  .compta-page #compta-res-table td:nth-child(6){
    position:sticky;
    left:0;
    z-index:3;
  }
  .compta-page #compta-res-table th:nth-child(7),
  .compta-page #compta-res-table td:nth-child(7){
    position:sticky;
    /* Doit suivre exactement la largeur zoomée de la colonne Code AS (68px) pour que les
       deux colonnes figées restent jointives quel que soit le niveau de zoom. */
    left:calc(68px * var(--cz));
    z-index:3;
    box-shadow:3px 0 5px -4px rgba(15,23,42,.65);
  }
  .compta-page #compta-res-table thead th:nth-child(6),
  .compta-page #compta-res-table thead th:nth-child(7){
    z-index:8;
    background:#e5edf7!important;
  }
  .compta-page #compta-res-table tbody tr:nth-child(odd) td:nth-child(6),
  .compta-page #compta-res-table tbody tr:nth-child(odd) td:nth-child(7){background:#fff}
  .compta-page #compta-res-table tbody tr:nth-child(even) td:nth-child(6),
  .compta-page #compta-res-table tbody tr:nth-child(even) td:nth-child(7){background:#f8fafc}
  .compta-page #compta-res-table tbody tr:hover td:nth-child(6),
  .compta-page #compta-res-table tbody tr:hover td:nth-child(7){background:#eef4ff}
}

.compta-page .compta-page-size{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:11px;
  font-weight:700;
}
.compta-page .compta-page-size select{
  width:auto;
  min-height:27px;
  padding:2px 5px;
  border:1px solid #cfd8dc;
  border-radius:3px;
  background:#fff;
  font-size:11px;
}
.compta-page #compta-res-page-info{
  min-width:78px;
  text-align:center;
  font-weight:800;
}
.compta-page .compta-data-table .btn.btn-sm{
  min-height:22px;
  padding:2px 4px;
  font-size:9.5px;
  line-height:1.05;
  border-radius:3px;
}

/* Infobulle compacte, affichée uniquement par le JavaScript si le texte est tronqué. */
.compta-floating-tooltip{
  position:fixed;
  z-index:99999;
  display:none;
  max-width:min(420px,calc(100vw - 24px));
  padding:5px 7px;
  border:1px solid #9aa9bc;
  border-radius:4px;
  background:#172033;
  color:#fff;
  font:600 11px/1.25 Nunito,Arial,sans-serif;
  box-shadow:0 5px 16px rgba(15,23,42,.24);
  pointer-events:none;
  white-space:pre-line;
  overflow-wrap:anywhere;
}

@media(max-width:900px){
  .compta-page .compta-hscroll{display:none}
  .compta-page .compta-table-wrap,
  .compta-page .compta-results-scroll-area{height:auto;min-height:0;max-height:none;border:0}
  .compta-page .compta-data-table{font-size:12px;min-width:0;width:100%;max-width:none;table-layout:auto}
  .compta-page #compta-res-table{width:100%!important;min-width:0!important;max-width:none!important;table-layout:auto!important}
  .compta-page .compta-data-table th,
  .compta-page .compta-data-table td{height:auto;white-space:normal;padding:7px 8px!important;max-width:none!important}
  .compta-page .compta-cell-text{white-space:normal}
}

/* V80 - bandeau saison : couleur pilotée par l'état de l'année scolaire.
   Vert = ouverte, rouge = fermée, gris neutre = état non reconnu (jamais de vert par défaut). */
.season-badge.is-season-open{background:#22c55e;color:#fff}
.season-badge.is-season-closed{background:#ef4444;color:#fff}
.season-badge.is-season-unknown{background:#6b7280;color:#fff}

/* V81 - Accès direct à la modification d'une inscription depuis les onglets Inscriptions ouvertes/fermées */
.inscription-editable{cursor:pointer}
.inscription-editable:hover{background:#eef4ff}
.inscription-editable:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
.inscription-actions-cell{white-space:nowrap;text-align:left}
.inscription-edit-btn{padding:2px 8px;line-height:1.4;font-size:15px}
@keyframes catRowFlash{0%{background:#fff7cc}60%{background:#fff7cc}100%{background:transparent}}
tr.cat-row-highlight{animation:catRowFlash 2.6s ease-out}
tr.cat-row-highlight td{box-shadow:inset 0 0 0 9999px rgba(255,214,0,.12)}

/* V82 - Zoom du tableau des équipes (menu Équipes). Réglage indépendant du module Remboursement.
   --sz vaut 1 par défaut et n'est surchargé que sur le conteneur du tableau : le reste de la page
   (bandeau, menu, compteur Résultats) n'hérite pas de la valeur. Valeurs de base = valeurs actuelles
   du tableau, donc aucun changement visuel à 100 %. */
.synth-zoom-scope{ --sz:1 }
.synth-zoom-scope .synth-table{ font-size:calc(13px * var(--sz)) }
.synth-zoom-scope .synth-table th,
.synth-zoom-scope .synth-table td{ padding:calc(11px * var(--sz)) calc(10px * var(--sz)) }
.synth-zoom-scope .synth-table .group-row td{ padding:calc(8px * var(--sz)) calc(10px * var(--sz)) }
.synth-zoom-scope .synth-table td::before{ font-size:calc(11px * var(--sz)) }
.synth-zoom-scope .synth-table .btn{ font-size:calc(12px * var(--sz)); padding:calc(4px * var(--sz)) calc(8px * var(--sz)) }
.synth-zoom-scope .synth-table .status,
.synth-zoom-scope .synth-table .group-toggle-btn{ font-size:calc(12px * var(--sz)) }

/* Contrôle de zoom (identique visuellement à celui du module Remboursement). */
.synth-zoom{ display:inline-flex; align-items:center; gap:2px; border:1px solid #cfd8dc; border-radius:3px; overflow:hidden }
.synth-zoom .btn{ border:0; border-radius:0; padding:6px 9px; font-size:12px; min-width:30px }
.synth-zoom .btn:disabled{ opacity:.4; cursor:default }
.synth-zoom #synth-zoom-label{ min-width:52px; text-align:center; font-variant-numeric:tabular-nums }

/* ==================== Centre de notifications ==================== */
.notif-bell{
  position:relative; display:inline-flex; align-items:center; justify-content:center;
  width:36px; height:36px; border:0; border-radius:50%; background:transparent; color:#fff;
  font-size:19px; cursor:pointer; flex:0 0 auto;
}
.notif-bell:hover{ background:rgba(255,255,255,.14) }
.notif-badge{
  position:absolute; top:1px; right:1px; min-width:16px; height:16px; padding:0 4px;
  border-radius:999px; background:var(--danger); color:#fff; font-size:10px; font-weight:800;
  line-height:16px; text-align:center; box-shadow:0 0 0 2px var(--opuss-dark);
}
.notif-panel{
  position:fixed; z-index:9990; display:none; flex-direction:column;
  width:380px; max-width:calc(100vw - 16px); max-height:min(560px, 80vh);
  background:#fff; border:1px solid #d5dce3; border-radius:10px; overflow:hidden;
  box-shadow:0 16px 40px rgba(15,23,42,.28);
}
.notif-panel.open{ display:flex }
.notif-panel-header{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:12px 14px; border-bottom:1px solid #eef1f5; flex:0 0 auto;
}
.notif-panel-header h3{ margin:0; font-size:15px }
.notif-panel-sub{ font-size:12px; color:var(--muted) }
.notif-panel-close{ border:0; background:transparent; font-size:16px; cursor:pointer; color:var(--muted); padding:2px 6px }
.notif-filter-tabs{ display:flex; gap:6px; padding:8px 14px; border-bottom:1px solid #eef1f5; flex:0 0 auto }
.notif-filter-tab{
  border:1px solid #dde3ea; background:#fff; border-radius:999px; padding:4px 11px; font-size:12px;
  font-weight:700; color:#475569; cursor:pointer;
}
.notif-filter-tab.active{ background:var(--blue); border-color:var(--blue); color:#fff }
.notif-list{ flex:1 1 auto; overflow-y:auto; min-height:60px }
.notif-item{
  display:flex; gap:10px; align-items:flex-start; padding:10px 14px; text-decoration:none; color:inherit;
  border-bottom:1px solid #f2f4f7; cursor:pointer; background:#fff; border-left:3px solid transparent;
}
.notif-item:hover{ background:#f8fafc }
.notif-item.unread{ background:var(--light-blue); border-left-color:var(--blue) }
.notif-item.unread .notif-item-title{ font-weight:800 }
.notif-item-icon{ font-size:17px; line-height:1; flex:0 0 auto; margin-top:1px }
.notif-item-body{ flex:1 1 auto; min-width:0 }
.notif-item-title{ font-size:13px; font-weight:700; color:#1f2937 }
.notif-item-text{ font-size:12.5px; color:#475569; margin-top:2px; word-break:break-word }
.notif-item-time{ font-size:11px; color:var(--muted); margin-top:4px }
.notif-item-dot{ width:8px; height:8px; border-radius:50%; background:var(--blue); flex:0 0 auto; margin-top:5px }
.notif-empty{ padding:28px 14px; text-align:center; color:var(--muted); font-size:13px }
.notif-panel-footer{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:9px 14px; border-top:1px solid #eef1f5; flex:0 0 auto; font-size:12.5px;
}
.notif-panel-footer a, .notif-mark-all{ color:var(--blue); text-decoration:none; font-weight:700; cursor:pointer; border:0; background:none; font-size:12.5px; padding:0 }
.notif-panel-footer a:hover, .notif-mark-all:hover{ text-decoration:underline }

@media (max-width:700px){
  .notif-panel{
    left:0; right:0; bottom:0; top:auto; width:100vw; max-width:100vw;
    max-height:80vh; border-radius:16px 16px 0 0;
  }
}

/* Page complète "Historique des notifications" */
.notif-history-filters{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px }
.notif-history-filters input, .notif-history-filters select{ min-height:36px }
.notif-history-row.unread{ background:var(--light-blue) }
.notif-history-row.unread td{ font-weight:700 }

/* Paramètres (superadmin) : navigation verticale par rubriques */
.settings-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;align-items:start}
.settings-nav{position:sticky;top:72px;display:flex;flex-direction:column;background:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.05);overflow:hidden}
.settings-nav-btn{display:flex;align-items:center;gap:8px;width:100%;padding:12px 14px;border:0;border-left:3px solid transparent;border-bottom:1px solid #eee;background:#fff;color:#374151;font:inherit;font-weight:700;text-align:left;cursor:pointer}
.settings-nav-btn:last-child{border-bottom:0}
.settings-nav-btn:hover{background:#f8fbff}
.settings-nav-btn.active{background:var(--light-blue,#eaf4ff);color:var(--blue);border-left-color:var(--blue)}
.settings-pane>.card:first-child{margin-top:0!important}
@media (max-width:900px){
  .settings-layout{grid-template-columns:1fr}
  .settings-nav{position:static;flex-direction:row;flex-wrap:wrap}
  .settings-nav-btn{width:auto;flex:1 1 auto;border-left:0;border-bottom:3px solid transparent}
  .settings-nav-btn.active{border-bottom-color:var(--blue)}
}

/* Écran de connexion : bouton principal plus lisible (« Se connecter », « Valider le code ») */
.login-card .btn-primary{font-size:18px;min-height:54px;letter-spacing:.2px}

/* Membres CMD / CMR / CMN : plein écran de la liste */
html.commission-fullscreen body{overflow:hidden}
html.commission-fullscreen .navbar,
html.commission-fullscreen .sidebar,
html.commission-fullscreen .breadcrumb-line,
html.commission-fullscreen .page-header,
html.commission-fullscreen .content > .card:not(#commission-print-area),
html.commission-fullscreen .scroll-nav-btn{display:none!important}
html.commission-fullscreen #commission-print-area{position:fixed;inset:0;z-index:45;margin:0;border-radius:0;display:flex;flex-direction:column;background:#fff}
html.commission-fullscreen #commission-print-area > .card-body{flex:1;min-height:0;overflow:auto}
html.commission-fullscreen .commission-horizontal-scrollbar{z-index:46}
@media print{html.commission-fullscreen #commission-print-area{position:static}}
@media print{#commission-table{zoom:1!important}}

/* Planning CMD / CMR / CMN : plein écran du calendrier */
html.planning-fullscreen body{overflow:hidden}
html.planning-fullscreen .navbar,
html.planning-fullscreen .sidebar,
html.planning-fullscreen .breadcrumb-line,
html.planning-fullscreen .page-header,
html.planning-fullscreen .content > .card:not(#planning-print-area),
html.planning-fullscreen .scroll-nav-btn{display:none!important}
html.planning-fullscreen #planning-print-area{position:fixed;inset:0;z-index:45;margin:0;border-radius:0;display:flex;flex-direction:column;background:#fff}
html.planning-fullscreen #planning-print-area > .card-body{flex:1;min-height:0;overflow:auto}
@media print{html.planning-fullscreen #planning-print-area{position:static}#calendar-root{zoom:1!important}}

/* Remboursement : plein écran du tableau des résultats */
html.compta-fullscreen body{overflow:hidden}
html.compta-fullscreen .navbar,
html.compta-fullscreen .sidebar,
html.compta-fullscreen .scroll-nav-btn{display:none!important}
html.compta-fullscreen #compta-results-card{position:fixed;inset:0;z-index:45;margin:0;border-radius:0;display:flex;flex-direction:column;background:#fff}
html.compta-fullscreen #compta-results-card > .card-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
html.compta-fullscreen .compta-page .compta-results-scroll-area{flex:1;height:auto;min-height:0;max-height:none}
@media print{html.compta-fullscreen #compta-results-card{position:static}}

/* Équipes : plein écran du tableau */
html.synth-fullscreen body{overflow:hidden}
html.synth-fullscreen .navbar,
html.synth-fullscreen .sidebar,
html.synth-fullscreen .scroll-nav-btn{display:none!important}
html.synth-fullscreen #synth-results-card{position:fixed;inset:0;z-index:45;margin:0;border-radius:0;display:flex;flex-direction:column;background:#fff}
html.synth-fullscreen #synth-results-card > .card-body{flex:1;min-height:0;overflow:auto}
@media print{html.synth-fullscreen #synth-results-card{position:static}}

/* Commissions : membre ciblé par une notification (mise en évidence quelques secondes) */
.commission-table tr.commission-member-row.is-notif-target td{background:#fff4cc!important;transition:background .6s}
.commission-table tr.commission-member-row.is-notif-target td:first-child{box-shadow:inset 4px 0 0 #f59e0b}
/* Navigation entre les pages (clic dans le menu) : l'ancienne page reste affichée jusqu'à ce que la nouvelle soit
   prête, puis fondu très court ; le bandeau du haut et le menu restent fixes. Chrome, Edge et Safari récents ;
   ignoré par les autres navigateurs (comportement habituel). Supprime le micro-clignotement entre deux pages. */
@view-transition{navigation:auto}
.navbar{view-transition-name:opra-navbar}
.sidebar{view-transition-name:opra-sidebar}
::view-transition-old(root),::view-transition-new(root){animation-duration:.12s}
::view-transition-group(opra-navbar),::view-transition-group(opra-sidebar){animation-duration:0s}
@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
/* Administration › Utilisateurs UNSS : tableau compact (une ligne par compte), filtres en pastilles, formulaire en fenêtre */
.usr-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:10px}
.usr-toolbar input[type=search]{max-width:280px;min-height:34px;padding:6px 10px;border:1px solid #d5dce3;border-radius:6px}
.usr-chips{display:flex;flex-wrap:wrap;gap:4px}
.usr-chip{border:1px solid #d3dcf0;background:#fff;color:#334155;border-radius:999px;padding:3px 10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.usr-chip span{color:#64748b;font-weight:600;margin-left:2px}
.usr-chip.is-on{background:#eef2fb;border-color:var(--blue,#17359f);color:var(--blue,#17359f)}
.usr-table th,.usr-table td{padding:6px 10px;vertical-align:middle;white-space:nowrap}
.usr-table .usr-name{font-weight:800}
.usr-table .usr-login{color:#475569;font-size:13px}
.usr-role{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:800;background:#f1f5f9;color:#334155}
.usr-role.is-superadmin{background:#fee2e2;color:#991b1b}.usr-role.is-admin_sr{background:#e0e7ff;color:#3730a3}.usr-role.is-sd{background:#dcfce7;color:#166534}.usr-role.is-dt{background:#fef3c7;color:#92400e}
.usr-acc span{margin-right:3px;cursor:help}
.usr-act{max-width:340px}.usr-actline{display:block;overflow:hidden;text-overflow:ellipsis;color:#475569;font-size:13px}
.usr-btns{text-align:right}.usr-btns .btn{padding:3px 8px;margin-left:4px}
.usr-modal{width:min(1100px,calc(100vw - 24px));max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.usr-modal .modal-body{overflow-y:auto}
