:root {
  --kaki: #555D47;
  --kaki-soft: #7A7F62;
  --ink: #2F352B;
  --ink-soft: #535B49;
  --gold: #CDA747;
  --gold-dark: #9B7626;
  --cream: #F5F2EA;
  --cream-2: #ECE7DA;
  --muted: #68705F;
  --display: 'Cormorant Garamond', serif;
  --muscu: #E87522;
  --muscu-bg: #FFF0E4;
  --cardio: #2676D9;
  --cardio-bg: #EAF3FF;
  --course: #7657D6;
  --course-bg: #F1ECFF;
  --notification: #B64B67;
  --notification-bg: #FBEAF0;
  --danger: #B0524B;
  --line: #EBE6D8;
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; height: 100%; }
body {
  background: var(--cream); color: var(--kaki);
  font-family: 'Jost', system-ui, sans-serif;
  font-size: 17px; line-height: 1.55; font-weight: 400;
}
#app { max-width: 480px; margin: 0 auto; min-height: 100%; position: relative; }
.display { font-family: 'Cormorant Garamond', serif; font-weight: 700; letter-spacing: -.5px; }
.eyebrow { text-transform: uppercase; letter-spacing: 3px; font-size: 11px; color: var(--gold); font-weight: 500; }

/* Boot */
.boot { position: fixed; inset: 0; background: var(--kaki); display: flex; align-items: center; justify-content: center; }
.mono {
  width: 76px; height: 76px; border-radius: 76px; background: var(--kaki);
  border: 1.5px solid var(--gold); display: flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif; color: var(--gold); font-size: 38px; font-weight: 600;
}
.mono.sm { width: 40px; height: 40px; font-size: 20px; border-width: 1.5px; }

