/* Bingo personnalisé : cartes avec vos mots, tirage en direct et jeu à l'écran */
.o-bingo-personnalise-bloc { padding-top: 18px; margin-top: 18px; border-top: 1px solid var(--bord); }
.o-bingo-personnalise-bloc:first-child { padding-top: 0; margin-top: 0; border-top: 0; }
.o-bingo-personnalise-bloc h2 { margin: 0 0 12px; font-size: 1.25rem; }
.o-bingo-personnalise-themes { border-top: 0; padding-top: 0; }
.o-bingo-personnalise .reglages textarea { min-height: 220px; font-family: var(--police); font-size: 1rem; line-height: 1.5; }
.o-bingo-personnalise-compte { margin: 8px 0 2px; font-weight: 600; }
.o-bingo-personnalise-compte.manque { color: var(--erreur-texte); }
.o-bingo-personnalise-aide { margin-bottom: 14px; }
.o-bingo-personnalise .reglages input:disabled { opacity: .55; }
.o-bingo-personnalise-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 10px; }
.o-bingo-personnalise-resume { display: block; margin-bottom: 6px; font-weight: 600; }
.o-bingo-personnalise-resume:empty { display: none; }
.o-bingo-personnalise .o-bingo-personnalise-alerte { margin-bottom: 6px; padding: 8px 12px; border-radius: var(--rayon-petit); background: var(--erreur-fond); color: var(--erreur-texte); font-size: .95rem; }
.o-bingo-personnalise .o-bingo-personnalise-alerte:empty { display: none; }
.o-bingo-personnalise-sous-titre { margin: 18px 0 8px; font-size: 1rem; color: var(--texte-2); }

/* Grilles (aperçu et jeu) */
.o-bingo-personnalise-apercu { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); gap: 14px; max-height: 640px; overflow: auto; margin-top: 12px; padding: 4px; }
.o-bingo-personnalise-apercu:focus-visible { outline: 2px solid var(--marque); outline-offset: 2px; }
.o-bingo-personnalise-carte { margin: 0; }
.o-bingo-personnalise-carte figcaption { margin-bottom: 4px; font-size: .85rem; font-weight: 600; color: var(--texte-2); }
.o-bingo-personnalise-grille { display: grid; grid-template-columns: repeat(var(--n, 5), minmax(0, 1fr)); border: 1px solid var(--bord); background: var(--bord); gap: 1px; }
.o-bingo-personnalise-grille > * { display: flex; align-items: center; justify-content: center; aspect-ratio: 1; min-width: 0; padding: 3px; overflow: hidden; background: var(--surface); color: var(--texte); font-weight: 700; line-height: 1.15; text-align: center; white-space: normal; overflow-wrap: normal; word-break: normal; hyphens: none; }
.o-bingo-personnalise-grille > .libre { background: var(--surface-2); color: var(--texte-2); }

