:root{
  --primary:#0c6b58; --primary-dark:#08503f; --primary-light:#e6f4f0; --accent:#f59f00;
  --bg:#f6f8f7; --card:#fff; --text:#1a2330; --muted:#5b6b7a;
  --border:#e2e8ec; --danger:#c92a2a; --ok:#2b8a3e;
  --radius:12px; --radius-sm:8px; --shadow:0 4px 20px rgba(12,107,88,.08);
  --shadow-sm:0 1px 3px rgba(16,24,32,.06);
  --font:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--primary)}
a:hover{color:var(--primary-dark)}
.container{max-width:960px;margin:0 auto;padding:24px}
@media(max-width:640px){.container{padding:16px}}

.header{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:32px 0}
.header h1{margin:0;font-size:1.8em;letter-spacing:-.01em}
.header p{margin:6px 0 0;opacity:.92}
.header-inner{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.header .logo{max-height:64px;background:#fff;padding:6px;border-radius:8px;box-shadow:var(--shadow-sm)}

.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin-bottom:20px}
.card h2{margin-top:0;color:var(--primary);border-bottom:2px solid var(--border);padding-bottom:8px;font-size:1.25em}

.row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
@media(max-width:640px){.row,.row3{grid-template-columns:1fr}}

label{display:block;font-size:.9em;color:var(--muted);margin-bottom:4px;font-weight:500}
/* Champs de formulaire, style "Bootstrap" : même gabarit pour tous les champs texte,
   qu'ils aient ou non un attribut type explicite (ex: <input name="nom"> sans type=text) */
input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]):not([type=button]):not([type=file]),
select,textarea{
  display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;
  color:var(--text);background-color:#fff;background-clip:padding-box;
  border:1px solid #ced4da;border-radius:.375rem;
  transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
select{
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
  background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;
  appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:2.25rem;
}
textarea{min-height:calc(1.5em + .75rem + 2px)}
input:not([type=checkbox]):not([type=radio]):hover,select:hover,textarea:hover{border-color:#c7d3da}
input:not([type=checkbox]):not([type=radio]):focus-visible,select:focus-visible,textarea:focus-visible,
input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 .25rem rgba(12,107,88,.18)}
input:disabled,select:disabled,textarea:disabled{background:#f1f3f5;color:var(--muted);cursor:not-allowed}

.btn{display:inline-flex;align-items:center;gap:6px;background:var(--primary);color:#fff;border:none;padding:12px 22px;border-radius:var(--radius-sm);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;transition:background .15s,transform .1s,box-shadow .15s}
.btn:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 3px 10px rgba(12,107,88,.25)}
.btn:active{transform:translateY(0)}
.btn:focus-visible{outline:2px solid var(--primary-dark);outline-offset:2px}
.btn.secondary{background:#fff;color:var(--primary);border:1px solid var(--primary)}
.btn.secondary:hover{background:var(--primary-light);box-shadow:none}
.btn.danger{background:var(--danger)}
.btn.ghost{background:transparent;color:var(--muted);padding:6px 10px}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}

.adherent-block{border:2px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px;position:relative;animation:fadeIn .3s}
@keyframes fadeIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.adherent-block h3{margin-top:0;color:var(--primary-dark)}
.remove-adherent{position:absolute;top:10px;right:10px}

.activities{display:grid;grid-template-columns:1fr;gap:8px;margin-top:8px}
.activity{display:flex;align-items:center;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.activity:hover{border-color:var(--primary);background:#f9fdfb}
.activity:has(input:checked){border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 0 1px var(--primary) inset}
.activity input{margin-right:12px}
.activity .price{margin-left:auto;font-weight:600;color:var(--primary);white-space:nowrap;padding-left:12px}
.activity.disabled{opacity:.6;cursor:not-allowed;background:#f8f9fa}
.activity.disabled:hover{border-color:var(--border);background:#f8f9fa}

.summary{position:sticky;bottom:0;background:var(--primary);color:#fff;padding:16px 20px;border-radius:var(--radius);display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;box-shadow:0 -4px 20px rgba(0,0,0,.15)}
.summary .total{font-size:1.4em;font-weight:700}

.alert{padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:16px;line-height:1.5}
.alert.error{background:#ffe3e3;color:var(--danger);border:1px solid #ffc9c9}
.alert.success{background:#d3f9d8;color:var(--ok);border:1px solid #b2f2bb}
.alert.info{background:#e7f5ff;color:#0b5394;border:1px solid #b9dcff}

.footer{text-align:center;padding:24px;color:var(--muted);font-size:.9em}

.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.78em;font-weight:600}
.badge.ok{background:#d3f9d8;color:#2b8a3e}
.badge.warn{background:#fff3bf;color:#8a6d00}
.badge.err{background:#ffe3e3;color:#c92a2a}

table{width:100%;border-collapse:collapse}
table th,table td{padding:8px;border-bottom:1px solid var(--border);text-align:left;font-size:.95em}
.muted{color:var(--muted)}

/* ---- Infobulle sur chaque activité ---- */
.info-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;margin-left:6px;font-size:1.3em;font-weight:700;color:var(--primary);
  cursor:help;vertical-align:middle}
.info-icon .tooltip-box{display:none;position:absolute;z-index:30;bottom:135%;left:0;
  width:330px;background:#1a2330;color:#fff;padding:10px 12px;border-radius:8px;
  font-size:.82em;line-height:1.5;font-weight:400;box-shadow:0 6px 20px rgba(0,0,0,.25);white-space:normal}
.info-icon:hover .tooltip-box,.info-icon:focus .tooltip-box,.info-icon:focus-visible .tooltip-box{display:block}

/* ---- Autorisation parentale / aptitude médicale ---- */
.minor-auth,.health-quest{margin-top:18px;padding-top:16px;border-top:1px dashed var(--border)}
.minor-auth h4,.health-quest h4{margin:0 0 6px;color:var(--primary-dark);font-size:1.05em}
.consent-list{margin:10px 0;padding-left:20px;color:var(--text)}
.consent-list li{margin-bottom:6px}
.sante-table{margin-top:10px}
.sante-table th{background:#f8fafb;font-size:.85em;color:var(--muted)}
.sante-table td.center,.sante-table th{text-align:center}
.sante-table td:first-child{text-align:left}

/* ---- Lignes de règlement multiples ---- */
.payment-line{border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;margin-bottom:12px;position:relative;background:#fbfdfc}
.payment-line .remove-payment{position:absolute;top:8px;right:8px}
#paiement-recap.alert-mismatch{background:#ffe3e3;color:var(--danger);border:1px solid #ffc9c9}



/* ---- Cases à cocher & boutons radio : grandes cibles tactiles (smartphone / iPhone) ----
   appearance:none + dessin maison : sinon iOS/Android affichent les contrôles natifs minuscules.
   !important sur width/height : certains champs portent un style="width:auto" en ligne. */
input[type=checkbox],input[type=radio]{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  display:inline-block;flex:0 0 auto;
  width:1.5rem!important;height:1.5rem!important;min-width:1.5rem;
  margin:0 .65rem 0 0;padding:0!important;
  border:2px solid #8a99a6;background-color:#fff;background-repeat:no-repeat;background-position:center;
  vertical-align:middle;cursor:pointer;
  transition:background-color .15s,border-color .15s,box-shadow .15s;
  -webkit-tap-highlight-color:transparent;
}
input[type=checkbox]{border-radius:.4rem}
input[type=radio]{border-radius:50%}
input[type=checkbox]:checked{
  background-color:var(--primary);border-color:var(--primary);background-size:80%;
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m5 10.5 3.5 3.5L15 6.5'/%3e%3c/svg%3e");
}
input[type=radio]:checked{
  border-color:var(--primary);
  background-image:radial-gradient(circle,var(--primary) 45%,transparent 50%);
}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:none;box-shadow:0 0 0 .25rem rgba(12,107,88,.25)}
input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.5;cursor:not-allowed}
@media (pointer:coarse),(max-width:640px){
  input[type=checkbox],input[type=radio]{width:1.85rem!important;height:1.85rem!important;min-width:1.85rem}
}

/* Ligne cliquable en entier (case + texte) */
.choice-row{display:flex;align-items:center;gap:0;margin:0;padding:.6rem .75rem;min-height:48px;
  font-size:1em;font-weight:400;color:var(--text);cursor:pointer;
  border:1px solid var(--border);border-radius:var(--radius-sm,8px);background:#fff}
.choice-row:has(input:checked){border-color:var(--primary);background:var(--primary-light)}
.choice-row.align-top{align-items:flex-start}
.choice-group{display:flex;flex-wrap:wrap;gap:12px}
.choice-group .choice-row{flex:1 1 140px}
/* Radio d'une cellule de tableau : zone de toucher d'au moins 44 px */
.radio-hit{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:0;cursor:pointer}
.radio-hit input{margin:0}
