/* Calendrier escrime – affichage public. Couleurs personnalisables par le thème via les variables --cffe-*. */
.cffe {
  --cffe-accent: #0b5cad;
  --cffe-accent-doux: #e8f1fb;
  --cffe-texte: #1d2330;
  --cffe-doux: #667085;
  --cffe-bord: #e3e7ee;
  --cffe-carte: #ffffff;
  --cffe-fond: #f6f8fb;
  --cffe-ok: #1f8a4c;
  --cffe-rayon: 14px;
  --cffe-taille: 17px; /* taille de base, réglable par le thème */
  color: var(--cffe-texte);
  font-size: var(--cffe-taille);
  line-height: 1.5;
  max-width: 980px;
  margin: 1.5em auto;
}
.cffe *, .cffe *::before, .cffe *::after { box-sizing: border-box; }
.cffe button, .cffe input, .cffe select { font: inherit; }

/* En-tête */
.cffe-entete { display: flex; flex-wrap: wrap; align-items: baseline; gap: .3em 1em; margin-bottom: 1em; }
.cffe .cffe-titre { margin: 0; font-size: 1.75em; line-height: 1.2; }
.cffe-saison-libelle { color: var(--cffe-doux); font-weight: 600; }
.cffe-intro { flex-basis: 100%; margin: .2em 0 0; color: var(--cffe-doux); }

