/* ════ CROISSANCE : ADMIN ET PREMIÈRE SÉANCE ════ */

/* Quatre onglets admin : sur petit écran, deux par ligne plutôt que coupés. */
@media (max-width:400px){.admin-tabs{display:grid;grid-template-columns:1fr 1fr}}

/* ── Admin · Croissance ──
   Même langage que les bilans PRO (.pw-big, .pw-delta, .pw-stat, .pw-block) :
   chiffre en Barlow Condensed d'abord, libellé dessous, statut dans une
   pastille (jamais la bordure), jauge fine en dégradé d'accent. La boîte
   admin est déjà une carte : les tuiles sont des surfaces imbriquées
   translucides (anneau inset, pas de bordure .5px), seule la première porte
   la lueur d'accent. */

/* En-tête collant : heure en accent (.pw-range) et actualisation carrée
   façon .ph-secondary ; l'icône tourne pendant le rechargement. */
#admin-growth .gr-overview{padding:4px 0 14px}
/* Le contenu défile sous l'en-tête collant en fondu, pas en coupe franche. */
#admin-growth .gr-overview::after{content:'';position:absolute;left:0;right:0;top:100%;height:12px;background:linear-gradient(var(--bg2),transparent);pointer-events:none}
#admin-growth .gr-updated{font:700 13px/1.2 'Barlow',sans-serif;color:var(--accent-soft)}
#admin-growth .gr-updated span{display:inline;margin:0;font:inherit;color:inherit}
#admin-growth .gr-refresh{display:grid;place-items:center;width:44px;height:44px;padding:0;border-radius:14px;
  border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);color:var(--accent-soft);
  -webkit-tap-highlight-color:transparent;transition:transform .2s cubic-bezier(.16,1,.3,1),background .2s,border-color .2s}
#admin-growth .gr-refresh svg{width:20px;height:20px}
#admin-growth .gr-refresh:hover{border-color:rgba(var(--accent-rgb),.5);background:rgba(var(--accent-rgb),.08)}
#admin-growth .gr-refresh:active{transform:scale(.92)}
#admin-growth .gr-refresh:disabled{cursor:default;transform:none}
#admin-growth .gr-refresh.is-busy svg{animation:pcSpin .9s linear infinite}
#admin-growth .gr-refresh:focus-visible,#admin-growth .gr-empty .ph-secondary:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px}

/* Tuiles chiffres : grille de 2 (.pw-bigs), la tuile « 24 h » en tête sur
   toute la largeur, sa pastille à droite du chiffre (.pa-chart-head). */
.gr-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.gr-tile{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;padding:14px 12px;border-radius:16px;
  background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.gr-tile.is-hero{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 12px;padding:16px 14px;
  background:radial-gradient(120% 100% at 100% 0%,rgba(var(--accent-rgb),.25),transparent 60%),rgba(255,255,255,.04);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.35)}
.gr-tile.is-hero>*{grid-column:1/-1}
/* Les deux petites tuiles partagent leurs lignes : pastilles et jauges
   alignées même quand un libellé passe sur deux lignes. */
