/* =========================================================
   CARDS.CSS
   Stili card estratti da app.css
   Nota: le classi restano identiche, quindi NON serve modificare i JS.
   ========================================================= */

/* Nasconde visivamente il checkbox ma lo lascia accessibile */
.cat-card .card-chk{ 
  position: absolute; 
  opacity: 0; 
  width: 1px; 
  height: 1px; 
  pointer-events: none; 
}

.cat-card { cursor: pointer; }

.cat-card.selected{ 
  outline: 2px solid #0d6efd; 
  box-shadow: 0 0 0 .2rem rgba(13,110,253,.15); 
}
/* === UTENTI: CARD VIEW (allineata alle cat-card) === */
/* Nasconde visivamente il checkbox ma lo lascia accessibile */
.user-card .card-chk{ 
  position: absolute; 
  opacity: 0; 
  width: 1px; 
  height: 1px; 
  pointer-events: none; 
}
/* Feedback visivo + affordance click */
.user-card { cursor: pointer; } 
.user-card.selected{ 
  outline: 2px solid #0d6efd; /* come cat-card.selected */ 
  box-shadow: 0 0 0 .2rem rgba(13,110,253,.15); 
}
/* Dettagli piccoli di leggibilità nelle card utente */
.user-card .card-header .badge { 
  font-size: .7rem; 
}
.user-card .card-body .small i { 
  opacity: .7; 
}
/* === SOCIETA: CARD VIEW (allineata a cat-card / user-card) === */
.soc-card .card-chk{ 
  position: absolute; 
  opacity: 0; 
  width: 1px; 
  height: 1px; 
  pointer-events: none; 
}
.soc-card { cursor: pointer; } 
.soc-card.selected{ 
  outline: 2px solid #0d6efd; 
  box-shadow: 0 0 0 .2rem rgba(13,110,253,.15); 
}
.soc-card .card-header .badge { 
  font-size: .7rem; 
}
/* === GARE: CARD VIEW (allineata a cat-card / user-card / soc-card) === */
.gara-card .card-chk{ 
  position: absolute; 
  opacity: 0; 
  width: 1px; 
  height: 1px; 
  pointer-events: none; 
}
.gara-card { cursor: pointer; } 
.gara-card.selected{ 
  outline: 2px solid #0d6efd; 
  box-shadow: 0 0 0 .2rem rgba(13,110,253,.15); 
}
/* opzionale, in linea con .user-card */
.gara-card .card-header .badge { font-size: .7rem; } 
.gara-card .card-body .small i { opacity: .7; }

/* === GINNASTI: CARD VIEW — versione compatta === */
.card-header {
 /* background: linear-gradient(180deg, #eef4ff 0%, #e3eeff 100%);
  border-bottom: 1px solid #d3e2ff;*/

  background: linear-gradient(180deg, #eef4ff 0%, #6295e3 100%);
  border-bottom: 1px solid #0c2e6e;
}


.ginn-card .card-chk{ 
  position: absolute; 
  opacity: 0; 
  width: 1px; 
  height: 1px; 
  pointer-events: none; 
}


.ginnasta-card { cursor:pointer; }
.ginnasta-card.selected{
  outline:2px solid #0d6efd;
  box-shadow:0 0 0 .16rem rgba(13,110,253,.15);
}

/* Compattezza: meno padding e gap */
.ginnasta-card .card-body {
  padding: .6rem .65rem;              /* default ~1rem -> più compatta */
}
.ginnasta-card .fw-semibold {
  font-size: .98rem;                  /* leggermente più piccolo */
  line-height: 1.15;
}
.ginnasta-card .small { font-size: .78rem; }  /* testi descrittivi più piccoli */
.ginnasta-card .badge { 
  font-size: .68rem; 
  padding: .18em .4em; 
}
.ginnasta-card .d-flex.gap-2 { gap: .25rem !important; } /* override locale */

/* Riduci margini verticali “superflui” */
.ginnasta-card .meta-block + .meta-block { 
  margin-top: .15rem; 
}

/* Opzionale: ombra più leggera per densità alta */
.ginnasta-card.shadow-sm { box-shadow: 0 .1rem .25rem rgba(0,0,0,.07)!important; }


.ginn-card.selected { outline: 2px solid #0d6efd; }
.ginn-card .card-body { padding-top: .5rem; padding-bottom: .5rem; }
.ginn-card .card-header { padding-top: .35rem; padding-bottom: .35rem; }

.gare-badges {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
  }

.gara-meta {
    font-size: .75rem;
    opacity: .85;
  }

.text-nowrap-soft {
    white-space: nowrap;
  }

.col-gare-assegnate {
  min-width: 280px;
  max-width: 460px;
  white-space: normal;
  font-size: .82rem;
}

.col-gare-assegnate .gare-item {
  line-height: 1.35;
}

.col-gare-assegnate .badge {
  vertical-align: middle;
}


.iscrizione-card {
    cursor: pointer;
    transition: all .2s ease;
}

.iscrizione-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 .5rem 1rem rgba(0,0,0,.15);
}

.iscrizione-card.table-selected {
    border: 2px solid var(--tblr-primary);
    background: rgba(32,107,196,.08);
}

/* =========================================================
   CARD DEFINITIONS USED BY JS RENDERERS
   Estratte/allineate alle classi generate in:
   Categorie.js, Societa.js, utenti.js, ginnasti.js, gare.js
   ========================================================= */

/* Base comune per tutte le card generate via JS */
.cat-card,
.user-card,
.soc-card,
.gara-card,
.ginn-card,
.ginnasta-card,
.iscrizione-card {
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease, background-color .15s ease;
}

.cat-card:hover,
.user-card:hover,
.soc-card:hover,
.gara-card:hover,
.ginn-card:hover,
.ginnasta-card:hover,
.iscrizione-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 .5rem 1rem rgba(0,0,0,.12);
}