/* Contrôles */
.cffe-controles {
  display: grid; gap: 1em; padding: 1.1em 1.2em; margin-bottom: 1.2em;
  background: var(--cffe-fond); border: 1px solid var(--cffe-bord); border-radius: var(--cffe-rayon);
}
.cffe-groupe { display: grid; gap: .45em; }
.cffe-etiquette { font-size: .82em; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--cffe-doux); }
.cffe-puces { display: flex; flex-wrap: wrap; gap: .45em; }
.cffe-puces button {
  border: 1.5px solid var(--cffe-bord); background: var(--cffe-carte); color: var(--cffe-texte);
  border-radius: 999px; padding: .4em 1em; cursor: pointer; font-weight: 600; line-height: 1.2;
  transition: background .15s, border-color .15s, color .15s, transform .1s;
}
.cffe-puces button:hover { border-color: var(--cffe-accent); }
.cffe-puces button:active { transform: scale(.97); }
.cffe-puces button[aria-checked="true"] { background: var(--cffe-accent); border-color: var(--cffe-accent); color: #fff; }
.cffe-puces button[data-champ="arme"][aria-checked="true"] { background: var(--cffe-arme, var(--cffe-accent)); border-color: var(--cffe-arme, var(--cffe-accent)); }
.cffe-puces button:focus-visible, .cffe-bouton:focus-visible, .cffe-interrupteur input:focus-visible + .cffe-glissiere {
  outline: 3px solid var(--cffe-accent); outline-offset: 2px;
}

/* Onglets de catégories ([calendriers_escrime]) */
.cffe-onglets {
  display: flex; gap: .3em; overflow-x: auto; scrollbar-width: thin; margin-bottom: 1em;
  border-bottom: 2px solid var(--cffe-bord); -webkit-overflow-scrolling: touch;
}
.cffe-onglets button {
  flex: none; border: 0; background: none; color: var(--cffe-doux); cursor: pointer; font-weight: 700;
  padding: .6em 1em; margin-bottom: -2px; border-bottom: 3px solid transparent; border-radius: 8px 8px 0 0; white-space: nowrap;
  transition: color .15s, border-color .15s, background .15s;
}
.cffe-onglets button:hover { color: var(--cffe-texte); background: var(--cffe-fond); }
.cffe-onglets button[aria-selected="true"] { color: var(--cffe-accent); border-bottom-color: var(--cffe-accent); }
.cffe-onglets button:focus-visible { outline: 3px solid var(--cffe-accent); outline-offset: -3px; }

/* Cases à cocher des armes */
.cffe-cases { display: flex; flex-wrap: wrap; gap: .5em; }
.cffe-case { position: relative; cursor: pointer; }
.cffe-case input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cffe-case span {
  display: inline-flex; align-items: center; gap: .45em; padding: .4em .95em .4em .7em; border-radius: 999px;
  border: 1.5px solid var(--cffe-bord); background: var(--cffe-carte); font-weight: 600; line-height: 1.2;
  transition: background .15s, border-color .15s, color .15s;
}
.cffe-case span::before {
  content: ""; width: 1em; height: 1em; border-radius: 4px; border: 2px solid var(--cffe-bord); background: #fff;
  flex: none; transition: background .15s, border-color .15s;
}
.cffe-case input:checked + span { border-color: var(--cffe-arme, var(--cffe-accent)); }
.cffe-case input:checked + span::before {
  border-color: var(--cffe-arme, var(--cffe-accent)); background: var(--cffe-arme, var(--cffe-accent))
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 100% no-repeat;
}
.cffe-case input:focus-visible + span { outline: 3px solid var(--cffe-accent); outline-offset: 2px; }
.cffe-etiquettes .cffe-arme-etiquette { background: var(--cffe-arme, var(--cffe-accent)); color: #fff; font-weight: 700; }

.cffe-interrupteur { display: inline-flex; align-items: center; gap: .7em; cursor: pointer; font-weight: 600; width: fit-content; }
.cffe-interrupteur input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cffe-glissiere { position: relative; width: 2.6em; height: 1.5em; border-radius: 999px; background: #c5ccd6; transition: background .2s; flex: none; }
.cffe-glissiere::after {
  content: ""; position: absolute; top: .2em; left: .2em; width: 1.1em; height: 1.1em; border-radius: 50%;
  background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: transform .2s;
}
.cffe-interrupteur input:checked + .cffe-glissiere { background: var(--cffe-ok); }
.cffe-interrupteur input:checked + .cffe-glissiere::after { transform: translateX(1.1em); }

.cffe-distance-resume { font-weight: 400; color: var(--cffe-doux); }
.cffe-distance-corps { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .7em 1em; margin: .7em 0 0 3.3em; }
.cffe-distance-corps[hidden] { display: none; }
.cffe-distance-corps label { display: grid; gap: .25em; font-size: .95em; color: var(--cffe-doux); }
.cffe-distance-corps input, .cffe-distance-corps select {
  padding: .45em .6em; border: 1.5px solid var(--cffe-bord); border-radius: 10px; background: var(--cffe-carte); color: var(--cffe-texte); min-width: 12em;
}
.cffe-position { flex-basis: 100%; margin: 0; font-size: .9em; color: var(--cffe-doux); }
.cffe-position:empty { display: none; }

/* Boutons */
.cffe-bouton {
  display: inline-flex; align-items: center; gap: .4em; border: 1.5px solid var(--cffe-bord); background: var(--cffe-carte);
  color: var(--cffe-texte); border-radius: 10px; padding: .45em .9em; cursor: pointer; font-weight: 600; text-decoration: none; line-height: 1.2;
}
.cffe-bouton:hover { border-color: var(--cffe-accent); color: var(--cffe-accent); }
.cffe-lien { border: 0; background: none; color: var(--cffe-accent); padding: .6em 0; }

/* Résultats */
.cffe-resultats { transition: opacity .2s; }
.cffe-occupe { opacity: .55; }
.cffe-barre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6em; margin-bottom: .8em; }
.cffe-resume { margin: 0; font-weight: 600; }
.cffe-actions { display: flex; flex-wrap: wrap; gap: .5em; }
.cffe-abonnement { padding: 1em 1.1em; margin-bottom: 1em; border-radius: var(--cffe-rayon); background: var(--cffe-accent-doux); }
.cffe-abonnement p { margin: 0 0 .6em; }
.cffe-note { font-size: .9em; color: var(--cffe-doux); margin: 0 0 .8em; }
.cffe-vide { padding: 2em 1em; text-align: center; color: var(--cffe-doux); background: var(--cffe-fond); border: 1px dashed var(--cffe-bord); border-radius: var(--cffe-rayon); }
.cffe-erreur { color: #b42318; }


/* Liste */
.cffe-mois { margin-bottom: 1.2em; }
.cffe .cffe-mois-titre { font-size: 1.2em; text-transform: capitalize; margin: 0 0 .6em; color: var(--cffe-accent); }
.cffe-carte {
  display: flex; gap: 1em; padding: 1em; margin-bottom: .7em; background: var(--cffe-carte);
  border: 1px solid var(--cffe-bord); border-left: 5px solid var(--cffe-arme, var(--cffe-accent)); border-radius: var(--cffe-rayon);
  box-shadow: 0 1px 2px rgba(16,24,40,.05); transition: box-shadow .2s;
}
.cffe-carte:hover { box-shadow: 0 6px 18px rgba(16,24,40,.08); }
.cffe-passee { opacity: .6; }
.cffe-date { flex: none; width: 4.4em; text-align: center; display: grid; align-content: start; }
.cffe-date-j { font-size: 1.7em; font-weight: 800; line-height: 1.1; white-space: nowrap; }
.cffe-date-m { font-weight: 700; text-transform: uppercase; font-size: .85em; color: var(--cffe-accent); }
.cffe-date-s { font-size: .82em; color: var(--cffe-doux); }
.cffe-corps { min-width: 0; flex: 1; }
.cffe .cffe-carte-titre { margin: 0 0 .2em; font-size: 1.15em; line-height: 1.3; }
.cffe-quand, .cffe-lieu { margin: 0; color: var(--cffe-doux); font-size: 1em; }
.cffe-quand::first-letter { text-transform: uppercase; }
.cffe-lieu { color: var(--cffe-texte); font-weight: 600; }
.cffe-km { font-weight: 600; color: var(--cffe-accent); margin-left: .3em; }
.cffe-etiquettes { display: flex; flex-wrap: wrap; gap: .35em; margin: .45em 0 0; }
.cffe-etiquettes:empty { display: none; }
.cffe-etiquettes span { font-size: .82em; padding: .15em .6em; border-radius: 999px; background: var(--cffe-fond); color: var(--cffe-doux); }
.cffe-etiquettes .cffe-officielle { background: #e3f4ea; color: var(--cffe-ok); font-weight: 700; }
.cffe-etiquettes .cffe-stage { background: #eef0fb; color: #3b4a9c; font-weight: 700; }
.cffe-statut-pre.cffe-selection { background: #eef0fb; color: #3b4a9c; font-weight: 400; }
.cffe-plus { margin-top: .5em; font-size: .95em; }
.cffe-plus summary { cursor: pointer; color: var(--cffe-accent); font-weight: 600; width: fit-content; }
.cffe-liens { display: flex; flex-wrap: wrap; gap: .4em .9em; margin: .5em 0 0; }
.cffe-liens a { color: var(--cffe-accent); }

/* Préinscription */
.cffe-limite { margin: .3em 0 0; font-size: .9em; color: var(--cffe-doux); }
.cffe-remarque { margin: .3em 0 0; font-size: .95em; white-space: pre-line; border-left: 3px solid var(--cffe-arme, #ccc); padding-left: .6em; }
.cffe-limite-depassee { color: #b32d2e; font-weight: 600; }
.cffe-pied { display: flex; flex-wrap: wrap; align-items: center; gap: .5em 1em; margin-top: .6em; }
.cffe-pied .cffe-plus { margin-top: 0; }
.cffe-preinscrire { background: var(--cffe-accent); border-color: var(--cffe-accent); color: #fff; }
.cffe-preinscrire:hover { color: #fff; filter: brightness(1.1); }
.cffe-statut-pre { font-size: .85em; font-weight: 600; padding: .3em .8em; border-radius: 999px; background: #fcf0d9; color: #8a5a00; }
.cffe-statut-pre.cffe-statut-envoyee { background: #e3f4ea; color: var(--cffe-ok); }
.cffe-dialogue {
  width: min(560px, calc(100vw - 2em)); max-height: calc(100vh - 2em); padding: 0; border: 0;
  border-radius: var(--cffe-rayon); box-shadow: 0 20px 60px rgba(16,24,40,.3); color: var(--cffe-texte);
  font-size: var(--cffe-taille);
}
.cffe-dialogue::backdrop { background: rgba(16, 24, 40, .5); }
.cffe-dlg-corps { position: relative; padding: 1.4em 1.5em; }
.cffe .cffe-dlg-titre { margin: 0 2em .6em 0; font-size: 1.3em; }
.cffe-dlg-compet { margin: 0 0 .6em; color: var(--cffe-doux); }
.cffe-dlg-compet strong { color: var(--cffe-texte); }
.cffe-nationale { font-weight: 700; color: var(--cffe-accent); }
.cffe-croix { position: absolute; top: .6em; right: .7em; border: 0; background: none; font-size: 1.6em; line-height: 1; cursor: pointer; color: var(--cffe-doux); }
.cffe-avis { padding: .8em 1em; border-radius: 10px; background: var(--cffe-accent-doux); margin: .8em 0; }
.cffe-avis-pas_ouverte { background: #fcf0d9; }
.cffe-avis-hors_delai, .cffe-avis-commencee { background: #fcf0f1; color: #8f1f1f; }
.cffe-dlg-form { display: grid; gap: .8em; }
.cffe-champs { display: grid; grid-template-columns: repeat(auto-fit, minmax(10em, 1fr)); gap: .7em; }
.cffe-dlg-form label { display: grid; gap: .25em; font-size: .9em; color: var(--cffe-doux); }
.cffe-dlg-form input, .cffe-dlg-form select {
  padding: .5em .6em; border: 1.5px solid var(--cffe-bord); border-radius: 10px; color: var(--cffe-texte); background: var(--cffe-carte); font-size: 1rem; font-size: max(16px, 1em);
}
.cffe-dlg-erreur:empty { display: none; }
.cffe-fiche { margin: 0; padding: .8em 1em; border-radius: 10px; background: var(--cffe-fond); }
.cffe-code input { font-size: 1.4em !important; letter-spacing: .3em; max-width: 9em; text-align: center; }
.cffe-adhesion { max-width: 620px; }
.cffe-adhesion .cffe-dlg-form label { display: grid; gap: .25em; font-size: .9em; color: var(--cffe-doux); }
.cffe-dlg-actions { display: flex; flex-wrap: wrap; gap: .6em; margin-top: .4em; }
.cffe-principal { background: var(--cffe-accent); border-color: var(--cffe-accent); color: #fff; }
.cffe-principal:hover { color: #fff; filter: brightness(1.1); }
.cffe-bouton[disabled] { opacity: .55; cursor: not-allowed; }

@media (max-width: 600px) {
  .cffe { --cffe-taille: 16px; }
  .cffe-controles { padding: .9em; }
  .cffe-carte { gap: .7em; padding: .8em; }
  .cffe-date { width: 3.4em; }
  .cffe-distance-corps input, .cffe-distance-corps select { min-width: 0; width: 100%; }
  .cffe-distance-corps label { flex: 1 1 100%; }
  .cffe-distance-corps { margin-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .cffe * { transition: none !important; }
}

@media print {
  .cffe-onglets, .cffe-controles, .cffe-actions, .cffe-abonnement, .cffe-voir-passees, .cffe-plus, .cffe-preinscrire, .cffe-dialogue { display: none !important; }
  .cffe-carte { break-inside: avoid; box-shadow: none; }
  .cffe-carte, .cffe-date-m { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