.gr-tile:not(.is-hero){display:grid;grid-row:span 5;grid-template-rows:subgrid;row-gap:6px;justify-items:start;align-content:start}
.gr-tile:not(.is-hero)>.gr-meter{justify-self:stretch}
.gr-tile.is-hero>.gr-value{grid-column:1;grid-row:1}
.gr-tile.is-hero>.gr-goal{grid-column:2;grid-row:1}
.gr-value{display:flex;align-items:baseline;font:800 34px/1 'Barlow Condensed',sans-serif;color:#fff;font-variant-numeric:tabular-nums}
.gr-tile.is-hero .gr-value{font-size:40px}
.gr-value small{margin-left:2px;font-size:.45em;color:#a29e9a}
.gr-label{font-size:11px;line-height:1.3;color:#a29e9a}
.gr-tile.is-hero .gr-label{font-size:12px;color:#b8b3ae}
.gr-goal{gap:4px;white-space:nowrap}
.gr-meter{align-self:stretch;height:7px;margin-top:4px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
.gr-tile.is-hero .gr-meter{height:10px}
.gr-meter i{display:block;width:var(--w,0%);height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--accent2));
  box-shadow:0 0 14px rgba(var(--accent-rgb),.5);transform-origin:0 50%;animation:paGrowX .9s cubic-bezier(.16,1,.3,1) .25s both}
.gr-detail{font-size:11px;line-height:1.4;color:#8f8a86}
.gr-label,.gr-detail{text-wrap:balance}
.gr-compare{margin:10px 0 0;font-size:11px;line-height:1.4;color:#8f8a86}

/* Blocs suivants : titre de section des bilans (.pw-block>h2). */
.gr-block{margin-top:26px}
.gr-block>h4{margin:0 0 12px;font:800 13px/1.2 'Barlow',sans-serif;letter-spacing:1.8px;text-transform:uppercase;color:#d9d4cf}
.gr-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.gr-facts .pw-stat{align-content:flex-start;padding:12px;border-radius:16px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.gr-facts .pw-stat small{line-height:1.3}

/* Tableau par semaine : enveloppe imbriquée, en-têtes espacés, chiffres en
   Barlow Condensed tabulaires, lignes de 40 px. */
.gr-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:16px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03)}
.gr-table{width:100%;border-collapse:collapse}
.gr-table abbr{text-decoration:none}
.gr-table th,.gr-table td{height:40px;padding:0 8px;text-align:right;white-space:nowrap;border-bottom:1px solid rgba(255,255,255,.06)}
.gr-table tr>:first-child{padding-left:12px;text-align:left}
.gr-table tr>:last-child{padding-right:12px}
.gr-table thead th{height:36px;font:800 10px/1.2 'Barlow',sans-serif;letter-spacing:1.2px;text-transform:uppercase;color:#a29e9a}
.gr-table tbody th{font:700 13px/1.2 'Barlow',sans-serif;color:#e9e5e0}
.gr-table td{font:800 16px/1 'Barlow Condensed',sans-serif;color:#f2eee9;font-variant-numeric:tabular-nums}
.gr-table td small{font-size:11px;color:#a29e9a}
.gr-table tbody tr:last-child>*{border-bottom:0}
.gr-bar{display:inline-block;width:34px;height:6px;margin-right:7px;vertical-align:middle;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
.gr-bar i{display:block;width:var(--w,0%);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent2))}
.gr-wait{font:600 12px/1 'Barlow',sans-serif;color:#8f8a86}
.gr-note{margin:10px 0 0;font-size:11px;line-height:1.5;color:#8f8a86}

/* Erreur : même ton que les états vides PRO, bouton secondaire. */
#admin-growth .gr-empty b{font:800 20px/1.05 'Barlow Condensed',sans-serif;text-transform:uppercase;color:#f7f3ee}
#admin-growth .gr-empty span{max-width:34ch;margin-top:6px;font-size:12px;line-height:1.5;color:#a29e9a}
#admin-growth .gr-empty .ph-secondary{margin-top:16px}
#admin-growth .gr-empty .gr-empty-art{display:grid;place-items:center;width:72px;height:72px;margin:0 0 14px;border-radius:22px;color:var(--accent-soft);
  background:rgba(var(--accent-rgb),.12);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.35),0 0 30px rgba(var(--accent-rgb),.2)}
#admin-growth .gr-empty .gr-empty-art svg{width:34px;height:34px}

/* Entrée : les tuiles montent, les blocs suivants apparaissent en fondu. */
#admin-growth .gr-tiles{animation:pcRise .55s cubic-bezier(.16,1,.3,1) both .05s}
#admin-growth .gr-compare,#admin-growth .gr-block{animation:pwFade .5s ease both .18s}
/* Actualisation : les chiffres changent sur place, sans rejouer l'entrée. */
#admin-growth.gr-quiet .gr-tiles,#admin-growth.gr-quiet .gr-compare,#admin-growth.gr-quiet .gr-block,#admin-growth.gr-quiet .gr-meter i{animation:none}

@media (max-width:440px){
  .gr-bar{display:none}
  .gr-table th,.gr-table td{padding:0 5px}
  .gr-table tr>:first-child{padding-left:10px}
  .gr-table tr>:last-child{padding-right:10px}
  .gr-table td{font-size:15px}
}
@media (max-width:380px){
  .gr-tile{padding:12px 10px}
  .gr-tile.is-hero{padding:14px 12px}
  .gr-value{font-size:30px}
  .gr-tile.is-hero .gr-value{font-size:34px}
  .gr-facts .pw-stat{padding:10px}
}
@media (max-width:360px){
  .gr-table th,.gr-table td{padding:0 3px}
  .gr-table thead th{font-size:9.5px;letter-spacing:1px}
  .gr-table tbody th{font-size:12px}
  .gr-wait{font-size:11px}
}
@media (prefers-reduced-motion:reduce){
  #admin-growth *,#admin-growth *::before,#admin-growth *::after{animation:none!important;transition:none!important}
}

/* ── Accueil · première séance ──
   Même anatomie que les cartes d'accueil (.home-card : bord neutre, reflet,
   filet d'accent en haut) : carré d'icône teinté, surtitre, titre condensé,
   puis les mouvements en photo comme « Près de toi » et deux sorties en
   texte (.pro-deck-all). Le bouton
   orange au-dessus reste la seule action principale. */
/* Base partagée avec l'étape 4 de l'accueil (.fs-ob) : la carte la surcharge plus bas. */
.fs-kicker{display:block;font-size:10px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:var(--accent-soft)}
.fs-card{margin:0 0 10px;padding-bottom:6px}
.fs-card[hidden]{display:none}
.fs-head{display:flex;align-items:center;gap:12px}
.fs-ic{flex:0 0 40px;display:grid;place-items:center;width:40px;height:40px;border-radius:13px;color:var(--accent);
  background:rgba(var(--accent-rgb),.12);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.35)}
.fs-ic svg{width:22px;height:22px}
.fs-head-copy{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.fs-card .fs-kicker{font-size:10px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:color-mix(in srgb,var(--accent) 55%,var(--muted))}
.fs-head h2{margin:0;font:800 21px/1.05 'Barlow Condensed',sans-serif;text-transform:uppercase;color:#f7f3ee;overflow-wrap:anywhere}
.fs-sub{font-size:12px;line-height:1.35;color:#a9a5a1}
/* Mouvements : lignes à vignette, filets comme la liste « Près de toi ». */
.fs-exercises{margin:12px 0 0;padding:0;list-style:none}
.fs-exercises li{display:flex;align-items:center;gap:12px;min-height:52px;padding:6px 0}
.fs-exercises li+li{border-top:1px solid rgba(255,255,255,.06)}
.fs-ex-ph{position:relative;flex:0 0 40px;display:grid;place-items:center;width:40px;height:40px;overflow:hidden;border-radius:13px;
  color:var(--accent-soft);background:rgba(var(--accent-rgb),.12);box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.fs-ex-ph svg{width:18px;height:18px}
.fs-ex-ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.fs-ex-name{flex:1;min-width:0;font-size:14px;font-weight:700;line-height:1.25;color:#f2eee9;overflow-wrap:anywhere}
.fs-ex-sets{flex:0 0 auto;font:800 18px/1 'Barlow Condensed',sans-serif;color:#d9d4cf;font-variant-numeric:tabular-nums;white-space:nowrap}
.fs-ex-more .fs-ex-ph{font:800 16px/1 'Barlow Condensed',sans-serif;font-variant-numeric:tabular-nums}
.fs-ex-more .fs-ex-name{font-size:13px;font-weight:600;color:#a29e9a}
/* Deux autres chemins : texte d'accent, 44 px de haut, sans soulignement. */
.fs-alt{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 16px;margin:12px 0 0;padding-top:2px;border-top:1px solid rgba(255,255,255,.06)}
.fs-alt button{min-height:44px;padding:0;border:0;background:none;color:var(--accent-soft);font:700 13px/1 'Barlow',sans-serif;cursor:pointer;
  -webkit-tap-highlight-color:transparent;transition:color .2s,transform .2s cubic-bezier(.16,1,.3,1)}
.fs-alt button:hover{color:#fff}
.fs-alt button:active{transform:scale(.97)}
.fs-alt button:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px;border-radius:8px}
/* Sous-titre du bouton principal (texte figé par les tests) : un bouton
   n'hérite pas de la police de la page, d'où le Barlow explicite ; lignes
   équilibrées plutôt qu'un « ~25 min » seul en fin. */
#home-session-action[data-first="1"] .home-start-copy>span{font-family:'Barlow',sans-serif;text-wrap:balance}
@media(max-width:360px){.fs-head h2{font-size:20px}}
@media(prefers-reduced-motion:reduce){.fs-card *{transition:none!important}}

/* ── Accueil (étape 4) ──
   La dernière étape garde la mise en page centrée et le bouton biseauté de
   l'accueil ; ce qui est nouveau parle la langue des cartes PRO : carte à
   bord dégradé avec carré d'icône pour la séance de départ, un seul bouton
   fort, puis des sorties discrètes. Le fond reprend le halo et la grille
   hexagonale qui ouvrent les écrans PRO. */
#onboard-overlay:has(#ob-step-4.active)::before,#onboard-overlay:has(#ob-step-4.active)::after{content:'';position:absolute;z-index:-1;left:0;right:0;top:0;pointer-events:none}
#onboard-overlay:has(#ob-step-4.active)::before{height:560px;background:radial-gradient(closest-side,rgba(var(--accent-rgb),.3),rgba(var(--accent-rgb),.07) 55%,transparent 76%) 50% -240px/760px 600px no-repeat;animation:pwFade .6s ease both}
#onboard-overlay:has(#ob-step-4.active)::after{height:520px;opacity:.09;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='100'%3E%3Cpath d='M28 66L0 50L0 16L28 0L56 16L56 50L28 66L28 100' fill='none' stroke='%23fff' stroke-width='1.2'/%3E%3C/svg%3E") 0 0/28px 50px;-webkit-mask-image:linear-gradient(to bottom,#000,transparent 85%);mask-image:linear-gradient(to bottom,#000,transparent 85%)}
/* Points d'étape : la pagination des bilans PRO (.pro-deck-dots), sur toutes les étapes. */
.onboard-dot{border-radius:999px;background:rgba(255,255,255,.18);transition:width .35s cubic-bezier(.16,1,.3,1),background .3s}
.onboard-dot.on{width:18px;background:var(--accent)}
#ob-step-4.active{animation:none}
#ob-step-4 .onboard-title{font-weight:800;line-height:.96;color:#f7f3ee;text-wrap:balance}
#ob-step-4 .onboard-title span{color:var(--accent-soft)}
@supports (-webkit-background-clip:text) or (background-clip:text){
  #ob-step-4 .onboard-title span{background:linear-gradient(100deg,var(--accent-soft),var(--accent) 45%,var(--accent2) 70%,var(--accent-soft));background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:pcSheen 6s ease-in-out infinite}
}
#ob-step-4 .onboard-sub{margin-bottom:20px;line-height:1.6;color:#b8b3ae;text-wrap:balance}

/* Séance de départ : anatomie de .pm-home-main, sans action propre */
#ob-first{align-self:stretch}
.fs-ob{display:flex;align-items:center;gap:14px;margin:0 0 18px;padding:16px;text-align:left;border:1px solid transparent;border-radius:20px;
  background:radial-gradient(120% 140% at 100% 0%,rgba(var(--accent-rgb),.24),transparent 55%) padding-box,
    linear-gradient(160deg,#17161a,#0d0d10) padding-box,
    linear-gradient(130deg,rgba(var(--accent-rgb),.8),rgba(255,255,255,.08) 45%,rgba(var(--accent-rgb),.4)) border-box;
  box-shadow:0 14px 34px rgba(0,0,0,.4)}
.fs-ob-ic{flex:0 0 46px;display:grid;place-items:center;width:46px;height:46px;border-radius:14px;color:#fff;
  background:linear-gradient(135deg,var(--accent2),var(--accent));box-shadow:0 8px 20px rgba(var(--accent-rgb),.4)}
.fs-ob-ic svg{width:22px;height:22px}
.fs-ob-copy{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.fs-ob-copy small{font-size:10px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--accent-soft)}
.fs-ob-copy b{font:800 21px/1.05 'Barlow Condensed',sans-serif;text-transform:uppercase;color:#f7f3ee;overflow-wrap:anywhere;text-wrap:pretty}
.fs-ob-copy>span{font-size:12px;line-height:1.35;color:#b8b3ae;text-wrap:balance}
@media(max-width:360px){
  #onboard-overlay:has(#ob-step-4.active){padding-left:20px;padding-right:20px}
  .fs-ob{gap:12px;padding:14px 12px}.fs-ob-ic{flex-basis:40px;width:40px;height:40px;border-radius:12px}.fs-ob-copy b{font-size:20px}
}

/* Bouton principal : la forme biseautée de l'accueil, le remplissage et le
   reflet des boutons forts (.home-start, .summary-share). Le biseau coupe
   toute ombre extérieure : la lueur est un halo flou sous l'enveloppe, assez
   étroit pour ne pas être coupé par les bords des étapes, et l'anneau de
   focus est dessiné à l'intérieur, hors du biseau. */
.ob-cta{position:relative;isolation:isolate;align-self:stretch;display:flex;flex-direction:column}
.ob-cta::before{content:'';position:absolute;z-index:-1;left:14%;right:14%;top:40%;bottom:-4px;border-radius:50%;
  background:rgba(var(--accent-rgb),.5);filter:blur(16px);pointer-events:none}
#ob-start{position:relative;overflow:hidden;align-self:stretch;min-height:56px;padding:0 22px;font-size:14px;letter-spacing:1.6px;
  background:radial-gradient(120% 140% at 100% 0%,rgba(255,255,255,.25),transparent 50%),
    linear-gradient(135deg,color-mix(in srgb,var(--accent) 72%,#fff),var(--accent) 50%,color-mix(in srgb,var(--accent) 70%,#000));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35);
  transition:transform .2s cubic-bezier(.16,1,.3,1),filter .2s;-webkit-tap-highlight-color:transparent}
#ob-start::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.3) 50%,transparent 65%);
  transform:translateX(-120%);animation:pcShine 4.6s cubic-bezier(.4,0,.2,1) infinite 1.2s;pointer-events:none}
#ob-start:active{transform:scale(.985)}
#ob-start:focus-visible{outline:2px solid #fff;outline-offset:-12px}

/* Rappel : action texte en accent (comme « Tout voir »), avec la cloche des
   rappels PRO ; une fois activé, le signal vert des petites confirmations. */
.ob-remind{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;margin-top:8px;padding:0 14px;border:0;border-radius:12px;
  background:none;color:var(--accent-soft);font:700 14px/1.2 'Barlow',sans-serif;cursor:pointer;
  transition:transform .2s cubic-bezier(.16,1,.3,1),background .2s,color .2s;-webkit-tap-highlight-color:transparent}
.ob-remind[hidden]{display:none}
.ob-remind::before{content:'';flex:0 0 18px;width:18px;height:18px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 16V11a6 6 0 0 1 12 0v5l2 2H4Z'/%3E%3Cpath d='M10 20a2 2 0 0 0 4 0'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 16V11a6 6 0 0 1 12 0v5l2 2H4Z'/%3E%3Cpath d='M10 20a2 2 0 0 0 4 0'/%3E%3C/svg%3E") center/contain no-repeat}
.ob-remind:hover{background:rgba(var(--accent-rgb),.08)}
.ob-remind:active{transform:scale(.97)}
.ob-remind:disabled{cursor:default;color:#86efac;background:none;transform:none}
.ob-remind:disabled::before{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5 9.5 17 19 7.5'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5 9.5 17 19 7.5'/%3E%3C/svg%3E")}

@supports not ((-webkit-mask-image:none) or (mask-image:none)){.ob-remind::before{display:none}}

/* Sorties discrètes : texte seul, 44 px de haut, pas de soulignement */
.ob-more{display:flex;flex-wrap:wrap;justify-content:center;gap:0 4px;margin-top:6px}
.ob-remind:not([hidden])+.ob-more{margin-top:0}
.ob-more button{min-height:44px;padding:0 12px;border:0;border-radius:12px;background:none;color:#8f8a86;font:600 13px/1.2 'Barlow',sans-serif;cursor:pointer;transition:color .2s,transform .2s cubic-bezier(.16,1,.3,1);-webkit-tap-highlight-color:transparent}
.ob-more button:hover{color:#e9e5e0}
.ob-more button:active{transform:scale(.97)}
.ob-remind:focus-visible,.ob-more button:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px}

/* Entrée : le texte et la carte montent, les boutons n'ont qu'un fondu */
#ob-step-4.active>.onboard-title,#ob-step-4.active>.onboard-sub,#ob-step-4.active>#ob-first{animation:pcRise .55s cubic-bezier(.16,1,.3,1) both}
#ob-step-4.active>.onboard-sub{animation-delay:.05s}
#ob-step-4.active>#ob-first{animation-delay:.1s}
#ob-step-4.active>.ob-cta,#ob-step-4.active>button,#ob-step-4.active>.ob-more{animation:pwFade .5s ease both .18s}
@media(prefers-reduced-motion:reduce){
  #ob-step-4 *,#ob-step-4 *::before,#ob-step-4 *::after{animation:none!important;transition:none!important}
}

/* ── Écran de fin : première séance ──
   Carte vitrée de la famille « Records » de l'écran de fin (rayon 18,
   fond .03, bordure .08), alignée à gauche. Anatomie des lignes de
   l'accueil (« Dernière séance ») : carré d'icône teinté d'accent,
   surtitre, titre condensé, sous-titre. Pas de carré en dégradé ni de
   bordure d'accent : « Partager ma séance » reste le seul bouton
   principal. Une fois le rappel demandé, le bouton reprend la pastille
   verte de « Séance terminée ». */
#session-summary-overlay .fs-done{position:relative;margin:0 0 14px;padding:16px;border-radius:18px;text-align:left;
  border:1px solid rgba(255,255,255,.08);
  background:radial-gradient(110% 90% at 0% 0%,rgba(var(--accent-rgb),.12),transparent 60%),rgba(255,255,255,.03)}
#session-summary-overlay .fs-done-main{display:flex;align-items:center;gap:14px}
#session-summary-overlay .fs-done-ic{flex:0 0 44px;display:grid;place-items:center;width:44px;height:44px;border-radius:13px;color:var(--accent-soft);
  background:rgba(var(--accent-rgb),.12);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.35)}
#session-summary-overlay .fs-done-ic svg{width:22px;height:22px}
#session-summary-overlay .fs-done-copy{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
#session-summary-overlay .fs-done-copy small{font-size:10px;font-weight:800;letter-spacing:1.6px;color:color-mix(in srgb,var(--accent) 55%,var(--muted))}
#session-summary-overlay .fs-done-copy b{font:900 18px/1.1 'Barlow Condensed',sans-serif;letter-spacing:.6px;text-transform:uppercase;color:#f7f3ee;overflow-wrap:anywhere;text-wrap:balance}
#session-summary-overlay .fs-done-copy>span{font-size:12px;line-height:1.45;color:#a29d9a;text-wrap:balance}
#session-summary-overlay .fs-done-remind{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px;margin-top:14px;padding:10px 14px;
  border-radius:14px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);color:#e9e5e0;font:700 13px/1.2 'Barlow',sans-serif;cursor:pointer;
  -webkit-tap-highlight-color:transparent;transition:transform .2s cubic-bezier(.16,1,.3,1),background .2s,border-color .2s,color .2s}
#session-summary-overlay .fs-done-remind[hidden]{display:none}
#session-summary-overlay .fs-done-remind>span:first-child{display:grid;flex:0 0 auto;color:var(--accent-soft)}
#session-summary-overlay .fs-done-remind svg{width:17px;height:17px}
#session-summary-overlay .fs-done-remind>span:last-child{min-width:0}
#session-summary-overlay .fs-done-remind:hover{border-color:rgba(var(--accent-rgb),.5);background:rgba(var(--accent-rgb),.08)}
#session-summary-overlay .fs-done-remind:active{transform:scale(.97)}
#session-summary-overlay .fs-done-remind:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px}
#session-summary-overlay .fs-done-remind:disabled{cursor:default;transform:none;border-color:rgba(34,197,94,.4);background:rgba(34,197,94,.12);color:#86efac}
#session-summary-overlay .fs-done-remind:disabled>span:first-child{display:none}
#session-summary-overlay .fs-done-remind:disabled::before{content:'';flex:0 0 16px;width:16px;height:16px;border-radius:50%;background:#22c55e url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4L18 8' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat;box-shadow:0 0 10px rgba(34,197,94,.7)}
@media(max-width:360px){
  #session-summary-overlay .fs-done-main{gap:12px}
  #session-summary-overlay .fs-done-ic{flex-basis:40px;width:40px;height:40px;border-radius:12px}
  #session-summary-overlay .fs-done-ic svg{width:20px;height:20px}
}
@media(prefers-reduced-motion:reduce){#session-summary-overlay .fs-done *{animation:none!important;transition:none!important}}

/* ── Exercices perso ──
   Ligne « Ajouter » sous les résultats de recherche du sélecteur, et
   étiquette discrète « Perso · hors classement » sur les exercices ajoutés. */
.ex-add-custom{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;margin:8px 0 4px;padding:10px 12px;text-align:left;cursor:pointer;
  border:1px dashed rgba(var(--accent-rgb),.45);border-radius:16px;background:rgba(var(--accent-rgb),.06);color:#f2eee9;
  -webkit-tap-highlight-color:transparent;transition:background .2s,transform .2s cubic-bezier(.16,1,.3,1)}
.ex-add-custom:hover{background:rgba(var(--accent-rgb),.12)}
.ex-add-custom:active{transform:scale(.98)}
.ex-add-custom:focus-visible{outline:2px solid var(--accent-soft);outline-offset:2px}
.ex-add-custom-ic{flex:0 0 36px;display:grid;place-items:center;width:36px;height:36px;border-radius:12px;color:#fff;font:800 22px/1 'Barlow',sans-serif;
  background:linear-gradient(135deg,var(--accent2),var(--accent))}
.ex-add-custom-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.ex-add-custom-copy b{font:700 14px/1.25 'Barlow',sans-serif;overflow-wrap:anywhere}
.ex-add-custom-copy small{font-size:11.5px;color:#a29e9a}
.ex-item-tag.custom{background:rgba(255,255,255,.06);color:#cfcac5}

/* ── Navigateurs intégrés (Instagram, Facebook, TikTok…) ──
   Leur moteur rame sur les flous d'arrière-plan : on les retire, l'aspect
   reste le même à un voile près. */
html.in-app-browser *,html.in-app-browser *::before,html.in-app-browser *::after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}

/* Feuille « À quel exercice ressemble-t-il ? » (barème d'un exercice perso). */
.cx-link{position:fixed;inset:0;z-index:10000;display:none;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.6)}
.cx-link.show{display:flex;animation:pwFade .25s ease both}
.cx-link-box{display:flex;flex-direction:column;width:min(100%,520px);max-height:82vh;padding:18px 16px calc(16px + env(safe-area-inset-bottom,0px));
  border-radius:24px 24px 0 0;background:linear-gradient(165deg,#1b1a1f,#0e0e11);border-top:1px solid rgba(var(--accent-rgb),.35);animation:pcRise .35s cubic-bezier(.16,1,.3,1) both}
.cx-link-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.cx-link-head small{font-size:10px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:var(--accent-soft)}
.cx-link-head h2{margin:2px 0 0;font:800 21px/1.1 'Barlow Condensed',sans-serif;text-transform:uppercase;color:#f7f3ee;overflow-wrap:anywhere}
.cx-link-close{flex:0 0 44px;width:44px;height:44px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:rgba(255,255,255,.04);color:#e9e5e0;font-size:22px;cursor:pointer}
.cx-link-help{margin:8px 0 12px;font-size:12.5px;line-height:1.45;color:#a29e9a}
.cx-link-search{width:100%;min-height:46px;padding:0 14px;border:1px solid rgba(255,255,255,.12);border-radius:14px;background:rgba(255,255,255,.04);color:#f2eee9;font:500 15px 'Barlow',sans-serif}
.cx-link-search:focus{outline:2px solid var(--accent-soft);outline-offset:1px}
.cx-link-list{flex:1;min-height:120px;margin:10px 0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.cx-link-item{display:block;width:100%;min-height:46px;padding:0 12px;text-align:left;border:0;border-bottom:1px solid rgba(255,255,255,.06);background:none;color:#f2eee9;font:600 14px 'Barlow',sans-serif;cursor:pointer}
.cx-link-item:hover,.cx-link-item.on{background:rgba(var(--accent-rgb),.1);color:#fff}
.cx-link-item.on::after{content:' ✓';color:var(--accent-soft)}
.cx-link-empty{padding:18px 4px;font-size:12.5px;color:#8f8a86;text-align:center}
.cx-link-none{min-height:44px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:rgba(255,255,255,.04);color:#cfcac5;font:700 13px 'Barlow',sans-serif;cursor:pointer}
button.cx-link-cta{border:0;font:inherit;cursor:pointer}
@media(prefers-reduced-motion:reduce){.cx-link,.cx-link-box{animation:none!important}}
button.cx-link-cta::before,button.cx-link-cta::after{content:none!important;display:none!important}

/* ── Calendrier : numéro dans chaque case ── */
.cal-month .cal-day-labels{margin:0 0 6px}
.cal-dlbl{font:800 10px/1 'Barlow',sans-serif;color:#8f8a86;letter-spacing:.6px}
.cal-cell{position:relative;display:grid;place-items:center}
.cal-cell span{font:700 12px/1 'Barlow',sans-serif;color:#a29e9a;font-variant-numeric:tabular-nums}
.cal-cell.s1 span,.cal-cell.s2 span{color:#f2eee9}
.cal-cell.s3 span,.cal-cell.s4 span{color:#fff;font-weight:800}
.cal-cell.is-future{background:rgba(255,255,255,.025)}
.cal-cell.is-future span{color:#5f5b58}
.cal-cell.is-pad{background:transparent!important}
.cal-cell.today span{color:#fff;font-weight:800}
.nutri-fallback{display:flex;flex-direction:column;align-items:center;gap:8px;margin:24px 0;padding:24px 18px;text-align:center;border-radius:20px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03)}
.nutri-fallback b{font:800 20px/1.1 'Barlow Condensed',sans-serif;text-transform:uppercase;color:#f7f3ee}
.nutri-fallback span{max-width:34ch;font-size:12.5px;line-height:1.45;color:#a29e9a}
.nutri-fallback .ph-secondary{margin-top:8px}

/* ── Mes rappels ── */
.rem-root{display:flex;flex-direction:column;gap:14px}
.rem-intro{margin:0;font-size:13px;line-height:1.5;color:#a29e9a}
.rem-note{margin:0;padding:10px 12px;border-radius:12px;background:rgba(251,146,60,.1);color:#fdba74;font-size:12.5px;line-height:1.45}
.rem-list{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
.rem-row{display:flex;align-items:center;gap:10px;padding:12px;border-radius:18px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035)}
.rem-row.is-off{opacity:.55}
.rem-main{display:flex;align-items:center;gap:14px;flex:1;min-width:0;padding:0;border:0;background:none;color:inherit;text-align:left;cursor:pointer}
.rem-time{flex:0 0 auto;font:900 32px/1 'Barlow Condensed',sans-serif;color:#fff;font-variant-numeric:tabular-nums}
.rem-copy{display:flex;flex-direction:column;gap:3px;min-width:0}
.rem-days{font:800 11px/1.2 'Barlow',sans-serif;letter-spacing:.8px;text-transform:uppercase;color:var(--accent-soft)}
.rem-msg{font-size:13px;line-height:1.35;color:#e9e5e0;overflow-wrap:anywhere}
.rem-switch{position:relative;flex:0 0 48px;width:48px;height:28px}
.rem-switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.rem-switch span{position:absolute;inset:0;border-radius:999px;background:rgba(255,255,255,.14);transition:background .2s;pointer-events:none}
.rem-switch span::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s cubic-bezier(.16,1,.3,1)}
.rem-switch input:checked+span{background:var(--accent)}
.rem-switch input:checked+span::after{transform:translateX(20px)}
.rem-switch input:focus-visible+span{outline:2px solid var(--accent-soft);outline-offset:2px}
.rem-empty{display:flex;flex-direction:column;gap:6px;padding:18px;border-radius:18px;border:1px dashed rgba(255,255,255,.14);text-align:center}
.rem-empty b{font:800 18px/1.1 'Barlow Condensed',sans-serif;text-transform:uppercase;color:#f7f3ee}
.rem-empty span{font-size:12.5px;line-height:1.45;color:#a29e9a}
.rem-add,.rem-save{min-height:48px;border:0;border-radius:14px;background:linear-gradient(135deg,var(--accent2),var(--accent));color:#fff;font:800 14px/1 'Barlow',sans-serif;letter-spacing:.4px;cursor:pointer}
.rem-add:active,.rem-save:active{transform:scale(.98)}
.rem-save:disabled{opacity:.6}
.rem-form{display:flex;flex-direction:column;gap:14px}
.rem-days-pick{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:0;padding:0;border:0}
.rem-days-pick legend{margin-bottom:8px;font:800 11px/1 'Barlow',sans-serif;letter-spacing:1.2px;text-transform:uppercase;color:#a29e9a}
.rem-day{aspect-ratio:1;min-height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#cfcac5;font:800 15px/1 'Barlow',sans-serif;cursor:pointer}
.rem-day.on{border-color:transparent;background:var(--accent);color:#fff}
.rem-field{display:flex;flex-direction:column;gap:6px}
.rem-field span{font:800 11px/1 'Barlow',sans-serif;letter-spacing:1.2px;text-transform:uppercase;color:#a29e9a}
.rem-field input{min-height:48px;padding:0 14px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#f2eee9;font:600 16px 'Barlow',sans-serif;color-scheme:dark}
.rem-field input:focus{outline:2px solid var(--accent-soft);outline-offset:1px}
.rem-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.rem-actions .rem-save{flex:1 1 140px}
.rem-actions .ph-secondary{flex:0 0 auto}
.rem-delete{min-height:44px;margin-right:auto;padding:0 6px;border:0;background:none;color:#fdba74;font:700 13px 'Barlow',sans-serif;cursor:pointer}

/* Reconnexion silencieuse (session gardée, réseau lent au réveil) */
.auth-recover{position:fixed;inset:0;z-index:9000;display:none;align-items:center;justify-content:center;padding:24px;background:var(--bg)}
.auth-recover.show{display:flex}
.auth-recover-box{display:flex;flex-direction:column;align-items:center;gap:10px;max-width:300px;text-align:center}
.auth-recover-box b{font-family:'Barlow Condensed',sans-serif;font-size:26px;font-weight:800;color:var(--text)}
.auth-recover-box span{font-size:14px;line-height:1.45;color:var(--muted)}
.auth-recover-spin{width:34px;height:34px;margin-bottom:6px;border-radius:50%;border:3px solid rgba(var(--accent-rgb),.2);border-top-color:var(--accent);animation:authSpin .9s linear infinite}
@keyframes authSpin{to{transform:rotate(360deg)}}
.auth-recover-actions{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:12px}
.auth-recover-actions[hidden]{display:none}
.auth-recover-retry,.auth-recover-other{min-height:46px;border-radius:12px;font-family:'Barlow',sans-serif;font-size:15px;font-weight:600;cursor:pointer}
.auth-recover-retry{border:0;background:var(--accent);color:#fff}
.auth-recover-other{border:1px solid var(--border2);background:transparent;color:var(--text2)}
@media(prefers-reduced-motion:reduce){.auth-recover-spin{animation:none}}

/* Profil : partage plus léger, statut PRO rangé dans « Réglages et compte » */
#v-profil .profile-share-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
#v-profil .profile-share-actions .sbtn{width:100%;min-height:48px;padding:12px 10px;border-radius:14px;font-family:'Barlow',sans-serif;font-size:15px;font-weight:600;letter-spacing:0;text-transform:none;line-height:1.2}
#v-profil .profile-share-actions .psa-alt{background:var(--bg2);border:1px solid var(--border2);color:var(--text);box-shadow:none}
#pro-status-slot .pro-status{margin:12px 12px 0;box-shadow:none;background:rgba(255,255,255,.03)}
#pro-status-slot .pro-status-actions{margin-top:12px}
#pro-status-slot .pro-status-refresh{margin-top:10px}

/* Guide de la première séance */
.fg-spot{position:fixed;left:0;top:0;width:0;height:0;z-index:58;border-radius:16px;pointer-events:none;opacity:0;
  box-shadow:0 0 0 2px var(--accent),0 0 0 9999px rgba(4,6,10,.62);transition:transform .35s cubic-bezier(.16,1,.3,1),width .35s cubic-bezier(.16,1,.3,1),height .35s cubic-bezier(.16,1,.3,1),opacity .25s}
.fg-spot.show{opacity:1}
.fg-spot.tap::after{content:"";position:absolute;inset:-2px;border-radius:inherit;border:2px solid var(--accent);animation:fgRing 1.5s ease-out infinite}
@keyframes fgRing{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(1.18)}}
.fg-bubble{position:fixed;left:12px;right:12px;bottom:calc(env(safe-area-inset-bottom,0px) + 92px);z-index:60;max-width:520px;margin:0 auto;padding:14px 16px 16px;border-radius:20px;
  border:1px solid rgba(var(--accent-rgb),.45);background:linear-gradient(160deg,rgba(var(--accent-rgb),.14),rgba(var(--accent-rgb),.02) 60%),var(--bg2);box-shadow:0 22px 50px rgba(0,0,0,.6);animation:fgIn .32s cubic-bezier(.16,1,.3,1) both}
.fg-bubble.pop{animation:fgPop .45s cubic-bezier(.34,1.56,.64,1) both}
@keyframes fgIn{from{opacity:0;transform:translateY(14px)}}
@keyframes fgPop{0%{opacity:0;transform:translateY(10px) scale(.94)}100%{opacity:1;transform:none}}
.fg-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.fg-coach{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:8px;background:var(--accent);flex:0 0 auto}
.fg-coach svg{width:15px;height:15px;fill:none;stroke:#fff;stroke-width:2.2;stroke-linejoin:round}
.fg-dots{display:flex;gap:4px;flex:1}
.fg-dots i{width:14px;height:4px;border-radius:9px;background:rgba(255,255,255,.14)}
.fg-dots i.on{background:rgba(var(--accent-rgb),.55)}
.fg-dots i.now{width:22px;background:var(--accent)}
.fg-skip{border:0;background:none;color:var(--muted);font-size:12px;cursor:pointer;padding:6px 0;min-height:32px;white-space:nowrap}
.fg-title{display:block;font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:800;color:var(--text);line-height:1.1}
.fg-text{margin:6px 0 0;font-size:14px;line-height:1.45;color:var(--text2)}
.fg-live{margin:10px 0 0;padding:8px 10px;border-radius:10px;background:rgba(var(--accent-rgb),.12);color:var(--text);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.fg-live[hidden]{display:none}
.fg-next{margin-top:12px;width:100%;min-height:48px;border:0;border-radius:13px;background:var(--accent);color:#fff;font-family:'Barlow',sans-serif;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 10px 24px -8px rgba(var(--accent-rgb),.7)}
.fg-toast{padding:12px 16px 14px}
@media(prefers-reduced-motion:reduce){.fg-spot,.fg-spot.tap::after,.fg-bubble,.fg-bubble.pop{animation:none;transition:none}}

/* Les messages de l'app passent au-dessus de toutes les fenêtres
   (création de séance, guide, nutrition…), jamais derrière. */
#notif-toast.notif-toast{z-index:2147483000}

/* Accueil · Ton personnage */
.ob-av-hero{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:250px;margin:0 0 14px;border-radius:22px;overflow:hidden;isolation:isolate;
  border:1px solid rgba(var(--accent-rgb),.28);background:radial-gradient(120% 90% at 50% 0,rgba(var(--accent-rgb),.22),transparent 60%),linear-gradient(180deg,#10131b,#07080b)}
.ob-av-hero::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.5;background:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:26px 26px;-webkit-mask-image:radial-gradient(circle at 50% 70%,#000 20%,transparent 75%);mask-image:radial-gradient(circle at 50% 70%,#000 20%,transparent 75%)}
.ob-av-glow{position:absolute;left:50%;top:44%;width:210px;height:210px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(var(--accent-rgb),.45),transparent 65%);filter:blur(6px);z-index:-1}
.ob-av-floor{position:absolute;left:50%;bottom:52px;width:170px;height:26px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(var(--accent-rgb),.65),transparent 70%);box-shadow:0 0 0 1px rgba(var(--accent-rgb),.25) inset}
.ob-av-main{position:relative;width:150px;height:182px;margin-bottom:46px;object-fit:contain;filter:drop-shadow(0 14px 18px rgba(0,0,0,.65));animation:obAvFloat 3.6s ease-in-out infinite}
.ob-av-hero.swap .ob-av-main{animation:obAvSwap .5s cubic-bezier(.34,1.56,.64,1) both,obAvFloat 3.6s .5s ease-in-out infinite}
@keyframes obAvFloat{50%{transform:translateY(-5px)}}
@keyframes obAvSwap{0%{opacity:0;transform:translateY(16px) scale(.86)}100%{opacity:1;transform:none}}
.ob-av-meta{position:absolute;left:0;right:0;bottom:14px;display:flex;align-items:center;justify-content:center;gap:10px}
.ob-av-meta b{font-family:'Barlow Condensed',sans-serif;font-size:26px;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;color:var(--text)}
.ob-av-meta span{padding:4px 10px;border-radius:99px;border:1px solid rgba(var(--accent-rgb),.55);background:rgba(var(--accent-rgb),.14);color:var(--accent-soft);font-size:11px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase}
.ob-av-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.ob-av-pick{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;padding:8px 4px 10px;border-radius:16px;cursor:pointer;color:var(--text2);
  border:1px solid var(--border2);background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));transition:transform .18s ease,border-color .18s,background .18s,box-shadow .18s}
.ob-av-pick:active{transform:scale(.96)}
.ob-av-portrait{position:relative;display:flex;align-items:flex-end;justify-content:center;width:100%;aspect-ratio:1/1.15;border-radius:12px;overflow:hidden;background:radial-gradient(circle at 50% 30%,rgba(255,255,255,.08),transparent 70%)}
.ob-av-portrait img{width:86%;height:94%;object-fit:contain;object-position:bottom}
.ob-av-name{font-family:'Barlow Condensed',sans-serif;font-size:14px;font-weight:800;letter-spacing:.8px;text-transform:uppercase}
.ob-av-pick.on{color:var(--text);border-color:var(--accent);background:linear-gradient(180deg,rgba(var(--accent-rgb),.28),rgba(var(--accent-rgb),.06));box-shadow:0 10px 26px -10px rgba(var(--accent-rgb),.8)}
.ob-av-pick.on .ob-av-portrait{background:radial-gradient(circle at 50% 35%,rgba(var(--accent-rgb),.45),transparent 70%)}
.ob-av-check{position:absolute;top:6px;right:6px;display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--accent)}
.ob-av-check svg{width:13px;height:13px;fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.ob-av-next{margin-top:16px}
.ob-av-next-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 2px 8px}
.ob-av-next-head span{font-size:11px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted)}
.ob-av-next-head small{font-size:11px;color:var(--dim)}
.ob-av-lock{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}
.ob-av-lock .ob-av-portrait{border:1px dashed rgba(255,255,255,.12);background:rgba(255,255,255,.02)}
.ob-av-lock img{filter:grayscale(1) brightness(.22)}
.ob-av-lock-ic{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.ob-av-lock-ic svg{width:20px;height:20px;fill:none;stroke:rgba(255,255,255,.55);stroke-width:2;stroke-linecap:round}
.ob-av-need{font-size:11px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
@media(max-height:720px){.ob-av-hero{height:210px}.ob-av-main{height:150px;width:126px}}
@media(prefers-reduced-motion:reduce){.ob-av-main,.ob-av-hero.swap .ob-av-main{animation:none}}

/* Onglet Séance : une question claire, et chaque choix dit ce qu'il fait. */
#v-add.local-session-home .session-hero-sub{display:block!important;margin-top:6px;font-size:14px!important;line-height:1.4;color:var(--text2)!important}
#v-add.local-session-home #session-primary-action .session-primary-copy::after{content:'Tu choisis tes exercices au fur et à mesure'!important;text-transform:none!important;letter-spacing:0!important;font-size:12.5px!important;font-weight:500!important}
html[lang=en] #v-add.local-session-home #session-primary-action .session-primary-copy::after{content:'Pick your exercises as you go'!important}
/* Tant qu'aucun exercice n'est choisi, seule la liste s'affiche. */
#v-add.awaiting-exercise .sx-card,#v-add.awaiting-exercise .sx-fold,#v-add.awaiting-exercise #ex-info-trigger{display:none!important}

/* Afficher / masquer le mot de passe (connexion, inscription). */
.pw-wrap{position:relative}
.afield .pw-wrap input{padding-right:46px}
.pw-toggle{position:absolute;top:50%;right:4px;transform:translateY(-50%);width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer}
.pw-toggle svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.pw-toggle .pw-slash{display:none}
.pw-toggle[aria-pressed="true"]{color:var(--accent)}
.pw-toggle[aria-pressed="true"] .pw-slash{display:inline}
.pw-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}

/* Demande de notifications sur l'accueil. */
.notif-sheet{position:fixed;left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:900;max-width:480px;margin:0 auto;display:grid;grid-template-columns:auto 1fr;gap:12px 12px;padding:16px;border-radius:20px;border:1px solid rgba(var(--accent-rgb),.3);
  background:radial-gradient(120% 140% at 100% 0,rgba(var(--accent-rgb),.16),transparent 60%),var(--bg2);box-shadow:0 24px 60px rgba(0,0,0,.5);opacity:0;transform:translateY(16px);transition:opacity .25s,transform .3s cubic-bezier(.16,1,.3,1)}
.notif-sheet.show{opacity:1;transform:none}
.notif-sheet-ic{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:12px;background:rgba(var(--accent-rgb),.15);color:var(--accent)}
.notif-sheet-ic svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.notif-sheet-txt{display:flex;flex-direction:column;gap:4px;min-width:0}
.notif-sheet-txt b{font-family:'Barlow Condensed',sans-serif;font-size:19px;font-weight:800;color:var(--text);line-height:1.1}
.notif-sheet-txt span{font-size:13px;line-height:1.4;color:var(--text2)}
.notif-sheet-actions{grid-column:1/-1;display:flex;gap:8px}
.notif-sheet-actions button{flex:1;min-height:44px;border-radius:12px;font-size:14px;font-weight:700;cursor:pointer}
.notif-sheet-later{border:1px solid var(--border2);background:transparent;color:var(--text2)}
.notif-sheet-allow{flex:1.6!important;border:0;background:var(--accent);color:#fff}
@media(prefers-reduced-motion:reduce){.notif-sheet{transition:none}}

/* Inscription : écran « Vérifie ta boîte mail » et bouton « Plus tard » du nouveau mot de passe. */
.auth-confirm{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:8px 4px 4px}
.auth-confirm-ic{width:56px;height:56px;display:flex;align-items:center;justify-content:center;border-radius:16px;background:rgba(var(--accent-rgb),.14);color:var(--accent)}
.auth-confirm-ic svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.auth-confirm h2{margin:0;font-family:'Barlow Condensed',sans-serif;font-size:26px;font-weight:800;color:var(--text)}
.auth-confirm p{margin:0;font-size:14px;line-height:1.5;color:var(--text2)}
.auth-confirm p b{color:var(--text);word-break:break-all}
.auth-confirm .abtn{margin-top:6px}
.auth-confirm-secondary{width:100%;min-height:44px;border-radius:10px;border:1px solid var(--border2);background:transparent;color:var(--text2);font:600 14px 'Barlow',sans-serif;cursor:pointer}
.auth-confirm-secondary:disabled{opacity:.55;cursor:default}
.rpw-later{display:block;width:100%;margin-top:10px;padding:12px;border:0;background:transparent;color:var(--muted);font:600 13px 'Barlow',sans-serif;cursor:pointer}

/* Journal : statut d'intégrité d'une séance, neutre et explicable. */
.ses-trust{margin-left:6px;padding:2px 7px;border-radius:999px;border:1px solid var(--border2);background:rgba(255,255,255,.04);color:var(--muted);font:600 10px/1.4 'Barlow',sans-serif;letter-spacing:.3px;vertical-align:middle;cursor:pointer}

/* Accueil : prochaine séance conseillée et rappel tenu par l'app. */
.fs-launch{display:block;width:100%;min-height:48px;margin:12px 0 0;border:0;border-radius:12px;background:var(--accent);color:#fff;font:800 14px/1 'Barlow Condensed',sans-serif;letter-spacing:1.2px;text-transform:uppercase;cursor:pointer}
.home-reminder{display:flex;flex-direction:column;gap:10px;margin:0 0 10px;border-color:rgba(var(--accent-rgb),.35);background:radial-gradient(120% 140% at 100% 0,rgba(var(--accent-rgb),.16),transparent 55%),var(--bg2)}
.home-reminder-copy{display:flex;flex-direction:column;gap:3px}
.home-reminder-copy b{font-family:'Barlow Condensed',sans-serif;font-size:19px;font-weight:800;color:var(--text)}
.home-reminder-copy span{font-size:13px;color:var(--text2)}
.home-reminder-actions{display:flex;gap:8px}
.home-reminder-actions button{min-height:42px;border-radius:11px;font:700 14px 'Barlow',sans-serif;cursor:pointer}
.home-reminder-go{flex:1.5;border:0;background:var(--accent);color:#fff}
.home-reminder-later{flex:1;border:1px solid var(--border2);background:transparent;color:var(--text2)}