/* Layout */
.header { background: linear-gradient(145deg,var(--kaki),#102F37); color: var(--cream); padding: 18px 20px 22px;
  border-bottom-left-radius: 22px; border-bottom-right-radius: 22px;
  display: flex; align-items: center; gap: 14px; padding-top: max(18px, env(safe-area-inset-top)); }
.header .title { font-size: 24px; }
.header .back { background: none; border: none; color: var(--cream); font-size: 30px; line-height: 1; padding: 0 4px 0 0; }
.pad { padding: 20px 18px; }
.pad-btm { padding-bottom: 130px; }

/* Buttons */
button { font-family: inherit; cursor: pointer; }
.btn { width: 100%; padding: 17px; border-radius: 15px; border: none;
  background: var(--gold); color: var(--kaki); font-size: 17px; font-weight: 600; }
.btn:disabled { background: var(--cream-2); color: #A8A599; }
.btn-ghost { background: transparent; border: 1.5px solid var(--line); color: var(--kaki-soft); }
.btn-outline-light { background: transparent; border: 1.5px solid #5A6A5F; color: var(--cream); }

/* Inputs */
label.fld { font-size: 13px; color: #C9C6BB; margin: 0 0 6px; display: block; }
input.fld { width: 100%; padding: 16px 18px; border-radius: 14px; border: none; font-size: 16px;
  background: var(--cream); color: var(--kaki); margin-bottom: 14px; }

/* Cards & chips */
.card { background: #fff; border: 1.5px solid var(--line); border-radius: 18px; padding: 20px 22px; }
.chip { padding: 12px 16px; border-radius: 13px; font-size: 15px; font-weight: 500;
  border: 1.5px solid var(--line); background: #fff; color: var(--kaki); white-space: nowrap; }
.chip.active { border: 2px solid var(--gold); }
.chip:disabled { background: var(--cream-2); color: #B5B2A6; opacity: .6; }

.day { min-width: 66px; padding: 12px 8px; border-radius: 15px; text-align: center;
  border: 1.5px solid var(--line); background: #fff; color: var(--kaki); }
.day.active { border: none; background: var(--kaki); color: var(--cream); }
.slot { padding: 12px 4px; border-radius: 13px; text-align: center; border: 1.5px solid var(--line); background: #fff; }
.slot.active { border: 2px solid var(--gold); }
.slot:disabled { background: var(--cream-2); opacity: .65; }

.row { display: flex; gap: 10px; }
.row.scroll { overflow-x: auto; padding-bottom: 6px; }
.grid3 { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; }
.slot-status { font-size: 10.5px; line-height: 1.2; margin-top: 2px; min-height: 25px; display:flex; align-items:center; justify-content:center; }
.stack { display: flex; flex-direction: column; gap: 10px; }
.mt { margin-top: 24px; }
.center { text-align: center; }
.muted { color: var(--muted); }
.gold { color: var(--gold); }

.actline { display: flex; align-items: center; gap: 14px; padding: 15px 18px; border-radius: 14px;
  border: 1.5px solid var(--line); background: #fff; color: var(--kaki); font-size: 16px; font-weight: 500; width: 100%; text-align: left; }
.actline.active { border: 2px solid var(--gold); }

/* Fixed CTA */
.cta-bar { position: fixed; bottom: 0; left: 0; right: 0; max-width: 480px; margin: 0 auto; padding: 16px;
  padding-bottom: max(16px, env(safe-area-inset-bottom));
  background: linear-gradient(to top, var(--cream) 72%, transparent); }

/* Toast */
.toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%); background: var(--kaki);
  color: var(--cream); padding: 12px 20px; border-radius: 12px; font-size: 15px; max-width: 420px;
  text-align: center; box-shadow: 0 8px 30px rgba(0,0,0,.25); z-index: 50; }

/* Home big buttons */
.big { width: 100%; text-align: left; padding: 20px 22px; border-radius: 18px; border: 1.5px solid var(--line);
  background: #fff; color: var(--kaki); margin-bottom: 14px; display: flex; justify-content: space-between; align-items: center; }
.big.primary { border: none; background: var(--gold); }
.big .lbl { font-size: 22px; display: block; }
.big .sub { font-size: 14px; color: var(--muted); }
.big.primary .sub { color: var(--kaki-soft); }

/* Install hint */
.install { margin: 0 18px 16px; background: var(--kaki-soft); color: var(--cream); border-radius: 14px;
  padding: 14px 16px; font-size: 14px; display: flex; gap: 10px; align-items: center; justify-content: space-between; }
.install button { background: var(--gold); border: none; color: var(--kaki); font-weight: 600; padding: 8px 14px; border-radius: 10px; }

.spinner { width: 22px; height: 22px; border: 3px solid var(--cream-2); border-top-color: var(--gold);
  border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spinner { animation: none; } }


/* Admin */
.admin-entry { border: 1.5px solid var(--gold); }
.admin-pad { padding-bottom: 48px; }
.admin-title { font-size: 28px; margin: 4px 0 14px; }
.admin-section { margin-top: 28px; }
.admin-card { margin-bottom: 10px; }
.admin-card-head { display:flex; justify-content:space-between; gap:12px; align-items:center; }
.admin-card-head .display { font-size:22px; }
.admin-card-head strong { font-size:13px; color:var(--gold); }
.admin-note { margin-top:8px; font-size:13px; color:var(--muted); }
.admin-row { background:#fff; border:1.5px solid var(--line); border-radius:13px; padding:13px 15px; margin-bottom:8px; display:flex; justify-content:space-between; gap:14px; align-items:center; font-size:14px; }
.admin-row strong { text-align:right; }
.admin-row small { display:block; color:var(--muted); margin-top:3px; }
.admin-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px; }
.admin-form-grid label,.admin-label { display:block; font-size:12px; color:var(--muted); }
.admin-form-grid input,.admin-label input { display:block; width:100%; margin-top:5px; padding:13px 12px; border:1.5px solid var(--line); border-radius:12px; background:#fff; color:var(--kaki); font:inherit; }
.admin-label { margin-bottom:12px; }
.admin-list { margin-top:16px; }
.badge { background:var(--cream-2); color:var(--kaki-soft); border-radius:999px; padding:5px 9px; font-size:11px; font-weight:600; white-space:nowrap; }
.mini-danger { border:none; background:#F7E8E6; color:var(--danger); border-radius:9px; padding:7px 9px; font-size:12px; }


/* Admin V6 — occupation par créneau & horaires éditables */
.occ-table { background:#fff; border:1.5px solid var(--line); border-radius:18px; overflow:hidden; }
.occ-head,.occ-line { display:grid; grid-template-columns:68px 1fr 1fr; align-items:stretch; }
.occ-head { background:linear-gradient(135deg,var(--kaki),#102F37); color:var(--cream); font-size:12px; font-weight:600; }
.occ-head span { padding:11px 8px; text-align:center; }
.occ-line { border-top:1px solid var(--line); min-height:52px; }
.occ-line>strong { display:flex; align-items:center; justify-content:center; font-family:'Cormorant Garamond',serif; font-size:18px; }
.occ-line>span { border-left:1px solid var(--line); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:7px 5px; text-align:center; }
.occ-line small { display:block; color:var(--muted); font-size:10px; line-height:1.15; margin-top:2px; }
.occ-full { color:var(--danger); }
.occ-warn { color:var(--gold); }
.occ-class { display:inline-block; background:var(--gold); color:var(--kaki); border-radius:999px; padding:3px 7px; font-size:10px; font-weight:700; }
.occ-empty { color:var(--muted); }
.hours-day { background:#fff; border:1.5px solid var(--line); border-radius:15px; padding:14px 16px; margin-bottom:9px; }
.hours-day-title { font-size:20px; margin-bottom:6px; }
.hour-range { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:6px 0; border-top:1px solid var(--line); }
.hour-range:first-of-type { border-top:none; }
.hours-add { margin-top:14px; }
.admin-select { width:100%; display:block; margin-top:5px; padding:13px 12px; border:1.5px solid var(--line); border-radius:12px; background:#fff; color:var(--kaki); font:inherit; }


/* Admin V7 — navigation par date et détail des adhérents */
.admin-date-card { background:#fff; border:1.5px solid var(--line); border-radius:16px; padding:12px; margin-bottom:8px; }
.admin-date-nav { display:grid; grid-template-columns:42px 1fr 42px; gap:8px; align-items:center; text-align:center; }
.admin-date-nav strong { display:block; font-family:'Cormorant Garamond',serif; font-size:20px; }
.admin-date-nav small { display:block; color:var(--muted); font-size:11px; margin-top:2px; }
.date-nav-btn { width:42px; height:42px; border-radius:12px; border:1.5px solid var(--line); background:var(--cream); color:var(--kaki); font-size:26px; line-height:1; }
.admin-date-tools { display:grid; grid-template-columns:1fr auto auto; gap:8px; margin-top:10px; }
.admin-date-tools input { min-width:0; width:100%; padding:11px; border:1.5px solid var(--line); border-radius:12px; background:#fff; color:var(--kaki); font:inherit; }
.occ-click { width:100%; min-height:51px; border:0; background:transparent; color:inherit; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:7px 5px; }
.occ-click:active { background:var(--cream-2); }
.occ-line>span { padding:0; }
.admin-modal { position:fixed; inset:0; z-index:100; background:rgba(21,29,24,.62); display:flex; align-items:flex-end; justify-content:center; padding:16px; }
.admin-modal-card { width:min(440px,100%); max-height:78vh; overflow:auto; background:var(--cream); border-radius:22px; padding:20px; box-shadow:0 18px 60px rgba(0,0,0,.28); padding-bottom:max(20px,env(safe-area-inset-bottom)); }
.admin-modal-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.admin-modal-head h3 { margin:2px 0 12px; font-size:26px; }
.modal-close { width:38px; height:38px; border:1.5px solid var(--line); border-radius:50%; background:#fff; color:var(--kaki); font-size:24px; line-height:1; }
.course-alert { display:flex; align-items:center; gap:10px; background:#F0E2B8; border-radius:12px; padding:10px 12px; margin:4px 0 12px; }
.course-alert strong { font-size:11px; background:var(--gold); border-radius:999px; padding:4px 7px; }
.course-alert span { font-size:13px; }
.member-item { background:#fff; border:1.5px solid var(--line); border-radius:13px; padding:12px 14px; margin-top:8px; }
.member-item strong { display:block; font-size:15px; }
.member-item small { color:var(--muted); display:block; margin-top:3px; }
@media (max-width:390px){ .admin-date-tools{grid-template-columns:1fr 1fr;} .admin-date-tools input{grid-column:1/-1;} }


/* V9 — cours réservables */
.course-list { display:flex; flex-direction:column; gap:10px; }
.course-card { background:#fff; border:1.5px solid var(--gold); border-radius:17px; padding:16px; }
.course-card.mine { background:#F5EDDA; }
.course-card-top { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.course-card-top .display { display:block; font-size:22px; line-height:1.08; margin-top:2px; }
.course-kicker { display:block; color:var(--kaki-soft); font-size:10px; text-transform:uppercase; letter-spacing:2px; font-weight:600; }
.course-cap { min-width:48px; text-align:center; border-radius:999px; padding:5px 8px; background:var(--gold); color:var(--kaki); font-size:12px; font-weight:700; }
.course-cap.full { background:#F1DEDB; color:var(--danger); }
.course-meta { color:var(--muted); font-size:13px; margin:10px 0 12px; }
.course-book-btn { width:100%; border:0; border-radius:12px; padding:12px; background:var(--kaki); color:var(--cream); font-size:14px; font-weight:600; }
.course-book-btn:disabled { background:var(--cream-2); color:var(--muted); }


/* V9 — polish des cartes de cours */
.course-list { margin-bottom: 4px; }
.course-card { box-shadow: 0 4px 16px rgba(32,49,39,.05); }
.course-card-top > div { min-width: 0; }
.course-card-top .display { color: var(--kaki); margin-top: 4px; }
.course-kicker { color: var(--gold-dark, #9b741f); }
.course-cap { flex: 0 0 auto; }
.course-meta { line-height: 1.45; }
.course-book-btn { cursor: pointer; transition: transform .08s ease, opacity .15s ease; }
.course-book-btn:active:not(:disabled) { transform: scale(.99); }
@media (max-width:390px) {
  .course-card { padding: 14px; }
  .course-card-top .display { font-size: 21px; }
  .course-meta { font-size: 12.5px; }
}


/* V11 — correction robuste du flux de récupération mot de passe */
.admin-subtitle { margin:14px 0 4px; color:var(--kaki); font-weight:700; font-size:13px; }
.admin-course-row { align-items:center; }
.admin-course-row > span:first-child { min-width:0; }
.admin-course-row > span:first-child strong { display:block; }
.admin-course-row small { display:block; color:var(--muted); margin-top:4px; font-size:11px; }
.admin-actions { display:flex; gap:6px; align-items:center; flex:0 0 auto; }
.mini-edit { border:1px solid var(--gold); background:#fff; color:var(--kaki); border-radius:9px; padding:7px 9px; font-size:11px; font-weight:600; }
.btn-secondary { background:var(--kaki); color:var(--cream); }
@media (max-width:420px){ .admin-course-row{align-items:flex-start;gap:10px}.admin-actions{flex-direction:column;align-items:stretch}.mini-edit,.admin-actions .mini-danger{width:76px;} }

.admin-modal-actions{margin-top:16px}.btn-danger{background:#8b3f36!important;color:#fff!important}.admin-list{margin-top:12px}


/* V13 — fermeture rapide depuis le planning */
.quick-close-card{background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:13px;margin:10px 0 14px}.quick-close-title{font-family:'Cormorant Garamond',serif;font-size:19px;margin-bottom:9px}.quick-close-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-close-grid button{border:1.5px solid #d6b04a;background:#fff;color:var(--kaki);border-radius:12px;padding:11px 9px;font:600 13px 'Jost',sans-serif;text-align:left}.quick-close-grid button small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:3px;line-height:1.25}.quick-close-grid .quick-close-day{grid-column:1/-1;background:#8b3f36;border-color:#8b3f36;color:#fff;text-align:center}.quick-close-grid .quick-close-day small{color:#f7e9e6}.quick-close-grid button:active{transform:scale(.99)}


/* V14 - Gestion des adhérents */
.member-search-card{display:grid;grid-template-columns:minmax(0,1fr) 120px auto;gap:8px;background:#fff;border:1.5px solid var(--line);border-radius:15px;padding:10px;margin-bottom:8px}.member-search-card input{min-width:0;width:100%;padding:12px;border:1.5px solid var(--line);border-radius:11px;background:#fff;color:var(--kaki);font:inherit}.member-search-card .admin-select{margin-top:0;padding:11px}.member-admin-list{margin-top:12px}.member-admin-row{width:100%;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:13px 14px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--kaki);text-align:left;font:inherit}.member-admin-row strong{display:block;font-size:15px}.member-admin-row small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.member-admin-side{flex:0 0 auto;text-align:right}.member-status{display:inline-block;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700}.member-status.active,.member-status-active{color:#2f6d45}.member-status.active{background:#e8f4eb}.member-status.inactive,.member-status-inactive{color:#8b3f36}.member-status.inactive{background:#f6e8e5}.member-profile-card{background:#fff;border:1.5px solid var(--line);border-radius:15px;padding:13px 14px;display:grid;gap:10px}.member-profile-card>div{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:9px;border-bottom:1px solid var(--line)}.member-profile-card>div:last-child{border-bottom:0;padding-bottom:0}.member-profile-card span{font-size:11px;color:var(--muted)}.member-profile-card strong{font-size:13px;text-align:right;word-break:break-word}@media(max-width:480px){.member-search-card{grid-template-columns:1fr 1fr}.member-search-card input{grid-column:1/-1}.member-search-card .chip{width:100%}.member-admin-row{align-items:flex-start}.member-admin-side{min-width:70px}}


/* V15 · administration adhérents */
.member-book-results{margin-top:10px}.member-book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.member-book-grid button,.member-class-choice{border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:12px;color:var(--ink);font:inherit}.member-book-grid button{display:flex;flex-direction:column;gap:3px;align-items:center}.member-book-grid button strong{font-family:var(--display);font-size:18px}.member-book-grid button small,.member-class-choice small{color:var(--muted);font-size:12px}.member-class-choice{display:flex;width:100%;justify-content:space-between;align-items:center;text-align:left;margin-bottom:8px;gap:12px}.member-class-choice span:first-child{display:flex;flex-direction:column;gap:3px}.member-class-choice span:last-child{font-size:12px;color:var(--gold-dark);font-weight:700;white-space:nowrap}.admin-book-card{max-height:88vh;overflow:auto}


/* V16 · Couleurs espaces, lisibilité et communication */
:where(p,small,.sub,.admin-note,.muted){font-weight:400}
small,.slot-status,.admin-row small,.member-admin-row small{font-size:12px}
.big .sub{font-size:14.5px;color:#60695f}
.card p,.news-item p,.notify-card p{font-size:15px;line-height:1.5}

/* Musculation = orange */
.actline.tone-muscu{border-color:rgba(232,117,34,.42);border-left:6px solid var(--muscu);background:linear-gradient(90deg,var(--muscu-bg),#fff 36%)}
.actline.tone-muscu.active{border:2px solid var(--muscu);border-left-width:6px;background:var(--muscu-bg)}
.slot.tone-muscu{border-color:rgba(232,117,34,.34)}
.slot.tone-muscu.active{border:2px solid var(--muscu);background:var(--muscu-bg)}
.occ-click.tone-muscu{background:linear-gradient(90deg,var(--muscu-bg),#fff 72%)}
.occ-head-muscu{box-shadow:inset 0 -4px 0 var(--muscu)}

/* Cardio = bleu */
.actline.tone-cardio{border-color:rgba(38,118,217,.38);border-left:6px solid var(--cardio);background:linear-gradient(90deg,var(--cardio-bg),#fff 36%)}
.actline.tone-cardio.active{border:2px solid var(--cardio);border-left-width:6px;background:var(--cardio-bg)}
.slot.tone-cardio{border-color:rgba(38,118,217,.32)}
.slot.tone-cardio.active{border:2px solid var(--cardio);background:var(--cardio-bg)}
.occ-click.tone-cardio{background:linear-gradient(90deg,var(--cardio-bg),#fff 72%)}
.occ-head-cardio{box-shadow:inset 0 -4px 0 var(--cardio)}

/* Cours = violet */
.course-card.tone-course{border-color:var(--course);background:linear-gradient(135deg,var(--course-bg),#fff 62%)}
.course-card.tone-course.mine{background:var(--course-bg)}
.course-card.tone-course .course-kicker{color:var(--course)}
.course-card.tone-course .course-cap{background:var(--course);color:#fff}
.course-card.tone-course .course-book-btn{background:var(--course);color:#fff}
.occ-click.tone-course{background:var(--course-bg)!important}
.occ-click.tone-course .occ-class{background:var(--course);color:#fff}
.admin-course-row.tone-course{border-left:5px solid var(--course);background:linear-gradient(90deg,var(--course-bg),#fff 30%)}

/* Communication adhérents */
.home-notifications{margin-bottom:14px;display:grid;gap:9px}
.notify-card{display:grid;grid-template-columns:34px 1fr;gap:11px;background:var(--notification-bg);border:1.5px solid rgba(182,75,103,.35);border-left:5px solid var(--notification);border-radius:16px;padding:13px 14px;color:var(--kaki)}
.notify-icon{width:30px;height:30px;border-radius:50%;background:var(--notification);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px}
.notify-card strong{display:block;font-size:15px;font-weight:700;margin-bottom:2px}
.notify-card p{margin:0;color:#4f5a50}
.notify-card small{display:block;color:var(--notification);font-weight:600;margin-top:5px}
.news-home-card{border-top:4px solid var(--gold)}
.news-home-list{margin-top:8px}
.news-item{padding:10px 0;border-top:1px solid var(--line)}
.news-item:first-child{border-top:0;padding-top:4px}
.news-item>div{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.news-item strong{font-size:15.5px;font-weight:700}
.news-item small{color:var(--muted);white-space:nowrap;font-weight:600}
.news-item p{margin:4px 0 0;color:#4f5a50}

.communication-admin{scroll-margin-top:12px}
.comm-editor{background:#fff;border:1.5px solid var(--line);border-radius:17px;padding:15px;margin-top:12px}
.comm-editor.tone-news{border-top:5px solid var(--gold)}
.comm-editor.tone-notification{border-top:5px solid var(--notification)}
.comm-editor h3{font-size:23px;margin:0 0 10px}
.admin-textarea{display:block;width:100%;min-height:96px;resize:vertical;margin-top:5px;padding:13px 12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;color:var(--kaki);font:500 15px/1.45 'Jost',sans-serif}
.btn-notification{background:var(--notification);color:#fff}
.comm-row{align-items:flex-start}
.comm-row>span:first-child{min-width:0}
.comm-row>span:first-child strong{text-align:left;display:block;font-size:15px}
.comm-row>span:first-child small{text-align:left;line-height:1.35}
.notify-admin{border-left:5px solid var(--notification)}

/* Contraste général */
.admin-note,.member-item small,.admin-row small,.course-meta,.slot-status{color:#667065}
input,select,textarea,button{font-weight:500}


/* V17 · finition premium bleu pétrole + ergonomie */
:root{
  --petrol:#183B44;
  --petrol-deep:#102F37;
  --petrol-soft:#27515A;
  --surface:#FFFFFF;
  --shadow:0 8px 26px rgba(16,47,55,.07);
}
body{background:linear-gradient(180deg,#F7F4EC 0%,var(--cream) 32%);color:var(--ink);}
.card,.big,.admin-date-card,.quick-close-card,.comm-editor,.hours-day,.member-search-card,.member-admin-row,.member-profile-card,.course-card,.occ-table{
  box-shadow:var(--shadow);
}
.header{box-shadow:0 8px 24px rgba(16,47,55,.12)}
.display{line-height:1.05}
.eyebrow{font-weight:600;letter-spacing:3.2px}
.big{min-height:86px;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.big:active{transform:scale(.992)}
.big .lbl{font-size:23px}
.big .sub{font-size:15px!important;color:#59696A!important}
.big.primary .sub{color:#264650!important}
.big.next-card.tone-muscu{border-left:6px solid var(--muscu);background:linear-gradient(90deg,var(--muscu-bg),#fff 28%)}
.big.next-card.tone-cardio{border-left:6px solid var(--cardio);background:linear-gradient(90deg,var(--cardio-bg),#fff 28%)}
.big.next-card.tone-course{border-left:6px solid var(--course);background:linear-gradient(90deg,var(--course-bg),#fff 28%)}
.btn,.chip,.actline,.slot,.day{min-height:48px}
.btn{box-shadow:0 7px 16px rgba(205,167,71,.16)}
.btn-secondary{background:var(--petrol);color:#fff;box-shadow:0 7px 18px rgba(24,59,68,.14)}
.btn-ghost{border-color:rgba(39,81,90,.28)}
input,select,textarea{outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--gold)!important;box-shadow:0 0 0 3px rgba(205,167,71,.15)}
button:focus-visible{outline:3px solid rgba(38,118,217,.28);outline-offset:2px}

/* repères espaces plus immédiats */
.actline.tone-muscu::before,.actline.tone-cardio::before{content:"";width:11px;height:11px;border-radius:50%;flex:0 0 auto}
.actline.tone-muscu::before{background:var(--muscu);box-shadow:0 0 0 4px rgba(232,117,34,.12)}
.actline.tone-cardio::before{background:var(--cardio);box-shadow:0 0 0 4px rgba(38,118,217,.12)}
.space-legend{display:flex;gap:8px;flex-wrap:wrap;margin:9px 0 14px}
.legend-pill{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 10px;font-size:12px;font-weight:700;box-shadow:0 4px 14px rgba(16,47,55,.05)}
.legend-pill::before{content:"";width:9px;height:9px;border-radius:50%}
.legend-pill.muscu::before{background:var(--muscu)}
.legend-pill.cardio::before{background:var(--cardio)}
.legend-pill.course::before{background:var(--course)}
.occ-head-muscu{background:linear-gradient(180deg,rgba(232,117,34,.12),transparent);box-shadow:inset 0 -4px 0 var(--muscu)}
.occ-head-cardio{background:linear-gradient(180deg,rgba(38,118,217,.13),transparent);box-shadow:inset 0 -4px 0 var(--cardio)}
.occ-line>strong{font-size:19px}
.occ-line small{font-size:11px}

/* notifications */
.notify-card{box-shadow:0 6px 18px rgba(182,75,103,.08)}
.notify-card strong{font-size:16px}
.notify-card p,.news-item p{color:#465C60!important}
.notify-topline{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.new-badge{display:inline-block;background:var(--notification);color:#fff;border-radius:999px;padding:3px 7px;font-size:9px;line-height:1;font-weight:800;letter-spacing:.7px;text-transform:uppercase}
.news-home-card{background:rgba(255,255,255,.92)}

/* navigation admin compacte */
.admin-jumpbar{
  position:sticky;top:8px;z-index:18;
  display:flex;gap:7px;overflow-x:auto;padding:8px;
  margin:-4px 0 18px;background:rgba(245,242,234,.94);
  backdrop-filter:blur(12px);border:1px solid rgba(24,59,68,.08);border-radius:15px;
  box-shadow:0 7px 20px rgba(16,47,55,.08);
  scrollbar-width:none;
}
.admin-jumpbar::-webkit-scrollbar{display:none}
.admin-jumpbar button{
  flex:0 0 auto;border:1px solid rgba(24,59,68,.14);background:#fff;color:var(--ink);
  border-radius:999px;padding:9px 12px;font:700 12px 'Jost',sans-serif;white-space:nowrap;
}
.admin-jumpbar button:first-child{background:var(--petrol);color:#fff;border-color:var(--petrol)}
.admin-section{scroll-margin-top:78px}
.admin-title{font-size:30px;margin-bottom:15px}
.admin-note{font-size:13.5px;line-height:1.45;color:#596A6B!important}
.admin-row strong{color:var(--ink)}
.admin-row small,.member-admin-row small,.course-meta,.slot-status{color:#607174!important}

/* accueil et mobile */
.install{background:linear-gradient(135deg,var(--petrol-soft),var(--petrol));box-shadow:0 8px 22px rgba(16,47,55,.11)}
.toast{background:var(--petrol-deep);box-shadow:0 10px 34px rgba(16,47,55,.28)}
@media (max-width:390px){
  body{font-size:16.5px}
  .pad{padding-left:14px;padding-right:14px}
  .big{padding:18px 18px}
  .big .lbl{font-size:22px}
  .admin-jumpbar{margin-left:-2px;margin-right:-2px}
}


/* V18 · Sauge militaire + parcours simplifié adhérent/admin */
:root{
  --sage:#7A7F62;
  --sage-deep:#555D47;
  --sage-mid:#687052;
  --sage-soft:#A2A68E;
  --sage-pale:#EFF0E8;
  --petrol:var(--sage-deep);
  --petrol-deep:#454C3A;
  --petrol-soft:var(--sage);
  --surface:#FFFFFF;
  --shadow:0 8px 24px rgba(69,76,58,.08);
}
body{background:linear-gradient(180deg,#F8F5ED 0%,var(--cream) 35%);color:var(--ink);font-size:17.5px}
#app{transition:max-width .2s ease}
.header{background:linear-gradient(145deg,var(--sage),var(--sage-deep));box-shadow:0 8px 24px rgba(69,76,58,.14)}
.boot{background:var(--sage-deep)}
.mono{background:transparent}
.day.active{background:var(--sage);color:#fff;box-shadow:0 7px 16px rgba(122,127,98,.22)}
.toast{background:#454C3A}
.install{background:linear-gradient(135deg,var(--sage),var(--sage-deep));box-shadow:0 8px 22px rgba(69,76,58,.14)}
.btn-secondary{background:var(--sage-deep);color:#fff;box-shadow:0 7px 18px rgba(69,76,58,.15)}
.btn-ghost{border-color:rgba(85,93,71,.28)}
.occ-head{background:linear-gradient(135deg,var(--sage),var(--sage-deep))}
.admin-jumpbar{background:rgba(245,242,234,.95);border-color:rgba(85,93,71,.12);box-shadow:0 7px 20px rgba(69,76,58,.09)}
.admin-jumpbar button{border-color:rgba(85,93,71,.18);color:var(--ink)}
.admin-jumpbar button:first-child{background:var(--sage-deep);border-color:var(--sage-deep);color:#fff}

/* Accueil adhérent */
.home-welcome{background:linear-gradient(145deg,var(--sage),var(--sage-deep));color:var(--cream);padding:20px 22px 27px;border-bottom-left-radius:26px;border-bottom-right-radius:26px;padding-top:max(20px,env(safe-area-inset-top));box-shadow:0 8px 24px rgba(69,76,58,.14)}
.role-pill{display:inline-flex;align-items:center;border:1px solid rgba(255,255,255,.34);border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;margin-left:8px;color:#fff}
.home-flow{display:flex;align-items:center;gap:5px;margin:-2px 0 14px;padding:10px 12px;border:1px solid rgba(85,93,71,.12);background:var(--sage-pale);border-radius:13px;color:var(--ink-soft);font-size:11px;font-weight:700;overflow-x:auto;white-space:nowrap}
.home-flow .arrow{color:var(--gold-dark);font-weight:900}
.mini-space-badge{display:inline-flex;align-items:center;margin-top:7px;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800;letter-spacing:.3px}
.mini-space-badge.tone-muscu{background:var(--muscu-bg);color:#A94B0B}
.mini-space-badge.tone-cardio{background:var(--cardio-bg);color:#185CAD}
.mini-space-badge.tone-course{background:var(--course-bg);color:#5B3FB6}

/* Réservation guidée */
.reserve-guide{background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:13px 14px;margin-bottom:19px;box-shadow:var(--shadow)}
.reserve-guide-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:11px}
.reserve-guide-top strong{font-size:14px;color:var(--ink)}
.reserve-guide-top span{font-size:11px;color:var(--sage-deep);font-weight:800;background:var(--sage-pale);border-radius:999px;padding:5px 8px}
.reserve-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.reserve-step{text-align:center;position:relative;color:#9A9D91}
.reserve-step b{width:27px;height:27px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 4px;background:var(--cream-2);font-size:11px}
.reserve-step small{display:block;font-size:9.5px;font-weight:700;line-height:1.1}
.reserve-step.done b{background:var(--sage);color:#fff}
.reserve-step.active b{background:var(--gold);color:var(--ink);box-shadow:0 0 0 4px rgba(205,167,71,.14)}
.reserve-step.done,.reserve-step.active{color:var(--ink)}
.actline{justify-content:space-between;min-height:64px}
.actline .act-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.actline .act-copy strong{font-size:16px}
.actline .act-copy small{font-size:11px;color:var(--muted);font-weight:600}
.actline .act-check{font-size:18px;color:var(--sage-deep);font-weight:900}
.cta-bar{padding-top:10px}
.cta-summary{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 11px;margin-bottom:7px;box-shadow:0 5px 16px rgba(69,76,58,.08);display:flex;justify-content:space-between;gap:10px;align-items:center}
.cta-summary span{font-size:10.5px;color:var(--muted);font-weight:700;max-width:48%}
.cta-summary strong{font-size:12px;text-align:right;color:var(--ink)}

/* Centre de commande admin */
.admin-command-center{background:linear-gradient(145deg,var(--sage-pale),#fff);border:1.5px solid rgba(122,127,98,.22);border-radius:18px;padding:16px;margin-bottom:20px;box-shadow:var(--shadow)}
.admin-command-head{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;margin-bottom:11px}
.admin-command-head .display{font-size:25px;margin:2px 0 0}
.admin-command-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.admin-command-grid button{border:1px solid rgba(85,93,71,.16);background:#fff;border-radius:14px;padding:12px;text-align:left;color:var(--ink);min-height:78px;box-shadow:0 4px 12px rgba(69,76,58,.05)}
.admin-command-grid button:active{transform:scale(.99)}
.admin-command-grid .cmd-icon{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:var(--sage-pale);color:var(--sage-deep);font-size:17px;margin-bottom:7px}
.admin-command-grid strong{display:block;font-size:13px;line-height:1.2}
.admin-command-grid small{display:block;color:var(--muted);font-size:10.5px;margin-top:3px;line-height:1.2}
.admin-command-grid .cmd-danger .cmd-icon{background:#F7E8E6;color:var(--danger)}
.admin-helper{display:flex;gap:9px;align-items:flex-start;background:var(--sage-pale);border-radius:13px;padding:10px 11px;margin:10px 0 13px;color:var(--ink-soft);font-size:11.5px;line-height:1.35}
.admin-helper b{color:var(--sage-deep)}

/* Admin plus confortable sur ordinateur */
@media (min-width:720px){
  #app.admin-mode{max-width:780px}
  #app.admin-mode .admin-command-grid{grid-template-columns:repeat(4,1fr)}
  #app.admin-mode .communication-admin{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  #app.admin-mode .communication-admin>.eyebrow,
  #app.admin-mode .communication-admin>.admin-title,
  #app.admin-mode .communication-admin>.admin-note{grid-column:1/-1}
  #app.admin-mode .member-search-card{grid-template-columns:2fr 1fr auto}
  #app.admin-mode .quick-close-grid{grid-template-columns:1fr 1fr 1fr}
  #app.admin-mode .quick-close-grid .quick-close-day{grid-column:auto}
  #app.admin-mode .occ-head,#app.admin-mode .occ-line{grid-template-columns:90px 1fr 1fr}
}
@media (max-width:390px){
  .reserve-guide{padding:12px 10px}
  .reserve-step small{font-size:9px}
  .home-flow{font-size:10px}
}

/* V19 · actions noires + navigation ultra intuitive */
:root{
  --action:#151515;
  --action-soft:#252525;
  --action-text:#FFFFFF;
}
body{font-size:18px}

/* Tout ce qui était un aplat jaune devient noir, texte blanc. Le doré reste un accent. */
.btn{background:var(--action);color:var(--action-text);box-shadow:0 8px 18px rgba(0,0,0,.13)}
.btn:hover{background:var(--action-soft)}
.btn:disabled{background:var(--cream-2);color:#A8A599;box-shadow:none}
.btn.btn-secondary{background:var(--sage-deep);color:#fff}
.btn.btn-notification{background:var(--notification);color:#fff}
.btn.btn-danger{background:#8b3f36!important;color:#fff!important}
.big.primary{background:var(--action);color:#fff;box-shadow:0 10px 24px rgba(0,0,0,.12)}
.big.primary .lbl,.big.primary .sub,.big.primary .primary-arrow{color:#fff!important}
.big.primary .sub{opacity:.82}
.big.primary .primary-arrow{font-size:22px;font-weight:800}
.install button{background:var(--action);color:#fff}
.reserve-step.active b{background:var(--action);color:#fff;box-shadow:0 0 0 4px rgba(21,21,21,.10)}
.occ-class{background:var(--action);color:#fff}
.course-alert strong{background:var(--action);color:#fff}
.course-cap{background:var(--action);color:#fff}
/* Les codes métiers gardent leurs couleurs spécifiques. */
.course-card.tone-course .course-cap{background:var(--course);color:#fff}
.occ-click.tone-course .occ-class{background:var(--course);color:#fff}

/* Lisibilité */
.big .sub{font-size:15.5px!important;line-height:1.35}
.actline .act-copy small{font-size:12px}
.slot-status{font-size:11.5px}
.day,.slot,.chip{font-weight:650}
.reserve-anchor{scroll-margin-top:86px}
.course-card.delay-closed{opacity:.72;filter:saturate(.72)}
.course-card.delay-closed .course-meta{font-weight:650}

/* Règle 90 minutes mise en évidence une seule fois, sans encombrer. */
.booking-delay-note{display:flex;align-items:center;gap:11px;background:var(--sage-pale);border:1.5px solid rgba(122,127,98,.22);border-radius:15px;padding:11px 13px;margin-bottom:12px;color:var(--ink);box-shadow:0 5px 16px rgba(69,76,58,.06)}
.booking-delay-note>span{width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:#fff;font-size:17px;flex:0 0 auto}
.booking-delay-note strong{display:block;font-size:13.5px;line-height:1.2}
.booking-delay-note small{display:block;color:var(--muted);font-size:11px;margin-top:2px;line-height:1.25}

/* Navigation principale persistante : 3 actions adhérent, 4 pour admin. */
.bottom-nav{position:fixed;left:50%;transform:translateX(-50%);bottom:0;z-index:70;width:min(100%,480px);display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;padding:7px 9px max(7px,env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid var(--line);box-shadow:0 -8px 24px rgba(40,45,36,.09);backdrop-filter:blur(12px)}
.bottom-nav-item{border:0;background:transparent;color:#777D70;border-radius:12px;padding:6px 4px 5px;min-height:53px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font:inherit}
.bottom-nav-item>span{font-size:20px;line-height:1}
.bottom-nav-item>small{font-size:10px;font-weight:750;line-height:1.1}
.bottom-nav-item.active{background:var(--action);color:#fff}
#app.has-bottom-nav .pad{padding-bottom:100px}
#app.has-bottom-nav .admin-pad{padding-bottom:110px}
#app.has-bottom-nav .pad-btm{padding-bottom:205px}
#app.has-bottom-nav .cta-bar{bottom:68px}
#app.has-bottom-nav .toast{bottom:88px}
@media(min-width:720px){#app.admin-mode .bottom-nav{width:min(100%,780px)}}

/* Moins de surcharge visuelle à l'accueil : le détail des 4 étapes reste dans l'écran Réserver. */
.home-flow{display:none}

@media(max-width:390px){
  body{font-size:17px}
  .bottom-nav-item small{font-size:9.5px}
  .bottom-nav-item>span{font-size:19px}
  .booking-delay-note{padding:10px 11px}
}

/* V20 · bêta Alain — ultra intuitive, quarts d’heure, jours fermés visibles */
:root{
  --v20-black:#171717;
  --v20-white:#FFFFFF;
  --v20-soft:#F8F7F2;
}

/* Les grandes cartes restent claires. Le noir sert aux actions finales. */
.big.primary,
.big.events-entry,
.big.admin-entry,
.big.next-card{
  background:#fff!important;
  color:var(--ink)!important;
  border:1.5px solid var(--line)!important;
  box-shadow:0 8px 22px rgba(60,65,52,.08)!important;
}
.big.primary{border:2px solid var(--v20-black)!important}
.big.primary .lbl,.big.primary .sub{color:var(--ink)!important}
.big.primary .sub{color:var(--muted)!important;opacity:1!important}
.big.primary .primary-arrow{width:40px;height:40px;border-radius:12px;background:var(--v20-black);color:#fff!important;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.big.events-entry{border-left:6px solid var(--course)!important}
.big.admin-entry{border-left:6px solid var(--sage-deep)!important}
.big.next-card{border-left-width:6px!important}

.tap-hint{display:inline-flex;align-items:center;gap:5px;background:var(--sage-pale);color:var(--sage-deep);font-size:10px;font-weight:850;letter-spacing:.4px;text-transform:uppercase;border-radius:999px;padding:4px 8px;margin-bottom:5px}
.primary-arrow{animation:ziNudge 1.8s ease-in-out infinite}
@keyframes ziNudge{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}

/* Jours fermés : visibles, explicites, jamais cliquables. */
.day{position:relative;min-width:72px}
.day-name{font-size:12px;opacity:.82;font-weight:700}
.day-number{font-size:22px}
.day-month{font-size:11px;opacity:.72}
.day.closed{background:#F0EFEA!important;border:1.5px dashed #C8C5BB!important;color:#99978F!important;opacity:1!important;cursor:not-allowed}
.day.closed .day-number{text-decoration:line-through;text-decoration-thickness:1px}
.day-closed{margin-top:5px;font-size:8.5px;font-weight:900;letter-spacing:.8px;color:#A24A43;background:#F8E8E6;border-radius:999px;padding:3px 5px}

/* Guide actif discret : une seule animation utile à la fois. */
.step-helper{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:11px;padding:8px 10px;border-radius:11px;background:var(--sage-pale);color:var(--sage-deep);font-size:12px}
.step-helper span{font-size:18px;animation:ziBounce 1.5s ease-in-out infinite}
@keyframes ziBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
.reserve-step.active b{animation:ziPulse 1.8s ease-in-out infinite}
@keyframes ziPulse{0%,100%{box-shadow:0 0 0 3px rgba(21,21,21,.08)}50%{box-shadow:0 0 0 7px rgba(21,21,21,.05)}}

/* Quarts d'heure : grille compacte mais très lisible. */
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.slot{min-height:68px;padding:9px 4px}
.slot .display{font-size:18px!important}
.slot-status{font-size:10.5px!important;line-height:1.15;margin-top:3px}
.chip{min-width:76px;text-align:center}
.row:not(.scroll){flex-wrap:wrap}

/* Ateliers & événements */
.events-entry>span:first-child{display:flex;align-items:center;gap:10px}
.event-home-icon{font-size:22px}
.events-hero{display:flex;gap:13px;align-items:flex-start;background:linear-gradient(135deg,var(--sage-pale),#fff);border:1.5px solid rgba(122,127,98,.2);border-radius:18px;padding:16px;margin-bottom:16px}
.events-hero>span{font-size:30px}
.events-hero h2{font-size:28px;margin:0}
.events-hero p{margin:3px 0 0;color:var(--muted);font-size:13px}
.event-card{display:grid;grid-template-columns:58px 1fr;gap:13px;background:#fff;border:1.5px solid var(--line);border-radius:18px;padding:15px;margin-bottom:13px;box-shadow:0 7px 18px rgba(55,60,48,.06)}
.event-card.mine{border-color:var(--sage);background:linear-gradient(135deg,var(--sage-pale),#fff 55%)}
.event-date-box{background:var(--sage-deep);color:#fff;border-radius:14px;height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.event-date-box strong{font-family:var(--display);font-size:26px}
.event-date-box small{text-transform:uppercase;font-size:9px;letter-spacing:1px;margin-top:3px}
.event-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.event-kind{font-size:9px;font-weight:900;letter-spacing:1.4px;color:var(--course)}
.event-price{font-size:10px;font-weight:850;background:var(--sage-pale);color:var(--sage-deep);border-radius:999px;padding:4px 7px}
.event-main h3{margin:4px 0 2px;font-size:23px}
.event-main p{margin:0 0 8px;color:var(--muted);font-size:12.5px;line-height:1.4}
.event-meta{font-size:11px;color:var(--ink-soft);font-weight:650;margin-bottom:9px}
.event-cap{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;margin-bottom:9px;color:var(--muted)}
.event-cap strong{color:var(--ink)}
.event-card .btn{padding:12px;border-radius:12px;font-size:13px}
.event-cancel{background:#fff!important;color:var(--sage-deep)!important;border-color:var(--sage)!important}
.empty-friendly{text-align:center;background:#fff;border:1.5px dashed var(--line);border-radius:18px;padding:32px 20px;color:var(--muted)}
.empty-friendly>span{font-size:34px}.empty-friendly h3{color:var(--ink);font-size:24px;margin:7px 0 2px}.empty-friendly p{margin:0}

/* Admin événements */
.event-admin-form{margin-bottom:12px}
.admin-event-row{border-left:5px solid var(--course)}
.event-member-count{display:inline-flex;background:var(--course-bg);color:var(--course);font-weight:850;border-radius:999px;padding:6px 10px;font-size:11px;margin-bottom:10px}

/* Navigation : 4 entrées adhérent, 5 admin, plus facile à comprendre. */
.bottom-nav-item.active{background:var(--sage-deep)!important;color:#fff!important}
.bottom-nav-item>small{font-size:9px}
#app.admin-mode .bottom-nav-item>small{font-size:8.5px}

/* Actions finales : rectangle noir, texte blanc. */
.cta-bar .btn:not(:disabled),
.event-card .btn:not(:disabled),
.event-admin-form .btn,
.comm-editor .btn:not(.btn-notification),
.hours-add .btn{
  background:var(--v20-black)!important;color:#fff!important;
}

/* Admin plus guidé sans surcharge. */
.admin-command-center{background:#fff;border:1.5px solid var(--line)}
.admin-command-grid button{position:relative}
.admin-command-grid button::after{content:'›';position:absolute;right:11px;top:50%;transform:translateY(-50%);font-size:20px;color:var(--sage-deep);font-weight:900}
.admin-command-grid button:hover{border-color:var(--sage);background:var(--sage-pale)}
.admin-jumpbar{scrollbar-width:none}.admin-jumpbar::-webkit-scrollbar{display:none}

@media(max-width:390px){
  .grid3{grid-template-columns:repeat(3,1fr)}
  .day{min-width:68px}
  .event-card{grid-template-columns:52px 1fr;padding:13px 11px;gap:10px}
  .event-date-box{height:58px}
  .bottom-nav{padding-left:4px;padding-right:4px}
  .bottom-nav-item{padding-left:1px;padding-right:1px}
}

/* V21 · Pré-test Alain — séance mixte + pilotage admin professionnel */
:root{
  --mixed:#5D6470;
  --mixed-bg:#F1F3F5;
}

/* Séance mixte : lisible sans créer une nouvelle couleur métier envahissante. */
.actline.tone-mixed{
  border:1.5px solid #C8CCD1!important;
  border-left:6px solid var(--mixed)!important;
  background:linear-gradient(90deg,var(--mixed-bg),#fff 38%)!important;
}
.actline.tone-mixed.active{border:2px solid var(--mixed)!important;border-left-width:6px!important;background:var(--mixed-bg)!important}
.mixed-dot{width:28px;height:28px;border-radius:9px;background:var(--mixed);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;flex:0 0 auto}
.reserve-microcopy{margin:-2px 0 10px;color:var(--muted);font-size:12.5px;line-height:1.45}
.reserve-microcopy strong{color:var(--ink)}

.mixed-builder{margin-top:16px;background:#fff;border:1.5px solid #D8DADF;border-radius:18px;padding:14px;box-shadow:var(--shadow);scroll-margin-top:86px}
.mixed-builder-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.mixed-builder-head strong{display:block;font-size:14px;color:var(--ink)}
.mixed-builder-head small{display:block;color:var(--muted);font-size:10.5px;line-height:1.25;margin-top:2px}
.swap-btn{border:1px solid #CDD0D4;background:#fff;color:var(--ink);border-radius:11px;padding:8px 10px;font:750 11px 'Jost',sans-serif;white-space:nowrap}
.mixed-order{margin:10px 0 8px}
.mixed-order span{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:850}
.mixed-order .cardio-first{background:linear-gradient(90deg,var(--cardio-bg),var(--muscu-bg));color:var(--ink)}
.mixed-order .muscu-first{background:linear-gradient(90deg,var(--muscu-bg),var(--cardio-bg));color:var(--ink)}
.split-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.split-choice{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:9px 8px;color:var(--ink);display:flex;flex-wrap:wrap;justify-content:center;gap:4px;font:700 10.5px 'Jost',sans-serif;line-height:1.2}
.split-choice.active{border:2px solid var(--mixed);background:var(--mixed-bg);box-shadow:0 0 0 3px rgba(93,100,112,.08)}
.split-cardio{color:var(--cardio)}
.split-muscu{color:var(--muscu)}
.slot.tone-mixed{border-color:#CED2D7;background:linear-gradient(135deg,rgba(38,118,217,.055),rgba(232,117,34,.055))}
.slot.tone-mixed.active{border:2px solid var(--mixed);background:linear-gradient(135deg,var(--cardio-bg),var(--muscu-bg))}

/* Résumé final : une seule validation, informations très compactes. */
.cta-summary{flex-wrap:wrap}
.cta-summary span{flex:1 1 42%;max-width:none}
.cta-summary strong{flex:1 1 50%}
.cta-summary small{flex:0 0 100%;display:block;text-align:right;color:var(--muted);font-size:10px;font-weight:700;margin-top:-3px}

/* Mes séances : une réservation mixte = une seule carte. */
.session-card{background:#fff;border:1.5px solid var(--line);border-radius:18px;padding:18px 20px;margin-bottom:13px;box-shadow:var(--shadow);border-left-width:6px}
.session-card.featured{background:var(--kaki);color:var(--cream);border-color:var(--kaki);box-shadow:0 10px 28px rgba(69,76,58,.16)}
.session-card.tone-muscu:not(.featured){border-left-color:var(--muscu)}
.session-card.tone-cardio:not(.featured){border-left-color:var(--cardio)}
.session-card.tone-course:not(.featured){border-left-color:var(--course)}
.session-card.tone-mixed:not(.featured){border-left-color:var(--mixed)}
.session-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.session-desc{font-size:13px;color:var(--muted);margin:4px 0 10px}
.session-card.featured .session-desc{color:#DAD8CF}
.session-card>button{margin-top:12px;width:100%;padding:12px;border-radius:12px;font-size:14px}
.mixed-badge{display:inline-flex;align-items:center;background:var(--mixed);color:#fff;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:900;letter-spacing:.6px;white-space:nowrap}
.mixed-timeline{display:flex;overflow:hidden;border-radius:11px;margin:10px 0 2px;min-height:46px;border:1px solid rgba(0,0,0,.06)}
.mixed-timeline>span{display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:6px 4px;text-align:center}
.mixed-timeline>span.tone-cardio{background:var(--cardio-bg);color:var(--cardio)}
.mixed-timeline>span.tone-muscu{background:var(--muscu-bg);color:var(--muscu)}
.mixed-timeline b{font-size:11px;line-height:1.05}
.mixed-timeline small{font-size:8.5px;font-weight:800;line-height:1.05;margin-top:2px}
.confirm-timeline{margin-top:14px;border-color:rgba(255,255,255,.18)}
.session-history-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px 15px;border-radius:14px;background:#fff;border:1.5px solid var(--line);margin-bottom:9px}
.session-history-row.tone-mixed{border-left:5px solid var(--mixed)}
.history-status{font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.8px;color:#76806E}
.history-status.cancelled{color:var(--danger)}
.big.next-card.tone-mixed{border-left:6px solid var(--mixed)!important;background:linear-gradient(90deg,var(--mixed-bg),#fff 30%)!important}
.mini-space-badge.tone-mixed{background:var(--mixed-bg);color:var(--mixed)}

/* Admin : lecture immédiate du jour et des transitions mixtes. */
.admin-day-glance{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:0 0 10px}
.admin-day-glance>div{background:#fff;border:1.5px solid var(--line);border-radius:13px;padding:10px 8px;text-align:center;box-shadow:0 5px 14px rgba(55,60,48,.05)}
.admin-day-glance>div:nth-child(1){border-top:4px solid var(--muscu)}
.admin-day-glance>div:nth-child(2){border-top:4px solid var(--cardio)}
.admin-day-glance>div:nth-child(3){border-top:4px solid #C8CCD1}
.admin-day-glance>div.active{border-top-color:var(--mixed);background:var(--mixed-bg)}
.admin-day-glance span{display:block;font-size:8.5px;font-weight:850;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.admin-day-glance strong{display:block;font:700 20px var(--display);color:var(--ink);margin:1px 0}
.admin-day-glance small{display:block;font-size:8.5px;line-height:1.15;color:var(--muted)}
.occ-mixed{display:inline-flex;margin-top:3px;background:var(--mixed-bg);color:var(--mixed);border-radius:999px;padding:2px 5px;font-size:8px;font-weight:900;line-height:1}
.mixed-member{border-left:4px solid var(--mixed)}
.mixed-inline{display:inline-block;margin-left:4px;background:var(--mixed-bg);color:var(--mixed);border-radius:999px;padding:2px 5px;font-size:9px;font-weight:850;vertical-align:1px}

/* Réserver à la place d’un adhérent : simple et mixte dans le même panneau. */
.admin-book-mode-card{background:#fff;border:1.5px solid var(--line);border-radius:15px;padding:13px;margin:12px 0}
.mixed-admin-card{border-left:5px solid var(--mixed)}
.admin-book-mode-card .admin-subtitle{margin-top:0}

/* Micro-interactions utiles uniquement. */
@media (prefers-reduced-motion: reduce){
  .primary-arrow,.step-helper span,.reserve-step.active b{animation:none!important}
  *{scroll-behavior:auto!important}
}

@media(max-width:390px){
  .split-grid{grid-template-columns:1fr}
  .mixed-builder-head{display:block}
  .swap-btn{margin-top:8px;width:100%}
  .admin-day-glance{gap:5px}
  .admin-day-glance>div{padding:8px 4px}
  .admin-day-glance strong{font-size:18px}
}


/* V22 — lisibilité mixte + ateliers */
.slot-mixed-avail{display:flex;flex-wrap:wrap;gap:5px;align-items:center;justify-content:center;margin-top:5px;font-size:10px;line-height:1.15}
.slot-mixed-avail span{border-radius:999px;padding:4px 6px;font-weight:750;white-space:nowrap;border:1px solid transparent}
.slot-mixed-avail .tone-cardio{background:#EAF4FF;color:#236AA4;border-color:#B7D8F8}
.slot-mixed-avail .tone-muscu{background:#FFF1E6;color:#B85D18;border-color:#F4C49E}
.slot-mixed-avail i{font-style:normal;color:var(--muted);font-weight:800}
.mixed-inline{display:block;margin-top:5px;border-left:3px solid #677085;background:#F3F4F6;color:#3F4652;padding:6px 8px;border-radius:7px;font-weight:750;line-height:1.35}
.event-template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:14px}
.event-template-grid button{background:#fff;border:1.5px solid var(--line);border-radius:13px;padding:11px;text-align:left;color:var(--kaki);display:grid;grid-template-columns:auto 1fr;column-gap:7px;align-items:center;font-size:18px;cursor:pointer}
.event-template-grid button strong{font-size:13px}
.event-template-grid button small{grid-column:2;font-size:10px;color:var(--muted)}
.event-template-grid button:hover{border-color:var(--sage);background:var(--sage-pale)}
.event-icon{display:block;font-size:19px;line-height:1;margin-bottom:4px}
.event-card.event-pilates{border-left:5px solid #9B7DB7}
.event-card.event-self{border-left:5px solid #A45145}
.event-card.event-mobility{border-left:5px solid #5E8D75}
.event-card.event-nutrition{border-left:5px solid #8E9A4B}
.event-card.event-wellness{border-left:5px solid #C09B55}
.event-card.event-other{border-left:5px solid var(--sage)}
.admin-event-row.event-pilates{border-left:4px solid #9B7DB7}
.admin-event-row.event-self{border-left:4px solid #A45145}
.admin-event-row.event-mobility{border-left:4px solid #5E8D75}
.admin-event-row.event-nutrition{border-left:4px solid #8E9A4B}
.admin-event-row.event-wellness{border-left:4px solid #C09B55}
.admin-event-row.event-other{border-left:4px solid var(--sage)}
@media(max-width:520px){.event-template-grid{grid-template-columns:1fr 1fr}.slot-mixed-avail{gap:3px}.slot-mixed-avail span{font-size:9px;padding:4px 5px}}


/* V23 — séances d'essai / prospects */
.admin-day-glance{grid-template-columns:repeat(4,1fr)}
.admin-day-glance>div:nth-child(4){border-top:4px solid var(--gold);background:#FFFDF6}
.trial-admin-section{scroll-margin-top:78px}
.trial-form{margin-bottom:12px;background:linear-gradient(145deg,#fff,#FCFBF5)}
.trial-summary{display:flex;align-items:center;gap:9px;background:var(--sage-pale);border:1.5px solid rgba(122,127,98,.18);border-radius:13px;padding:10px 12px;margin:10px 0}
.trial-summary strong{display:flex;align-items:center;justify-content:center;min-width:30px;height:30px;border-radius:10px;background:var(--sage);color:#fff;font-size:15px}
.trial-summary span{font-size:12px;font-weight:750;color:var(--ink)}
.trial-list{display:grid;gap:8px}
.trial-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:10px;align-items:center;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:10px 11px;box-shadow:0 4px 12px rgba(55,60,48,.04)}
.trial-row.today{border-left:5px solid var(--gold);background:#FFFDF7}
.trial-time{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--line);padding-right:9px}
.trial-time strong{font-size:9px;color:var(--muted);letter-spacing:.6px}
.trial-time span{font:700 20px var(--display);color:var(--ink)}
.trial-person strong{display:block;font-size:14px;color:var(--ink)}
.trial-person small{display:block;font-size:10.5px;color:var(--muted);margin-top:2px;word-break:break-word}
.trial-status{display:inline-flex;margin-top:5px;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:850}
.trial-planned{background:#FFF2CC;color:#775D12}.trial-completed{background:#E7F4EA;color:#2F6D45}.trial-noshow{background:#F6E8E5;color:#8B3F36}.trial-converted{background:#E8EEF7;color:#3D5B83}.trial-cancelled{background:#EEEDE9;color:#6F706A}
.trial-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px;max-width:180px}
.trial-convert-note{background:#E8F4EB;color:#2F6D45;border-radius:11px;padding:9px 10px;font-size:11px;font-weight:750;margin-bottom:10px}
@media(max-width:620px){
  .admin-day-glance{grid-template-columns:1fr 1fr}
  .trial-row{grid-template-columns:64px 1fr}
  .trial-actions{grid-column:1/-1;max-width:none;justify-content:flex-end;border-top:1px solid var(--line);padding-top:8px}
}


/* V24 — identité de marque, micro-mouvements professionnels & contrôle d'accès */
.brand-logo{display:block;object-fit:contain;max-width:100%;user-select:none;-webkit-user-drag:none}
.boot-logo{width:min(250px,64vw);height:auto;filter:drop-shadow(0 12px 26px rgba(0,0,0,.10));animation:brandReveal .72s cubic-bezier(.2,.75,.25,1) both}
.login-screen{min-height:100vh;background:linear-gradient(155deg,var(--kaki),#48503C 58%,#353B30);color:var(--cream);display:flex;flex-direction:column;justify-content:center;padding:28px;overflow:hidden;position:relative}
.login-screen:before{content:"";position:absolute;width:240px;height:240px;border-radius:50%;background:rgba(205,167,71,.08);right:-100px;top:8%;filter:blur(4px);pointer-events:none}
.login-brand-wrap{display:flex;justify-content:center;margin:0 auto 20px;position:relative;z-index:1}
.login-logo{width:min(300px,78vw);background:rgba(255,255,255,.96);padding:10px;border-radius:20px;box-shadow:0 16px 42px rgba(0,0,0,.16);animation:brandFloat 6s ease-in-out infinite}
.reset-logo{max-width:260px}.login-title{color:var(--cream);font-size:35px;margin:4px 0 5px}.login-eyebrow{color:#E4C975;margin-bottom:4px}
.login-sub{color:#E3DFD3;margin:0 auto 16px;max-width:390px;font-size:14px;line-height:1.45}.login-help{color:#D7D2C5;margin:18px auto 0;font-size:12.5px;max-width:360px}
.security-chip{display:flex;align-items:center;justify-content:center;gap:7px;margin:0 auto 20px;padding:8px 11px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.07);font-size:11px;color:#F5F2EA;max-width:max-content}.security-chip span{animation:securityPulse 2.8s ease-in-out infinite}
.header{background:linear-gradient(145deg,var(--kaki),#4D553F)}.header .title{flex:1;min-width:0}.header-logo{width:64px;height:45px;background:#fff;border-radius:10px;padding:3px;margin-left:auto;box-shadow:0 5px 16px rgba(0,0,0,.10);animation:brandBreathe 7s ease-in-out infinite}
.home-logo{width:82px;height:58px;background:#fff;border-radius:12px;padding:3px;box-shadow:0 6px 18px rgba(0,0,0,.12);animation:brandBreathe 7s ease-in-out infinite}.confirm-logo{width:150px;background:#fff;border-radius:15px;padding:5px;margin-bottom:22px;box-shadow:0 12px 28px rgba(0,0,0,.16)}
.access-gate-screen{min-height:100vh;background:linear-gradient(145deg,var(--cream),#ECE8DD);display:flex;align-items:center;justify-content:center;padding:24px}.gate-card{width:min(430px,100%);background:#fff;border:1.5px solid var(--line);border-radius:24px;padding:26px;box-shadow:0 18px 45px rgba(50,55,44,.12);text-align:center;animation:pageIn .38s ease-out both}.gate-logo{width:190px;margin:0 auto 15px}.gate-lock{width:62px;height:62px;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;border-radius:50%;background:var(--sage-pale);font-size:26px;animation:securityPulse 2.8s ease-in-out infinite}.gate-card h1{font-size:30px;color:var(--ink);margin:5px 0 10px}.gate-card p{font-size:14px;color:var(--muted);line-height:1.55;margin:0 0 16px}.gate-status{display:flex;align-items:center;justify-content:center;gap:8px;background:#F4F2EA;border-radius:13px;padding:11px 12px;margin:0 0 18px;font-size:12px;color:var(--ink)}
.admin-security-banner{display:grid;grid-template-columns:72px 1fr 12px;align-items:center;gap:11px;background:#fff;border:1.5px solid #DCE5D8;border-left:5px solid #5D7A58;border-radius:16px;padding:10px 12px;margin:0 0 12px;box-shadow:0 5px 16px rgba(55,60,48,.05)}.admin-logo{width:70px;height:52px;object-fit:contain}.admin-security-banner strong{display:block;font-size:13px;color:var(--ink)}.admin-security-banner span{display:block;font-size:10.5px;color:var(--muted);line-height:1.3}.security-dot{width:10px!important;height:10px;border-radius:50%;background:#4F8A5B;box-shadow:0 0 0 0 rgba(79,138,91,.35);animation:secureDot 2.8s infinite}.member-status.pending{background:#FFF2CC;color:#775D12}.member-pending-row{border-left:5px solid #D8A72B;background:#FFFDF7}
.pad,.admin-pad{animation:pageIn .28s ease-out both}.big,.card,.event-card,.session-card,.member-admin-row,.trial-row{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
@media (hover:hover){.big:hover,.event-card:hover,.member-admin-row:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(55,60,48,.09)}.btn:not(:disabled):hover{transform:translateY(-1px)}}button:active{transform:scale(.985)}
@keyframes brandReveal{from{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes brandFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes brandBreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}@keyframes securityPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes secureDot{0%{box-shadow:0 0 0 0 rgba(79,138,91,.35)}70%{box-shadow:0 0 0 7px rgba(79,138,91,0)}100%{box-shadow:0 0 0 0 rgba(79,138,91,0)}}@keyframes pageIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.boot-logo,.login-logo,.header-logo,.home-logo,.gate-lock,.security-chip span,.security-dot,.pad,.admin-pad{animation:none!important}.big,.card,.event-card,.session-card,.member-admin-row,.trial-row{transition:none!important}}

/* V25 · identité Zone Inspire mise fortement en avant — sans changement fonctionnel */
.home-welcome{
  position:relative;
  overflow:hidden;
  background:linear-gradient(155deg,#FBF8F0 0%,#FFFFFF 58%,#EEEBDD 100%)!important;
  color:var(--ink)!important;
  padding:18px 20px 30px!important;
  padding-top:max(18px,env(safe-area-inset-top))!important;
  border-bottom-left-radius:32px!important;
  border-bottom-right-radius:32px!important;
  box-shadow:0 14px 34px rgba(55,60,48,.13)!important;
  border-bottom:1px solid rgba(122,127,98,.18);
}
.home-welcome::before,.home-welcome::after{
  content:"";position:absolute;pointer-events:none;z-index:0;background:var(--sage-deep);opacity:.11;
  transform:rotate(-14deg);border-radius:45% 8% 40% 12%;
}
.home-welcome::before{width:230px;height:82px;left:-92px;top:28px;box-shadow:32px 32px 0 rgba(205,167,71,.34)}
.home-welcome::after{width:270px;height:94px;right:-115px;bottom:22px;box-shadow:-34px -28px 0 rgba(205,167,71,.22)}
.home-welcome>div:first-child{
  position:relative!important;z-index:2;justify-content:center!important;align-items:flex-start!important;
  min-height:258px;width:100%;
}
.home-welcome>div:first-child>div:last-child{
  position:absolute;right:0;top:0;z-index:5;display:flex!important;align-items:center!important;
  background:rgba(255,255,255,.84);border:1px solid rgba(122,127,98,.22);border-radius:999px;
  padding:4px 6px;box-shadow:0 6px 18px rgba(55,60,48,.08);backdrop-filter:blur(8px);
}
.home-welcome>div:first-child>div:last-child button{color:var(--ink)!important;margin-left:4px!important}
.home-welcome .role-pill{color:var(--sage-deep)!important;border-color:rgba(85,93,71,.28)!important;background:var(--sage-pale)!important;margin-left:0!important}
.home-logo{
  width:min(360px,88vw)!important;height:auto!important;max-height:none!important;
  background:transparent!important;border-radius:0!important;padding:0!important;margin:2px auto 0!important;
  box-shadow:none!important;filter:drop-shadow(0 14px 22px rgba(55,60,48,.13));
  animation:brandHero 7s ease-in-out infinite!important;position:relative;z-index:2;
}
.home-welcome>.eyebrow{position:relative;z-index:2;color:var(--gold-dark)!important;margin-top:8px!important;font-size:12px!important;font-weight:800!important}
.home-welcome h1{position:relative;z-index:2;color:var(--ink)!important;font-size:37px!important;line-height:1.03;margin-top:5px!important}

/* Le vrai logo devient un fil conducteur discret dans les cartes d'accueil. */
.big,.news-home-card{position:relative!important;overflow:hidden!important}
.big::after,.news-home-card::after{
  content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);
  width:112px;height:78px;background:url('./assets/zone-inspire-symbol.png') center/contain no-repeat;
  opacity:.045;pointer-events:none;z-index:0;
}
.big.primary::after{opacity:.075;width:126px;height:88px}
.big.events-entry::after{opacity:.055}
.big.admin-entry::after{opacity:.05}
.big>span,.news-home-card>*{position:relative;z-index:1}

/* Logo plus visible aussi aux points de confiance / navigation. */
.login-logo{width:min(370px,88vw)!important;padding:9px 12px!important;border-radius:22px!important}
.header-logo{width:96px!important;height:66px!important;padding:3px!important;border-radius:12px!important}
.gate-logo{width:min(280px,78vw)!important;margin-bottom:18px!important}
.confirm-logo{width:min(235px,68vw)!important;margin-bottom:24px!important}
.admin-security-banner{grid-template-columns:108px 1fr 12px!important;min-height:82px!important}
.admin-logo{width:104px!important;height:72px!important}
.boot-logo{width:min(340px,80vw)!important;filter:drop-shadow(0 15px 28px rgba(0,0,0,.14))!important}

/* Petit rappel de marque au-dessus de la barre de navigation, très léger. */
.bottom-nav::after{
  content:"";position:absolute;left:50%;top:-22px;transform:translateX(-50%);
  width:42px;height:29px;background:url('./assets/zone-inspire-symbol.png') center/contain no-repeat;
  opacity:.16;pointer-events:none;filter:drop-shadow(0 3px 5px rgba(55,60,48,.08));
}
@keyframes brandHero{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-4px) scale(1.012)}}
@media(max-width:390px){
  .home-welcome>div:first-child{min-height:230px}
  .home-logo{width:min(315px,86vw)!important}
  .home-welcome h1{font-size:33px!important}
  .header-logo{width:82px!important;height:57px!important}
  .big::after{width:92px;height:64px;right:8px}
}
@media(prefers-reduced-motion:reduce){.home-logo{animation:none!important}}

/* V28 · expérience accessible — reprise de séance explicite, prochaine séance, occupation en direct */
.next-session-hero{
  position:relative;overflow:hidden;background:#fff;border:1.5px solid var(--line);border-left:7px solid var(--sage-deep);
  border-radius:22px;padding:18px 18px 15px;margin:0 0 12px;box-shadow:0 12px 28px rgba(55,60,48,.10);
}
.next-session-hero::after{content:"";position:absolute;right:-20px;bottom:-18px;width:130px;height:92px;background:url('./assets/zone-inspire-symbol.png') center/contain no-repeat;opacity:.045;pointer-events:none}
.next-session-hero.tone-muscu{border-left-color:var(--muscu);background:linear-gradient(115deg,var(--muscu-bg),#fff 35%)}
.next-session-hero.tone-cardio{border-left-color:var(--cardio);background:linear-gradient(115deg,var(--cardio-bg),#fff 35%)}
.next-session-hero.tone-course{border-left-color:var(--course);background:linear-gradient(115deg,var(--course-bg),#fff 35%)}
.next-session-hero.tone-mixed{border-left-color:var(--mixed);background:linear-gradient(115deg,var(--mixed-bg),#fff 40%)}
.next-session-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.next-session-kicker{font-size:10px;font-weight:900;letter-spacing:1.25px;color:var(--sage-deep)}
.next-when{font-size:10.5px;font-weight:850;background:var(--sage-pale);color:var(--sage-deep);padding:5px 8px;border-radius:999px}
.next-session-time{font-size:31px;line-height:1;color:var(--ink);margin:2px 0 7px}.next-session-time span{font-family:inherit;color:var(--gold-dark);font-size:20px}
.next-session-hero h2{font-size:24px;margin:0 0 2px;color:var(--ink)}.next-session-hero p{font-size:12.5px;color:var(--muted);margin:0 0 10px;line-height:1.4}
.next-session-action{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;background:var(--ink);color:#fff;border-radius:13px;padding:11px 13px;font:800 12px 'Jost',sans-serif;position:relative;z-index:1}
.next-session-action span{font-size:17px}.empty-next{border-left-color:var(--line);background:linear-gradient(135deg,#fff,#F8F7F2)}.empty-next h2{margin-top:7px;font-size:22px}
.home-mixed-timeline{display:flex;height:5px;border-radius:999px;overflow:hidden;margin:9px 0 11px;background:#eee}.home-mixed-timeline span.tone-cardio{background:var(--cardio)}.home-mixed-timeline span.tone-muscu{background:var(--muscu)}

.repeat-session-card{display:grid;grid-template-columns:42px 1fr;gap:10px;background:linear-gradient(135deg,#FBFAF6,#fff);border:1.5px solid rgba(122,127,98,.28);border-radius:18px;padding:13px;margin:0 0 12px;box-shadow:0 7px 18px rgba(55,60,48,.06);position:relative;overflow:hidden}
.repeat-icon{width:44px;height:44px;border-radius:12px;background:#F0F1E9;color:var(--sage-deep);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800}
.repeat-copy{min-width:0}.repeat-copy>span{display:block;font-size:9px;font-weight:900;letter-spacing:.9px;color:var(--gold-dark)}.repeat-copy strong{display:block;font-size:20px;line-height:1.12;color:var(--ink);margin:3px 0 7px}.repeat-copy small{display:block;font-size:12px;color:var(--muted);line-height:1.42}.repeat-copy small b{color:var(--ink)}.repeat-copy em{display:block;font-style:normal;font-size:11.5px;line-height:1.35;color:var(--sage-deep);font-weight:750;margin-top:6px}
.repeat-session-card>button{grid-column:1/-1;border:0;background:var(--sage-deep);color:#fff;border-radius:12px;padding:13px 14px;font:800 13px 'Jost',sans-serif;display:flex;align-items:center;justify-content:center;gap:9px;min-height:46px}.repeat-session-card>button span{font-size:17px;line-height:1}


.slot-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.slot-heading .eyebrow{margin:0}.live-capacity{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:850;color:#4F7655;background:#EDF6ED;border:1px solid #D3E7D5;border-radius:999px;padding:5px 7px;white-space:nowrap}.live-capacity i{width:7px;height:7px;background:#4F8A5B;border-radius:50%;box-shadow:0 0 0 0 rgba(79,138,91,.3);animation:livePulse 2s infinite}
@keyframes livePulse{0%{box-shadow:0 0 0 0 rgba(79,138,91,.3)}70%{box-shadow:0 0 0 6px rgba(79,138,91,0)}100%{box-shadow:0 0 0 0 rgba(79,138,91,0)}}
.slot-meter{height:5px;border-radius:999px;background:#E8E6DF;overflow:hidden;margin:7px 5px 0}.slot-meter>i{display:block;height:100%;border-radius:999px;background:var(--sage);transition:width .35s ease}.slot-meter.busy>i{background:var(--gold-dark)}.slot-meter.full>i{background:#A5524A}
.slot-meter-duo{display:grid;gap:3px;margin:6px 4px 0}.slot-meter-duo>span{display:grid;grid-template-columns:11px 1fr;gap:3px;align-items:center}.slot-meter-duo b{font-size:7.5px;color:var(--muted)}.slot-meter-duo i{display:block;height:3px;background:#E7E6E1;border-radius:99px;overflow:hidden}.slot-meter-duo em{display:block;height:100%;border-radius:99px;background:var(--sage);transition:width .35s ease}
.course-meter{height:6px;background:#ECEAE3;border-radius:999px;overflow:hidden;margin:5px 0 10px}.course-meter i{display:block;height:100%;background:var(--course);border-radius:999px;transition:width .35s ease}

@media(max-width:390px){.next-session-time{font-size:28px}.next-session-hero{padding:16px 15px 14px}.repeat-session-card{padding:12px}.live-capacity{font-size:8.5px;padding:4px 6px}.slot{min-height:76px}}
@media(prefers-reduced-motion:reduce){.live-capacity i{animation:none!important}.slot-meter>i,.slot-meter-duo em,.course-meter i{transition:none!important}}

/* V29 · réservation flexible + alertes admin dernière minute */
.flexible-delay small{line-height:1.4!important}.flexible-delay small b{color:var(--ink)}
.admin-lastminute-panel{background:#fff;border:1.5px solid rgba(183,105,45,.24);border-left:5px solid #B7692D;border-radius:18px;padding:14px;margin:0 0 12px;box-shadow:0 7px 20px rgba(90,55,25,.06)}
.admin-lastminute-panel.has-alerts{background:linear-gradient(135deg,#FFF8F0,#fff)}
.lastminute-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.lastminute-head>div{min-width:0}.lastminute-kicker{display:block;font-size:9px;letter-spacing:1.2px;font-weight:900;color:#B7692D;margin-bottom:2px}.lastminute-head strong{display:block;font-size:15px;color:var(--ink)}
.lastminute-count{min-width:34px;height:34px;padding:0 9px;border-radius:999px;background:#B7692D;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:14px}.lastminute-help{margin:7px 0 10px;color:var(--muted);font-size:11px;line-height:1.35}.lastminute-list{display:grid;gap:7px}.lastminute-alert-row{display:grid;grid-template-columns:30px 1fr;gap:9px;align-items:start;background:#fff;border:1px solid #F0DED0;border-radius:13px;padding:9px}.lastminute-bolt{width:28px;height:28px;border-radius:9px;background:#FFF0E4;display:flex;align-items:center;justify-content:center}.lastminute-alert-row strong{font-size:12px;color:var(--ink)}.lastminute-alert-row p{margin:2px 0 0;font-size:11px;line-height:1.35;color:#5F5A53}.lastminute-alert-row small{font-size:9px;color:#B7692D;font-weight:800}.lastminute-empty{font-size:11px;color:#58745B;background:#F3F8F2;border-radius:11px;padding:9px 10px;font-weight:700}