.cat-card.selected,
.user-card.selected,
.soc-card.selected,
.gara-card.selected,
.ginn-card.selected,
.ginnasta-card.selected,
.iscrizione-card.selected,
.iscrizione-card.table-selected {
  outline: 2px solid #0d6efd;
  box-shadow: 0 0 0 .2rem rgba(13,110,253,.15);
}

.cat-card .card-chk,
.user-card .card-chk,
.soc-card .card-chk,
.gara-card .card-chk,
.ginn-card .card-chk,
.ginnasta-card .card-chk,
.iscrizione-card .card-chk {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}

.cat-card .card-header,
.user-card .card-header,
.soc-card .card-header,
.gara-card .card-header,
.ginn-card .card-header,
.ginnasta-card .card-header,
.iscrizione-card .card-header {
  padding-top: .45rem;
  padding-bottom: .45rem;
}

.cat-card .card-body,
.user-card .card-body,
.soc-card .card-body,
.gara-card .card-body,
.ginn-card .card-body,
.ginnasta-card .card-body,
.iscrizione-card .card-body {
  padding-top: .6rem;
  padding-bottom: .6rem;
}

.cat-card .badge,
.user-card .badge,
.soc-card .badge,
.gara-card .badge,
.ginn-card .badge,
.ginnasta-card .badge,
.iscrizione-card .badge {
  font-size: .7rem;
}

.cat-card .small,
.user-card .small,
.soc-card .small,
.gara-card .small,
.ginn-card .small,
.ginnasta-card .small,
.iscrizione-card .small {
  font-size: .8rem;
}

/* Categorie.js */
.cat-card.attiva {
  border-color: rgba(25,135,84,.35);
}

.cat-card.attiva > .card-header {
  background: rgba(25,135,84,.08);
}

.cat-card:not(.attiva) > .card-header {
  background: rgba(4, 73, 134, 0.08);
}

/* Societa.js */
.soc-card .card-header .badge {
  max-width: 86px;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* utenti.js */
.user-card .card-header .fw-bold,
.soc-card .card-header .fw-bold,
.ginn-card .card-header .fw-bold,
.iscrizione-card .card-header .fw-bold {
  min-width: 0;
}

/* ginnasti.js / iscrizione.js */
.ginn-card .bi,
.ginnasta-card .bi,
.iscrizione-card .bi,
.user-card .bi,
.soc-card .bi {
  opacity: .75;
}

/* iscrizione.js */
.iscrizione-card .gare-card-list {
  max-height: 150px;
  overflow-y: auto;
  padding-right: .15rem;
}

.iscrizione-card .gare-item {
  line-height: 1.35;
}

/* gare.js: stato pill usato da renderStatoPill() */
.gara-stato {
  display: inline-block;
  padding: .22rem .5rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  background: #e9ecef;
  color: #495057;
  white-space: nowrap;
}

.gara-stato-aperta {
  background: #d1e7dd;
  color: #057a43;
}

.gara-stato-in-corso {
  background: #cfe2ff;
  color: #084298;
}

.gara-stato-chiusa {
  background: #f8d7da;
  color: #842029;
}

.gara-stato-annullata {
  background: #e2e3e5;
  color: #41464b;
  text-decoration: line-through;
}

.gara-stato-in-attesa {
  background: #fff3cd;
  color: #664d03;
}

/* Card gare: layout generato senza header dedicato */
.gara-card .card-body.d-flex {
  min-height: 100%;
}

.gara-card .fw-semibold {
  line-height: 1.2;
}

/* Liste/etichette gara assegnata usate anche da iscrizioni */
.gare-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}

.gara-badge {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  max-width: 100%;
  white-space: normal;
  text-align: left;
}

.gara-meta {
  font-size: .75rem;
  opacity: .85;
}

.text-nowrap-soft {
  white-space: nowrap;
}