/* Tirage */
.o-bingo-personnalise-mot { display: grid; place-items: center; min-width: min(100%, 320px); max-width: 100%; min-height: 150px; padding: 16px 28px; border-radius: 28px; background: var(--surface-2); color: var(--marque); font: 800 clamp(2rem, 7vw, 3.6rem)/1.15 var(--police); text-align: center; overflow-wrap: anywhere; box-sizing: border-box; }
.o-bingo-personnalise-mot.long { font-size: clamp(1.5rem, 5vw, 2.4rem); }
.o-bingo-personnalise-mot.vide { color: var(--texte-2); }
.o-bingo-personnalise-mot.anime { animation: o-bingo-personnalise-sortie .3s ease-out; }
@keyframes o-bingo-personnalise-sortie { from { transform: scale(.7); opacity: .3; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .o-bingo-personnalise-mot.anime { animation: none; } }
.o-bingo-personnalise-nb { margin: 0; color: var(--texte-2); font-weight: 600; }
.o-bingo-personnalise-commandes { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 8px; }
.o-bingo-personnalise-historique { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; counter-reset: obp; }
.o-bingo-personnalise-historique li { counter-increment: obp; padding: 4px 10px; border-radius: 8px; background: var(--surface-2); font-size: .95rem; }
.o-bingo-personnalise-historique li::before { content: counter(obp) ". "; color: var(--texte-2); font-variant-numeric: tabular-nums; }
.o-bingo-personnalise-historique li:last-child { background: var(--marque); color: var(--sur-marque); }
.o-bingo-personnalise-historique li:last-child::before { color: inherit; }

/* Jeu à l'écran */
.o-bingo-personnalise-aide-jeu { margin: 0 0 10px; color: var(--texte-2); font-size: .92rem; }
.o-bingo-personnalise-choix { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 14px; }
.o-bingo-personnalise-choix input { width: 6em; }
.o-bingo-personnalise-jeu { max-width: 560px; }
.o-bingo-personnalise-jeu-titre { margin: 0 0 6px; font-weight: 700; }
.o-bingo-personnalise-grille.jeu > button { border: 0; border-radius: 0; font: inherit; font-weight: 700; cursor: pointer; padding: 4px; }
.o-bingo-personnalise-grille.jeu > button:hover { background: var(--surface-2); }
.o-bingo-personnalise-grille.jeu > button:focus-visible { outline: 3px solid var(--marque); outline-offset: -3px; }
.o-bingo-personnalise-grille.jeu > button[aria-pressed="true"] { background: var(--ok-fond); color: var(--ok-texte); }
.o-bingo-personnalise-grille.jeu > button.libre { cursor: default; background: var(--surface-2); color: var(--texte-2); }
.o-bingo-personnalise-grille.jeu > button.gagne { background: var(--marque); color: var(--sur-marque); }
.o-bingo-personnalise-verdict { display: block; margin: 4px 0 12px; }
.o-bingo-personnalise-verdict:empty { display: none; }
.o-bingo-personnalise-verdict.gagne strong { font-size: 1.3rem; color: var(--marque); }
.o-bingo-personnalise-prive { margin-top: 18px; }

/* Impression */
.o-bingo-personnalise .o-bingo-personnalise-impression { display: none; }
@media print {
  body:has(.o-bingo-personnalise-impression) *:not(:has(.o-bingo-personnalise-impression)):not(.o-bingo-personnalise-impression):not(.o-bingo-personnalise-impression *) { display: none !important; }
  html:has(.o-bingo-personnalise-impression), body:has(.o-bingo-personnalise-impression), body:has(.o-bingo-personnalise-impression) *:has(.o-bingo-personnalise-impression) {
    display: block !important; margin: 0 !important; padding: 0 !important; border: 0 !important; background: #fff !important;
    box-shadow: none !important; width: auto !important; max-width: none !important; min-height: 0 !important; height: auto !important;
    position: static !important; overflow: visible !important; color: #000 !important;
  }
  .o-bingo-personnalise .o-bingo-personnalise-impression { display: block !important; color: #000; font-family: var(--police); -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .o-bingo-personnalise-impression .o-bingo-personnalise-feuille { display: grid; align-content: start; justify-content: center; overflow: hidden; break-after: page; page-break-after: always; }
  .o-bingo-personnalise-impression .o-bingo-personnalise-feuille:last-child { break-after: auto; page-break-after: auto; }
  .o-bingo-personnalise-impression .o-bingo-personnalise-carte-impr { display: flex; flex-direction: column; justify-self: center; align-self: center; }
  .o-bingo-personnalise-impression .o-bingo-personnalise-tete { box-sizing: border-box; display: flex; align-items: flex-end; justify-content: center; padding-bottom: 1.5mm; font-weight: 800; line-height: 1.1; color: #000; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .o-bingo-personnalise-impression .o-bingo-personnalise-pied { box-sizing: border-box; padding-top: 1mm; font-size: 7pt; color: #555; white-space: nowrap; overflow: hidden; }
  .o-bingo-personnalise-impression table { margin: 0 !important; border-collapse: collapse; table-layout: fixed; }
  .o-bingo-personnalise-impression td { box-sizing: border-box; overflow: hidden; border: .4mm solid #000; text-align: center; vertical-align: middle; font-weight: 700; line-height: 1.15; color: #000; background: #fff; white-space: normal; overflow-wrap: normal; word-break: normal; hyphens: none; }
  .o-bingo-personnalise-impression td.libre { background: #e6e6e6; }
  .o-bingo-personnalise-impression .appel { display: block; height: auto; }
  .o-bingo-personnalise-impression .appel h2 { margin: 0 0 6mm; font-size: 18pt; color: #000; }
  .o-bingo-personnalise-impression .appel ol { columns: 3; column-gap: 8mm; margin: 0; padding-left: 8mm; font-size: 11pt; line-height: 1.6; color: #000; }
  .o-bingo-personnalise-impression .appel li { break-inside: avoid; }
  .o-bingo-personnalise-impression .appel li::marker { color: #555; }
}
