:root{--bg:#0a0a0b;--bg2:#111114;--bg3:#1a1a1f;--border:rgba(255,255,255,0.06);--border2:rgba(255,255,255,0.12);--text:#f0ede8;--text2:rgba(240,237,232,0.78);--muted:rgba(240,237,232,0.5);--dim:rgba(240,237,232,0.22);--accent:#e84c0d}
/* Barre de navigation : ~71 px + une respiration, plus l'encoche. */
:root{--bnav-clearance:calc(84px + env(safe-area-inset-bottom,0px))}
:root{--card:rgba(18,18,21,.82);--card2:rgba(24,24,28,.9);--glass:rgba(12,12,14,.72);--accent2:#ff7a2f;--gold:#f5b942;--ok:#22c55e;--danger:#ef4444;--shadow:0 18px 44px rgba(0,0,0,.42)}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
/* overflow-x:clip (et non hidden) : hidden + overscroll-behavior:none fait de la racine un
   conteneur de scroll qui avale les gestes tactiles → page figée sur Android. clip rogne sans
   créer de conteneur de scroll. */
/* Défilement vertical natif sur la page principale.
   Ce qui bloquait les gestes, c'était `touch-action:manipulation` hérité par
   toute la page et un gestionnaire tactile qui annulait les mouvements. Le
   premier ne s'applique plus qu'aux contrôles, le second est supprimé.
   `overscroll-behavior`, lui, ne bloque AUCUN geste : il ne décide que du
   rebond aux limites et du chaînage vers le parent. Il reste donc à `none`
   ici — sans lui, iOS étire la page au-delà de son contenu et découvre le
   fond sombre du canvas, une bande noire en bas de chaque vue.
   `contain` ne suffit pas : il coupe le chaînage mais garde le rebond.
   `scroll-padding-top` réserve la hauteur de la barre collante : sans lui, un
   défilement programmé pose la cible dessous. */
html,body{background:var(--bg);color:var(--text);font-family:'Barlow',sans-serif;min-height:100vh;min-height:100dvh;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior:none;overflow-x:hidden;overflow-x:clip}
html{scroll-padding-top:72px}
/* Le double-tap-zoom n'est neutralisé que sur les contrôles : sur le corps de
   la page, cette contrainte n'apportait rien et pesait sur tous les gestes. */
button,.nitem,.dtab,.lb-period-btn,.ptab,.step-btn,input[type="number"],input[type="range"],select{touch-action:manipulation}
html::-webkit-scrollbar,body::-webkit-scrollbar,*::-webkit-scrollbar{width:0;height:0;display:none}

/* ════ DÉFILEMENT DES FENÊTRES ════
   Toute boîte de fenêtre défile chez elle, jusqu'en bas, sans entraîner la
   page derrière : hauteur bornée en dvh (la barre d'adresse iOS fait varier
   vh en cours de geste), inertie iOS, chaînage coupé ICI — c'est le seul
   endroit où couper le chaînage est justifié — et bas de boîte dégagé de
   l'encoche. */
.modal,.auth-modal-box,.tpl-modal-box,.ses-edit-box,.friend-profile-box,
.ex-modal-box,.tool-modal-box,.admin-box,.exsheet,.exsheet-list,
#premium-overlay,#onboard-overlay{
  overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  scroll-padding-bottom:24px
}
.modal,.auth-modal-box,.tpl-modal-box,.ses-edit-box,.friend-profile-box,
.ex-modal-box,.tool-modal-box,.admin-box,.exsheet{
  padding-bottom:calc(34px + env(safe-area-inset-bottom,0px))
}

/* ════ LISTES HORIZONTALES ════
   `pan-x` dit au navigateur, dès le premier pixel, que le geste appartient à
   la liste : plus de mouvement vertical parasite déclenché par un balayage
   latéral. `contain` empêche la fin de course d'entraîner la page. */
.features-tabs,.guide-muscle-wrap,.tpl-name-chips,.note-chips,
.disc-tabs,#guide-disc-tabs,.h-scroll{
  touch-action:pan-x;overscroll-behavior-x:contain
}

/* Les titres de section ne doivent pas se glisser sous la barre collante. */
.section-title,.tools-group-lbl,.ptabs,.disc-tabs{scroll-margin-top:76px}
/* Rendu natif quand le site tourne en app (TWA Android / Capacitor iOS / PWA installée) */
html.app-native,html.app-native body{overscroll-behavior:none}
html.app-native body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html.app-native input,html.app-native textarea,html.app-native [contenteditable="true"]{-webkit-user-select:text;user-select:text}
html.app-native img,html.app-native canvas,html.app-native svg{-webkit-user-drag:none}
html.app-native a{-webkit-touch-callout:none}
/* ── Micro-interactions globales ── */
:where(button):not(:disabled){transition:transform .12s ease,filter .2s,background .2s,border-color .2s,color .2s,box-shadow .2s}
:where(button):not(:disabled):active{transform:scale(.97)}
:where(a,button,[role=button],input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}
:where(input,select,textarea):focus-visible{outline-offset:0}
.hero-title,.section-title,.prem-title,.pub-name{text-wrap:balance}
#bg-canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}

/* ── LANDING ─────────────────────────────── */
#screen-landing{position:relative;z-index:1}
/* Grain léger — casse l'aplat numérique du fond */
#screen-landing::after{content:"";position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.028;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
.lnav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:60px;background:rgba(10,10,11,0.85);backdrop-filter:blur(14px);border-bottom:0.5px solid var(--border)}
.lnav-logo{font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900;letter-spacing:6px;text-transform:uppercase;color:var(--text)}
.lnav-logo span{color:var(--accent)}
@keyframes logoReveal{0%{opacity:0;transform:translateX(-12px)}100%{opacity:1;transform:translateX(0)}}
.lnav-logo img{animation:logoReveal 0.9s cubic-bezier(.16,1,.3,1) both}
.lnav-actions{display:flex;gap:10px;align-items:center}
.lnav-login{padding:8px 16px;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.3);color:#fff;cursor:pointer;clip-path:polygon(6px 0%,100% 0%,calc(100% - 6px) 100%,0% 100%);transition:background .2s,border-color .2s}
.lnav-login:hover{background:rgba(255,255,255,0.14);border-color:rgba(255,255,255,0.6)}
.lnav-cta{padding:8px 18px;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;background:var(--accent);color:#fff;border:none;cursor:pointer;clip-path:polygon(8px 0%,100% 0%,calc(100% - 8px) 100%,0% 100%);transition:filter .2s}
.lnav-cta:hover{filter:brightness(1.12)}

/* HERO */
.hero{position:relative;width:100%;height:100svh;min-height:600px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;text-align:center}
.hero-videos{position:absolute;inset:0;z-index:0;background:radial-gradient(90% 65% at 70% 30%,rgba(232,76,13,.3),transparent 70%),linear-gradient(145deg,#17100d,#080809 72%)}
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.4s ease}
.hero-video.active.ready{opacity:1}
.hero-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(to bottom,rgba(10,10,11,.6) 0%,rgba(10,10,11,.3) 50%,rgba(10,10,11,.88) 100%)}
.hero-content{position:relative;z-index:2;padding:0 24px;max-width:700px}
.hero-eyebrow{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:4px;text-transform:uppercase;color:var(--accent);margin-bottom:20px;display:inline-flex;align-items:center;gap:10px}
.hero-eyebrow::before,.hero-eyebrow::after{content:'';display:inline-block;width:28px;height:1px;background:var(--accent)}
.hero-title{font-family:'Barlow Condensed',sans-serif;font-weight:900;text-transform:uppercase;color:var(--text);line-height:.88;margin-bottom:24px;letter-spacing:2px;font-size:clamp(64px,13vw,120px)}
.hero-title .accent{color:var(--accent)}
.hero-sub{font-size:16px;color:rgba(240,237,232,0.72);line-height:1.75;margin-bottom:34px;max-width:480px;margin-left:auto;margin-right:auto}
.hero-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.btn-primary{padding:14px 30px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:800;letter-spacing:3px;text-transform:uppercase;background:var(--accent);color:#fff;border:none;cursor:pointer;clip-path:polygon(10px 0%,100% 0%,calc(100% - 10px) 100%,0% 100%);transition:filter .2s}
.btn-primary:hover{filter:brightness(1.14)}
.btn-secondary{padding:14px 30px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:800;letter-spacing:3px;text-transform:uppercase;background:rgba(255,255,255,0.1);color:#fff;border:1.5px solid rgba(255,255,255,0.6);cursor:pointer;clip-path:polygon(10px 0%,100% 0%,calc(100% - 10px) 100%,0% 100%);transition:background .2s,border-color .2s}
.btn-secondary:hover{background:rgba(255,255,255,0.18);border-color:#fff}
.hero-scroll{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);z-index:2;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--muted);font-size:10px;letter-spacing:2px;text-transform:uppercase;animation:sbounce 2s infinite}
@keyframes sbounce{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(7px)}}

/* REVEAL */
.reveal{opacity:1;transform:translateY(0);transition:opacity .75s ease,transform .75s ease}
.js-reveal .reveal{opacity:0;transform:translateY(28px)}
.reveal.visible{opacity:1;transform:translateY(0)}

/* SECTION */
.lsection{padding:80px 24px;max-width:1100px;margin:0 auto}
@media(max-width:600px){.lsection{padding:56px 20px}}
.section-label{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:4px;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
.section-title{font-family:'Barlow Condensed',sans-serif;font-size:clamp(34px,6vw,54px);font-weight:900;text-transform:uppercase;color:var(--text);line-height:.95;margin-bottom:14px;letter-spacing:1px}
.section-sub{font-size:15px;color:var(--muted);line-height:1.7;max-width:540px}

/* STATS */
.stats-band{border-top:0.5px solid var(--border);border-bottom:0.5px solid var(--border);background:var(--bg2)}
.stats-inner{max-width:1100px;margin:0 auto;padding:0 0;display:grid;grid-template-columns:repeat(4,1fr)}
@media(max-width:600px){.stats-inner{grid-template-columns:repeat(2,1fr)}}
.stat-item{padding:40px 24px;text-align:center;border-right:0.5px solid var(--border)}
.stat-item:last-child{border-right:none}
/* Entrée en cascade des stats */
.js-reveal .stat-item.reveal:nth-child(2){transition-delay:.09s}
.js-reveal .stat-item.reveal:nth-child(3){transition-delay:.18s}
.js-reveal .stat-item.reveal:nth-child(4){transition-delay:.27s}
@media(max-width:600px){.stat-item:nth-child(2){border-right:none}.stat-item:nth-child(3){border-top:0.5px solid var(--border)}.stat-item:nth-child(4){border-top:0.5px solid var(--border);border-right:none}}
.stat-num{font-family:'Barlow Condensed',sans-serif;font-size:54px;font-weight:900;color:var(--text);line-height:1;letter-spacing:-1px}
.stat-num sup{color:var(--accent);font-size:60%}
.stat-label{font-size:11px;letter-spacing:2.5px;text-transform:uppercase;color:var(--muted);margin-top:8px;font-weight:600}

/* FEATURES */
.features-tabs{display:flex;gap:0;border-bottom:0.5px solid var(--border);overflow-x:auto;scrollbar-width:none}
.features-tabs::-webkit-scrollbar{display:none}
.ftab{flex-shrink:0;padding:14px 22px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--muted);cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .2s}
.ftab.on{color:var(--accent)}
.ftab:hover:not(.on){color:var(--text)}
.features-panel{display:none;padding-top:32px}
.features-panel.on{display:block}
/* entrée fluide du panneau */
.features-panel.entering{animation:ftabIn .5s cubic-bezier(.16,1,.3,1) both}
.features-panel.leaving{animation:ftabOut .26s cubic-bezier(.4,0,1,1) both;pointer-events:none}
@keyframes ftabIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes ftabOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}
@keyframes ftabFade{from{opacity:0}to{opacity:1}}
@keyframes ftabGroup{from{opacity:0;transform:translateY(26px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}
.features-panel.entering .ex-group{animation:ftabGroup .55s cubic-bezier(.16,1,.3,1) both}
.features-panel.entering .ex-group:nth-child(1){animation-delay:.04s}
.features-panel.entering .ex-group:nth-child(2){animation-delay:.10s}
.features-panel.entering .ex-group:nth-child(3){animation-delay:.16s}
.features-panel.entering .ex-group:nth-child(4){animation-delay:.22s}
.features-panel.entering .ex-group:nth-child(5){animation-delay:.28s}
.features-panel.entering .features-note{animation:ftabFade .6s .34s both}
.ex-group{transition:transform .3s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .3s}
.ex-group:hover{transform:translateY(-5px);border-color:var(--border2);box-shadow:0 10px 30px rgba(0,0,0,.25)}
.ex-list li{transition:transform .25s cubic-bezier(.16,1,.3,1)}
.ex-list li::before{transition:background .25s,transform .25s,box-shadow .25s}
.ex-group:hover .ex-list li{transform:translateX(5px)}
.ex-group:hover .ex-list li::before{background:var(--accent);transform:scale(1.5);box-shadow:0 0 6px var(--accent)}
/* onglet : couleur + scale fluides */
.ftab{transition:color .3s ease,transform .2s cubic-bezier(.34,1.56,.64,1)}
.ftab:active{transform:scale(.94)}
.ftab.on{position:relative}
/* soulignement glissant entre onglets */
.ftab-underline{position:absolute;bottom:-1px;height:2px;background:var(--accent);border-radius:2px;transition:left .4s cubic-bezier(.16,1,.3,1),width .4s cubic-bezier(.16,1,.3,1);pointer-events:none;box-shadow:0 0 8px rgba(232,76,13,.5)}
.ex-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:14px}
.ex-group{background:var(--bg2);border:0.5px solid var(--border);border-radius:6px;padding:16px 18px}
.ex-group-name{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--accent);margin-bottom:12px;padding-bottom:8px;border-bottom:0.5px solid var(--border)}
.ex-list{list-style:none;display:flex;flex-direction:column;gap:7px}
.ex-list li{font-size:13px;color:var(--text);display:flex;align-items:center;gap:8px}
.ex-list li::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--dim);flex-shrink:0}
.features-note{margin-top:18px;font-size:12px;color:var(--muted);padding:14px 18px;background:var(--bg2);border:0.5px solid var(--border);border-radius:10px;line-height:1.7}

/* RANKS */
.ranks-landing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:40px}
@media(max-width:520px){.ranks-landing-grid{grid-template-columns:repeat(2,1fr)}}
.rank-card{--rank:#e84c0d;--rank-light:#fff;position:relative;isolation:isolate;background:linear-gradient(155deg,color-mix(in srgb,var(--rank-dark,#111114) 76%,#111114),#0b0b0d 72%);border:1px solid color-mix(in srgb,var(--rank) 20%,rgba(255,255,255,.07));border-radius:12px;padding:22px 14px;text-align:center;transition:transform .25s,border-color .25s,box-shadow .25s;overflow:hidden}
.rank-card::after{content:'';position:absolute;z-index:-1;left:12%;right:12%;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--rank-light),transparent);opacity:.24}
.rank-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--rank) 46%,rgba(255,255,255,.1));box-shadow:0 14px 32px rgba(0,0,0,.34)}
.rank-card.prestige{border-color:color-mix(in srgb,var(--rank) 28%,rgba(255,255,255,.1))}
.rank-card.prestige::before{content:'PRESTIGE';position:absolute;top:8px;right:8px;font-size:8px;font-family:'Barlow Condensed',sans-serif;font-weight:700;letter-spacing:1.5px;color:var(--muted);opacity:.6}
.rank-card-icon{width:60px;height:60px;margin:0 auto 12px;filter:drop-shadow(0 0 14px color-mix(in srgb,var(--rank) 20%,transparent))}
.rank-card-name{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:var(--rank);text-shadow:0 0 16px color-mix(in srgb,var(--rank) 22%,transparent)}
.rank-card-range{font-size:10px;color:var(--muted);margin-top:4px;letter-spacing:.5px}
.rank-card.rank-tier-divin{background:linear-gradient(155deg,#1a1608,#0c0b07 72%)}
.rank-card.rank-tier-divin::before{content:'PRESTIGE';background:repeating-conic-gradient(from -8deg at 50% 64%,rgba(255,229,138,.085) 0 4deg,transparent 4deg 20deg);inset:-40%;color:var(--muted);opacity:1;padding:48% 48% 0 0;text-align:right}
.rank-card.rank-tier-celeste{background:radial-gradient(circle at 18% 16%,rgba(219,232,255,.6) 0 1px,transparent 2px),radial-gradient(circle at 82% 70%,rgba(143,180,255,.4) 0 1px,transparent 2px),linear-gradient(155deg,#050a1a,#090b13)}
.rank-card.rank-tier-eternel{background:radial-gradient(ellipse at 50% 72%,rgba(75,224,176,.11),transparent 54%),linear-gradient(155deg,#04120d,#090d0b)}
.rank-card.rank-tier-transcendant{background:conic-gradient(from 225deg at 50% 68%,rgba(232,121,249,.11),rgba(143,180,255,.07),transparent 34%),linear-gradient(155deg,#1a0a1c,#0b090c 72%)}

/* BETA */
.beta-section{background:radial-gradient(120% 100% at 12% 0%,rgba(232,76,13,.17) 0%,rgba(232,76,13,.05) 42%,rgba(10,10,11,0) 72%);border-top:1px solid rgba(232,76,13,.28);border-bottom:1px solid rgba(232,76,13,.28)}
.beta-inner{max-width:1100px;margin:0 auto;padding:90px 24px}
.beta-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
@media(max-width:700px){.beta-grid{grid-template-columns:1fr;gap:36px}}
.beta-feats{display:flex;flex-direction:column;gap:22px;margin-top:28px}
.beta-feat{display:flex;gap:16px;align-items:flex-start}
.beta-feat-icon{width:40px;height:40px;border-radius:10px;background:rgba(232,76,13,.1);border:0.5px solid rgba(232,76,13,.22);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.beta-feat-title{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text);margin-bottom:4px}
.beta-feat-desc{font-size:13px;color:var(--muted);line-height:1.65}
.beta-cta-area{text-align:center}
.beta-big{font-family:'Barlow Condensed',sans-serif;font-size:clamp(46px,8vw,78px);font-weight:900;text-transform:uppercase;line-height:.9;color:var(--text);margin-bottom:8px}
.beta-big span{color:var(--accent);display:block}
.beta-sub{font-size:13px;color:var(--muted);margin-bottom:28px;line-height:1.6}
.beta-btns{display:flex;flex-direction:column;gap:10px;align-items:center}

/* FOOTER */
.lfooter{border-top:0.5px solid var(--border);padding:44px 24px;display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center}
.footer-logo{font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900;letter-spacing:6px;text-transform:uppercase}
.footer-logo span{color:var(--accent)}
.footer-slogan{font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--muted)}
.footer-links{display:flex;gap:22px}
.footer-links a{display:inline-flex;align-items:center;min-height:44px;font-size:12px;color:var(--muted);text-decoration:none;letter-spacing:1px;text-transform:uppercase;transition:color .2s}
.footer-links a:hover{color:var(--text)}
.footer-copy{font-size:11px;color:var(--dim)}

/* ── AUTH MODAL ──────────────────────────── */
#auth-modal{display:none;position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.78);backdrop-filter:blur(10px);align-items:flex-end;justify-content:center}
#auth-modal.open{display:flex}
.auth-modal-box{width:100%;max-width:480px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;padding:24px 22px 40px;position:relative;animation:modalIn .3s ease;max-height:92dvh;overflow-y:auto}
@keyframes modalIn{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
.auth-modal-close{position:absolute;top:14px;right:16px;background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1;padding:4px}
.auth-modal-close:hover{color:var(--text)}
.auth-logo{font-family:'Barlow Condensed',sans-serif;font-size:20px;font-weight:900;letter-spacing:5px;text-transform:uppercase;margin-bottom:3px}
.auth-logo span{color:var(--accent)}
.auth-tagline{font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:var(--muted);margin-bottom:20px}
.auth-tabs{display:flex;margin-bottom:18px;border-bottom:0.5px solid var(--border)}
.atab{flex:1;padding:8px;font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;cursor:pointer;border:none;background:none;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.atab.on{color:var(--text);border-bottom-color:var(--accent)}
.afield{margin-bottom:13px}
.afield label{display:block;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.afield input{width:100%;padding:11px 13px;background:var(--bg3);border:0.5px solid var(--border2);border-radius:9px;color:var(--text);font-size:15px;outline:none}
.afield input:focus{border-color:rgba(255,255,255,.28)}
.disc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:14px}
.disc-opt{padding:12px 6px;background:var(--bg3);border:1.5px solid var(--border);border-radius:10px;text-align:center;cursor:pointer}
.disc-opt.on{border-color:var(--accent)}
.disc-opt .dicon{font-size:11px;font-weight:800;letter-spacing:1px;font-family:'Barlow Condensed',sans-serif;color:var(--muted);margin-bottom:4px}
.disc-opt .dname{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-weight:600}
.disc-opt.on .dname{color:var(--text)}
.abtn{width:100%;padding:13px;background:var(--accent);color:#fff;border:none;border-radius:9px;font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:2px;text-transform:uppercase;font-weight:800;cursor:pointer;margin-top:6px}
.abtn:disabled{opacity:.5;cursor:not-allowed}
.aerr{font-size:12px;color:#ff6b6b;margin-top:10px;text-align:center;min-height:16px}
.alink{font-size:12px;color:var(--muted);text-align:center;margin-top:14px;cursor:pointer}
.aremember{display:flex;align-items:center;gap:8px;margin:2px 0 14px;font-size:13px;color:var(--muted);cursor:pointer;user-select:none}
.aremember input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}
.alink:hover{color:var(--text)}
.asucc{font-size:12px;color:#4caf50;margin-top:10px;text-align:center;display:none}
.auth-social{display:grid;gap:9px;margin-bottom:16px}
.auth-social-btn{position:relative;width:100%;min-height:46px;display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid rgba(255,255,255,.18);border-radius:10px;background:#fff;color:#0a0a0b;font-size:14px;font-weight:700;cursor:pointer}
.auth-social-btn.google{background:var(--bg3);color:var(--text)}
.auth-social-btn.google{display:none}
html:not(.cap-native) .auth-social,html:not(.cap-native) .auth-separator{display:none}
.auth-social-btn:disabled{opacity:.55;cursor:wait}
.auth-social-btn svg{width:19px;height:19px;flex:0 0 auto}
.auth-separator{display:flex;align-items:center;gap:10px;margin:0 0 16px;color:var(--dim);font-size:10px;letter-spacing:1.5px;text-transform:uppercase}
.auth-separator::before,.auth-separator::after{content:'';height:1px;flex:1;background:var(--border)}

/* ── APP ─────────────────────────────────── */
/* Le dégagement sous la barre de navigation est porté par .views UNIQUEMENT.
   Il vivait ici ET sur .views, chacun ajoutant l'encoche : 198 px + deux fois
   l'encoche réservés sous le contenu pour une barre qui en occupe ~105. D'où
   le grand vide sombre au bas de chaque vue. */
#screen-app{display:none;max-width:480px;margin:0 auto;position:relative;z-index:1}
#screen-app::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.018),rgba(255,255,255,0) 18%),radial-gradient(110% 62% at 72% -12%,rgba(232,76,13,.22),rgba(232,76,13,0) 58%),radial-gradient(92% 54% at 8% 28%,rgba(245,185,66,.08),rgba(245,185,66,0) 62%),#070708}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;margin:0 0 12px;position:sticky;top:0;z-index:50;background:linear-gradient(180deg,rgba(8,8,9,.92),rgba(8,8,9,.68));backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%);border-bottom:0.5px solid rgba(255,255,255,.08)}
.topbar::after{content:'';position:absolute;left:14px;right:14px;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(232,76,13,.42),transparent);opacity:.75}
.toplogo{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;letter-spacing:4px;text-transform:uppercase}
.toplogo span{color:var(--accent)}
.topright{display:flex;align-items:center;gap:8px}
.topavatar{width:34px;height:34px;border-radius:50%;background:rgba(232,76,13,.25);border:1.5px solid var(--accent);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:var(--accent);font-family:'Barlow Condensed',sans-serif;letter-spacing:1px}
.topdisc{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--text);padding:5px 10px;background:var(--bg3);border-radius:20px;border:0.5px solid var(--border2);font-weight:600}
.toplogout{background:none;border:none;color:var(--dim);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-weight:700}
.toplogout:hover{color:var(--muted)}
.views{padding:0 16px}
/* La réserve sous la barre de navigation est portée par la VUE ACTIVE, pas
   par son conteneur : toutes les vues ne vivent pas dans .views (#v-guide en
   est sorti) et se retrouvaient sinon recouvertes par la barre. Une vue = une
   réserve, jamais deux. #v-msg est exclu : sa hauteur est calculée pour le
   clavier, un padding y écraserait le fil de discussion. */
.view{display:none}.view.on{display:block;padding-top:6px}
.view.on:not(#v-msg){padding-bottom:var(--bnav-clearance)}
.disc-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:16px;padding-bottom:2px;scrollbar-width:none}
.disc-tabs::-webkit-scrollbar{display:none}
.dtab{min-width:0;padding:7px 4px;background:var(--bg2);border:0.5px solid var(--border);border-radius:20px;font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:1px;text-transform:uppercase;font-weight:700;cursor:pointer;color:var(--muted);white-space:nowrap;text-align:center}
.dtab.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.lb-item{display:flex;align-items:center;gap:10px;padding:13px 13px;background:linear-gradient(150deg,rgba(24,24,28,.94),rgba(12,12,15,.96));border:0.5px solid rgba(255,255,255,.1);border-radius:17px;margin-bottom:10px;box-shadow:0 14px 32px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.04)}
.lb-item.me{border-color:rgba(232,76,13,.56);background:linear-gradient(105deg,rgba(232,76,13,.18),rgba(18,18,21,.96) 56%,rgba(245,185,66,.07));box-shadow:0 16px 38px rgba(232,76,13,.13),inset 0 0 0 1px rgba(232,76,13,.2)}
.lb-pos{font-size:13px;font-weight:700;width:22px;text-align:center;color:var(--dim);flex-shrink:0}
.lb-badge{width:44px;height:44px;flex-shrink:0;display:grid;place-items:center;padding:2px;border-radius:12px;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));box-shadow:inset 0 0 0 0.5px rgba(255,255,255,.1)}
.lb-badge svg{width:100%;height:100%;display:block;overflow:visible}
.lb-mini-av{position:relative;width:44px;height:54px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:10px;overflow:hidden;border:1px solid var(--border2);background:radial-gradient(ellipse 80% 90% at 50% 40%,#1e1008 0%,#0d0904 70%)}
.lb-mini-av img{position:relative;z-index:1;width:44px;height:54px;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 4px 8px rgba(0,0,0,.55))}
.lb-mini-av .char-fx{inset:-4px;border-radius:inherit}
/* Couleurs propres à chaque aura.
   Elles manquaient : `--a1` n'était définie nulle part, donc
   `color-mix(in srgb, var(--a1) …)` était invalide et le navigateur jetait
   TOUTE la règle du halo — l'aura était bien équipée, simplement incolore.
   Le sélecteur d'auras, lui, retombait sur son orange par défaut et les
   affichait toutes identiques.
   Les teintes sont reprises des effets animés pour que le halo statique
   du classement et l'aura du podium soient de la même famille. */
.fx-flames{--a1:#ff5218;--a2:#ffd580}
.fx-bolt{--a1:#38bdf8;--a2:#bae6fd}
.fx-halo{--a1:#f8c56a;--a2:#fde68a}
.fx-smoke{--a1:#8b5cf6;--a2:#a78bff}
.fx-aurora{--a1:#22d3ee;--a2:#f871a1}
.fx-sparks{--a1:#f59e0b;--a2:#fff0a3}
.fx-prism{--a1:#d946ef;--a2:#5eead4}
/* Halo statique (hors podium) : couleur de l'aura via --a1 de la classe fx-*, sans animation */
.lb-mini-av.has-aura{border-color:color-mix(in srgb,var(--a1) 85%,transparent);overflow:visible;box-shadow:0 0 0 1.5px color-mix(in srgb,var(--a1) 70%,transparent),0 0 10px -1px color-mix(in srgb,var(--a1) 85%,transparent),0 0 22px -2px color-mix(in srgb,var(--a1) 55%,transparent)}
.lb-mini-av.has-fx{overflow:visible}
.lb-mid{flex:1;min-width:0}
.lb-name{font-size:14px;font-weight:600;color:var(--text)}
.lb-rname{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;margin-top:1px}
.lb-bar-bg{height:2px;background:rgba(255,255,255,.07);border-radius:2px;margin-top:6px}
.lb-bar-fill{height:2px;border-radius:2px}
.lb-right{text-align:right;flex-shrink:0;min-width:50px}
.lb-pts{font-size:16px;font-weight:800;color:var(--text)}
.lb-ptsl{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--dim);margin-top:1px}
.lb-period-btn{padding:6px 12px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;background:var(--bg2);border:0.5px solid var(--border);color:var(--muted);cursor:pointer;border-radius:6px;transition:color .2s,border-color .2s,background .2s}
.lb-period-btn.on{background:rgba(232,76,13,.12);border-color:rgba(232,76,13,.4);color:var(--accent)}
.lb-empty{text-align:center;padding:40px 20px;color:var(--muted);font-size:13px;line-height:1.8}
.lb-empty::before,.chat-empty::before{content:"⬡";display:block;font-size:32px;line-height:1;color:var(--dim);margin-bottom:12px}
.chat-empty{flex-direction:column}
/* ── TEMPLATES ── */
.tpl-section{margin-bottom:14px}
.tpl-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.tpl-section-title{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--muted)}
.tpl-new-btn{background:none;border:0.5px solid var(--border2);border-radius:7px;color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:5px 11px;cursor:pointer;transition:border-color .2s,color .2s}
.tpl-new-btn:hover{border-color:var(--accent);color:var(--accent)}
.tpl-scroll{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-bottom:4px}
.tpl-scroll::-webkit-scrollbar{display:none}
.tpl-card{min-width:0;background:linear-gradient(160deg,#151518,#101012 70%);border:0.5px solid rgba(255,255,255,.12);border-radius:13px;padding:14px 13px;cursor:pointer;position:relative;transition:border-color .2s,transform .2s;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.tpl-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.tpl-card-name{font-family:'Barlow Condensed',sans-serif;font-size:16px;font-weight:800;letter-spacing:1px;color:var(--text);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tpl-card-meta{font-size:10px;color:var(--muted);margin-bottom:11px;line-height:1.5}
.tpl-card-start{width:100%;padding:8px;background:var(--accent);color:#fff;border:none;border-radius:8px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:filter .2s}
.tpl-card-start:hover{filter:brightness(1.1)}
/* ── ACTIONS D'UNE SÉANCE TYPE ──
   Elles étaient empilées dans le coin, à 3 px l'une de l'autre sur une
   surface de 23×17 px — un quart du minimum recommandé par Apple. Viser
   Supprimer et déclencher Dupliquer était presque inévitable. Une rangée
   dédiée les espace vraiment, et rend au titre la largeur qu'il leur
   cédait. */
.tpl-card-actions{display:flex;justify-content:flex-end;gap:8px;margin:-4px -3px 2px}
.tpl-card-act{width:36px;height:36px;display:flex;align-items:center;justify-content:center;
  background:none;border:none;border-radius:9px;color:var(--dim);cursor:pointer;padding:0;
  opacity:.62;transition:opacity .2s,color .2s,background .2s}
.tpl-card-act:hover,.tpl-card-act:focus-visible{opacity:1;background:rgba(255,255,255,.06)}
.tpl-card-act:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.tpl-card-edit:hover,.tpl-card-dup:hover{color:var(--accent)}
.tpl-card-del:hover{color:#ef4444}
.tpl-empty{text-align:center;padding:20px 0;color:var(--dim);font-size:12px}

/* Create/start template modal */
.tpl-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:600;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s}
.tpl-modal-overlay.show{opacity:1;pointer-events:auto}
.tpl-modal-box{background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;width:100%;max-width:480px;max-height:92dvh;overflow-y:auto;padding:22px 18px 34px;transform:translateY(30px);transition:transform .3s cubic-bezier(.22,1,.36,1)}
.tpl-modal-overlay.show .tpl-modal-box{transform:translateY(0)}
.tpl-modal-title{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:var(--text);margin-bottom:18px;text-align:center}
.tpl-modal-close{position:absolute;top:10px;right:10px;background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;padding:10px 12px;line-height:1}
.tpl-modal-box{position:relative}
.tpl-ex-row{display:flex;align-items:center;gap:8px;margin-bottom:9px;animation:fadeUp .25s cubic-bezier(.22,1,.36,1) both}
.tpl-ex-name{flex:1;font-size:13px;font-weight:600;color:var(--text);min-width:0}
.tpl-ex-sub{font-size:10px;color:var(--muted);margin-top:1px}
.tpl-ex-inputs{display:flex;gap:6px;flex-shrink:0}
.tpl-mini-in{width:54px;padding:6px 4px;background:var(--bg3);border:0.5px solid var(--border2);border-radius:8px;color:var(--text);font-size:14px;font-weight:700;text-align:center;outline:none;-webkit-appearance:none}
.tpl-mini-label{font-size:9px;color:var(--muted);text-align:center;margin-top:2px;letter-spacing:.5px}
.tpl-section-divider{height:0.5px;background:var(--border);margin:14px 0}
.tpl-pts-total{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--bg3);border-radius:10px;margin-bottom:14px;border:0.5px solid var(--border)}
.tpl-pts-total-l{font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:700}
.tpl-pts-total-v{font-size:22px;font-weight:800;color:var(--text)}
.tpl-add-ex-btn{width:100%;padding:14px;background:none;border:0.5px dashed var(--border2);border-radius:10px;color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:border-color .2s,color .2s;margin-bottom:10px}
.tpl-add-ex-btn:hover{border-color:var(--accent);color:var(--accent)}
.tpl-ex-del{background:none;border:none;color:var(--dim);font-size:16px;cursor:pointer;padding:4px;opacity:.5;transition:opacity .2s;flex-shrink:0}
.tpl-ex-del:hover{opacity:1;color:#ef4444}
.tpl-last-weight{font-size:10px;color:var(--accent);font-weight:700;margin-top:2px}
.tpl-live-note{margin:6px 0 8px;padding:8px 9px;border-radius:10px;background:rgba(245,185,66,.08);border:0.5px solid rgba(245,185,66,.2);font-size:11px;line-height:1.45;color:rgba(240,237,232,.72)}
.tpl-live-note b{display:block;margin-bottom:2px;font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1.4px;text-transform:uppercase;color:#f8c56a}

.session-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 14px}
.session-title{font-family:'Barlow Condensed',sans-serif;font-size:30px;font-weight:900;letter-spacing:.2px;color:var(--text);line-height:1}
.session-timer{min-width:46px;height:46px;border-radius:14px;background:#111114;border:1px solid rgba(255,255,255,.14);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;gap:7px;padding:0 12px;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:16px;letter-spacing:1px;box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.session-timer svg{width:24px;height:24px;stroke-width:2}
.session-timer.live{color:var(--accent);border-color:rgba(232,76,13,.4)}
.session-hero{position:relative;overflow:hidden;margin:0 0 11px;padding:14px 14px 13px;border-radius:20px;background:
  radial-gradient(circle at top right,rgba(232,76,13,.16),rgba(232,76,13,0) 32%),
  linear-gradient(155deg,rgba(27,27,32,.98),rgba(12,12,15,.99) 54%,rgba(7,7,9,.99));
  border:1px solid rgba(255,255,255,.1);box-shadow:0 22px 44px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.06)}
.session-hero::before{content:'';position:absolute;inset:0;background:linear-gradient(125deg,rgba(255,255,255,.08),transparent 30%,transparent 68%,rgba(232,76,13,.09));pointer-events:none}
.session-hero::after{content:'';position:absolute;inset:auto -34px -56px auto;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(232,76,13,.16),rgba(232,76,13,0) 68%);pointer-events:none}
.session-hero-top{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.session-hero-copy{min-width:0;flex:1}
.session-kicker{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:2.2px;text-transform:uppercase;color:#f8c56a}
.session-hero-title-row{display:flex;align-items:center;gap:9px;margin-top:2px}
.session-hero-title{font-family:'Barlow Condensed',sans-serif;font-size:clamp(22px,6.6vw,29px);font-weight:900;line-height:.92;letter-spacing:.2px;color:var(--text);min-width:0;overflow-wrap:anywhere;hyphens:auto}
.session-live-pill{display:inline-flex;align-items:center;justify-content:center;min-height:26px;padding:0 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.055);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.session-live-pill.live{background:rgba(232,76,13,.14);border-color:rgba(232,76,13,.35);color:#ff8f5a;box-shadow:0 0 0 1px rgba(232,76,13,.08),0 0 18px rgba(232,76,13,.15)}
.session-live-pill.rest{background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.28);color:#f8c56a}
.session-hero-sub{margin-top:5px;font-size:11.5px;line-height:1.45;color:rgba(240,237,232,.68);max-width:320px}
.session-hero-timer{position:relative;z-index:1;display:flex;align-items:center;gap:10px;min-width:114px;min-height:74px;padding:0 14px;border-radius:24px;background:rgba(7,7,8,.76);border:1px solid rgba(232,76,13,.25);color:#ffb089;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 10px 28px rgba(0,0,0,.22);cursor:pointer}
.session-hero-timer svg{width:26px;height:26px;stroke-width:2.2;flex-shrink:0}
.session-hero-timer-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1}
.session-hero-timer-copy small{font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1.7px;text-transform:uppercase;color:rgba(240,237,232,.56)}
.session-hero-timer-copy span{margin-top:6px;font-family:'Barlow Condensed',sans-serif;font-size:24px;font-weight:900;color:var(--text);font-variant-numeric:tabular-nums}
.session-hero-timer.live{background:rgba(232,76,13,.16);border-color:rgba(232,76,13,.42);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 0 0 1px rgba(232,76,13,.08),0 16px 34px rgba(232,76,13,.16)}
/* Progression réelle de la séance du jour (exercices terminés / planifiés) */
.session-progress{position:relative;z-index:1;margin-top:11px;padding:9px 11px;border-radius:14px;background:rgba(7,7,8,.5);border:1px solid rgba(255,255,255,.08)}
.session-progress[hidden]{display:none}
.session-progress-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.session-progress-lbl{font-family:'Barlow Condensed',sans-serif;font-size:9.5px;font-weight:900;letter-spacing:1.6px;text-transform:uppercase;color:var(--muted)}
.session-progress-val{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:900;color:var(--text);font-variant-numeric:tabular-nums}
.session-progress-bar{margin-top:8px;height:7px;border-radius:999px;background:rgba(255,255,255,.09);overflow:hidden}
.session-progress-bar i{display:block;height:100%;width:100%;transform-origin:left center;transform:scaleX(0);border-radius:999px;background:var(--accent);transition:transform var(--mo-view) var(--mo-out)}
.session-progress-next{margin-top:9px;font-size:11.5px;line-height:1.35;color:rgba(240,237,232,.72);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.session-progress-next[hidden]{display:none}
.session-progress-next b{color:var(--text);font-weight:800}
.session-hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:11px}
.session-metric{padding:9px 8px;border-radius:13px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.085);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);text-align:center}
.session-metric b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:20px;font-weight:900;color:var(--text);line-height:1;font-variant-numeric:tabular-nums}
.session-metric span{display:block;margin-top:3px;font-size:9px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.session-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:14px}
.session-chip{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:7px;min-height:66px;padding:13px 13px 12px;background:linear-gradient(180deg,#151518,#101013);border:1px solid rgba(255,255,255,.09);border-radius:18px;color:var(--text);font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:800;letter-spacing:.8px;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.session-chip span{display:flex;align-items:center;gap:7px;min-width:0;font-size:14px}
.session-chip b{font-family:'Barlow Condensed',sans-serif;font-size:16px;letter-spacing:.3px}
.session-chip small{color:var(--muted);font-size:9px;letter-spacing:1.5px;text-transform:uppercase;font-weight:900}
.session-chip-button{border:1px solid rgba(232,76,13,.14);background:linear-gradient(180deg,rgba(232,76,13,.12),rgba(255,255,255,.035));cursor:pointer;text-align:left}
.session-chip-button span,.session-chip-button small{pointer-events:none}

.add-card{position:relative;overflow:hidden;background:linear-gradient(160deg,rgba(23,23,27,.96) 0%,rgba(14,14,17,.98) 58%,rgba(8,8,10,.98) 100%);border:1px solid rgba(255,255,255,.11);border-radius:26px;padding:18px;margin-bottom:14px;box-shadow:0 20px 42px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.06)}
.add-card::before{display:none}
.add-card::after{content:'';position:absolute;top:-72px;right:-68px;width:180px;height:180px;background:radial-gradient(circle,rgba(232,76,13,.15),rgba(232,76,13,0) 70%);pointer-events:none}
.session-logger-head{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.session-logger-kicker{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:#f8c56a}
.session-logger-collapse{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:var(--muted);border-radius:999px;padding:9px 12px;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase;cursor:pointer}
.add-title{font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:2.5px;text-transform:uppercase;color:var(--muted);margin-bottom:16px;font-weight:700}
.field{margin-bottom:14px}
.field label{display:block;font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:7px;font-weight:700}
.field select,.field input{width:100%;padding:12px 14px;background:var(--bg3);border:0.5px solid var(--border2);border-radius:10px;color:var(--text);font-size:14px;outline:none;-webkit-appearance:none;appearance:none}
.field select option{background:var(--bg3);color:var(--text)}
.field select optgroup{background:var(--bg3);color:var(--muted);font-size:10px;font-weight:700;letter-spacing:1px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
/* STEPPER */
.stepper{display:flex;align-items:center;background:var(--bg3);border:0.5px solid var(--border2);border-radius:10px;overflow:hidden}
.step-btn{background:none;border:none;color:var(--text);font-size:20px;font-weight:300;padding:0 14px;min-width:48px;min-height:44px;height:42px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;flex-shrink:0;transition:background .15s;touch-action:manipulation}
.step-btn:hover{background:rgba(255,255,255,.06)}
.step-input{flex:1;text-align:center;background:none;border:none;border-left:0.5px solid var(--border);border-right:0.5px solid var(--border);color:var(--text);font-size:17px;font-weight:700;outline:none;height:42px;width:0;min-width:0}
.pts-prev{display:flex;align-items:center;gap:10px;margin:14px 0 16px;color:var(--muted);font-size:12px}
.pts-prev-l{font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700}
.pts-prev-v{font-size:13px;font-weight:800;color:var(--accent)}
.pts-prev-formula{display:none}
.add-card .field{margin-bottom:12px}
.add-card .field{position:relative;z-index:1}
.add-card .field label{color:#a7a099}
.add-card .field input{padding:13px 14px;background:#151518;border-color:rgba(255,255,255,.13);font-size:15px}
.add-card .stepper{background:#151518;border-color:rgba(255,255,255,.13);border-radius:14px;min-height:50px;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.add-card .step-btn{background:#101013;font-size:23px;padding:0 15px;height:50px;transition:background .15s,color .15s}
.add-card .step-btn:hover{background:rgba(232,76,13,.12);color:var(--accent)}
.add-card .step-input{background:none!important;border:none!important;border-left:0.5px solid rgba(255,255,255,.08)!important;border-right:0.5px solid rgba(255,255,255,.08)!important;font-size:21px;font-weight:900;height:50px;font-family:'Barlow Condensed',sans-serif}
.add-card .pts-prev{position:relative;z-index:1;justify-content:space-between;gap:12px;margin:15px 0;padding:16px 16px;background:linear-gradient(135deg,#151007,#0f0e0b);border:1px solid rgba(232,76,13,.28);border-radius:18px;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.add-card .pts-prev-l{color:#f8c56a}
.add-card .pts-prev-v{font-family:'Barlow Condensed',sans-serif;font-size:25px;font-weight:900;letter-spacing:.4px;text-shadow:0 0 14px rgba(232,76,13,.28)}
.add-card .sbtn{position:relative;z-index:1;border-radius:18px;box-shadow:0 12px 28px rgba(232,76,13,.22)}
.sbtn{width:100%;padding:16px;background:linear-gradient(135deg,var(--accent) 0%,#ff6633 100%);color:#fff;border:none;border-radius:16px;font-family:'Barlow Condensed',sans-serif;font-size:13px;letter-spacing:2.6px;text-transform:uppercase;font-weight:900;cursor:pointer;transition:filter .2s,transform .2s,box-shadow .2s;position:relative;overflow:hidden}
.sbtn::after{content:'';position:absolute;inset:0;background:linear-gradient(rgba(255,255,255,.08),transparent);pointer-events:none}
.sbtn:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 6px 22px rgba(232,76,13,.35)}
.sbtn:active{transform:translateY(0);box-shadow:none}
.sbtn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.toast{padding:12px 15px;border-radius:10px;font-size:13px;margin-top:10px;display:none;background:rgba(255,255,255,.05);border:0.5px solid var(--border2);color:var(--text);text-align:center;line-height:1.6}
.formula-box{padding:14px 16px 14px 18px;background:var(--bg2);border:0.5px solid var(--border);border-left:3px solid rgba(232,76,13,.4);border-radius:0 12px 12px 0;font-size:12px;color:var(--muted);line-height:1.9}
@keyframes ptsFlash{0%{color:var(--text)}30%{color:var(--accent)}100%{color:var(--text)}}
.pts-prev-v.flash{animation:ptsFlash .4s ease}
.profil-hero{position:relative;overflow:hidden;background:linear-gradient(150deg,rgba(28,28,33,.96) 0%,rgba(14,14,17,.98) 56%,rgba(7,7,9,.99) 100%);border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:19px;text-align:left;margin-bottom:12px;box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.06)}
.profil-hero::before{content:'';position:absolute;inset:0;background:linear-gradient(120deg,rgba(255,255,255,.07),transparent 34%,rgba(232,76,13,.08));pointer-events:none}
.profil-hero::after{content:'';position:absolute;top:-54px;right:-58px;width:190px;height:190px;background:radial-gradient(circle,rgba(232,76,13,.22),rgba(232,76,13,0) 68%);pointer-events:none}
.p-hero-top{position:relative;z-index:1;display:flex;align-items:center;gap:14px}
.p-shield{width:76px;height:76px;margin:0;flex-shrink:0;filter:drop-shadow(0 12px 22px rgba(0,0,0,.35))}
.p-identity{flex:1;min-width:0}
.p-identity .edit-pseudo-wrap{justify-content:flex-start;margin-bottom:2px}
.p-user{font-size:22px;font-weight:900;color:var(--text);margin-bottom:5px;line-height:1.05}
.p-disc{display:inline-flex;align-items:center;gap:6px;font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:1.8px;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-weight:800}
.p-rname{display:inline-flex;font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:2px;text-transform:uppercase;font-weight:900;margin-bottom:0;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.05);border:0.5px solid rgba(255,255,255,.08)}
.p-score-row{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:16px;padding-top:14px;border-top:0.5px solid rgba(255,255,255,.08)}
.p-score-label{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.p-pts{font-family:'Barlow Condensed',sans-serif;font-size:44px;font-weight:900;color:var(--text);line-height:.9}
.p-pts span{font-size:14px;font-weight:700;color:var(--muted);letter-spacing:1px;text-transform:uppercase}
#p-pts-num{display:inline-block;font-family:'Barlow Condensed',sans-serif;font-size:44px;font-weight:900;color:var(--text)}
.p-barwrap{position:relative;z-index:1;max-width:none;margin:14px 0 0}
.p-barbg{height:6px;background:rgba(255,255,255,.07);border-radius:99px;overflow:hidden}
.p-barfill{height:4px;border-radius:2px;transition:width .5s}
.profil-hero .p-barfill{height:6px;border-radius:99px}
.p-next{font-size:11px;color:var(--muted);margin-top:8px;text-align:right}
.stats3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.sbox{position:relative;overflow:hidden;background:linear-gradient(180deg,rgba(23,23,27,.96),rgba(12,12,15,.98));border:0.5px solid rgba(255,255,255,.11);border-radius:16px;padding:13px 9px;text-align:left;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.sbox::before{content:'';position:absolute;left:9px;right:9px;top:0;height:2px;background:rgba(232,76,13,.55);border-radius:0 0 2px 2px}
.sbox-n{font-family:'Barlow Condensed',sans-serif;font-size:26px;font-weight:900;color:var(--text);line-height:1}
.sbox-l{font-size:8px;letter-spacing:1.3px;text-transform:uppercase;color:var(--muted);margin-top:6px;line-height:1.2;font-weight:700}
.ses-list{background:linear-gradient(180deg,rgba(19,19,23,.92),rgba(12,12,15,.96));border:0.5px solid rgba(255,255,255,.1);border-radius:18px;overflow:hidden;box-shadow:0 12px 28px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.035)}
.ses-head{padding:12px 15px;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);border-bottom:0.5px solid var(--border);font-weight:600}
.ses-row{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;border-bottom:0.5px solid var(--border)}
.ses-row:last-child{border-bottom:none}
.ses-ex{font-size:13px;font-weight:600;color:var(--text)}
.ses-det{font-size:11px;color:var(--muted);margin-top:2px}
.ses-pts{font-size:12px;font-weight:700;padding:3px 10px;border-radius:6px;background:rgba(255,255,255,.05)}
.ses-day{border-bottom:1px solid rgba(255,255,255,.08)}
.ses-day:last-child{border-bottom:none}
.ses-day-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 15px;background:rgba(255,255,255,.025)}
.ses-day-date{font-family:'Barlow Condensed',sans-serif;font-size:14px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:var(--text)}
.ses-day-summary{font-size:10px;color:var(--muted);margin-top:2px}
.ses-day-edit{min-height:36px;padding:7px 10px;border-radius:9px;border:0.5px solid var(--border2);background:var(--bg3);color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;cursor:pointer}
.ses-day.editing .ses-day-edit{color:var(--accent);border-color:rgba(232,76,13,.45);background:rgba(232,76,13,.08)}
.ses-day-rows{display:none}
.ses-day.editing .ses-day-rows{display:block}
.ses-day:not(.editing) .ses-edit,.ses-day:not(.editing) .ses-del{display:none}
.ses-manage-cta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:16px;background:linear-gradient(135deg,rgba(232,76,13,.14),var(--bg2) 62%);border:0.5px solid rgba(232,76,13,.3);border-radius:14px;cursor:pointer;text-align:left;color:var(--text);width:100%}
.ses-manage-title{font-family:'Barlow Condensed',sans-serif;font-size:16px;font-weight:900;letter-spacing:1px;text-transform:uppercase}
.ses-manage-sub{font-size:11px;color:var(--muted);margin-top:3px}
.sessions-manager-head{margin-bottom:12px;padding:16px;border-radius:18px;background:linear-gradient(150deg,rgba(23,23,27,.96),rgba(10,10,12,.98));border:0.5px solid rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.sessions-manager-title{font-family:'Barlow Condensed',sans-serif;font-size:24px;font-weight:900;letter-spacing:.8px;text-transform:uppercase;color:var(--text)}
.sessions-manager-sub{margin-top:4px;font-size:12px;color:var(--muted);line-height:1.45}
.sessions-manager-tools{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:12px}
.sessions-search{width:100%;min-height:42px;padding:10px 13px;background:rgba(255,255,255,.04);border:0.5px solid rgba(255,255,255,.11);border-radius:12px;color:var(--text);font-size:14px;outline:none}
.sessions-search:focus{border-color:rgba(232,76,13,.42)}
.sessions-tool-btn{min-height:42px;padding:10px 12px;background:rgba(232,76,13,.1);border:0.5px solid rgba(232,76,13,.3);border-radius:12px;color:#ff7a3d;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase;cursor:pointer;white-space:nowrap}
.ses-day.filtered-out{display:none}
.ses-row.filtered-out{display:none}
.sessions-empty-filter{display:none;padding:18px;text-align:center;color:var(--muted);font-size:13px}
.sessions-empty-filter.show{display:block}
.ranks-grid{display:flex;flex-direction:column;gap:10px}
.rank-tile{--rank:#e84c0d;--rank-light:#fff;--rank-deep:#8a2e0a;position:relative;isolation:isolate;display:flex;align-items:center;gap:16px;background:linear-gradient(112deg,color-mix(in srgb,var(--rank-dark,#111114) 72%,#111114),#0c0c0f 68%);border:1px solid color-mix(in srgb,var(--rank) 22%,rgba(255,255,255,.07));border-radius:16px;padding:16px;overflow:hidden;opacity:0;transform:translateX(-18px);transition:opacity .4s ease,transform .4s ease,border-color .25s ease,box-shadow .25s ease}
.rank-tile::before{content:'';position:absolute;z-index:-1;inset:-40% 34% -60% -18%;background:radial-gradient(ellipse,var(--rank) 0%,transparent 68%);opacity:.075;transform:rotate(-14deg);pointer-events:none}
.rank-tile::after{content:'';position:absolute;z-index:-1;top:0;left:15px;right:15px;height:1px;background:linear-gradient(90deg,transparent,var(--rank-light),transparent);opacity:.22;pointer-events:none}
.rank-tile.visible{opacity:1;transform:translateX(0)}
.rank-icon{position:relative;width:62px;height:62px;flex-shrink:0;display:grid;place-items:center;padding:5px;border-radius:18px;background:radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--rank) 15%,transparent),rgba(255,255,255,.018) 68%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rank) 18%,rgba(255,255,255,.08)),0 9px 24px rgba(0,0,0,.28)}
.rank-icon svg{width:100%;height:100%;display:block;overflow:visible}
.rank-info{flex:1;min-width:0}
.rank-tname{font-family:'Barlow Condensed',sans-serif;font-size:18px;letter-spacing:2px;text-transform:uppercase;font-weight:900;color:var(--rank);text-shadow:0 0 18px color-mix(in srgb,var(--rank) 24%,transparent)}
.rank-desc{font-size:12px;color:var(--muted);margin-top:2px}
.rank-range{font-size:11px;color:var(--dim);margin-top:3px}
.rank-progress{text-align:right;flex-shrink:0}
.rank-bar{width:3px;height:40px;border-radius:4px;flex-shrink:0;margin:8px 0 0 auto;background:linear-gradient(to bottom,var(--rank-light),var(--rank),var(--rank-deep));box-shadow:0 0 12px color-mix(in srgb,var(--rank) 38%,transparent)}
.rank-tile-cur{border-color:color-mix(in srgb,var(--rank) 60%,rgba(255,255,255,.1));box-shadow:0 14px 34px rgba(0,0,0,.3),inset 0 0 28px color-mix(in srgb,var(--rank) 7%,transparent)}
.rank-tile-locked .rank-icon{opacity:.4;filter:grayscale(.4)}
.rank-tile-locked .rank-bar{opacity:.3}
.rank-you{font-size:9px;letter-spacing:1.5px;background:var(--accent);color:#fff;padding:1px 6px;border-radius:4px;vertical-align:middle;margin-left:6px;font-weight:800}
.rank-divs{font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:2px;color:var(--dim);font-weight:700}
.rdiv{color:var(--dim);transition:color .3s}
.rdiv-reached{font-weight:800}
.rdiv-on{font-weight:900;animation:divPulse 1.6s ease-in-out infinite}
.rdiv-sep{color:var(--dim);margin:0 3px}
@keyframes divPulse{0%,100%{opacity:1}50%{opacity:.55}}
.rank-divs-prestige{color:var(--accent);letter-spacing:1.5px}
.rank-card-divs{font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--dim);margin-top:8px;font-weight:700}
.rank-card-prestige{color:var(--accent)}
.rank-tier-master,.rank-tier-legende,.rank-tier-mythique,.rank-tier-divin,.rank-tier-celeste,.rank-tier-eternel,.rank-tier-transcendant{--prestige-glow:.13}
.rank-tier-master::before{background:radial-gradient(ellipse at 18% 50%,rgba(245,78,106,var(--prestige-glow)),transparent 64%)}
.rank-tier-legende::before{background:radial-gradient(ellipse at 18% 50%,rgba(255,207,72,var(--prestige-glow)),transparent 64%)}
.rank-tier-mythique::before{background:radial-gradient(ellipse at 18% 72%,rgba(255,94,58,var(--prestige-glow)),transparent 62%)}
.rank-tier-divin::before{inset:-75% 20% -75% -18%;background:repeating-conic-gradient(from -12deg at 28% 50%,rgba(255,229,138,.12) 0 5deg,transparent 5deg 18deg);opacity:.82}
.rank-tier-divin .rank-icon{box-shadow:inset 0 0 0 1px rgba(255,229,138,.3),0 0 30px rgba(255,229,138,.12)}
.rank-tier-celeste::before{inset:0;background:radial-gradient(circle at 12% 22%,rgba(219,232,255,.5) 0 1px,transparent 2px),radial-gradient(circle at 78% 24%,rgba(143,180,255,.35) 0 1px,transparent 2px),radial-gradient(circle at 64% 76%,rgba(219,232,255,.25) 0 1px,transparent 2px),radial-gradient(ellipse at 16% 50%,rgba(74,111,214,.16),transparent 62%);opacity:.9}
.rank-tier-eternel::before{inset:8% 30% 8% -8%;border:1px solid rgba(75,224,176,.16);border-radius:50%;background:radial-gradient(ellipse,rgba(75,224,176,.12),transparent 68%);opacity:.9;transform:rotate(-12deg)}
.rank-tier-transcendant::before{inset:-55% 10% -55% -10%;background:conic-gradient(from 210deg at 26% 50%,transparent,rgba(232,121,249,.15),rgba(143,180,255,.1),transparent 38%);opacity:1;transform:rotate(-8deg)}
@media(max-width:370px){.rank-tile{gap:11px;padding:13px 11px}.rank-icon{width:52px;height:52px}.rank-tname{font-size:16px}.rank-desc{font-size:11px;line-height:1.3}.rank-range{font-size:10px}.rank-progress{max-width:58px}.rank-divs{font-size:10px;letter-spacing:1px}.rank-bar{height:32px}}
.bnav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;background:linear-gradient(180deg,rgba(17,17,21,.7),rgba(9,9,11,.98) 74%);backdrop-filter:blur(26px) saturate(160%);-webkit-backdrop-filter:blur(26px) saturate(160%);border-top:1px solid rgba(255,255,255,.09);border-radius:26px 26px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) 66px repeat(2,minmax(0,1.5fr));align-items:center;z-index:100;box-shadow:0 -12px 34px rgba(0,0,0,.55);overflow:visible;padding:9px 10px calc(9px + env(safe-area-inset-bottom,0px))}
.bnav .ncenter{position:relative;grid-column:4;place-self:center;margin:-20px 0 0;z-index:2}
.bnav::after{content:'';position:absolute;left:0;right:0;top:-34px;height:34px;background:linear-gradient(180deg,rgba(9,9,11,0),rgba(9,9,11,.6));pointer-events:none}

/* ── ANIMATIONS ──────────────────────────── */
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideInRight{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideInLeft{from{opacity:0;transform:translateX(-22px)}to{opacity:1;transform:translateX(0)}}
@keyframes popIn{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}
@keyframes toastSlide{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

.view-enter{animation:fadeUp .3s cubic-bezier(.22,1,.36,1) both}
#v-msg.view-enter{animation:none!important;transform:none!important}
.lb-item{animation:fadeUp .35s cubic-bezier(.22,1,.36,1) both}
.lb-item:nth-child(1){animation-delay:.03s}
.lb-item:nth-child(2){animation-delay:.07s}
.lb-item:nth-child(3){animation-delay:.11s}
.lb-item:nth-child(4){animation-delay:.15s}
.lb-item:nth-child(5){animation-delay:.19s}
.lb-item:nth-child(n+6){animation-delay:.22s}

#screen-app{animation:fadeIn .4s ease both}

.step-btn:active{transform:scale(.88);transition:transform .1s}
.sbtn:active{transform:scale(.97);transition:transform .1s}
.dtab{transition:background .2s,color .2s,border-color .2s,transform .15s}
.dtab:active{transform:scale(.95)}
.nitem .nicon{transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.nitem.on .nicon{transform:scale(1.2)}
.nitem:active .nicon{transform:scale(.85)}

.toast{animation:toastSlide .3s cubic-bezier(.22,1,.36,1) both}
.add-card{animation:fadeUp .3s cubic-bezier(.22,1,.36,1) both}

/* ── NOUVELLES ANIMATIONS ─────────────────── */
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
@keyframes barGrow{from{width:0}}
@keyframes glowPulse{0%,100%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 8px var(--accent))}}
@keyframes spinIn{from{opacity:0;transform:rotate(-12deg) scale(.7)}to{opacity:1;transform:rotate(0) scale(1)}}
@keyframes countPop{0%{transform:scale(1)}40%{transform:scale(1.12)}100%{transform:scale(1)}}
@keyframes slideFade{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}

/* Profil : entrée en cascade des cartes */
.profil-hero{animation:popIn .45s cubic-bezier(.22,1,.36,1) both}
.stats3{animation:slideFade .45s .06s cubic-bezier(.22,1,.36,1) both}
.streak-card{animation:slideFade .45s .12s cubic-bezier(.22,1,.36,1) both}
.compare-card{animation:slideFade .45s .18s cubic-bezier(.22,1,.36,1) both}
.weekly-card{animation:slideFade .45s .24s cubic-bezier(.22,1,.36,1) both}
.recovery-card{animation:slideFade .45s .3s cubic-bezier(.22,1,.36,1) both}
.suggest-card{animation:slideFade .45s .36s cubic-bezier(.22,1,.36,1) both}
.share-card{animation:slideFade .45s .42s cubic-bezier(.22,1,.36,1) both}
.pr-card{animation:slideFade .45s .48s cubic-bezier(.22,1,.36,1) both}
.ses-list{animation:slideFade .45s .54s cubic-bezier(.22,1,.36,1) both}
.danger-zone{animation:slideFade .45s .6s cubic-bezier(.22,1,.36,1) both}

/* Badge de rang qui flotte + halo */
.p-shield{animation:floatY 3.5s ease-in-out infinite}
.streak-flame{animation:pulse 1.8s ease-in-out infinite}

/* Barres de progression qui se remplissent */
.p-barfill{animation:barGrow .9s .3s cubic-bezier(.22,1,.36,1) both}
.lb-bar-fill{animation:barGrow .8s .2s cubic-bezier(.22,1,.36,1) both}

/* Lignes PR & rangs par exercice en cascade */
.pr-row{animation:slideInLeft .4s both}
.pr-row:nth-child(2){animation-delay:.04s}.pr-row:nth-child(3){animation-delay:.08s}.pr-row:nth-child(4){animation-delay:.12s}.pr-row:nth-child(5){animation-delay:.16s}.pr-row:nth-child(6){animation-delay:.2s}.pr-row:nth-child(7){animation-delay:.24s}
.ex-rank-row{animation:slideInLeft .4s both}
.ex-rank-row:nth-child(2){animation-delay:.04s}.ex-rank-row:nth-child(3){animation-delay:.08s}.ex-rank-row:nth-child(4){animation-delay:.12s}.ex-rank-row:nth-child(5){animation-delay:.16s}.ex-rank-row:nth-child(6){animation-delay:.2s}.ex-rank-row:nth-child(7){animation-delay:.24s}.ex-rank-row:nth-child(8){animation-delay:.28s}

/* Hover : cartes & stats qui se soulèvent */
.sbox,.streak-card,.compare-card,.suggest-card,.weekly-card,.recovery-card,.pr-card,.ses-list{transition:transform .25s cubic-bezier(.22,1,.36,1),border-color .25s}
.sbox:hover{transform:translateY(-3px);border-color:var(--border2)}
.streak-card:hover,.compare-card:hover,.suggest-card:hover,.recovery-card:hover{transform:translateY(-2px)}
.pr-row{transition:background .2s}
.pr-row:hover{background:rgba(232,76,13,.06)}
.ex-rank-row{transition:background .2s,transform .2s}
.ex-rank-row:hover{background:rgba(232,76,13,.06);transform:translateX(3px)}

/* Boutons : lift au survol */
.sbtn,.abtn,.btn-primary,.lnav-cta,.edit-disc-btn{transition:filter .2s,transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s}
.sbtn:hover,.abtn:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(232,76,13,.25);filter:brightness(1.08)}
.btn-primary:hover,.lnav-cta:hover{transform:translateY(-2px);box-shadow:0 6px 22px rgba(232,76,13,.3)}

/* Leaderboard : ligne qui glisse au survol */
.lb-item{transition:background .2s,transform .2s}
.lb-item:hover{background:rgba(255,255,255,.03);transform:translateX(3px)}

/* Rangs (onglet) : icône qui tourne à l'entrée */
.rank-tile.visible .rank-icon{animation:spinIn .5s cubic-bezier(.34,1.56,.64,1) both}

/* Modales : apparition fluide */
.delete-box,.share-modal-box,.friend-modal-box,.auth-modal-box,.disc-modal-box,.ses-edit-box{animation:popIn .35s cubic-bezier(.22,1,.36,1) both}

/* ── SESSION EDIT MODAL ── */
#ses-edit-modal{display:none;position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.82);backdrop-filter:blur(10px);align-items:flex-end;justify-content:center}
#ses-edit-modal.open{display:flex}
.ses-edit-box{width:100%;max-width:480px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;padding:20px 18px 38px;max-height:80dvh;overflow-y:auto}
.ses-edit-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
.ses-edit-title{font-family:'Barlow Condensed',sans-serif;font-size:16px;font-weight:800;letter-spacing:1px;text-transform:uppercase;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ses-edit-pts{font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;color:var(--accent);margin-top:6px;min-height:18px}
.ses-edit-btn{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;padding:4px}

/* Edit button in session rows */
.ses-edit{background:none;border:none;color:var(--muted);cursor:pointer;padding:4px;display:flex;align-items:center;transition:color .2s;flex-shrink:0}
.ses-edit:hover{color:var(--accent)}

/* Per-set edit rows */
.see-sets-wrap{margin-bottom:4px}
.see-set-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:0.5px solid var(--border)}
.see-set-num{font-family:'Barlow Condensed',sans-serif;font-size:14px;font-weight:700;color:var(--muted);width:20px;flex-shrink:0;text-align:center}
.see-set-fields{display:flex;gap:6px;flex:1}
.see-set-field{flex:1}
.see-set-field label{display:block;font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--dim);margin-bottom:3px;font-weight:600}
.see-set-pts{font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;color:var(--accent);min-width:36px;text-align:right;flex-shrink:0;line-height:40px}
.see-set-del{background:none;border:none;color:var(--dim);cursor:pointer;font-size:14px;padding:4px;flex-shrink:0;transition:color .2s;line-height:1}
.see-set-del:hover{color:#ef4444}
.see-add-set-btn{width:100%;margin-top:10px;padding:10px;background:none;border:0.5px dashed var(--border2);border-radius:8px;color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;transition:border-color .2s,color .2s}
.see-add-set-btn:hover{border-color:var(--accent);color:var(--accent)}

/* Friend profile button in DM list */
.dm-prof-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:6px;display:flex;align-items:center;transition:color .2s;flex-shrink:0}
.dm-prof-btn:hover{color:var(--accent)}

/* ── FRIEND PROFILE SHEET ── */
#friend-profile-modal{display:none;position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.82);backdrop-filter:blur(10px);align-items:flex-end;justify-content:center}
#friend-profile-modal.open{display:flex}
.friend-profile-box{width:100%;max-width:480px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;padding:0 0 40px;max-height:90dvh;overflow-y:auto;display:flex;flex-direction:column}
.fp-header{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 0;flex-shrink:0}
.fp-close{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;padding:4px}
.fp-hero{text-align:center;padding:16px 18px 20px;border-bottom:0.5px solid var(--border)}
.fp-badge{width:64px;height:64px;margin:0 auto 10px}
.fp-username{font-family:'Barlow Condensed',sans-serif;font-size:26px;font-weight:900;letter-spacing:2px}
.fp-disc{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.fp-rank{font-family:'Barlow Condensed',sans-serif;font-size:16px;font-weight:800;letter-spacing:1px;text-transform:uppercase}
.fp-pts{font-family:'Barlow Condensed',sans-serif;font-size:42px;font-weight:900;line-height:1.1}
.fp-pts-lbl{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.fp-bar-wrap{max-width:200px;margin:10px auto 0;height:4px;background:rgba(255,255,255,.07);border-radius:2px}
.fp-bar-fill{height:4px;border-radius:2px}
.fp-stats{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:0.5px solid var(--border)}
.fp-stat{padding:14px 8px;text-align:center;border-right:0.5px solid var(--border)}
.fp-stat:last-child{border-right:none}
.fp-stat-n{font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900}
.fp-stat-l{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-top:2px}
.fp-section{padding:14px 18px;border-bottom:0.5px solid var(--border)}
.fp-section-title{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:10px}
.fp-ex-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:0.5px solid var(--border)}
.fp-ex-row:last-child{border-bottom:none}
.fp-ex-name{flex:1;font-size:13px;color:var(--text)}
.fp-ex-pts{font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;color:var(--muted)}
.fp-last-ses{background:var(--bg3);border-radius:10px;padding:12px 14px;font-size:13px}
.fp-last-date{font-size:10px;color:var(--muted);margin-top:4px}
.fp-msg-btn{display:block;margin:14px 18px 0;padding:12px;background:var(--accent);color:#fff;border:none;border-radius:10px;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;cursor:pointer;width:calc(100% - 36px);transition:filter .2s}
.fp-msg-btn:hover{filter:brightness(1.1)}

/* Onboard / rankup déjà animés, on renforce le badge */
.rankup-badge{animation:spinIn .6s cubic-bezier(.34,1.56,.64,1) both,floatY 3s ease-in-out 1s infinite}

/* Accessibilité : désactive les animations si l'utilisateur le demande */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ═══════════════════ SYSTÈME DE MOUVEMENT ═══════════════════
   Quatre durées seulement, pour que tout l'écran de séance bouge à la même
   cadence. Un geste qui répond doit être imperceptible (--mo-fast) ; une
   carte qui arrive peut prendre le temps d'être lue (--mo-base).
   Toutes les images-clés ci-dessous ne touchent que `transform` et
   `opacity` : aucune ne déclenche de recalcul de mise en page. */
:root{
  --mo-fast:110ms;   /* retour tactile : pressed, survol */
  --mo-quick:170ms;  /* changement d'état : sélection, actif/terminé */
  --mo-base:240ms;   /* apparition ou disparition d'un élément */
  --mo-view:300ms;   /* changement de vue, bottom sheet */
  --mo-out:cubic-bezier(.22,1,.36,1);  /* décélération, entrées */
  --mo-in:cubic-bezier(.55,0,1,.45);   /* accélération, sorties */
}
/* Entrée standard d'une ligne ou d'une carte. */
@keyframes moRise{from{opacity:0;transform:translate3d(0,9px,0)}to{opacity:1;transform:none}}
/* Série validée : elle descend de la zone de saisie vers la liste. */
@keyframes moSetIn{from{opacity:0;transform:translate3d(0,-7px,0)}to{opacity:1;transform:none}}
/* Sortie : l'élément part avant que la liste ne se referme sous lui. */
@keyframes moFadeOut{from{opacity:1;transform:none}to{opacity:0;transform:translate3d(0,-4px,0) scale(.97)}}
/* Changement d'exercice : le contenu glisse du côté d'où l'on vient. */
@keyframes moSwapNext{from{opacity:0;transform:translate3d(14px,0,0)}to{opacity:1;transform:none}}
@keyframes moSwapPrev{from{opacity:0;transform:translate3d(-14px,0,0)}to{opacity:1;transform:none}}
/* Confirmation discrète : un rehaut bref, sans glow permanent. */
@keyframes moConfirm{0%{transform:scale(1)}45%{transform:scale(1.04)}100%{transform:scale(1)}}
@keyframes moSheetIn{from{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:none}}

/* Retour tactile homogène sur toutes les commandes de la séance. Le
   `transform` seul est animé : pas de repaint de fond ni de bordure. */
.sx-validate,.sx-rest,.sx-save,.sx-last,.sx-next,.sx-head-del,.sx-head-pos,
.tplset-add,.tpl-ex-validate,.tpl-ex-del,.tpl-card-start,.tpl-card-act,
.exsheet-open,.exsheet-del,.set-del,.tpl-create-move,.tpl-ex-del{
  transition:transform var(--mo-fast) var(--mo-out),
             background var(--mo-quick) linear,
             border-color var(--mo-quick) linear,
             color var(--mo-quick) linear;
  -webkit-tap-highlight-color:transparent
}
/* La saisie ne doit jamais attendre une animation : les entrées d'éléments
   sont désactivées tant qu'une série est en cours de validation. */
.mo-instant,.mo-instant *{animation:none!important}

.nitem{min-width:0;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px 4px 3px;cursor:pointer;border:none;background:none;color:var(--dim);transition:color .2s;position:relative;border-radius:17px}
.nitem::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%) scaleX(0);width:24px;height:2px;background:var(--accent);border-radius:0 0 2px 2px;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.nitem.on::before{transform:translateX(-50%) scaleX(1)}
.nitem.on{color:var(--accent)}
/* Loading animé */
.loading{text-align:center;padding:40px;color:var(--muted);font-size:12px;letter-spacing:1px;text-transform:uppercase;animation:divPulse 1.6s ease-in-out infinite}
/* Skeleton pendant chargement : rangées fantômes + reflet balayant */
.loading.skel{color:transparent;user-select:none;position:relative;overflow:hidden;padding:8px 0;min-height:240px;animation:none}
.loading.skel::before{content:"";position:absolute;inset:8px 0;background:repeating-linear-gradient(to bottom,var(--bg2) 0,var(--bg2) 56px,transparent 56px,transparent 66px);border-radius:12px}
.loading.skel::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 25%,rgba(255,255,255,.05) 50%,transparent 75%);transform:translateX(-100%);animation:skelSweep 1.5s ease-in-out infinite}
@keyframes skelSweep{to{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){.loading.skel::after{animation:none}}
.nicon{width:23px;height:23px;display:flex;align-items:center;justify-content:center}
.nicon svg{width:21px;height:21px}
.nlbl{font-family:'Barlow Condensed',sans-serif;font-size:8.5px;line-height:1;letter-spacing:1.25px;text-transform:uppercase;font-weight:800}
.ncenter{flex:0 0 auto;align-self:center;margin:-20px 6px 0;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#ff7a2f);border:5px solid #070708;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 9px 24px rgba(232,76,13,.42),0 0 0 1px rgba(255,255,255,.08);transition:transform .2s cubic-bezier(.34,1.56,.64,1);animation:ncenterInvite 3.4s ease-in-out infinite}
@keyframes ncenterInvite{0%,100%{box-shadow:0 6px 22px rgba(232,76,13,.45),0 0 0 0 rgba(232,76,13,.35)}50%{box-shadow:0 6px 22px rgba(232,76,13,.5),0 0 0 8px rgba(232,76,13,0)}}
.ncenter:active{animation:none}
@media (prefers-reduced-motion:reduce){.ncenter{animation:none}}
/* iOS App Store : aucune vente de biens numériques hors IAP (règle 3.1.1) — on masque l'achat PRO */
.prem-ios-note{display:none}
html.ios-app .prem-launch,html.ios-app .prem-plans,html.ios-app .prem-cta,html.ios-app .prem-fine{display:none!important}
html.ios-app .prem-ios-note{display:block;text-align:center;font-size:12px;color:var(--muted);padding:10px 14px;line-height:1.5}
html.ios-app .premium-banner{display:flex!important}
/* IAP actif (produits configurés + build) : on ré-affiche l'achat, qui passe par Apple */
html.ios-app.iap-on .prem-plans{display:flex!important}
html.ios-app.iap-on .prem-cta,html.ios-app.iap-on .prem-launch,html.ios-app.iap-on .prem-fine{display:block!important}
html.ios-app.iap-on .prem-ios-note{display:none}
/* Carte PRO — rang percentile mondial */
.percentile-card{position:relative;overflow:hidden;background:radial-gradient(120% 100% at 12% 0%,rgba(232,76,13,.16),var(--bg2) 60%);border:0.5px solid rgba(232,76,13,.28);border-radius:14px;padding:18px;margin-bottom:12px}
.pct-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.pct-title{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}
.pct-window{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--dim)}
.pct-big{font-family:'Barlow Condensed',sans-serif;font-size:20px;font-weight:800;letter-spacing:2px;color:var(--text);line-height:1}
.pct-big b{font-size:40px;font-weight:900;color:var(--accent);font-variant-numeric:tabular-nums}
.pct-sub{font-size:12px;color:var(--muted);margin:6px 0 12px;font-variant-numeric:tabular-nums}
.pct-bar{height:8px;border-radius:4px;background:var(--bg3);overflow:hidden}
.pct-bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,rgba(232,76,13,.7),var(--accent));transition:width .8s cubic-bezier(.22,1,.36,1)}
.percentile-card.locked{cursor:pointer}
.pct-lock{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.pct-lock-t{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:14px;color:var(--text)}
.pct-lock-cta{font-size:12px;font-weight:700;color:#f59e0b}
.ncenter:active{transform:scale(.9)}
.ncenter.on{transform:scale(1.05)}
.pquick{display:flex;gap:8px;padding:0 0 12px}
.pquick-btn{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:7px;padding:11px 4px;background:var(--bg2);border:0.5px solid var(--border);border-radius:12px;color:var(--text);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;font-weight:700;transition:background .2s}
.pquick-btn svg{width:16px;height:16px}
.pquick-btn:active{background:var(--bg3)}
.pquick-ic{position:relative;color:var(--accent)}
.pquick-ic .nbadge{top:-2px;right:-4px}
.lb-controls{display:flex;gap:8px;margin-bottom:12px}
.lb-filter-toggle{display:flex;align-items:center;gap:8px;flex:1;padding:9px 12px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:10px;color:var(--text);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;font-weight:700}
.lb-search-btn{flex-shrink:0;width:42px;display:flex;align-items:center;justify-content:center;background:var(--bg2);border:0.5px solid var(--border2);border-radius:10px;color:var(--muted);cursor:pointer;transition:color .2s,border-color .2s,transform .15s}
.lb-search-btn:active{transform:scale(.94)}
.lb-search-btn.on{color:var(--accent);border-color:rgba(232,76,13,.4);background:rgba(232,76,13,.08)}
.lb-me-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(90px + env(safe-area-inset-bottom,0px));width:calc(100% - 20px);max-width:460px;z-index:99;display:flex;align-items:center;gap:10px;padding:11px 18px;background:linear-gradient(100deg,rgba(232,76,13,.24),rgba(14,14,17,.97));border:0.5px solid rgba(232,76,13,.42);border-radius:20px;color:var(--text);cursor:pointer;box-shadow:0 -9px 24px -10px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.05);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);text-align:left;animation:meBarIn .35s cubic-bezier(.22,1,.36,1) both}
@keyframes meBarIn{from{opacity:0;transform:translateX(-50%) translateY(14px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.lb-me-bar:active{transform:translateX(-50%) scale(.98)}
/* La place de la barre « moi » est réservée par html.has-me-bar #v-lb, et
   seulement quand elle est affichée. Ce padding s'ajoutait à celui de .views
   ET à l'ancien de #screen-app : trois réserves empilées, chacune comptant
   l'encoche, pour un seul bandeau flottant. */
.lb-me-pos{flex-shrink:0;font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;color:var(--accent);min-width:34px;text-align:center;letter-spacing:.5px}
.lb-me-bar .lb-mini-av{width:40px;height:42px;flex-shrink:0;border-radius:11px;border-color:rgba(232,76,13,.35);background:radial-gradient(ellipse 80% 90% at 50% 42%,#261208 0%,#0d0904 72%)}
.lb-me-bar .lb-mini-av img{width:40px;height:42px;object-fit:contain;object-position:center bottom}
.lb-me-bar .lb-mini-av .char-fx{inset:-3px}
.lb-me-mid{flex:1;min-width:0}
.lb-me-name{display:flex;align-items:center;gap:7px;font-family:'Barlow Condensed',sans-serif;font-size:14px;font-weight:900;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-me-pill{display:inline-flex;align-items:center;justify-content:center;padding:2px 6px;border-radius:7px;background:rgba(232,76,13,.18);border:0.5px solid rgba(232,76,13,.38);color:var(--accent);font-size:9px;font-weight:900;letter-spacing:1.2px;line-height:1}
.lb-me-rname{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;margin-top:1px}
.lb-me-right{flex-shrink:0;text-align:right;line-height:1}
.lb-me-pts{font-family:'Barlow Condensed',sans-serif;font-size:20px;font-weight:900;letter-spacing:.5px}
.lb-me-ptsl{font-size:8px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-top:2px}
.lb-filter-toggle .lb-filter-sum{margin-left:auto;color:var(--accent);letter-spacing:.5px}
.lb-filter-toggle .lb-filter-chev{transition:transform .25s;color:var(--muted)}
.lb-filter-toggle.open .lb-filter-chev{transform:rotate(180deg)}
.lb-location,.podium-location{display:flex;align-items:center;justify-content:flex-start;gap:3px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-location{font-size:10px;margin:2px 0 1px}
.podium-location{font-size:9px;justify-content:center;max-width:100%;min-width:0;margin:2px auto;color:var(--dim)}
.quick-add-toggle{display:flex;align-items:center;gap:9px;width:100%;margin-bottom:12px;padding:14px 15px;background:linear-gradient(180deg,#131315,#0f0f11);border:0.5px solid rgba(255,255,255,.12);border-radius:14px;color:var(--text);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;font-weight:900;transition:border-color .2s,color .2s,background .2s,transform .15s;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.quick-add-toggle:hover{border-color:rgba(232,76,13,.45);color:var(--accent);background:#151210}
.quick-add-toggle:active{transform:scale(.985)}
.quick-add-toggle .qa-chev{margin-left:auto;transition:transform .25s}
.quick-add-toggle.open .qa-chev{transform:rotate(180deg)}
.tpl-presets-btn{display:flex;align-items:center;gap:9px;width:100%;margin-top:10px;padding:12px 14px;background:rgba(232,76,13,.1);border:0.5px solid rgba(232,76,13,.32);border-radius:12px;color:var(--accent);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;font-weight:800;transition:background .2s}
.tpl-presets-btn:hover{background:rgba(232,76,13,.18)}
.preset-card{background:var(--bg3);border:0.5px solid var(--border);border-radius:12px;padding:11px 13px;margin-bottom:8px;animation:moRise var(--mo-base) var(--mo-out) both}
.preset-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.preset-card-name{flex:1;min-width:0;font-family:'Barlow Condensed',sans-serif;font-size:16px;font-weight:800;letter-spacing:.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.preset-card-meta{display:flex;align-items:center;gap:9px;font-size:10.5px;color:var(--dim);white-space:nowrap;overflow-x:auto;scrollbar-width:none}
.preset-card-meta::-webkit-scrollbar{display:none}
.preset-card-meta>*{flex:0 0 auto}
.preset-card-focus{color:var(--muted);font-weight:600}
.preset-card-fold{margin-top:7px}
.preset-card-fold>summary{list-style:none;cursor:pointer;font-size:11px;color:var(--dim);padding:8px 0;min-height:34px;display:flex;align-items:center;gap:5px}
.preset-card-fold>summary::-webkit-details-marker{display:none}
.preset-card-fold>summary::after{content:'⌄';transition:transform var(--mo-quick) var(--mo-out)}
.preset-card-fold[open]>summary::after{transform:rotate(180deg)}
.preset-card-fold[open]>summary{color:var(--muted)}
.preset-card-count{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--accent);font-weight:800;white-space:nowrap}
.preset-card-exs{list-style:none;margin:2px 0 0;padding:0;font-size:12px;color:var(--muted);animation:moRise var(--mo-base) var(--mo-out)}
.preset-card-exs li{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-top:0.5px solid var(--border)}
.preset-card-exs li span{color:var(--dim);flex:0 0 auto;font-variant-numeric:tabular-nums}
.preset-add-btn{flex:0 0 auto;width:auto;min-height:36px;padding:0 14px;background:var(--accent);color:#fff;border:none;border-radius:9px;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;transition:filter .2s}
.preset-add-btn:hover{filter:brightness(1.1)}
/* trois icônes en haut à droite : le nom doit leur laisser la place */
/* ── PREMIUM ── */
.premium-banner{position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;margin:0 0 12px;padding:11px 14px;border-radius:12px;background:linear-gradient(100deg,rgba(232,76,13,.14),rgba(234,179,8,.09));border:0.5px solid rgba(234,179,8,.3);cursor:pointer;transition:filter .2s}
.premium-banner:hover{filter:brightness(1.1)}
.premium-banner::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 38%,rgba(255,235,170,.18) 48%,transparent 58%);background-size:240% 100%;animation:proShine 4.2s ease-in-out infinite}
.premium-banner-badge{position:relative;z-index:1;flex-shrink:0;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:900;letter-spacing:1px;color:#0a0a0b;background:linear-gradient(135deg,#fbbf24,#f59e0b);padding:5px 10px;border-radius:7px;animation:proBadgePulse 2.4s ease-in-out infinite}
@keyframes proBadgePulse{0%,100%{box-shadow:0 0 0 0 rgba(251,191,36,.5)}50%{box-shadow:0 0 14px 2px rgba(251,191,36,.55)}}
@media (prefers-reduced-motion:reduce){.premium-banner::after,.premium-banner-badge{animation:none}}
.premium-banner-txt{flex:1;min-width:0}
.premium-banner-t{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:800;letter-spacing:.5px;color:var(--text)}
.premium-banner-s{font-size:11px;color:var(--muted);margin-top:1px}
.premium-banner-s::before{content:'';display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:#71717a;vertical-align:1px;box-shadow:0 0 0 3px rgba(113,113,122,.1)}
.premium-banner[data-state="ready"] .premium-banner-s::before{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.12)}
.premium-banner[data-state="active"] .premium-banner-s::before{background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.14)}
.premium-banner[data-state="unavailable"] .premium-banner-s::before{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.12)}
.premium-banner svg{color:#f59e0b;flex-shrink:0}
#premium-overlay{position:fixed;inset:0;z-index:700;background:var(--bg);overflow-y:auto;display:none;padding:0 0 calc(80px + env(safe-area-inset-bottom,0px))}
#premium-overlay.show{display:block}
.prem-close{position:fixed;top:calc(14px + env(safe-area-inset-top));right:16px;z-index:2;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.08);border:0.5px solid var(--border2);color:var(--muted);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}
.prem-close:hover{background:rgba(255,255,255,.14)}
/* Hero */
.prem-hero{position:relative;text-align:center;padding:56px 24px 40px;overflow:hidden}
.prem-hero-bg{position:absolute;inset:0;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(245,158,11,.18) 0%,transparent 70%);pointer-events:none}
.prem-badge{display:inline-block;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:900;letter-spacing:3px;color:#0a0a0b;background:linear-gradient(135deg,#fbbf24,#f59e0b);padding:5px 14px;border-radius:8px;margin-bottom:16px}
.prem-title{font-family:'Barlow Condensed',sans-serif;font-size:38px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:var(--text);line-height:1.05;margin:0 0 10px}
.prem-title span{background:linear-gradient(135deg,#fbbf24,#f59e0b);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.prem-tag{font-size:14px;color:var(--muted);margin:0;line-height:1.5}
/* Inner */
.prem-inner{max-width:480px;margin:0 auto;padding:0 20px}
/* Features */
.prem-feats{display:flex;flex-direction:column;gap:0;margin-bottom:28px;background:var(--bg2);border:0.5px solid var(--border);border-radius:16px;overflow:hidden}
.prem-feat{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:0.5px solid var(--border)}
.prem-feat:last-child{border-bottom:none}
.prem-feat-ic{font-size:22px;flex-shrink:0;width:36px;text-align:center}
.prem-feat-t{font-size:14px;font-weight:600;color:var(--text);line-height:1.2}
.prem-feat-s{font-size:11.5px;color:var(--muted);margin-top:2px}
/* Comparison table */
.prem-table{background:var(--bg2);border:0.5px solid var(--border);border-radius:16px;overflow:hidden;margin-bottom:28px}
.prem-table-head{display:grid;grid-template-columns:1fr 80px 80px;padding:10px 16px;background:var(--bg3);font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}
.prem-table-head .prem-col-pro{color:#f59e0b}
.prem-table-row{display:grid;grid-template-columns:1fr 80px 80px;padding:11px 16px;border-top:0.5px solid var(--border);font-size:13px;align-items:center}
.prem-table-row:hover{background:rgba(255,255,255,.02)}
.prem-col-free{text-align:center;color:var(--dim);font-size:13px}
.prem-col-pro{text-align:center;color:#f59e0b;font-weight:700;font-size:13px}
/* Launch badge */
.prem-launch{text-align:center;font-size:12px;font-weight:700;color:#f59e0b;letter-spacing:.5px;margin-bottom:14px;padding:8px;background:rgba(245,158,11,.08);border:0.5px solid rgba(245,158,11,.25);border-radius:8px}
/* Plans */
.prem-plans{display:flex;gap:12px;margin-bottom:18px}
.prem-plan{flex:1;position:relative;padding:18px 12px 14px;background:var(--bg2);border:1.5px solid var(--border2);border-radius:16px;cursor:pointer;transition:border-color .2s,background .2s;text-align:center}
.prem-plan.on{border-color:#f59e0b;background:rgba(245,158,11,.07)}
.prem-plan-tag{position:absolute;top:-10px;left:50%;transform:translateX(-50%);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1px;color:#0a0a0b;background:linear-gradient(135deg,#fbbf24,#f59e0b);padding:3px 10px;border-radius:20px;white-space:nowrap}
.prem-plan-name{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.prem-plan-price{font-family:'Barlow Condensed',sans-serif;font-size:26px;font-weight:900;color:var(--text);line-height:1}
.prem-plan-price span{font-size:12px;font-weight:600;color:var(--muted)}
.prem-plan-price .prem-price-main{font-size:26px;font-weight:900;color:var(--text)}
.prem-plan-equiv{font-size:10px;color:var(--dim);margin-top:4px}
/* CTA */
.prem-cta{width:100%;padding:17px;background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#0a0a0b;border:none;border-radius:16px;font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:900;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:filter .2s,transform .2s;box-shadow:0 6px 24px rgba(245,158,11,.35)}
.prem-cta:hover{filter:brightness(1.06);transform:translateY(-2px)}
.prem-cta:active{transform:translateY(0)}
.prem-fine{font-size:11px;color:var(--dim);margin-top:12px;text-align:center}
.prem-fine a{color:var(--muted);text-decoration:underline}
.prem-account{display:none;margin:0 0 16px;padding:15px 16px;background:rgba(245,158,11,.07);border:0.5px solid rgba(245,158,11,.28);border-radius:14px}
.prem-account-title{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:900;letter-spacing:1.6px;text-transform:uppercase;color:#f59e0b}
.prem-account-status{font-size:13px;color:var(--text);margin-top:5px;line-height:1.45}
.prem-account-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.prem-secondary{flex:1;min-width:150px;padding:10px 12px;border-radius:10px;border:0.5px solid var(--border2);background:var(--bg3);color:var(--text);font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;cursor:pointer}
.prem-retry{display:none;width:100%;margin:0 0 10px}
html.ios-app .prem-retry{display:block}
html.ios-app.iap-on .prem-retry{display:none}
.ios-only{display:none!important}
html.ios-app .ios-only{display:block!important}
.web-only{display:block}
html.ios-app .web-only{display:none!important}
html.is-pro .prem-purchase{display:none!important}
.smart-progress{position:relative;overflow:hidden;margin:-2px 0 14px;padding:15px 15px 14px;border-radius:20px;background:radial-gradient(120% 120% at 0 0,rgba(245,158,11,.14),var(--bg2) 62%);border:1px solid rgba(245,158,11,.24)}
.smart-progress.locked{cursor:pointer}
.smart-progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}
.smart-progress-label{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1.7px;text-transform:uppercase;color:#f59e0b}
.smart-progress-badge{font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1px;color:#0a0a0b;background:#f59e0b;padding:3px 8px;border-radius:999px}
.smart-progress-value{font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900;color:var(--text);line-height:1}
.smart-progress-reason{font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:3px}
.smart-progress-apply{margin-top:12px;padding:10px 12px;border:0;border-radius:12px;background:rgba(245,158,11,.16);color:#fbbf24;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1px;text-transform:uppercase;cursor:pointer}
.prem-peek{margin-top:16px;background:none;border:none;color:var(--muted);font-size:12px;text-decoration:underline;cursor:pointer;display:block;width:100%;text-align:center}
.prem-peek:hover{color:var(--text)}
/* badge & nom PRO */
.pro-pill{display:inline-block;vertical-align:middle;margin-left:6px;font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1px;color:#0a0a0b;background:linear-gradient(135deg,#fbbf24,#f59e0b);padding:1px 6px;border-radius:5px;transform:translateY(-1px)}
.pro-name{background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;font-weight:800}
/* carte cosmétiques */
.cosm-card{margin:0 0 14px;padding:18px 18px 22px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:14px}
.cosm-card:empty{display:none}
.cosm-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:11px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--text)}
.cosm-lock{color:#f59e0b;font-size:11px;margin-left:4px}
.cosm-sub{font-family:'Barlow',sans-serif;font-size:10.5px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted)}
.cosm-swatches{display:flex;gap:10px}
.cosm-swatch{width:34px;height:34px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .15s,border-color .2s;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2)}
.cosm-swatch:hover{transform:scale(1.1)}
.cosm-swatch.on{border-color:#fff}
.cosm-sec{margin:16px 0 8px;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--text)}
.cosm-sec-sub{font-family:'Barlow',sans-serif;font-size:10px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted);margin-left:6px}
.title-chips{display:flex;gap:7px;flex-wrap:wrap}
.title-chip{padding:6px 12px;background:var(--bg3);border:1px solid var(--border2);border-radius:999px;color:#d4af37;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:1.5px;cursor:pointer;transition:border-color .2s,transform .15s}
.title-chip.none{color:var(--muted)}
.title-chip:hover{transform:scale(1.04)}
.title-chip.on{border-color:#d4af37;background:rgba(212,175,55,.1)}
.theme-dots{display:flex;gap:10px;flex-wrap:wrap}
.theme-dot{width:30px;height:30px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .15s,border-color .2s;display:flex;align-items:center;justify-content:center;font-size:12px;padding:0}
.theme-dot:hover{transform:scale(1.12)}
.theme-dot.on{border-color:#fff}
.theme-dot.locked{opacity:.6}
.lb-title{font-family:'Barlow Condensed',sans-serif;font-size:9.5px;font-weight:800;letter-spacing:1.5px;color:#d4af37;margin-top:1px}
.podium-title{font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:800;letter-spacing:1.5px;color:#d4af37;margin-top:1px}
/* ── AVATAR / ATHLÈTE ── */
.av-card{margin:0 0 12px;padding:15px;background:linear-gradient(180deg,#121214,#0d0d0f);border:0.5px solid rgba(255,255,255,.14);border-radius:16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.av-card:empty{display:none}
.av-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:12px;font-family:'Barlow Condensed',sans-serif;font-size:14px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--text)}
.av-head .av-sub{font-family:'Barlow',sans-serif;font-size:10.5px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted)}
.av-stage{position:relative;display:flex;justify-content:center;align-items:flex-end;margin:4px 0 18px;min-height:226px;border-radius:16px;background:linear-gradient(180deg,#16110d 0%,#0b0908 100%);border:1px solid rgba(232,76,13,.18);overflow:hidden}
.av-stage::before{content:'';position:absolute;inset:0;background:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),radial-gradient(ellipse 68% 42% at 50% 108%,rgba(232,76,13,.2),transparent 72%);background-size:100% 28px,auto;pointer-events:none}
.av-stage::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:132px;height:16px;background:radial-gradient(ellipse,rgba(232,76,13,.32) 0%,transparent 72%);border-radius:50%;pointer-events:none}
.av-stage svg,.av-stage img{width:200px;height:210px;filter:drop-shadow(0 8px 20px rgba(0,0,0,.6)) drop-shadow(0 0 30px rgba(232,76,13,.08));position:relative;z-index:1}
.av-stage img{object-fit:cover;border-radius:12px}
.av-stage.has-fx{overflow:visible}
.av-slot{margin-top:22px}
.av-slot-label{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.av-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media(max-width:360px){.av-items{grid-template-columns:repeat(2,minmax(0,1fr))}}
.av-chip{min-width:0;padding:8px 6px 7px;border-radius:11px;background:var(--bg3);border:1.5px solid var(--border);cursor:pointer;text-align:center;transition:border-color .15s,transform .15s}
.av-chip:hover{transform:translateY(-2px)}
.av-chip.on{border-color:var(--accent);background:rgba(232,76,13,.12)}
.av-chip.locked{opacity:.55}
.av-chip-ic{font-size:20px;line-height:1;margin-bottom:3px}
.av-chip-nm{font-size:9.5px;font-weight:600;color:var(--text);line-height:1.15;letter-spacing:.2px}
.av-chip-req{font-size:8.5px;font-weight:700;color:#f59e0b;margin-top:2px}
.av-chip.pro .av-chip-req{color:#fbbf24}
.av-aura-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media(min-width:430px){.av-aura-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.aura-pick{position:relative;isolation:isolate;min-height:102px;padding:11px 9px 9px;border-radius:14px;background:linear-gradient(155deg,color-mix(in srgb,var(--a1,#e84c0d) 8%,#151518),#0b0b0d 68%);border:1px solid color-mix(in srgb,var(--a1,#e84c0d) 22%,rgba(255,255,255,.09));cursor:pointer;overflow:hidden;text-align:left;transition:transform .15s,border-color .15s,box-shadow .2s}
.aura-pick::before{content:'';position:absolute;z-index:-1;inset:-55% 15% 22% -25%;border-radius:50%;background:radial-gradient(circle,var(--a1,#e84c0d),transparent 68%);opacity:.12;transform:rotate(-16deg)}
.aura-pick::after{content:'';position:absolute;left:9px;right:9px;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--a2,#f8c56a),transparent);opacity:.55}
.aura-pick:hover{transform:translateY(-2px)}
.aura-pick.on{border-color:var(--a1,#e84c0d);box-shadow:0 0 0 1px color-mix(in srgb,var(--a1,#e84c0d) 32%,transparent),0 12px 26px rgba(0,0,0,.42),inset 0 0 22px color-mix(in srgb,var(--a1,#e84c0d) 6%,transparent)}
.aura-pick.locked{opacity:.76}
.aura-pick.locked .aura-logo{filter:saturate(.6) brightness(.75)}
.aura-logo{position:relative;z-index:1;display:grid;place-items:center;width:44px;height:44px;margin-bottom:9px;border-radius:13px;background:radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--a1,#e84c0d) 12%,#101013),#0d0d10 72%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--a1,#e84c0d) 25%,rgba(255,255,255,.1)),0 8px 18px rgba(0,0,0,.3)}
.aura-logo-glow{position:absolute;z-index:0;inset:6px;border-radius:50%;background:radial-gradient(circle,var(--a2,#f8c56a),var(--a1,#e84c0d) 48%,transparent 72%);opacity:.58;filter:blur(7px)}
.aura-mark{position:relative;z-index:1;display:block;width:25px;height:25px;overflow:visible;filter:drop-shadow(0 0 7px var(--a1,#e84c0d))}
.aura-mark *{vector-effect:non-scaling-stroke}
.aura-copy{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;gap:6px}
.aura-name{min-width:0;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;letter-spacing:1.1px;text-transform:uppercase;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aura-badge{flex-shrink:0;padding:3px 6px;border-radius:999px;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.18);font-family:'Barlow Condensed',sans-serif;font-size:8.5px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:#f8c56a}
.aura-pick.on .aura-badge{background:rgba(232,76,13,.9);border-color:rgba(232,76,13,.9);color:#fff}
/* ── PERSONNAGES (roster illustré) ── */
.char-stage{position:relative}
.av-compo{position:relative;height:218px;aspect-ratio:200/270;margin:0 auto;z-index:1;display:flex;align-items:flex-end;justify-content:center}
.av-compo .av-main{position:relative;z-index:1;width:auto;height:218px;max-width:100%;object-fit:contain;object-position:center bottom;border-radius:0;filter:drop-shadow(0 10px 22px rgba(0,0,0,.7)) drop-shadow(0 0 34px rgba(232,76,13,.12));animation:charIdle 3.2s ease-in-out infinite}
.av-chip{position:relative}
.av-chip-img{width:38px;height:38px;object-fit:contain;display:block;margin:0 auto 4px}
.av-chip.locked .av-chip-img{filter:grayscale(1) brightness(.45)}
.av-chip-lockb{position:absolute;top:4px;right:5px;font-size:12px;filter:drop-shadow(0 1px 2px #000)}
@media (prefers-reduced-motion:reduce){.av-compo .av-main{animation:none!important}}
.av-hero-meta{position:absolute;left:12px;right:12px;bottom:12px;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:10px;pointer-events:none}
.av-hero-name{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;letter-spacing:1.6px;text-transform:uppercase;color:#fff;text-shadow:0 2px 10px #000}
.av-hero-pill{padding:5px 9px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(10,10,11,.62);backdrop-filter:blur(8px);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#f8c56a}
.av-section{margin-top:18px}
.av-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}
.av-section-title{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;letter-spacing:1.7px;text-transform:uppercase;color:var(--text)}
.av-section-note{font-size:10.5px;color:var(--muted)}
.av-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media(max-width:360px){.av-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.av-card-pick{position:relative;min-height:142px;border-radius:12px;background:radial-gradient(ellipse 82% 78% at 50% 26%,#211207 0%,#0d0904 70%);border:1.5px solid var(--border);cursor:pointer;overflow:hidden;transition:transform .15s,border-color .15s,box-shadow .2s}
.av-card-pick:hover{transform:translateY(-2px)}
.av-card-pick.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 10px 24px rgba(232,76,13,.23)}
.av-card-pick.pro{background:radial-gradient(ellipse 82% 78% at 50% 26%,#261807 0%,#0d0904 68%);border-color:rgba(251,191,36,.24)}
.av-card-pick.pro::before{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,rgba(251,191,36,.14) 50%,transparent 66%);opacity:.9}
.av-card-pick.locked img{filter:grayscale(1) brightness(.42)}
.av-card-img{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);width:92%;height:104px!important;object-fit:contain!important;object-position:center bottom;border-radius:0!important;filter:drop-shadow(0 8px 16px rgba(0,0,0,.62))!important}
.av-card-info{position:absolute;left:7px;right:7px;bottom:6px;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:5px}
.av-card-name{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:#fff;text-shadow:0 1px 4px #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.av-card-tag{font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:#f59e0b;white-space:nowrap}
.av-card-pick.pro .av-card-tag{color:#fbbf24}
.av-card-pick.on::after{content:'OK';position:absolute;top:7px;left:7px;z-index:2;padding:3px 6px;border-radius:999px;background:rgba(232,76,13,.9);font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1px;color:#fff}
.av-upsell{margin-top:14px;padding:13px;border:1px solid rgba(251,191,36,.28);border-radius:12px;background:#11100d;display:flex;align-items:center;justify-content:space-between;gap:12px}
.av-upsell b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;color:#f8c56a}
.av-upsell span{display:block;margin-top:2px;font-size:11px;color:var(--muted);line-height:1.35}
.av-upsell button{flex-shrink:0;padding:8px 11px;border:0;background:#f8c56a;color:#1a1006;border-radius:999px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:900;letter-spacing:1.4px;text-transform:uppercase;cursor:pointer}
@keyframes charIdle{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes charShadow{0%,100%{opacity:.9;transform:translateX(-50%) scaleX(1)}50%{opacity:.6;transform:translateX(-50%) scaleX(.82)}}
.char-stage img.char-big{width:auto;height:210px;object-fit:contain;border-radius:0;filter:drop-shadow(0 10px 22px rgba(0,0,0,.7)) drop-shadow(0 0 34px rgba(232,76,13,.12));z-index:1;animation:charIdle 3.2s ease-in-out infinite}
.char-stage.char-stage::after{animation:charShadow 3.2s ease-in-out infinite}
.char-empty-stage{min-height:190px}
.char-empty-txt{color:var(--muted);text-align:center;font-family:'Barlow Condensed',sans-serif;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;line-height:1.4}
.char-empty-txt b{display:block;font-size:34px;color:var(--dim);margin-bottom:8px}
.char-sec{margin-top:18px}
.char-sec-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.char-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.char-chip{position:relative;aspect-ratio:3/4;border-radius:12px;background:radial-gradient(ellipse 80% 90% at 50% 35%,#1a1206 0%,#0d0904 75%);border:1.5px solid var(--border);cursor:pointer;overflow:hidden;transition:border-color .15s,transform .15s}
.char-chip:hover{transform:translateY(-2px)}
.char-chip img{width:100%;height:100%;object-fit:contain;object-position:center bottom}
.char-chip.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 6px 18px rgba(232,76,13,.25)}
.char-chip.locked img{filter:grayscale(1) brightness(.42)}
.char-lock{position:absolute;top:6px;right:6px;font-size:15px;filter:drop-shadow(0 1px 2px #000)}
.char-req{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:9.5px;font-weight:800;color:#f59e0b;text-shadow:0 1px 4px #000,0 0 6px #000}
.char-chip.pro .char-req{color:#fbbf24}
.char-chip.on::after{content:'✓';position:absolute;top:5px;left:7px;color:var(--accent);font-weight:900;font-size:13px;text-shadow:0 1px 3px #000}
/* Auras PRO — VFX premium animés, 60 fps CSS + rAF */
.char-fx{position:absolute;inset:-8px;pointer-events:none;z-index:0;overflow:hidden}
.av-stage.has-fx .char-fx{overflow:visible}
.char-fx i{position:absolute;display:block}
.char-fx svg{position:absolute}
/* ── FLAMMES ── */
.fx-flames .ff-base{left:-6%;bottom:-8%;width:112%;height:56%;background:radial-gradient(ellipse at 50% 96%,rgba(255,90,24,.68),rgba(255,180,30,.24) 42%,transparent 70%);filter:blur(9px);animation:ffBase 1.8s ease-in-out infinite}
.fx-flames .ff-flame{bottom:0;transform-origin:50% 100%;background:linear-gradient(to top,#7a0e00 0%,#ff5218 32%,#ff9c3e 68%,#ffd580 88%,rgba(255,252,200,.06) 100%);border-radius:46% 54% 64% 36%/82% 62% 38% 18%;filter:blur(.6px);will-change:transform,opacity;animation:ffFlame var(--fd,1.5s) ease-in-out infinite var(--fdl,0s)}
.fx-flames .ff-inner{bottom:1%;left:24%;width:52%;height:60%;background:linear-gradient(to top,rgba(255,214,70,.68),rgba(255,255,230,.26) 44%,transparent 72%);border-radius:44% 56% 62% 38%/78% 60% 40% 22%;filter:blur(4px);animation:ffFlame 1.12s ease-in-out infinite .3s}
.fx-flames .ff-ember{width:3px;height:3px;border-radius:50%;background:#ffd580;box-shadow:0 0 5px 2px #ff5218,0 0 2px #fff;opacity:0;will-change:transform,opacity;animation:ffEmber var(--ed,2.1s) ease-out infinite var(--edl,0s)}
@keyframes ffBase{0%,100%{opacity:.68;transform:scaleX(.92)}50%{opacity:1;transform:scaleX(1.07)}}
@keyframes ffFlame{0%{opacity:.5;transform:translateX(var(--fx1,-4px)) scaleY(.7) rotate(var(--fr1,-4deg))}38%{opacity:1;transform:translateX(var(--fx2,5px)) scaleY(1.05) rotate(var(--fr2,6deg))}72%{opacity:.88;transform:translateX(var(--fx3,2px)) scaleY(1.12) rotate(var(--fr3,-2deg))}100%{opacity:.5;transform:translateX(var(--fx1,-4px)) scaleY(.7) rotate(var(--fr1,-4deg))}}
@keyframes ffEmber{0%{opacity:0;transform:translate(0,0) scale(.4)}15%{opacity:1}80%{opacity:.6}100%{opacity:0;transform:translate(var(--edx,4px),-106px) scale(.08)}}
/* ── FOUDRE ── */
.fx-bolt .fb-corona{left:-12%;top:-12%;width:124%;height:124%;border-radius:50%;background:radial-gradient(circle,rgba(56,189,248,.24),rgba(56,189,248,.08) 38%,transparent 68%);filter:blur(8px);animation:fbCorona 1.4s ease-in-out infinite}
.fx-bolt .fb-svg{top:0;left:0;width:100%;height:100%;overflow:visible}
.fx-bolt .fb-b0{stroke:#fff;stroke-width:2.5;fill:none;stroke-linecap:round;opacity:0;animation:fbFlash0 2.1s steps(1,end) infinite}
.fx-bolt .fb-b0g{stroke:#38bdf8;stroke-width:6;fill:none;stroke-linecap:round;opacity:0;animation:fbFlash0 2.1s steps(1,end) infinite .03s}
.fx-bolt .fb-b1{stroke:#bae6fd;stroke-width:2;fill:none;stroke-linecap:round;opacity:0;animation:fbFlash1 2.5s steps(1,end) infinite .72s}
.fx-bolt .fb-b1g{stroke:#0ea5e9;stroke-width:5;fill:none;stroke-linecap:round;opacity:0;animation:fbFlash1 2.5s steps(1,end) infinite .74s}
.fx-bolt .fb-b2{stroke:#e0f2fe;stroke-width:1.5;fill:none;stroke-linecap:round;opacity:0;animation:fbFlash2 1.85s steps(1,end) infinite 1.4s}
.fx-bolt .fb-arc{height:2px;border-radius:1px;background:linear-gradient(to right,transparent,#38bdf8,#bfefff,#38bdf8,transparent);box-shadow:0 0 6px 1px #38bdf8;opacity:0;animation:fbArc .85s ease-in-out infinite var(--arcd,0s)}
.fx-bolt .fb-spark{width:2px;height:2px;border-radius:50%;background:#fff;box-shadow:0 0 5px 3px #38bdf8;opacity:0;will-change:transform,opacity;animation:fbSpark var(--spd,1.1s) ease-out infinite var(--spdl,0s)}
@keyframes fbCorona{0%,100%{opacity:.6;transform:scale(.93)}50%{opacity:1;transform:scale(1.08)}}
@keyframes fbFlash0{0%,100%{opacity:0}2%,6%{opacity:1}4%,21%{opacity:0}9%,17%{opacity:.9}11%{opacity:0}13%,15%{opacity:1}19%{opacity:0}}
@keyframes fbFlash1{0%,100%{opacity:0}3%,7%{opacity:.92}5%,24%{opacity:0}10%,20%{opacity:.8}12%,14%{opacity:1}17%{opacity:0}}
@keyframes fbFlash2{0%,100%{opacity:0}2%,8%{opacity:.8}5%,26%{opacity:0}11%{opacity:1}13%{opacity:0}16%,19%{opacity:.7}22%{opacity:0}}
@keyframes fbArc{0%,100%{opacity:0;transform:scaleX(.25)}35%,65%{opacity:1;transform:scaleX(1)}}
@keyframes fbSpark{0%{opacity:0;transform:translate(0,0) scale(.3)}18%{opacity:1}100%{opacity:0;transform:translate(var(--spdx,5px),var(--spdy,-44px)) scale(.08)}}
/* ── HALO ── */
.fx-halo .fh-beam{left:22%;top:-18%;width:56%;height:54%;background:linear-gradient(to bottom,rgba(253,230,138,.62),rgba(253,230,138,.15) 56%,transparent 100%);border-radius:50%;filter:blur(9px);animation:fhBeam 2.8s ease-in-out infinite}
.fx-halo .fh-ring{left:6%;top:4%;width:88%;height:28%;border-radius:50%;border:2.5px solid #f8c56a;box-shadow:0 0 22px 4px rgba(248,197,106,.55),inset 0 0 14px rgba(248,197,106,.28);animation:fhRing 3.2s ease-in-out infinite}
.fx-halo .fh-r2{left:18%;top:7%;width:64%;height:22%;border:1px solid rgba(248,197,106,.5);box-shadow:none;animation-duration:4.8s;animation-direction:reverse;animation-delay:.5s}
.fx-halo .fh-dust{left:50%;top:18%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:#f8c56a;box-shadow:0 0 8px 3px rgba(248,197,106,.72),0 0 3px #fff;will-change:transform;animation:fhOrbit var(--dd,4s) linear infinite var(--ddl,0s)}
.fx-halo .fh-ray{left:50%;top:5%;width:1.5px;height:22%;margin-left:-.75px;transform-origin:50% 0%;background:linear-gradient(to bottom,rgba(253,230,138,.9),transparent);opacity:0;animation:fhRay 2.4s ease-in-out infinite var(--ryd,0s)}
@keyframes fhBeam{0%,100%{opacity:.52;transform:scaleX(.88) scaleY(.94)}50%{opacity:1;transform:scaleX(1.1) scaleY(1.07)}}
@keyframes fhRing{0%,100%{opacity:.7;transform:perspective(90px) rotateX(68deg) scale(.94)}50%{opacity:1;transform:perspective(90px) rotateX(68deg) scale(1.09)}}
@keyframes fhOrbit{from{transform:rotate(0deg) translate(var(--dr,28px),0)}to{transform:rotate(360deg) translate(var(--dr,28px),0)}}
@keyframes fhRay{0%,100%{opacity:0;transform:rotate(var(--rya,0deg)) scaleY(.5)}35%,65%{opacity:.64;transform:rotate(var(--rya,0deg)) scaleY(1)}}
/* ── BRUME ── */
.fx-smoke .fs-base{left:-8%;bottom:-6%;width:116%;height:44%;background:radial-gradient(ellipse at 50% 100%,rgba(126,87,255,.58),rgba(167,139,255,.24) 44%,transparent 72%);filter:blur(14px);animation:fsBase 5s ease-in-out infinite}
.fx-smoke .fs-wisp{border-radius:50%;background:radial-gradient(circle,rgba(167,139,255,.5),rgba(139,92,246,.22) 42%,transparent 70%);filter:blur(var(--wblur,7px));opacity:0;will-change:transform,opacity;animation:fsWisp var(--wd,5s) ease-in-out infinite var(--wdl,0s)}
@keyframes fsBase{0%,100%{opacity:.68;transform:scaleX(.94)}50%{opacity:1;transform:scaleX(1.07)}}
@keyframes fsWisp{0%{opacity:0;transform:translate(var(--wx0,0px),0) scale(.7)}18%{opacity:var(--wop,.82)}78%{opacity:var(--wop,.82)}100%{opacity:0;transform:translate(var(--wx1,8px),-90px) scale(1.5)}}
/* ── AURORA ── */
.fx-aurora .fa-spin-wrap{inset:0;animation:faSpin 9s linear infinite}
.fx-aurora .fa-base{inset:-24%;border-radius:50%;background:conic-gradient(rgba(34,211,238,.18),rgba(139,92,246,.26),rgba(248,197,106,.18),rgba(52,211,153,.2),rgba(248,113,113,.18),rgba(34,211,238,.18));filter:blur(14px)}
.fx-aurora .fa-curtain{top:0;height:100%;border-radius:999px;background:linear-gradient(to bottom,transparent,var(--ac) 16%,var(--ac2) 46%,var(--ac3) 74%,transparent);filter:blur(2px);opacity:0;will-change:transform,opacity;animation:faCurtain var(--cud,4.5s) ease-in-out infinite var(--cudl,0s)}
.fx-aurora .fa-star{width:3px;height:3px;border-radius:50%;background:var(--asc,#22d3ee);box-shadow:0 0 6px 3px var(--asc,#22d3ee);opacity:0;animation:faStar 2.4s ease-in-out infinite var(--stdl,0s)}
@keyframes faSpin{to{transform:rotate(360deg)}}
@keyframes faCurtain{0%,100%{opacity:0;transform:translateX(var(--cux0,0)) skewX(-10deg) scaleY(.88)}32%,68%{opacity:.9;transform:translateX(var(--cux1,4px)) skewX(9deg) scaleY(1.05)}}
@keyframes faStar{0%,100%{opacity:0;transform:scale(.32)}38%,62%{opacity:1;transform:scale(1.18)}}
/* ── ÉTINCELLES ── */
.fx-sparks .fsp-core{left:16%;top:16%;width:68%;height:68%;border-radius:50%;background:radial-gradient(circle,rgba(255,238,80,.64),rgba(245,158,11,.32) 36%,transparent 68%);filter:blur(6px);animation:fspCore 1.55s ease-in-out infinite}
.fx-sparks .fsp-ring{left:50%;top:50%;width:72%;height:72%;margin:-36% 0 0 -36%;border-radius:50%;border:1.5px dotted rgba(245,158,11,.7);box-shadow:0 0 14px rgba(245,158,11,.44);animation:fspRing 3s linear infinite}
.fx-sparks .fsp-star{background:linear-gradient(135deg,#fff0a3,#f59e0b);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);filter:drop-shadow(0 0 4px #f59e0b);opacity:0;will-change:transform,opacity;animation:fspStar 2.1s ease-in-out infinite var(--sdl,0s)}
.fx-sparks .fsp-particle{width:2px;height:2px;border-radius:50%;background:#fff0a3;box-shadow:0 0 5px 2px #f59e0b,0 0 2px #fff;opacity:0;will-change:transform,opacity;animation:fspPart var(--ppd,1.6s) ease-out infinite var(--ppdl,0s)}
@keyframes fspCore{0%,100%{opacity:.62;transform:scale(.9)}50%{opacity:1;transform:scale(1.18)}}
@keyframes fspRing{to{transform:rotate(360deg)}}
@keyframes fspStar{0%,100%{opacity:.1;transform:scale(.32) rotate(0deg)}44%{opacity:1;transform:scale(1.22) rotate(45deg)}}
@keyframes fspPart{0%{opacity:0;transform:translate(0,0) scale(.35)}16%{opacity:1}100%{opacity:0;transform:translate(var(--pdx,10px),var(--pdy,-60px)) scale(.08)}}
/* ── PRISME ── */
.fx-prism .fp-halo{inset:-9%;border-radius:50%;background:conic-gradient(from 20deg,rgba(248,113,113,.13),rgba(251,191,36,.12),rgba(74,222,128,.13),rgba(34,211,238,.14),rgba(167,139,250,.13),rgba(248,113,113,.13));filter:blur(13px);animation:fpHalo 8s linear infinite}
.fx-prism .fp-ring{left:50%;top:48%;border-radius:50%;border:1px solid rgba(255,255,255,.22);box-shadow:0 0 13px rgba(34,211,238,.18),inset 0 0 13px rgba(232,121,249,.12);will-change:transform,opacity}
.fx-prism .fp-ring-outer{width:82%;height:82%;margin:-41% 0 0 -41%;border-style:dashed;animation:fpRingOuter 8s linear infinite}
.fx-prism .fp-ring-inner{width:58%;height:58%;margin:-29% 0 0 -29%;border-color:rgba(255,255,255,.32);animation:fpRingInner 5.4s linear infinite}
.fx-prism .fp-core{left:30%;top:24%;width:40%;height:40%;clip-path:polygon(50% 0,88% 22%,100% 65%,66% 100%,24% 91%,0 52%,14% 14%);background:conic-gradient(from 25deg,#fbe3ff,#8fb4ff,#4be0b0,#ffe58a,#fb923c,#fbe3ff);box-shadow:0 0 18px rgba(255,255,255,.45);filter:blur(2.8px);animation:fpCore 2.6s ease-in-out infinite}
.fx-prism .fp-facet{left:50%;top:50%;width:16px;height:16px;margin:-8px 0 0 -8px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:var(--fc,var(--a1));box-shadow:0 0 9px var(--fc,var(--a1));opacity:0;will-change:transform,opacity;animation:fpFacet var(--fd,3.4s) linear infinite var(--fdl,0s)}
.fx-prism .fp-glint{width:3px;height:3px;border-radius:50%;background:#fff;box-shadow:0 0 6px 2px #fff,0 0 12px 4px var(--gc,#fff);opacity:0;will-change:transform,opacity;animation:fpGlint var(--gd,2s) ease-in-out infinite var(--gdl,0s)}
@keyframes fpHalo{to{transform:rotate(360deg)}}
@keyframes fpRingOuter{0%{opacity:.45;transform:rotate(0deg) scale(.96)}50%{opacity:.8;transform:rotate(180deg) scale(1.03)}100%{opacity:.45;transform:rotate(360deg) scale(.96)}}
@keyframes fpRingInner{to{transform:rotate(-360deg)}}
@keyframes fpCore{0%,100%{opacity:.72;transform:scale(.9) rotate(-4deg)}50%{opacity:1;transform:scale(1.1) rotate(4deg)}}
@keyframes fpFacet{0%{transform:rotate(0deg) translate(var(--fr,46px),0) rotate(0deg);opacity:.3}50%{opacity:1}100%{transform:rotate(360deg) translate(var(--fr,46px),0) rotate(-360deg);opacity:.3}}
@keyframes fpGlint{0%,100%{opacity:0;transform:scale(.2)}50%{opacity:1;transform:scale(1.35)}}
/* Budget VFX réduit dans les miniatures du classement, sans supprimer l'identité de l'aura. */
.lb-item .fx-prism .fp-facet:nth-of-type(n+9),.lb-item .fx-prism .fp-glint:nth-of-type(n+15),.lb-item .fx-flames .ff-ember:nth-of-type(n+18),.lb-item .fx-sparks .fsp-particle:nth-of-type(n+16){display:none}
@media(max-width:420px){.lb-item .fx-prism .fp-facet:nth-of-type(n+7),.lb-item .fx-prism .fp-glint:nth-of-type(n+13),.lb-item .fx-flames .ff-ember:nth-of-type(n+14),.lb-item .fx-sparks .fsp-particle:nth-of-type(n+12){display:none}.fx-prism .fp-ring-outer{animation-duration:11s}.fx-prism .fp-halo{filter:blur(10px)}}
/* iOS GPU layer */
html.ios-app .char-fx{transform:translateZ(0);-webkit-transform:translateZ(0)}
html.ios-app .char-fx i{will-change:transform,opacity;-webkit-transform:translateZ(0);transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}
@media (prefers-reduced-motion:reduce){.char-fx i,.char-fx svg,.char-fx path{animation:none!important}}
/* Reflet doré animé sur les items PRO (entice l'achat) */
@keyframes proShine{0%{background-position:-160% 0}55%,100%{background-position:260% 0}}
.char-chip.pro::before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(105deg,transparent 42%,rgba(251,191,36,.28) 50%,transparent 58%);background-size:220% 100%;animation:proShine 3.4s ease-in-out infinite}
.av-chip.pro{position:relative;overflow:hidden}
.av-chip.pro::before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(105deg,transparent 42%,rgba(251,191,36,.22) 50%,transparent 58%);background-size:220% 100%;animation:proShine 3.4s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.char-fx,.char-chip.pro::before,.av-chip.pro::before,.char-stage img.char-big,.p-char img,.char-stage.char-stage::after{animation:none!important}}
/* Célébration « +X pts » à la validation d'une séance */
.pts-pop{position:fixed;left:50%;top:44%;z-index:600;font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:72px;letter-spacing:-1px;color:var(--accent);text-shadow:0 6px 26px rgba(232,76,13,.55),0 2px 6px rgba(0,0,0,.6);pointer-events:none;white-space:nowrap;animation:ptsPop 1.5s cubic-bezier(.2,1.2,.4,1) both}
.pts-pop::after{content:'';position:fixed;left:50%;top:44%;width:340px;height:340px;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(232,76,13,.28),transparent 62%);z-index:-1;animation:ptsFlash .7s ease-out both}
@keyframes ptsPop{0%{opacity:0;transform:translate(-50%,-20%) scale(.5)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}32%{transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-135%) scale(.9)}}
@keyframes ptsFlash{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.4)}}
@media (prefers-reduced-motion:reduce){.pts-pop{display:none}}
/* Mini-avatar illustré (classement) */
.lb-mini-char img{width:44px;height:54px;object-fit:contain;object-position:center bottom}
/* Personnage dans le héro profil */
.p-char{position:relative;width:118px;margin:0 auto 12px}
.p-char img{position:relative;z-index:1;width:100%;height:auto;display:block;filter:drop-shadow(0 8px 18px rgba(0,0,0,.6));animation:charIdle 3.4s ease-in-out infinite}
.p-char .char-fx{border-radius:16px}
.p-char-badge{position:absolute;right:-4px;bottom:-2px;width:44px;height:44px}
.p-char-badge svg{width:100%;height:100%}
/* ── STREAK ── */
.streak-card{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;padding:18px 18px;margin-bottom:12px;display:flex;align-items:center;gap:16px}
@keyframes flameLive{0%,100%{transform:scale(1) rotate(-2deg);text-shadow:0 0 12px rgba(232,76,13,.55),0 0 24px rgba(232,76,13,.28)}25%{transform:scale(1.09) rotate(2deg);text-shadow:0 0 17px rgba(255,140,0,.85),0 0 34px rgba(232,76,13,.42)}50%{transform:scale(.97) rotate(-1deg);text-shadow:0 0 10px rgba(232,76,13,.5)}75%{transform:scale(1.05) rotate(1deg);text-shadow:0 0 15px rgba(255,140,0,.7)}}
.streak-flame{font-size:32px;line-height:1;transform-origin:50% 90%;animation:flameLive 1.4s ease-in-out infinite}
.streak-flame.hot{font-size:38px;animation-duration:1.1s}
.streak-flame.blaze{font-size:44px;animation-duration:.85s;filter:drop-shadow(0 0 8px rgba(255,120,0,.6))}
@media (prefers-reduced-motion:reduce){.streak-flame{animation:none}}
.streak-info{flex:1}
.streak-num{font-family:'Barlow Condensed',sans-serif;font-size:34px;font-weight:900;color:var(--accent);line-height:1}
.streak-label{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-top:2px}
.streak-best{font-size:11px;color:var(--dim);margin-top:4px}
/* ── COMPARE ── */
.compare-card{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;padding:18px 18px;margin-bottom:12px}
.compare-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:12px}
.compare-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.compare-row:last-child{margin-bottom:0}
.compare-label{font-size:12px;color:var(--muted);flex:1}
.compare-vals{display:flex;align-items:center;gap:8px;font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:700}
.compare-arrow{font-size:11px;padding:1px 6px;border-radius:4px;font-weight:700}
.compare-up{background:rgba(34,197,94,.12);color:#22c55e}
.compare-down{background:rgba(239,68,68,.12);color:#ef4444}
.compare-eq{background:rgba(255,255,255,.06);color:var(--muted)}
/* ── PROGRAMME ── */
.suggest-card{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;padding:18px 18px;margin-bottom:12px}
.suggest-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:10px}
.suggest-focus{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:800;color:var(--accent);margin-bottom:6px}
.suggest-tips{list-style:none;padding:0;display:flex;flex-direction:column;gap:5px}
.suggest-tips li{font-size:13px;color:var(--muted);padding-left:14px;position:relative}
.suggest-tips li::before{content:'→';position:absolute;left:0;color:var(--accent);font-size:11px}
/* ── RADAR MUSCULAIRE ── */
.radar-card{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;padding:18px 18px 22px;margin-bottom:12px;animation:slideFade .45s .22s cubic-bezier(.22,1,.36,1) both}
.radar-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.radar-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:600}
.radar-window{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--dim)}
.radar-body{display:flex;align-items:center;gap:16px}
.radar-score{text-align:center;min-width:80px}
.radar-score-n{font-family:'Barlow Condensed',sans-serif;font-size:38px;font-weight:900;color:var(--accent);line-height:1}
.radar-score-max{font-size:11px;color:var(--dim);letter-spacing:1px}
.radar-score-lbl{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-top:4px}
.radar-vol{font-size:11px;color:var(--dim);margin-top:6px}
/* ── EXERCISE PICKER ── */
.ex-info-btn{background:none;border:1px solid var(--border2);border-radius:50%;width:18px;height:18px;font-size:10px;color:var(--muted);cursor:pointer;vertical-align:middle;margin-left:6px;line-height:1;padding:0}
.ex-info-btn:hover{color:var(--accent);border-color:var(--accent)}
.ex-picker-wrap{position:relative}
.ex-picker-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:15px 14px;background:linear-gradient(180deg,#19191c,#121214);border:0.5px solid rgba(255,255,255,.14);border-radius:14px;color:var(--text);font-size:15px;font-weight:800;cursor:pointer;user-select:none;transition:border-color .2s,background .2s,transform .15s;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.ex-picker-btn:hover,.ex-picker-btn.open{border-color:rgba(255,255,255,.28)}
.ex-picker-btn:active{transform:scale(.99)}
.ex-picker-panel{position:relative;margin-top:8px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:12px;z-index:2;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,.35);animation:fadeUp .15s ease}
.ex-search-wrap{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:0.5px solid var(--border);position:sticky;top:0;z-index:2;background:var(--bg2)}
.ex-search-input{flex:1;min-width:0;background:none;border:none;color:var(--text);font-size:16px;outline:none}
.ex-list-scroll{max-height:300px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.ex-group-label{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--accent);padding:10px 12px 4px;font-weight:700}
.ex-item{display:flex;align-items:center;justify-content:space-between;padding:7px 12px;cursor:pointer;transition:background var(--mo-quick) linear;gap:9px}
.ex-item:active{background:var(--bg3)}
.ex-item-sub{display:flex;align-items:center;gap:6px;margin-top:2px;min-width:0}
.ex-item-tag{flex:0 0 auto;font-size:9px;letter-spacing:.6px;text-transform:uppercase;padding:1px 5px;border-radius:4px;background:rgba(255,255,255,.07);color:var(--dim);font-weight:600}
.ex-item-tag.pdc{background:rgba(56,189,248,.13);color:#7dd3fc}
.ex-item-tag.lest{background:rgba(232,76,13,.14);color:#f59e6b}
.ex-item-tag.opt{background:rgba(255,255,255,.07);color:var(--muted)}
.ex-list-empty{padding:20px;text-align:center;font-size:13px;color:var(--muted)}
.ex-item:hover{background:var(--bg3)}
.ex-item.selected{background:rgba(232,76,13,.07)}
.ex-item:active{transform:scale(.995)}
.ex-item.selected .ex-item-name{color:var(--accent);font-weight:600}
.ex-item.selected::before{content:'✓';font-size:11px;color:var(--accent);font-weight:700;flex-shrink:0;width:14px}
.ex-item-content{flex:1;min-width:0}
.ex-item-name{font-size:14px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-item-muscle{font-size:10px;color:var(--dim);letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ex-item-info{width:32px;height:32px;border-radius:50%;border:1px solid var(--border2);background:none;color:var(--dim);font-size:10px;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s}
.ex-item-info:hover{color:var(--accent);border-color:var(--accent)}

.ex-item-thumb{width:38px;height:38px;object-fit:cover;border-radius:9px;background:#080809;border:0.5px solid var(--border2);flex-shrink:0}
.ex-thumb-fallback{width:38px;height:38px;border-radius:9px;background:linear-gradient(145deg,rgba(232,76,13,.12),rgba(255,255,255,.04));border:0.5px solid rgba(232,76,13,.24);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.ex-media-note{display:inline-flex;margin-top:4px;padding:2px 6px;border-radius:999px;background:rgba(245,158,11,.1);border:0.5px solid rgba(245,158,11,.22);color:#f8c56a;font-family:'Barlow Condensed',sans-serif;font-size:8px;font-weight:900;letter-spacing:1px;text-transform:uppercase}
.ex-fallback{display:flex;align-items:center;justify-content:center;background:#0b0b0d;border:0.5px solid var(--border2);flex-shrink:0;line-height:1}
.ex-item .ex-fallback{width:38px;height:38px;border-radius:9px;font-size:17px}
.ex-selected-preview{display:none;align-items:center;gap:13px;margin-top:9px;padding:11px;background:linear-gradient(155deg,rgba(255,255,255,.05),var(--bg2) 60%);border:0.5px solid var(--border2);border-radius:14px;cursor:pointer}
.ex-selected-preview.show{display:flex}
.ex-selected-preview img,.ex-selected-preview video{width:80px;height:64px;object-fit:cover;border-radius:11px;background:#080809;flex-shrink:0}
.ex-selected-preview .ex-thumb-fallback,#v-add .ex-selected-preview .ex-fallback{width:80px;height:64px;border-radius:11px;font-size:26px}
.ex-selected-preview-copy{min-width:0;flex:1}
.ex-selected-preview-top{display:flex;align-items:center;gap:8px;min-width:0}
.ex-selected-preview-num{flex:0 0 auto;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:900;letter-spacing:.5px;color:var(--accent);background:rgba(232,76,13,.14);border:1px solid rgba(232,76,13,.32);padding:2px 7px;border-radius:999px}
.ex-selected-preview-name{min-width:0;font-weight:800;font-size:14.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-selected-preview-muscle{margin-top:4px;display:inline-block;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--accent2)}
.ex-selected-preview-meta{margin-top:3px;font-size:10.5px;line-height:1.35;color:var(--muted)}
.ex-selected-preview-cta{margin-top:5px;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--accent)}
.exercise-history-card{display:none;position:relative;overflow:hidden;margin:-2px 0 14px;padding:15px 15px 14px;border-radius:20px;background:linear-gradient(155deg,rgba(255,255,255,.055),rgba(255,255,255,.025));border:1px solid rgba(255,255,255,.09);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.exercise-history-card.show{display:block;animation:fadeUp .28s cubic-bezier(.22,1,.36,1) both}
.exercise-history-card::before{content:'';position:absolute;inset:-1px auto -1px -1px;width:4px;background:linear-gradient(180deg,#f59e0b,var(--accent));opacity:.9}
.exhist-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
.exhist-title{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:900;letter-spacing:1.8px;text-transform:uppercase;color:#f8c56a}
.exhist-date{font-size:10px;color:var(--dim);white-space:nowrap}
.exhist-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.exhist-stat{padding:11px 11px;border-radius:14px;background:rgba(8,8,10,.52);border:1px solid rgba(255,255,255,.08)}
.exhist-stat b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900;color:var(--text);line-height:1;font-variant-numeric:tabular-nums}
.exhist-stat span{display:block;margin-top:6px;font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.exhist-sub{margin-top:4px;font-size:11px;line-height:1.4;color:var(--muted)}
.exhist-apply{width:100%;margin-top:12px;padding:12px 14px;border:0;border-radius:14px;background:rgba(232,76,13,.16);color:#ff7a3d;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer}
.exhist-apply:active{transform:scale(.985)}
.session-card-skel{display:flex;flex-direction:column;gap:9px}
.session-card-skel span{display:block;height:12px;border-radius:999px;background:linear-gradient(90deg,rgba(255,255,255,.06),rgba(255,255,255,.11),rgba(255,255,255,.06));background-size:200% 100%;animation:skelSweep 1.3s linear infinite}
.session-card-skel span:nth-child(1){width:40%}
.session-card-skel span:nth-child(2){width:100%;height:42px;border-radius:14px}
.session-card-skel span:nth-child(3){width:72%}
.ex-group-label{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--accent);padding:10px 12px 4px;font-weight:700}
.ex-group-count{font-size:9px;letter-spacing:0;color:var(--dim);font-weight:400;text-transform:none}

/* ── Sélecteur d'exercice : muscle → exercice ─────────────────────────────
   Purement visuel. Les tuiles remplacent la liste unique de 200 lignes ; le
   contenu affiché vient toujours du même catalogue EXERCISES. */
.ex-list-scroll[data-view="groups"]{max-height:340px}
.ex-list-scroll[data-view="muscle"],.ex-list-scroll[data-view="search"]{max-height:360px}
.ex-mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(102px,1fr));gap:7px;padding:10px}
.ex-mtile{position:relative;display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:56px;padding:10px 11px 10px 15px;border-radius:11px;border:0.5px solid var(--border2);background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015));color:var(--text);cursor:pointer;text-align:left;overflow:hidden;transition:border-color var(--mo-quick) ease,background var(--mo-quick) ease,transform var(--mo-quick) ease}
.ex-mtile::before{content:'';position:absolute;left:0;top:9px;bottom:9px;width:2px;border-radius:0 2px 2px 0;background:var(--accent);opacity:.55;transition:opacity var(--mo-quick) ease}
.ex-mtile:hover{border-color:rgba(255,255,255,.24);background:rgba(255,255,255,.06)}
.ex-mtile:hover::before{opacity:1}
.ex-mtile:active{transform:scale(.97)}
.ex-mtile-name{font-size:12.5px;font-weight:800;line-height:1.15;letter-spacing:.1px;white-space:normal;overflow-wrap:anywhere;max-width:100%}
.ex-mtile-n{font-size:9.5px;color:var(--dim);letter-spacing:.4px}
.ex-back-bar{display:flex;align-items:center;gap:9px;padding:6px 10px;border-bottom:0.5px solid var(--border);position:sticky;top:0;background:var(--bg2);z-index:1}
.ex-back{flex:0 0 auto;min-height:36px;padding:7px 11px;border-radius:999px;border:0.5px solid var(--border2);background:rgba(255,255,255,.05);color:var(--muted);font-size:11.5px;font-weight:700;cursor:pointer;transition:color var(--mo-quick) ease,border-color var(--mo-quick) ease}
.ex-back:hover{color:var(--text);border-color:rgba(255,255,255,.26)}
.ex-back-title{flex:1;min-width:0;font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-equip-bar{display:flex;gap:5px;padding:6px 10px 3px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.ex-equip-bar::-webkit-scrollbar{display:none}
.ex-equip{flex:0 0 auto;min-height:32px;padding:6px 11px;border-radius:999px;border:0.5px solid var(--border);background:none;color:var(--dim);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:color var(--mo-quick) ease,border-color var(--mo-quick) ease,background var(--mo-quick) ease}
.ex-equip:hover{color:var(--text)}
.ex-equip.on{color:var(--accent);border-color:rgba(232,76,13,.45);background:rgba(232,76,13,.1)}
/* Transition d'entrée : opacité + translation seules, aucune propriété
   déclenchant un relayout pendant l'animation. */
@keyframes exViewIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.ex-list-scroll[data-view]{animation:exViewIn var(--mo-quick,.16s) ease}
.ex-item.selected .ex-item-thumb{box-shadow:0 0 0 1.5px var(--accent)}
@media(max-width:360px){.ex-mgrid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:6px}}
/* Indicateur de discipline dans le form add */
.add-disc-badge{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:10px 12px;background:var(--bg3);border:0.5px solid var(--border);border-radius:10px}
.add-disc-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;transition:background .4s ease;box-shadow:0 0 6px currentColor}
.add-disc-name{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--text)}
.add-disc-change{margin-left:auto;font-size:10px;color:#f8c56a;cursor:pointer;padding:4px 8px;border:0.5px solid rgba(251,191,36,.2);border-radius:999px;background:rgba(251,191,36,.07);font-family:'Barlow Condensed',sans-serif;font-weight:800;letter-spacing:1px;text-transform:uppercase;transition:color .2s,border-color .2s}
.add-disc-change:hover{color:var(--accent);border-color:var(--accent)}
/* ── MODAL INFO EXERCICE ── */
#ex-modal{display:none;position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.82);backdrop-filter:blur(12px);align-items:flex-end;justify-content:center}
#ex-modal.open{display:flex}
.ex-modal-box{width:100%;max-width:480px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;padding:0 0 48px;max-height:85dvh;overflow-y:auto;animation:modalIn .3s ease}
.ex-modal-head{padding:20px 20px 16px;border-bottom:0.5px solid var(--border);position:sticky;top:0;background:var(--bg2);z-index:1}
.ex-modal-name{font-family:'Barlow Condensed',sans-serif;font-size:24px;font-weight:900;color:var(--text);letter-spacing:1px}
.ex-modal-muscles{font-size:12px;color:var(--accent);margin-top:4px;letter-spacing:.5px}
.ex-modal-diff{display:inline-block;margin-top:8px;padding:3px 10px;border-radius:99px;font-size:10px;letter-spacing:2px;text-transform:uppercase;font-weight:700}
.diff-deb{background:rgba(34,197,94,.12);color:#22c55e}
.diff-int{background:rgba(234,179,8,.12);color:#eab308}
.diff-ava{background:rgba(239,68,68,.12);color:#ef4444}
.diff-exp{background:rgba(139,92,246,.12);color:#8b5cf6}
.ex-modal-body{padding:20px}
.ex-steps-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:12px;font-weight:700}
.ex-steps{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}
.ex-step{display:flex;gap:12px;align-items:flex-start}
.ex-step-n{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}
.ex-step-txt{font-size:14px;color:var(--text);line-height:1.5;flex:1}
.ex-tips-box{background:var(--bg3);border-left:3px solid var(--accent);border-radius:0 8px 8px 0;padding:12px 14px}
.ex-tips-label{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:6px}
.ex-tips-txt{font-size:13px;color:var(--muted);line-height:1.6}
/* ── OUTILS ── */
.tools-header{padding:10px 0 22px;animation:fadeUp .4s cubic-bezier(.16,1,.3,1) both}
.tools-badge{font-size:9px;letter-spacing:2.5px;text-transform:uppercase;color:var(--accent);font-weight:800;margin-bottom:7px}
.tools-title{font-family:'Barlow Condensed',sans-serif;font-size:34px;font-weight:900;letter-spacing:-.5px;color:var(--text);line-height:1;margin:0 0 8px}
.tools-intro{max-width:330px;font-size:13px;line-height:1.5;color:var(--muted)}
.tools-section{margin-bottom:24px}
.tools-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}
.tools-section-title{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:850;letter-spacing:.4px;color:var(--text)}
.tools-section-sub{font-size:10px;color:var(--dim);text-align:right}
.tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0}
.tool-card{appearance:none;width:100%;min-width:0;text-align:left;background:linear-gradient(145deg,rgba(25,25,29,.96),rgba(16,16,19,.96));border:1px solid var(--border);border-radius:16px;padding:15px;display:flex;align-items:center;gap:11px;color:inherit;cursor:pointer;transition:transform .2s cubic-bezier(.22,1,.36,1),border-color .2s,box-shadow .2s,background .2s;animation:slideInUp .4s cubic-bezier(.22,1,.36,1) both}
.tools-grid .tool-card:nth-child(1){animation-delay:.04s}.tools-grid .tool-card:nth-child(2){animation-delay:.08s}.tools-grid .tool-card:nth-child(3){animation-delay:.12s}.tools-grid .tool-card:nth-child(4){animation-delay:.16s}
@keyframes slideInUp{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.tool-card:active{transform:scale(.97)}
.tool-card:hover{border-color:rgba(232,80,10,.35);box-shadow:0 8px 24px rgba(0,0,0,.22)}
.tool-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tool-card-body{min-width:0;flex:1}
.tool-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tool-name{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:800;letter-spacing:.25px;color:var(--text);line-height:1.05}
.tool-sub{font-size:10px;color:var(--muted);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tool-chevron{color:var(--dim);font-size:20px;line-height:1;margin-left:auto}
.tools-list{overflow:hidden;background:rgba(18,18,21,.82);border:1px solid var(--border);border-radius:17px}
.tools-list .tool-card{border:0;border-radius:0;background:transparent;box-shadow:none;animation:none;min-height:68px;padding:13px 15px}
.tools-list .tool-card+.tool-card{border-top:1px solid var(--border)}
.tools-list .tool-card:active{background:rgba(255,255,255,.035)}
.tools-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tool-shortcut{appearance:none;border:1px solid var(--border);border-radius:14px;background:rgba(18,18,21,.72);color:var(--text);padding:13px 14px;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer}
.tool-shortcut span:first-child{font-family:'Barlow Condensed',sans-serif;font-size:14px;font-weight:800}.tool-shortcut span:last-child{color:var(--accent);font-size:18px}
.tool-shortcut small{display:block;font-family:'Barlow',sans-serif;font-size:9px;font-weight:500;color:var(--muted);margin-top:3px}
#tool-modal{display:none;position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.78);backdrop-filter:blur(10px);align-items:flex-end;justify-content:center}
#tool-modal.open{display:flex}
.tool-modal-box{width:100%;max-width:480px;background:#111114;border:1px solid var(--border2);border-radius:26px 26px 0 0;padding:0 0 44px;max-height:90dvh;overflow-y:auto;animation:modalIn .3s ease;box-shadow:0 -24px 70px rgba(0,0,0,.48)}
.tool-modal-head{display:flex;align-items:center;padding:14px 18px 13px;border-bottom:1px solid var(--border);position:sticky;top:0;background:rgba(17,17,20,.94);backdrop-filter:blur(18px);z-index:1}
.tool-modal-title{font-family:'Barlow Condensed',sans-serif;font-size:20px;font-weight:850;letter-spacing:.3px;flex:1}
.tool-modal-close{width:34px;height:34px;border-radius:50%;background:var(--bg3);border:1px solid var(--border);color:var(--muted);font-size:15px;cursor:pointer;line-height:1;margin:0;order:2}
.tool-modal-body{padding:20px 18px}
.cal-month{margin-bottom:20px}
.cal-month-lbl{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.cal-cell{aspect-ratio:1;border-radius:4px;background:var(--bg3);min-width:0}
.cal-cell.s1{background:rgba(232,80,10,.2)}.cal-cell.s2{background:rgba(232,80,10,.45)}.cal-cell.s3{background:rgba(232,80,10,.7)}.cal-cell.s4{background:#e8500a}
.cal-cell.today{outline:2px solid var(--accent);outline-offset:1px}
.cal-day-labels{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:6px}
.cal-dlbl{font-size:8px;color:var(--dim);text-align:center;letter-spacing:.5px}
.proto-big{font-family:'Barlow Condensed',sans-serif;font-size:52px;font-weight:900;color:var(--accent);line-height:1}
.proto-goal-lbl{font-size:13px;color:var(--muted);margin-top:4px;margin-bottom:2px}
.proto-bar-bg{background:var(--bg3);border-radius:99px;height:12px;margin:14px 0}
.proto-bar-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,#e8500a,#ff7a3d);transition:width .6s cubic-bezier(.22,1,.36,1)}
.proto-add-row{display:flex;gap:8px;margin-bottom:16px}
.proto-add-row input{flex:1;padding:10px 12px;background:var(--bg3);border:0.5px solid var(--border2);border-radius:9px;color:var(--text);font-size:15px;outline:none}
.proto-quick{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.proto-qbtn{padding:6px 12px;background:var(--bg3);border:0.5px solid var(--border);border-radius:99px;font-size:12px;color:var(--muted);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-weight:700;letter-spacing:1px}
.proto-qbtn:hover{color:var(--text);border-color:var(--accent)}
.proto-hist-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:0.5px solid var(--border);font-size:13px;color:var(--muted)}
.proto-hist-row:last-child{border-bottom:none}
.mes-big{font-family:'Barlow Condensed',sans-serif;font-size:52px;font-weight:900;color:var(--accent);line-height:1}
.mes-unit{font-size:20px;color:var(--muted)}
.mes-lbl{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-top:4px;margin-bottom:16px}
.mes-add-row{display:flex;gap:8px;margin-bottom:8px}
.mes-add-row input{flex:1;padding:10px 12px;background:var(--bg3);border:0.5px solid var(--border2);border-radius:9px;color:var(--text);font-size:15px;outline:none}
.mes-hist-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:0.5px solid var(--border)}
.mes-hist-row:last-child{border-bottom:none}
.mes-hist-date{font-size:12px;color:var(--muted)}
.mes-hist-val{font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:800;color:var(--text)}
.mes-diff{font-size:11px;padding:2px 6px;border-radius:4px}
.mes-diff.up{background:rgba(34,197,94,.12);color:#22c55e}.mes-diff.dn{background:rgba(239,68,68,.12);color:#ef4444}
.tool-field-label,.tool-section-title{display:block;font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.tool-select,.tool-input{width:100%;min-height:44px;margin:0 0 10px;padding:10px 12px;background:var(--bg3);border:1px solid var(--border2);border-radius:10px;color:var(--text);font-size:15px;outline:none}
.tool-select:focus,.tool-input:focus{border-color:rgba(232,76,13,.55)}
.tool-entry-list{margin:-1px 0 18px;border-top:1px solid var(--border)}
.tool-entry{display:grid;grid-template-columns:minmax(0,1fr) auto 34px;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.tool-entry div{min-width:0}.tool-entry b,.tool-entry span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool-entry b{font-size:13px}.tool-entry span{font-size:10px;color:var(--muted);margin-top:2px}.tool-entry strong{color:var(--accent);font-size:14px}.tool-entry button,.mes-hist-actions button{width:32px;height:32px;border:0;background:transparent;color:var(--muted);border-radius:8px;cursor:pointer}.tool-entry button:active,.mes-hist-actions button:active{background:var(--bg3);color:var(--text)}
.tool-mini-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}.tool-mini-stats div{padding:10px;background:var(--bg3);border-radius:10px;text-align:center}.tool-mini-stats b,.tool-mini-stats span{display:block}.tool-mini-stats b{font-family:'Barlow Condensed',sans-serif;font-size:18px}.tool-mini-stats span{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-top:2px}
.tool-warning{padding:10px 12px;margin:10px 0 0;background:rgba(249,115,22,.1);border:1px solid rgba(249,115,22,.24);border-radius:10px;color:#fb923c;font-size:12px;text-align:center}
.mes-hist-actions{display:flex;align-items:center;gap:5px}.mes-hist-actions button{font-size:14px}
.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}
.theme-opt{border:2px solid var(--border);border-radius:12px;padding:12px 8px;text-align:center;cursor:pointer;transition:border-color .2s}
.theme-opt.on{border-color:var(--accent)}
.theme-swatch{width:100%;height:36px;border-radius:8px;margin-bottom:8px}
.theme-name{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text)}
/* ── PR ── */
.pr-card{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;overflow:hidden;margin-bottom:10px}
.pr-row{display:flex;align-items:center;padding:11px 16px;border-bottom:0.5px solid var(--border);gap:12px}
.pr-row:last-child{border-bottom:none}
.pr-ex{font-size:13px;font-weight:600;color:var(--text);flex:1}
.pr-val{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:800;color:var(--accent)}
.pr-unit{font-size:11px;color:var(--muted);margin-left:2px}
/* ── EDIT PSEUDO ── */
.edit-pseudo-wrap{display:flex;align-items:center;gap:8px;justify-content:center;margin-bottom:2px}
.edit-pseudo-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px;display:flex;align-items:center;transition:color .2s}
.edit-pseudo-btn:hover{color:var(--accent)}
.edit-pseudo-form{display:none;gap:6px;margin-bottom:8px;justify-content:center}
.edit-pseudo-form.show{display:flex}
.edit-pseudo-input{background:var(--bg3);border:0.5px solid var(--border2);color:var(--text);border-radius:8px;padding:6px 10px;font-size:14px;font-family:'Barlow',sans-serif;width:140px;text-align:center}
.edit-pseudo-save{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;font-family:'Barlow Condensed',sans-serif;letter-spacing:1px;text-transform:uppercase}
.gym-card{background:linear-gradient(145deg,rgba(232,76,13,.11),var(--bg2) 58%);border:0.5px solid rgba(232,76,13,.28);border-radius:16px;padding:15px;margin-bottom:12px}
.gym-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.gym-title{font-family:'Barlow Condensed',sans-serif;font-size:16px;font-weight:900;letter-spacing:.8px;color:var(--text)}
.gym-sub{font-size:10px;line-height:1.4;color:var(--muted);margin-top:2px}
.gym-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gym-field{display:flex;flex-direction:column;gap:5px;font-size:9px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.gym-input{width:100%;min-width:0;background:var(--bg3);border:0.5px solid var(--border2);color:var(--text);border-radius:10px;padding:10px 11px;font:500 13px 'Barlow',sans-serif;outline:none}
.gym-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(232,76,13,.12)}
.gym-save{width:100%;margin-top:9px;padding:10px 12px;border:0;border-radius:10px;background:var(--accent);color:#fff;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase;cursor:pointer}
.gym-save:disabled{opacity:.55;cursor:wait}
.p-location,.fp-location{font-size:11px;color:var(--muted);margin-top:4px}
@media(max-width:350px){.gym-grid{grid-template-columns:1fr}}
/* ── DELETE ACCOUNT ── */
.danger-zone{background:rgba(239,68,68,.05);border:0.5px solid rgba(239,68,68,.2);border-radius:14px;padding:16px 18px;margin-bottom:10px;margin-top:32px}
.danger-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#ef4444;font-weight:700;margin-bottom:10px}
.danger-btn{background:none;border:0.5px solid rgba(239,68,68,.4);color:#ef4444;border-radius:8px;padding:9px 16px;font-size:12px;font-weight:700;cursor:pointer;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px;text-transform:uppercase;transition:background .2s}
.danger-btn:hover{background:rgba(239,68,68,.12)}
/* ── RUN GPS ── */
.run-start-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:15px;background:var(--accent);color:#fff;border:none;border-radius:12px;font-family:'Barlow Condensed',sans-serif;font-size:14px;letter-spacing:2px;text-transform:uppercase;font-weight:800;cursor:pointer;transition:filter .2s,transform .2s,box-shadow .2s;margin-bottom:14px}
.run-start-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(232,76,13,.3);filter:brightness(1.08)}
.run-or{display:flex;align-items:center;gap:12px;margin:6px 0 14px;color:var(--dim);font-size:11px;letter-spacing:1.5px;text-transform:uppercase}
.run-or::before,.run-or::after{content:'';flex:1;height:0.5px;background:var(--border)}
#run-overlay{position:fixed;inset:0;z-index:500;display:none;flex-direction:column;background:var(--bg)}
#run-overlay.open{display:flex}
#run-map{flex:1;width:100%;background:#0e0e12;z-index:1}
.run-topbar{position:absolute;top:0;left:0;right:0;z-index:1000;display:flex;align-items:center;gap:10px;padding:calc(14px + env(safe-area-inset-top,0px)) 18px 28px;background:linear-gradient(to bottom,rgba(10,10,11,.92),transparent);font-family:'Barlow Condensed',sans-serif;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:var(--text)}
.run-topbar #run-gps-status{min-width:0;flex:1;line-height:1.25}
.run-gps-settings{flex:0 0 auto;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(10,10,12,.58);color:#fff;padding:7px 10px;font:800 10px 'Barlow Condensed',sans-serif;letter-spacing:1px;text-transform:uppercase}
.run-gps-dot{width:10px;height:10px;border-radius:50%;background:#f59e0b;box-shadow:0 0 8px #f59e0b;animation:divPulse 1.2s ease-in-out infinite}
.run-gps-dot.ok{background:#22c55e;box-shadow:0 0 8px #22c55e}
.run-gps-dot.err{background:#ef4444;box-shadow:0 0 8px #ef4444;animation:none}
.run-panel{background:var(--bg2);border-top:0.5px solid var(--border2);padding:18px 18px calc(18px + env(safe-area-inset-bottom));z-index:1000}
.run-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.run-stat{text-align:center}
.run-stat-v{font-family:'Barlow Condensed',sans-serif;font-size:38px;font-weight:900;line-height:1;color:var(--text)}
.run-stat-l{font-size:10px;letter-spacing:2px;color:var(--muted);margin-top:4px;font-weight:700}
.run-pts-line{text-align:center;font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:700;color:var(--accent);letter-spacing:1px;margin-bottom:14px}
.run-btns{display:flex;gap:10px}
.run-btn{flex:1;padding:15px;border:none;border-radius:12px;font-family:'Barlow Condensed',sans-serif;font-size:13px;letter-spacing:2px;text-transform:uppercase;font-weight:800;cursor:pointer;transition:filter .2s,transform .15s}
.run-btn:active{transform:scale(.97)}
.run-btn-toggle{background:var(--bg3);color:var(--text);border:0.5px solid var(--border2)}
.run-btn-stop{background:var(--accent);color:#fff}
.leaflet-container{font-family:'Barlow',sans-serif}
#delete-modal{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.85);display:none;align-items:center;justify-content:center;padding:20px}
#delete-modal.open{display:flex}
#admin-modal{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.85);display:none;align-items:center;justify-content:center;padding:20px}
#admin-modal.open{display:flex}
.admin-box{background:var(--bg2);border:0.5px solid var(--border2);border-radius:16px;padding:20px;width:100%;max-width:420px;max-height:80dvh;display:flex;flex-direction:column}
.admin-box h3{font-family:'Barlow Condensed',sans-serif;font-size:20px;font-weight:900;letter-spacing:2px;text-transform:uppercase;margin-bottom:12px}
.admin-search{width:100%;background:var(--bg3);border:0.5px solid var(--border2);border-radius:9px;padding:10px 12px;color:var(--text);font-family:'Barlow',sans-serif;font-size:13px;margin-bottom:12px;outline:none}
.admin-list{overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:8px;min-height:120px}
.admin-row{background:var(--bg3);border:0.5px solid var(--border);border-radius:10px;padding:10px 12px}
.admin-row-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}
.admin-name{font-weight:600;font-size:14px}
.admin-pts{font-family:'Barlow Condensed',sans-serif;font-weight:900;color:var(--accent);font-size:14px}
.admin-mail{font-size:11px;color:var(--muted);margin-bottom:8px;word-break:break-all}
.admin-actions{display:flex;gap:6px}
.admin-act{flex:1;padding:7px 0;border-radius:7px;cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase}
.admin-act.reset{background:rgba(255,255,255,.06);border:0.5px solid var(--border2);color:var(--text)}
.admin-act.del{background:rgba(239,68,68,.12);border:0.5px solid rgba(239,68,68,.3);color:#ef4444}
.admin-close{margin-top:12px;width:100%;padding:11px 0;background:var(--bg3);border:0.5px solid var(--border2);border-radius:9px;color:var(--muted);cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase}
.delete-box{background:var(--bg2);border:0.5px solid rgba(239,68,68,.3);border-radius:20px;padding:28px 24px;max-width:340px;width:100%;text-align:center}
.delete-box h3{font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900;color:#ef4444;margin-bottom:10px;text-transform:uppercase}
.delete-box p{font-size:13px;color:var(--muted);line-height:1.7;margin-bottom:20px}
.delete-btns{display:flex;gap:8px}
.delete-cancel{flex:1;padding:12px;background:var(--bg3);border:0.5px solid var(--border2);color:var(--text);border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px;text-transform:uppercase}
.delete-confirm{flex:1;padding:12px;background:#ef4444;border:none;color:#fff;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px;text-transform:uppercase}
.sect-title{font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.ses-del{background:none;border:none;color:var(--dim);cursor:pointer;padding:4px 6px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ses-del:hover{color:#ff6b6b;background:rgba(255,107,107,.08)}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:200;display:flex;align-items:flex-end;justify-content:center}
/* Sans hauteur bornée, une fenêtre plus haute que l'écran débordait sous le
   bas de la vue : son contenu était tout simplement hors d'atteinte. */
.modal{width:100%;max-width:480px;max-height:90dvh;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;padding:24px 20px 40px}
.modal-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:18px;font-weight:700}
.modal-close{float:right;background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;margin-top:-2px}
.share-card{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;padding:16px;margin-top:12px;text-align:center}
.share-btns{display:flex;gap:8px;margin-top:12px}
.share-btn{flex:1;padding:11px;border-radius:9px;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;cursor:pointer;border:0.5px solid var(--border2);background:var(--bg3);color:var(--text)}
.share-btn.primary{background:var(--text);color:var(--bg);border-color:var(--text)}
.edit-disc-btn{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);background:none;border:0.5px solid var(--border);border-radius:20px;padding:4px 10px;cursor:pointer;margin-top:6px}
.edit-disc-btn:hover{color:var(--text);border-color:var(--border2)}
.notif-toast{position:fixed;top:calc(16px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);display:none;align-items:center;gap:10px;min-width:min(360px,calc(100vw - 28px));max-width:min(420px,calc(100vw - 28px));padding:13px 14px;border-radius:18px;background:rgba(15,15,18,.96);border:1px solid rgba(255,255,255,.09);font-size:13px;color:var(--text);z-index:300;box-shadow:0 18px 34px rgba(0,0,0,.42),inset 0 1px 0 rgba(255,255,255,.05);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.notif-toast.show{display:flex;animation:fadeUp .24s cubic-bezier(.22,1,.36,1)}
.notif-toast.success{border-color:rgba(34,197,94,.28);background:rgba(10,22,16,.96)}
.notif-toast.warning{border-color:rgba(245,158,11,.28);background:rgba(27,19,8,.96)}
.notif-toast.error{border-color:rgba(239,68,68,.28);background:rgba(28,12,14,.96)}
.notif-toast-icon{width:30px;height:30px;border-radius:999px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:rgba(255,255,255,.06);font-size:14px}
.notif-toast.success .notif-toast-icon{background:rgba(34,197,94,.16);color:#4ade80}
.notif-toast.warning .notif-toast-icon{background:rgba(245,158,11,.18);color:#f8c56a}
.notif-toast.error .notif-toast-icon{background:rgba(239,68,68,.18);color:#f87171}
.notif-toast-copy{min-width:0;flex:1;line-height:1.4}

/* ── RANK-UP OVERLAY ──────────────────── */
#rankup-overlay{position:fixed;inset:0;z-index:500;background:rgba(0,0,0,.94);display:none;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:28px}
#rankup-overlay.show{display:flex;animation:fadeIn .4s ease}
.rankup-label{font-family:'Barlow Condensed',sans-serif;font-size:11px;letter-spacing:4px;text-transform:uppercase;color:var(--accent);margin-bottom:20px}
.rankup-badge{width:120px;height:120px;margin:0 auto 22px;animation:popIn .65s .15s cubic-bezier(.34,1.56,.64,1) both}
.rankup-name{font-family:'Barlow Condensed',sans-serif;font-size:58px;font-weight:900;text-transform:uppercase;line-height:.9;letter-spacing:2px}
.rankup-sub{font-size:14px;color:var(--muted);margin-top:14px;margin-bottom:32px;line-height:1.6}
.rankup-dismiss{padding:13px 40px;background:var(--accent);color:#fff;border:none;border-radius:9px;font-family:'Barlow Condensed',sans-serif;font-size:12px;letter-spacing:2.5px;text-transform:uppercase;cursor:pointer;font-weight:800;clip-path:polygon(10px 0%,100% 0%,calc(100% - 10px) 100%,0% 100%)}

/* ── ONBOARDING ───────────────────────── */
#onboard-overlay{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.92);display:none;align-items:center;justify-content:center;padding:28px 28px calc(28px + env(safe-area-inset-bottom,0px));backdrop-filter:blur(14px)}
#onboard-overlay.show{display:flex;animation:fadeIn .4s ease}
.onboard-box{width:100%;max-width:360px;text-align:center}
.onboard-steps-wrap{position:relative;overflow:hidden}
.onboard-step-page{display:none;flex-direction:column;align-items:center;animation:ftabIn .4s cubic-bezier(.16,1,.3,1) both}
.onboard-step-page.active{display:flex}
.onboard-dot-row{display:flex;gap:7px;justify-content:center;margin-bottom:32px}
.onboard-dot{width:6px;height:6px;border-radius:50%;background:var(--border2);transition:background .3s}
.onboard-dot.on{background:var(--accent)}
.onboard-badge-wrap{width:90px;height:90px;margin:0 auto 20px;filter:drop-shadow(0 0 18px rgba(154,166,181,.35))}
.onboard-title{font-family:'Barlow Condensed',sans-serif;font-size:42px;font-weight:900;text-transform:uppercase;line-height:.92;margin-bottom:10px}
.onboard-sub{font-size:14px;color:var(--muted);line-height:1.7;margin-bottom:24px;max-width:300px}
.onboard-formula{background:var(--bg2);border:0.5px solid var(--border);border-radius:10px;padding:14px 18px;font-size:13px;color:var(--muted);line-height:1.7;margin-bottom:24px;text-align:left;width:100%}
.onboard-formula strong{color:var(--text)}
.onboard-check-list{display:flex;flex-direction:column;gap:10px;width:100%;margin-bottom:24px}
.onboard-check{display:flex;align-items:center;gap:12px;background:var(--bg2);border:0.5px solid var(--border);border-radius:8px;padding:12px 14px;text-align:left}
.onboard-check-icon{width:32px;height:32px;border-radius:6px;background:rgba(232,76,13,.12);border:0.5px solid rgba(232,76,13,.22);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.onboard-check-txt{font-size:13px;color:var(--text)}
.onboard-btn{padding:14px 44px;background:var(--accent);color:#fff;border:none;font-family:'Barlow Condensed',sans-serif;font-size:12px;letter-spacing:2.5px;text-transform:uppercase;cursor:pointer;font-weight:800;clip-path:polygon(10px 0%,100% 0%,calc(100% - 10px) 100%,0% 100%);transition:filter .2s}
.onboard-btn:hover{filter:brightness(1.12)}
.ob-lvl-btn{padding:10px 6px;background:var(--bg3);border:0.5px solid var(--border2);border-radius:8px;color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:all .15s}
.ob-lvl-btn.active{background:rgba(232,76,13,.12);border-color:var(--accent);color:var(--accent)}
/* Guide des exercices */
.guide-dtab{min-height:44px;padding:10px 14px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:22px;color:var(--dim);font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;cursor:pointer;white-space:nowrap;transition:all .15s;flex-shrink:0}
.guide-dtab.on{background:rgba(232,76,13,.15);border-color:var(--accent);color:var(--accent)}
.guide-mchip{min-height:46px;padding:11px 14px;background:var(--bg3);border:0.5px solid var(--border2);border-radius:23px;color:var(--dim);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s;flex-shrink:0}
.guide-mchip.on{background:rgba(232,76,13,.12);border-color:var(--accent);color:var(--accent)}
.guide-filter-toggle{display:none;width:100%;min-height:46px;align-items:center;justify-content:space-between;padding:11px 14px;margin-bottom:10px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:12px;color:var(--text);font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:800;letter-spacing:1px;text-transform:uppercase;cursor:pointer}
.guide-filter-summary{color:var(--accent);font-size:12px;letter-spacing:.5px;text-transform:none}
.guide-filter-chevron{color:var(--muted);transition:transform .2s}
.guide-filter-toggle[aria-expanded="true"] .guide-filter-chevron{transform:rotate(180deg)}
.guide-muscle-wrap{display:flex;gap:8px;overflow-x:auto;padding-bottom:14px;scrollbar-width:none}
.ex-card{background:var(--bg2);border:0.5px solid var(--border2);border-radius:16px;overflow:hidden;cursor:pointer;transition:transform .15s,border-color .15s;-webkit-tap-highlight-color:transparent}
.ex-card:active{transform:scale(.97)}
.ex-card:hover{border-color:rgba(232,76,13,.4)}
.guide-more{grid-column:1/-1;height:1px}
.ex-card-img{width:100%;aspect-ratio:4/3;background:var(--bg3);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.ex-card-img img{width:100%;height:100%;object-fit:cover;display:block}
.ex-card-img video,.ex-card-video{width:100%;height:100%;object-fit:cover;display:block}
.ex-card-img .ex-placeholder{font-size:32px;opacity:.6}
.ex-card-img.generic{background:radial-gradient(circle at 50% 38%,rgba(232,76,13,.24),rgba(17,17,20,.98) 62%);border-bottom:0.5px solid rgba(232,76,13,.18)}
.ex-media-badge{position:absolute;left:8px;bottom:8px;padding:4px 7px;border-radius:999px;background:rgba(8,8,10,.78);border:0.5px solid rgba(245,158,11,.32);color:#f8c56a;font-family:'Barlow Condensed',sans-serif;font-size:8px;font-weight:900;letter-spacing:1px;text-transform:uppercase}
.ex-card-body{padding:12px 12px 14px}
.ex-card-name{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:700;color:var(--text);line-height:1.25;margin-bottom:7px}
.ex-card-tags{display:flex;gap:6px;flex-wrap:wrap}
.ex-tag{font-size:11px;font-weight:700;letter-spacing:.4px;padding:3px 7px;border-radius:5px;text-transform:uppercase}
.ex-tag-muscle{background:rgba(255,255,255,.07);color:var(--dim)}
.ex-tag-diff-d{background:rgba(52,211,153,.12);color:#34d399}
.ex-tag-diff-i{background:rgba(251,191,36,.12);color:#fbbf24}
.ex-tag-diff-a{background:rgba(232,76,13,.15);color:var(--accent)}
.ex-tag-diff-e{background:rgba(139,92,246,.15);color:#a78bfa}
@media(max-width:600px){
  .guide-filter-toggle{display:flex}
  .guide-muscle-wrap{display:none;overflow:visible;flex-wrap:wrap;padding:2px 0 14px}
  .guide-muscle-wrap.open{display:flex}
  #guide-grid{gap:14px!important}
  #guide-count{font-size:13px!important;padding-bottom:10px!important}
  .ex-card-img{aspect-ratio:1/1}
  .nlbl{font-size:11px}
}
@keyframes gifPulse{0%,100%{opacity:.5}50%{opacity:.9}}
.ex-gif-loading{animation:gifPulse 1.2s ease-in-out infinite;background:linear-gradient(90deg,var(--bg3) 25%,var(--bg2) 50%,var(--bg3) 75%)}
@keyframes exFrame0{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes exFrame1{0%,49%{opacity:0}50%,100%{opacity:1}}
@-webkit-keyframes exFrame0{0%,49%{opacity:1}50%,100%{opacity:0}}
@-webkit-keyframes exFrame1{0%,49%{opacity:0}50%,100%{opacity:1}}
.ex-2frame{position:relative}
.ex-f0,.ex-f1{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;will-change:opacity;-webkit-transform:translateZ(0);transform:translateZ(0)}
.ex-f0{-webkit-animation:exFrame0 1.8s linear infinite;animation:exFrame0 1.8s linear infinite}
.ex-f1{-webkit-animation:exFrame1 1.8s linear infinite;animation:exFrame1 1.8s linear infinite}
@media(prefers-reduced-motion:reduce){
  .ex-f0{-webkit-animation:exFrame0 1.8s linear infinite!important;animation:exFrame0 1.8s linear infinite!important}
  .ex-f1{-webkit-animation:exFrame1 1.8s linear infinite!important;animation:exFrame1 1.8s linear infinite!important}
}
.onboard-skip{font-size:11px;color:var(--muted);margin-top:14px;cursor:pointer;letter-spacing:1px;text-transform:uppercase}
.onboard-skip:hover{color:var(--text)}

/* ── LB SEARCH + TABS ─────────────────── */
.lb-tabs{display:flex;gap:6px;margin-bottom:12px}
.lb-tab{flex:1;padding:8px 12px;font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;background:var(--bg2);border:0.5px solid var(--border);border-radius:8px;color:var(--muted);cursor:pointer;transition:border-color .2s,color .2s}
.lb-tab.on{border-color:var(--border2);color:var(--text);background:var(--bg3)}
.lb-search-wrap{position:relative;margin-bottom:12px}
.lb-search{width:100%;padding:11px 14px 11px 38px;background:var(--bg2);border:0.5px solid var(--border);border-radius:10px;color:var(--text);font-size:14px;outline:none;transition:border-color .2s}
.lb-search:focus{border-color:var(--border2)}
.lb-search-ico{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--dim);pointer-events:none}
.lb-add-friend-btn{width:100%;padding:13px;margin-bottom:12px;background:rgba(232,76,13,.09);border:1px solid rgba(232,76,13,.35);border-radius:12px;color:var(--accent);font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.lb-add-friend-btn:hover{background:rgba(232,76,13,.16);border-color:var(--accent)}

/* ── SPARKLINE ────────────────────────── */
.sparkline-wrap{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;padding:16px;margin-bottom:10px;animation:fadeUp .4s .15s cubic-bezier(.22,1,.36,1) both}
.sparkline-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.sparkline-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:600}
.sparkline-total{font-size:13px;font-weight:700;color:var(--text)}
.sparkline-svg{width:100%;height:72px;overflow:visible;display:block}

/* ── WEEKLY GOAL ──────────────────────── */
.weekly-card{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;padding:16px;margin-bottom:10px;animation:fadeUp .4s .1s cubic-bezier(.22,1,.36,1) both}
.weekly-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.weekly-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:600}
.weekly-count{font-size:13px;font-weight:700;color:var(--text)}
.weekly-dots{display:flex;gap:6px}
.wdot{width:34px;height:34px;border-radius:8px;background:var(--bg3);border:0.5px solid var(--border);display:flex;align-items:center;justify-content:center;transition:background .35s,border-color .35s}
.wdot.done{background:rgba(232,76,13,.18);border-color:var(--accent)}
.recovery-card{background:linear-gradient(180deg,rgba(24,24,28,.96),rgba(15,15,18,.96));border:0.5px solid var(--border);border-radius:14px;padding:16px 16px 14px;margin-bottom:12px;position:relative;overflow:hidden}
.recovery-card::before{content:'';position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,var(--accent),rgba(255,122,47,.25))}
.recovery-ready::before{background:linear-gradient(180deg,#22c55e,var(--accent))}
.recovery-steady::before{background:linear-gradient(180deg,#f59e0b,var(--accent))}
.recovery-recover::before{background:linear-gradient(180deg,#ef4444,var(--accent))}
.recovery-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.recovery-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:600}
.recovery-title{margin-top:6px;font-family:'Barlow Condensed',sans-serif;font-size:24px;font-weight:900;line-height:.95;color:var(--text);text-transform:uppercase}
.recovery-score{font-family:'Barlow Condensed',sans-serif;font-size:34px;font-weight:900;line-height:.9;color:var(--accent);text-align:right;white-space:nowrap}
.recovery-score span{display:block;font-size:11px;letter-spacing:1.5px;color:var(--dim)}
.recovery-status{display:inline-flex;align-items:center;min-height:28px;margin-top:14px;padding:0 10px;border-radius:999px;background:rgba(232,76,13,.1);border:0.5px solid rgba(232,76,13,.22);font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent)}
.recovery-ready .recovery-status{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.24);color:#86efac}
.recovery-steady .recovery-status{background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.22);color:#fcd34d}
.recovery-recover .recovery-status{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.22);color:#fca5a5}
.recovery-copy{margin-top:10px;font-size:13px;line-height:1.6;color:var(--muted)}
.recovery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}
.recovery-metric{padding:11px 12px;border-radius:12px;background:rgba(8,8,10,.48);border:0.5px solid rgba(255,255,255,.06)}
.recovery-metric.full{grid-column:1/-1}
.recovery-metric b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;color:var(--text);line-height:1.05}
.recovery-metric span{display:block;margin-top:5px;font-size:10px;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim)}
.recovery-action{margin-top:12px;padding:11px 12px;border-radius:12px;background:rgba(232,76,13,.07);border:0.5px solid rgba(232,76,13,.14);font-size:12px;line-height:1.55;color:var(--text)}
@media(max-width:520px){.recovery-grid{grid-template-columns:1fr}.recovery-metric.full{grid-column:auto}.recovery-title{font-size:21px}.recovery-score{font-size:30px}}

/* ── EX RANKS ─────────────────────────── */
.ex-rank-row{display:flex;align-items:center;gap:12px;padding:12px 15px;border-bottom:0.5px solid var(--border)}
.ex-rank-row:last-child{border-bottom:none}
.ex-rank-badge{width:30px;height:30px;flex-shrink:0}
.ex-rank-name{flex:1;font-size:13px;font-weight:600;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-rank-pts{font-size:11px;color:var(--muted);flex-shrink:0}

/* ── SHARE CANVAS MODAL ───────────────── */
#share-modal{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.82);display:none;align-items:flex-end;justify-content:center;backdrop-filter:blur(8px)}
#share-modal.open{display:flex}
.share-modal-box{width:100%;max-width:480px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;padding:24px 20px 42px;animation:modalIn .3s ease}
.share-canvas-wrap{display:flex;justify-content:center;margin:14px 0}
#share-canvas{border-radius:12px;width:100%;height:auto;box-shadow:0 8px 40px rgba(0,0,0,.6)}
.share-modal-btns{display:flex;gap:8px}

/* ── FRIENDS MODAL ────────────────────── */
#add-friend-modal{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.8);display:none;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(8px)}
#add-friend-modal.open{display:flex}
.friend-modal-box{width:100%;max-width:360px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px;padding:24px 20px;animation:modalIn .3s ease}
.invite-code-box{font-family:'Barlow Condensed',sans-serif;font-size:30px;font-weight:900;letter-spacing:8px;color:var(--accent);text-align:center;padding:16px;background:rgba(232,76,13,.06);border:0.5px solid rgba(232,76,13,.18);border-radius:10px;margin:10px 0 20px}

/* ── LOGGER SÉRIE PAR SÉRIE ──────────────── */
.add-set-btn{width:100%;padding:15px 16px;background:linear-gradient(180deg,rgba(232,76,13,.18),rgba(232,76,13,.09));border:1px solid rgba(232,76,13,.44);border-radius:18px;color:#ff7a3d;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;letter-spacing:2px;text-transform:uppercase;cursor:pointer;margin-bottom:14px;transition:background .2s,border-color .2s,transform .15s,box-shadow .2s;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 10px 24px rgba(232,76,13,.12)}
.add-set-btn:hover{background:rgba(232,76,13,.08);border-color:var(--accent)}
.add-set-btn:active{transform:scale(.98)}
.sets-list{background:linear-gradient(180deg,#111114,#0e0e10);border:1px solid rgba(255,255,255,.09);border-radius:16px;margin:11px 0 0;padding:9px;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.sets-list-head{display:flex;justify-content:space-between;align-items:center;padding:2px 2px 0;margin-bottom:10px;font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:800}
.sets-table-head{display:grid;grid-template-columns:48px 1fr auto;gap:10px;padding:0 2px 2px;font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim)}
.sets-clear{background:none;border:none;color:var(--dim);font-size:9px;letter-spacing:1px;text-transform:uppercase;cursor:pointer;font-weight:700;padding:2px 4px}
.sets-clear:hover{color:#ef4444}
.set-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 10px;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(255,255,255,.035);margin-top:6px;animation:fadeUp .25s cubic-bezier(.22,1,.36,1) both}
.set-row:last-child{border-bottom:1px solid rgba(255,255,255,.08)}
.set-num{width:28px;height:28px;border-radius:9px;background:rgba(232,76,13,.16);color:var(--accent);font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;display:flex;align-items:center;justify-content:center}
.set-main{min-width:0}
.set-main-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.set-main-bottom{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:4px}
.set-cell{font-size:14px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.set-cell-muted{color:var(--muted);font-size:11px}
/* ── Séries validées : lignes mobiles confortables ──────────────── */
.set-row.done{border-color:rgba(34,197,94,.2);background:rgba(34,197,94,.045)}
/* Une série validée descend de la zone de saisie vers la liste ; une série
   supprimée s'efface avant que les suivantes ne remontent. */
.set-row-new{animation:moSetIn var(--mo-base) var(--mo-out)}
.set-row-out{animation:moFadeOut var(--mo-base) var(--mo-in) forwards;pointer-events:none}
.set-del:active{transform:scale(.86)}
.set-row .set-main-top{align-items:baseline;gap:6px}
.set-vals{display:inline-flex;align-items:baseline;gap:3px;white-space:nowrap}
.set-load{font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:900;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:.3px}
.set-x{color:var(--dim);font-size:12px;font-weight:700;margin:0 2px}
.set-reps{font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:900;color:var(--text);font-variant-numeric:tabular-nums}
.set-reps-l{font-size:11px;color:var(--muted);font-weight:700;margin-left:2px}
.set-check{width:22px;height:22px;border-radius:50%;background:rgba(34,197,94,.16);color:var(--ok);font-size:12px;font-weight:900;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.set-del{min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;font-size:15px;border-radius:10px;padding:0;touch-action:manipulation}
.set-del:active{background:rgba(239,68,68,.12);transform:scale(.9)}
.set-pts{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:900;color:var(--accent);text-align:right;flex-shrink:0}
.set-del{background:none;border:none;color:var(--dim);font-size:13px;cursor:pointer;padding:8px;flex-shrink:0;transition:color .15s}
.set-del:hover{color:#ef4444}
.set-best{font-size:8px;letter-spacing:1px;background:rgba(232,76,13,.16);color:var(--accent);padding:3px 6px;border-radius:999px;font-weight:800;vertical-align:middle}
.set-options{display:grid;grid-template-columns:1fr 112px;gap:10px;margin:-2px 0 14px}
.set-type-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.set-type-btn{min-height:42px;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(255,255,255,.035);color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1px;text-transform:uppercase;cursor:pointer}
.set-type-btn.on{border-color:rgba(232,76,13,.7);background:rgba(232,76,13,.14);color:var(--accent);box-shadow:0 0 16px rgba(232,76,13,.12)}
.rpe-mini{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.08);border-radius:13px}
.rpe-mini span{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1px;color:var(--muted)}
.rpe-mini input{width:42px;border:0;background:transparent;color:var(--text);font-weight:900;text-align:center;font-size:15px;outline:none}
.set-tag{font-size:8px;letter-spacing:.8px;background:rgba(255,255,255,.08);color:var(--muted);padding:3px 6px;border-radius:999px;font-weight:800;vertical-align:middle}
.set-tag.fail{background:rgba(239,68,68,.16);color:#f87171}
.set-tag.drop{background:rgba(245,158,11,.16);color:#fbbf24}
.set-tag.warmup{background:rgba(59,130,246,.14);color:#60a5fa}
.set-coach{margin:12px 0 0;padding:13px 13px 12px;border-radius:18px;background:linear-gradient(135deg,rgba(232,76,13,.13),rgba(255,255,255,.035));border:1px solid rgba(232,76,13,.22)}
.set-coach-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.set-coach-k{font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.set-coach-v{margin-top:3px;font-size:14px;font-weight:900;color:var(--text);font-variant-numeric:tabular-nums}
.set-coach-tip{margin-top:9px;font-size:11px;line-height:1.45;color:var(--muted)}
@media(max-width:380px){.set-options{grid-template-columns:1fr}.set-type-row{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* ── DRAG HANDLE (bottom sheets) ─────────── */
.sheet-handle{width:36px;height:4px;background:var(--border2);border-radius:2px;margin:10px auto 0;display:block}
/* ── PTS PREVIEW amélioré ────────────────── */
.pts-prev{position:relative;overflow:hidden}
.pts-prev::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(232,76,13,.05) 0%,transparent 60%);pointer-events:none}
.pts-prev-v{font-size:28px;font-weight:900;color:var(--text);line-height:1}
/* ── TOAST amélioré ──────────────────────── */
.toast.success{border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.08);color:#22c55e}
.toast.error{border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.08);color:#ef4444}
/* ── INSTALL BANNER ───────────────────── */
#install-banner{position:fixed;bottom:calc(82px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);width:calc(100% - 28px);max-width:452px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:14px;padding:14px 14px 14px 16px;z-index:50;display:none;align-items:center;gap:12px;box-shadow:0 8px 32px rgba(0,0,0,.5)}
#install-banner.show{display:flex;animation:fadeUp .35s cubic-bezier(.22,1,.36,1)}
.install-txt{flex:1}
.install-txt b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:15px;letter-spacing:1px;color:var(--text)}
.install-txt span{font-size:11px;color:var(--muted)}
.install-btn{padding:9px 16px;background:var(--accent);color:#fff;border:none;border-radius:8px;font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;font-weight:800;flex-shrink:0}
.install-x{background:none;border:none;color:var(--dim);cursor:pointer;padding:4px;flex-shrink:0;display:flex;align-items:center}

/* ── MESSAGERIE ───────────────────────── */
/* La liste sociale vit dans le flux de la page : un seul défilement, comme
   partout ailleurs. Seul le FIL de discussion garde une hauteur calculée,
   parce que le clavier iOS impose de connaître la zone réellement visible. */
#v-msg{display:none}
#v-msg.on{display:block;padding-bottom:var(--bnav-clearance)}
html.dm-thread-open #v-msg.on{display:flex;flex-direction:column;padding-bottom:0;
  height:calc(var(--visual-vh,100dvh) - 128px - var(--bnav-clearance));min-height:320px}
html.dm-thread-open #dm-thread-view{flex:1;min-height:0}
.social-hub-hero{margin-bottom:12px;padding:17px 16px;border-radius:20px;background:linear-gradient(145deg,rgba(23,23,27,.96),rgba(11,11,13,.98));border:0.5px solid rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.045)}
.social-hub-k{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:#f8c56a}
.social-hub-title{margin-top:5px;font-family:'Barlow Condensed',sans-serif;font-size:30px;font-weight:900;line-height:.95;color:var(--text)}
.social-hub-sub{margin-top:7px;font-size:12px;line-height:1.45;color:var(--muted)}
.social-hub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:13px}
.social-hub-stat{padding:10px 9px;border-radius:13px;background:rgba(255,255,255,.045);border:0.5px solid rgba(255,255,255,.08)}
.social-hub-stat b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;color:var(--text);line-height:1}
.social-hub-stat span{display:block;margin-top:5px;font-size:8px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.social-section-card{margin-bottom:10px;padding:12px;border-radius:16px;background:rgba(255,255,255,.025);border:0.5px solid rgba(255,255,255,.075)}
.social-section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:900;letter-spacing:1.8px;text-transform:uppercase;color:var(--muted)}
.social-add-main{width:100%;margin-top:10px;flex-shrink:0;padding:14px 15px;border:0;border-radius:15px;background:linear-gradient(135deg,var(--accent),#ff6633);color:#fff;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;letter-spacing:1.8px;text-transform:uppercase;cursor:pointer}
/* Chat feed */
.chat-feed{flex:1;overflow-y:auto;min-height:0;padding:4px 0 8px;display:flex;flex-direction:column;gap:2px;scroll-behavior:smooth}
.chat-feed::-webkit-scrollbar{width:2px}
.chat-feed::-webkit-scrollbar-track{background:transparent}
.chat-feed::-webkit-scrollbar-thumb{background:var(--border)}
.chat-row{display:flex;flex-direction:column;max-width:82%;margin:3px 0}
.chat-row.mine{align-self:flex-end;align-items:flex-end}
.chat-row.other{align-self:flex-start;align-items:flex-start}
.chat-meta{font-size:10px;color:var(--dim);margin-bottom:3px;display:flex;align-items:center;gap:6px}
.chat-meta-badge{width:16px;height:16px;flex-shrink:0}
.chat-bubble{padding:10px 13px;border-radius:16px;font-size:14px;line-height:1.5;word-break:break-word;max-width:100%}
.chat-row.other .chat-bubble{background:var(--bg3);border:0.5px solid var(--border);border-bottom-left-radius:4px;color:var(--text)}
.chat-row.mine .chat-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}
.chat-time{font-size:9px;color:var(--dim);margin-top:3px}
/* Input bar */
.chat-input-bar{display:flex;gap:8px;padding-top:10px;flex-shrink:0;border-top:0.5px solid var(--border)}
.chat-input{flex:1;padding:11px 14px;background:var(--bg2);border:0.5px solid var(--border);border-radius:22px;color:var(--text);font-size:14px;outline:none;transition:border-color .2s}
.chat-input:focus{border-color:var(--border2)}
.chat-send-btn{width:42px;height:42px;border-radius:50%;background:var(--accent);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:filter .2s}
.chat-send-btn:hover{filter:brightness(1.1)}
.chat-send-btn:active{transform:scale(.9)}
.bubble-sending{opacity:.55}
/* Le clavier iOS réduit visualViewport sans toujours recalculer svh.
   La navigation disparaît pendant la saisie et le fil conserve toute la place utile. */
html.keyboard-open .bnav{display:none}
html.keyboard-open .topbar{display:none}
html.keyboard-open,html.keyboard-open body{overflow:hidden;overscroll-behavior:none}
html.keyboard-open #screen-app{padding-bottom:0}
html.keyboard-open .views,html.keyboard-open .view.on{padding-bottom:0}
html.keyboard-open #v-msg.on{position:fixed;z-index:110;left:50%;top:calc(var(--visual-top,0px) + env(safe-area-inset-top));transform:translateX(-50%);width:100%;max-width:480px;height:calc(var(--visual-vh,100dvh) - env(safe-area-inset-top));min-height:0;padding:8px 16px 0;background:var(--bg);box-sizing:border-box}
html.keyboard-open .chat-input-bar{padding-bottom:max(8px,env(safe-area-inset-bottom))}

/* Confirmation spectaculaire, mais brève, des actions sociales. */
.social-celebration{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;pointer-events:none;background:radial-gradient(circle at center,rgba(232,76,13,.18),rgba(0,0,0,.72) 58%,rgba(0,0,0,.88));animation:socialFade .9s ease both}
.social-celebration-card{position:relative;min-width:230px;padding:32px 28px 26px;text-align:center;border:1px solid rgba(232,76,13,.55);border-radius:24px;background:linear-gradient(145deg,rgba(28,20,18,.98),rgba(12,12,14,.98));box-shadow:0 0 70px rgba(232,76,13,.3);animation:socialPop .8s cubic-bezier(.2,1.4,.3,1) both;overflow:hidden}
.social-celebration-card::before{content:'';position:absolute;inset:-70%;background:conic-gradient(from 0deg,transparent,rgba(255,120,40,.2),transparent 25%);animation:socialSpin 1.1s linear infinite}
.social-celebration-icon{position:relative;font-size:52px;line-height:1;margin-bottom:14px;filter:drop-shadow(0 0 16px rgba(245,105,35,.8));animation:socialIcon .65s ease-in-out both}
.social-celebration-title{position:relative;font-family:'Barlow Condensed',sans-serif;font-size:25px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:#fff}
.social-celebration-sub{position:relative;margin-top:7px;font-size:12px;color:var(--muted)}
@keyframes socialFade{0%{opacity:0}15%,75%{opacity:1}100%{opacity:0}}
@keyframes socialPop{0%{opacity:0;transform:scale(.55) rotate(-4deg)}55%{transform:scale(1.06) rotate(1deg)}100%{opacity:1;transform:scale(1)}}
@keyframes socialSpin{to{transform:rotate(360deg)}}
@keyframes socialIcon{0%{transform:scale(.4) rotate(-25deg)}65%{transform:scale(1.2) rotate(8deg)}100%{transform:scale(1) rotate(0)}}
@media (prefers-reduced-motion:reduce){.social-celebration,.social-celebration-card,.social-celebration-card::before,.social-celebration-icon{animation:none!important}.social-celebration{opacity:1}}
/* DM list */
.dm-item{display:flex;align-items:center;gap:12px;padding:15px 16px;background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;margin-bottom:10px;cursor:pointer;transition:border-color .2s}
.dm-item:hover{border-color:var(--border2)}
.dm-av{width:40px;height:40px;border-radius:50%;background:rgba(232,76,13,.18);border:1.5px solid var(--border2);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:var(--accent);font-family:'Barlow Condensed',sans-serif;flex-shrink:0}
.dm-info{flex:1;min-width:0}
.dm-name{font-size:14px;font-weight:600;color:var(--text)}
.dm-preview{font-size:12px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm-unread{width:18px;height:18px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;color:#fff;flex-shrink:0}
/* DM thread header */
.dm-thread-header{display:flex;align-items:center;gap:10px;padding-bottom:12px;margin-bottom:8px;border-bottom:0.5px solid var(--border);flex-shrink:0}
.dm-back-btn{background:none;border:none;color:var(--muted);cursor:pointer;display:flex;align-items:center;padding:4px;border-radius:8px;transition:color .2s}
.dm-back-btn:hover{color:var(--text)}
.dm-thread-name{font-family:'Barlow Condensed',sans-serif;font-size:16px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--text);flex:1}
.dm-thread-rank{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}
/* Nav badge */
.nitem{position:relative}
.nbadge{position:absolute;top:6px;right:calc(50% - 14px);width:7px;height:7px;border-radius:50%;background:var(--accent);border:1.5px solid var(--bg);display:none}
.nbadge.on{display:block}
.chat-empty{text-align:center;padding:30px 20px;color:var(--muted);font-size:12px;letter-spacing:1px;text-transform:uppercase;flex:1;display:flex;align-items:center;justify-content:center}

/* ── PROFIL PUBLIC ────────────────────── */
#screen-public{display:none;position:fixed;inset:0;z-index:600;background:var(--bg);overflow-y:auto}
#screen-public.show{display:block}
.pub-nav{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:0 18px;min-height:56px;background:rgba(10,10,11,.9);backdrop-filter:blur(14px);border-bottom:0.5px solid var(--border);z-index:1}
.pub-logo{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;letter-spacing:4px}
.pub-logo span{color:var(--accent)}
.pub-cta{padding:8px 18px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;background:var(--accent);color:#fff;border:none;cursor:pointer;clip-path:polygon(8px 0%,100% 0%,calc(100% - 8px) 100%,0% 100%)}
.pub-body{max-width:440px;margin:0 auto;padding:24px 18px calc(60px + env(safe-area-inset-bottom,0px))}
.pub-hero{text-align:center;padding:32px 20px 24px;background:var(--bg2);border:0.5px solid var(--border);border-radius:16px;margin-bottom:12px}
.pub-shield{width:90px;height:90px;margin:0 auto 16px}
.pub-name{font-size:26px;font-weight:800;color:var(--text);margin-bottom:4px}
.pub-disc{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.pub-rname{font-family:'Barlow Condensed',sans-serif;font-size:13px;letter-spacing:2px;text-transform:uppercase;font-weight:700;margin-bottom:12px}
.pub-pts{font-size:42px;font-weight:900;color:var(--text);line-height:1}
.pub-pts span{font-size:14px;font-weight:400;color:var(--muted)}
.pub-bar{max-width:200px;margin:14px auto 0}
.pub-barbg{height:4px;background:rgba(255,255,255,.07);border-radius:2px}
.pub-barfill{height:4px;border-radius:2px;transition:width .6s}
.pub-next{font-size:11px;color:var(--muted);margin-top:6px}
.pub-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}

/* ── HISTORIQUE RANGS ─────────────────── */
.rh-wrap{padding:14px 16px}
.rh-item{display:flex;align-items:flex-start;gap:12px;position:relative;padding-bottom:20px}
.rh-item:last-child{padding-bottom:0}
.rh-item:not(:last-child)::after{content:'';position:absolute;left:15px;top:32px;bottom:0;width:1px;background:var(--border)}
.rh-icon{width:32px;height:32px;flex-shrink:0;position:relative;z-index:1}
.rh-info{flex:1;padding-top:4px}
.rh-name{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase}
.rh-date{font-size:11px;color:var(--muted);margin-top:2px}
.rh-pts{font-size:11px;color:var(--dim);margin-top:1px}

/* ── NOTIF PROMPT ─────────────────────── */
.notif-prompt{display:flex;align-items:center;gap:12px;padding:13px 15px;background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;margin-bottom:10px;animation:fadeUp .4s .05s cubic-bezier(.22,1,.36,1) both}
.notif-prompt-txt{flex:1;font-size:12px;color:var(--muted);line-height:1.5}
.notif-prompt-txt b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:13px;letter-spacing:1px;color:var(--text);margin-bottom:2px}
.notif-allow{padding:8px 14px;background:var(--accent);color:#fff;border:none;border-radius:8px;font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;font-weight:800;flex-shrink:0}

/* ════════ FINITION V2 — élévation & matière (additif, garde l'ADN dark+orange) ════════ */
:root{
  --r-card:16px;--r-pill:999px;
  --shadow-card:0 12px 32px -14px rgba(0,0,0,.6);
  --shadow-accent:0 12px 36px -10px rgba(232,76,13,.34);
  --edge:inset 0 1px 0 rgba(255,255,255,.055);
  --surface:linear-gradient(180deg,#141418 0%,#0f0f12 100%);
}
/* Données = chiffres tabulaires précis (app de ranking) */
.lb-pts,.lb-pos,.lb-ptsl,.stat-num,.stat-n,.pts-big,.pts-label,.ses-pts,.rank-divs,.stat-l{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.lb-pts,.stat-num,.stat-n,.pts-big{letter-spacing:-.5px}
/* Cartes : profondeur, liseré haut, rayon unifié */
.add-card,.ses-list,.lb-item,.stat-box,.notif-prompt,.tool-card{
  background:var(--surface);border-radius:var(--r-card);
  box-shadow:var(--shadow-card),var(--edge);
}
.tool-card{transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s,border-color .2s}
.tool-card:active{transform:scale(.97)}
/* Leaderboard : finition + mise en avant "moi" */
.lb-item{transition:transform .2s,box-shadow .25s,border-color .25s}
.lb-item.me{box-shadow:var(--shadow-accent),inset 0 0 0 1px rgba(232,76,13,.4);
  background:linear-gradient(180deg,rgba(232,76,13,.10),rgba(232,76,13,.02)),var(--surface)}
/* CTA principal : profondeur au repos */
.sbtn{box-shadow:0 10px 24px -10px rgba(232,76,13,.5),var(--edge);border-radius:12px}
/* Verre raffiné : top bar + nav du bas */
.topbar{background:linear-gradient(180deg,rgba(8,8,9,.92),rgba(8,8,9,.68));backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%)}
.bnav{backdrop-filter:blur(26px) saturate(160%);-webkit-backdrop-filter:blur(26px) saturate(160%);box-shadow:0 -12px 40px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.06)}
/* Pills / onglets : rayon pill cohérent + ressort tactile */
.dtab,.lb-period-btn{border-radius:var(--r-pill);transition:transform .15s,background .2s,color .2s,border-color .2s}
.dtab:active,.lb-period-btn:active{transform:scale(.94)}
/* Barres de progression : reflet vivant */
@media (prefers-reduced-motion:no-preference){
  .lb-bar-fill,.prog-fill{position:relative;overflow:hidden}
  .lb-bar-fill::after,.prog-fill::after{content:'';position:absolute;inset:0;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);
    transform:translateX(-100%);animation:shimmerBar 2.6s ease-in-out infinite}
  @keyframes shimmerBar{0%{transform:translateX(-100%)}55%,100%{transform:translateX(220%)}}
}
/* ════ PHOTO DU JOUR ════
   Une bande horizontale de vignettes, comme des stories. La bande défile sur
   son axe, la page garde le sien. */
.dp-row{display:flex;gap:9px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;
  touch-action:pan-x;overscroll-behavior-x:contain}
.dp-row::-webkit-scrollbar{display:none}
.dp-card{flex:0 0 auto;width:74px;display:flex;flex-direction:column;align-items:center;gap:5px;
  padding:0;background:none;border:0;color:var(--text);font:inherit;cursor:pointer}
.dp-card img,.dp-card .dp-ph{width:66px;height:66px;border-radius:50%;object-fit:cover;
  border:2px solid rgba(232,76,13,.55);background:var(--surface);display:grid;place-items:center;font-size:20px}
.dp-card.add .dp-ph{border-style:dashed;border-color:var(--border2);color:var(--muted)}
.dp-card.mine img,.dp-card.mine .dp-ph{border-color:#22c55e}
.dp-name{font-size:10px;color:var(--muted);max-width:74px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dp-left{font-size:8.5px;color:var(--dim)}
.dp-hint{margin:8px 0 0;font-size:11px;line-height:1.45;color:var(--dim)}
.dp-view{position:fixed;inset:0;z-index:900;display:none;align-items:center;justify-content:center;
  background:rgba(0,0,0,.9);padding:16px}
.dp-view.show{display:flex}
.dp-view-box{width:100%;max-width:480px;max-height:90dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
.dp-view-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.dp-view-name{font-size:14px;font-weight:800;color:var(--text)}
.dp-view-left{font-size:10.5px;color:var(--muted)}
.dp-view-close{margin-left:auto;background:none;border:0;color:var(--muted);font-size:18px;cursor:pointer;padding:4px}
.dp-view-img img{width:100%;border-radius:16px;display:block}
.dp-view-img .dp-ph.big{width:100%;height:220px;border-radius:16px;display:grid;place-items:center;
  background:var(--surface);font-size:38px}
.dp-view-actions{display:flex;justify-content:flex-end;margin-top:12px}
/* ════ ADMIN · CRÉDIBILITÉ ════ */
.admin-tabs{display:flex;gap:6px;margin-bottom:10px}
.admin-tab{flex:1;padding:7px 8px;border-radius:9px;border:0.5px solid var(--border);background:none;
  color:var(--muted);font:inherit;font-size:11px;font-weight:700;cursor:pointer}
.admin-tab.on{background:rgba(232,76,13,.16);border-color:rgba(232,76,13,.42);color:var(--text)}
/* ── ADMIN · SOURCE DU PRO ──
   Trois provenances possibles ; la couleur les distingue au premier coup
   d'œil, pour ne jamais confondre un cadeau avec un abonnement payant. */
.admin-pro{margin-top:5px;font-size:10px;font-weight:700;letter-spacing:.4px}
.admin-pro.apple,.admin-pro.stripe{color:#9ee6b4}
.admin-pro.offert{color:#ffcf48}
.admin-pro.none{color:var(--dim)}
.admin-act.pro-on{color:#ffcf48;border-color:rgba(255,207,72,.42);background:rgba(255,207,72,.14)}
.admin-act.pro-off{color:var(--muted)}
.admin-act:disabled{opacity:.45;cursor:default}
.admin-cred{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.cred-score{min-width:30px;padding:2px 7px;border-radius:var(--r-pill);font-size:11px;font-weight:800;text-align:center}
.cred-score.high{color:#ffb4a1;background:rgba(232,76,13,.18);border:0.5px solid rgba(232,76,13,.4)}
.cred-score.mid{color:#ffcf48;background:rgba(255,207,72,.14);border:0.5px solid rgba(255,207,72,.36)}
.cred-score.low{color:var(--muted);background:rgba(255,255,255,.05);border:0.5px solid var(--border)}
.cred-reasons{margin:6px 0 0;padding-left:16px}
.cred-reasons li{font-size:11px;line-height:1.5;color:var(--muted)}
/* Une file en attente doit se voir sans ouvrir l'onglet : un contenu
   signalé a 24 h pour être traité, pas le temps qu'on y pense. */
.admin-tab-dot{display:inline-block;min-width:15px;padding:0 4px;margin-left:5px;border-radius:var(--r-pill);
  background:#e84c0d;color:#fff;font-size:9px;line-height:15px;font-weight:800;vertical-align:middle}
.mod-photo{display:flex;gap:10px;padding:9px 0;border-bottom:0.5px solid var(--border)}
.mod-photo:last-child{border-bottom:0}
.mod-thumb{width:66px;height:66px;flex:none;border-radius:10px;overflow:hidden;background:var(--surface);
  display:grid;place-items:center;font-size:20px}
.mod-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.mod-body{flex:1;min-width:0}
.mod-meta{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.5}
.mod-reasons{margin:4px 0 0;font-size:11px;color:var(--muted);font-style:italic;
  overflow:hidden;text-overflow:ellipsis}
.mod-acts{display:flex;gap:6px;margin-top:7px}
.mod-act{flex:1;padding:6px;border-radius:8px;font:inherit;font-size:11px;font-weight:700;cursor:pointer;
  border:0.5px solid var(--border);background:none;color:var(--muted)}
.mod-act.keep{color:#9ee6b4;border-color:rgba(60,200,120,.4);background:rgba(60,200,120,.12)}
.mod-act.drop{color:#ffb4a1;border-color:rgba(232,76,13,.42);background:rgba(232,76,13,.16)}
.mod-act:disabled{opacity:.5;cursor:default}
/* ════ SOCIAL ════
   Refonte alignée sur l'écran Amis : plus de gros pavés encadrés, une ligne
   de titre, trois chiffres tapables, des sections séparées par un simple
   filet. */
.soc-head{display:flex;align-items:baseline;gap:10px;padding:2px 0 14px}
.soc-title{margin:0;font-family:'Barlow Condensed',sans-serif;font-size:26px;font-weight:900;
  letter-spacing:.5px;color:var(--text)}
.soc-link{margin-left:auto;background:none;border:0;color:var(--accent);font-family:'Barlow Condensed',sans-serif;
  font-size:12px;font-weight:900;letter-spacing:1px;text-transform:uppercase;cursor:pointer;padding:4px 0}
.soc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:20px}
.soc-stat{padding:11px 8px;border-radius:13px;text-align:center;border:0.5px solid var(--border);
  background:var(--surface);color:var(--text);font:inherit}
button.soc-stat{cursor:pointer}
button.soc-stat:active{transform:scale(.97)}
.soc-stat b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:20px;font-weight:900;line-height:1}
.soc-stat span{display:block;margin-top:5px;font-size:8.5px;font-weight:800;letter-spacing:1.1px;
  text-transform:uppercase;color:var(--muted)}
.soc-section{margin-bottom:20px}
.soc-section-title{margin:0 0 8px;font-size:10px;font-weight:800;letter-spacing:1.4px;
  text-transform:uppercase;color:var(--dim)}
/* Les contenus injectés par le JS gardent leurs propres styles ; on retire
   seulement l'encadrement qui alourdissait chaque bloc. */
/* L'état vide générique occupe une demi-page, centré et en capitales. Dans
   ces sections courtes, il devient une simple ligne. */
.soc-section .chat-empty{display:block;flex:none;padding:10px 2px;text-align:left;
  text-transform:none;letter-spacing:0;font-size:12px;color:var(--muted)}
.soc-section .chat-empty::before,.soc-section .chat-empty::after{display:none}
button.soc-stat{position:relative}
.soc-dot{position:absolute;top:7px;right:7px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;
  background:var(--accent);color:#fff;font-size:9.5px;font-weight:800;font-style:normal;line-height:17px;text-align:center}
/* Les lignes injectées gardaient chacune leur cadre : quatre sections
   encadrées empilées, c'est ce qui alourdissait l'écran. Un simple filet
   suffit, comme sur l'écran Amis. */
#duels-section > div,#dm-list-content > div:not(.chat-empty){
  background:none!important;border:0!important;border-top:0.5px solid var(--border)!important;
  border-radius:0!important;margin:0!important;padding:10px 2px!important}
#duels-section > div:first-child,#dm-list-content > div:not(.chat-empty):first-child{border-top:0!important}
/* ════ AMIS ════
   Sombre, compact, peu de bordures : une ligne par athlète, deux actions
   visibles au maximum, le reste dans la feuille d'options. */
.fr-screen{display:flex;flex-direction:column;gap:18px;padding:0 16px}
.fr-title-count{flex-shrink:0}
.fr-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fr-head{display:flex;align-items:center;gap:10px;padding:2px 0 0}
.fr-back{background:none;border:0;color:var(--muted);font-size:26px;line-height:1;padding:0 6px 4px 0;cursor:pointer}
.fr-title{font-family:'Barlow Condensed',sans-serif;font-size:24px;font-weight:900;letter-spacing:.5px;color:var(--text);margin:0}
.fr-title-count{margin-left:auto;font-size:11px;color:var(--muted)}
.fr-title-count b{color:var(--text);font-weight:800}
.fr-section{display:flex;flex-direction:column;gap:8px}
.fr-section-title{display:flex;align-items:center;gap:8px;margin:0;font-size:10px;font-weight:800;
  letter-spacing:1.4px;text-transform:uppercase;color:var(--dim)}
.fr-badge{min-width:18px;padding:1px 6px;border-radius:var(--r-pill);background:var(--accent);color:#fff;
  font-size:10px;font-weight:800;text-align:center}
/* Barre de filtre collante : elle s'arrête sous la barre du haut et ne
   recouvre jamais le premier résultat (scroll-margin sur la section). */
.fr-sticky{position:sticky;top:56px;z-index:3;display:flex;flex-direction:column;gap:8px;
  margin:0 -16px;padding:8px 16px;background:linear-gradient(180deg,var(--bg) 82%,rgba(10,10,11,.86))}
#friends-list-section,#friends-search-section{scroll-margin-top:76px}
.fr-input{width:100%;padding:10px 12px;border-radius:11px;border:0.5px solid var(--border);
  background:var(--surface);color:var(--text);font:inherit;font-size:13px}
.fr-input:focus{outline:none;border-color:rgba(232,76,13,.5)}
.fr-search-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fr-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;touch-action:pan-x;overscroll-behavior-x:contain}
.fr-chips::-webkit-scrollbar{display:none}
.fr-chip{flex:0 0 auto;padding:6px 11px;border-radius:var(--r-pill);border:0.5px solid var(--border);
  background:none;color:var(--muted);font:inherit;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap}
.fr-chip.on{background:rgba(232,76,13,.16);border-color:rgba(232,76,13,.42);color:var(--text)}
/* Ligne d'athlète : un seul séparateur, pas de carte encadrée. */
.fr-row,.fr-act{display:flex;align-items:center;gap:10px;padding:9px 2px;border-top:0.5px solid var(--border)}
.fr-row:first-child,.fr-act:first-child{border-top:0}
.fr-open{flex:1;min-width:0;display:flex;align-items:center;gap:10px;background:none;border:0;
  padding:0;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.fr-av{position:relative;flex-shrink:0;display:block}
.fr-av.live::after{content:'';position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:50%;
  background:#22c55e;border:2px solid var(--bg)}
.fr-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.fr-name{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:750;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fr-star{color:#ffcf48;font-size:11px}
.fr-rank{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px}
.fr-meta{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fr-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.fr-btn{padding:7px 11px;border-radius:9px;border:0.5px solid var(--border);background:none;color:var(--text);
  font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:.8px;
  text-transform:uppercase;cursor:pointer;white-space:nowrap}
.fr-btn.accent,.fr-btn.accept{background:var(--accent);border-color:transparent;color:#fff}
.fr-btn[disabled]{opacity:.55;cursor:default}
.fr-btn:active{transform:scale(.97)}
.fr-cheer,.fr-more,.fr-msg{width:34px;height:34px;flex-shrink:0;border-radius:10px;border:0.5px solid var(--border);
  background:none;color:var(--muted);font-size:14px;line-height:1;cursor:pointer}
.fr-msg{color:var(--accent);border-color:rgba(232,76,13,.35);background:rgba(232,76,13,.08)}
.fr-cheer.done{color:#84e6a3;border-color:rgba(34,197,94,.4);background:rgba(34,197,94,.12)}
.fr-empty{padding:14px 2px;display:flex;flex-direction:column;align-items:flex-start;gap:9px}
.fr-empty p{margin:0;font-size:12px;color:var(--muted);line-height:1.45}
.fr-hint{margin:2px 0 0;font-size:11.5px;color:var(--dim)}
/* Feuille d'options : bornée en dvh, dégagée de l'encoche, défilement propre. */
.fr-sheet-overlay{position:fixed;inset:0;z-index:800;display:none;align-items:flex-end;justify-content:center;
  background:rgba(0,0,0,.62)}
.fr-sheet-overlay.show{display:flex}
.fr-sheet{width:100%;max-width:480px;max-height:82dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;background:var(--bg2);border:0.5px solid var(--border2);border-radius:20px 20px 0 0;
  padding:14px 16px calc(20px + env(safe-area-inset-bottom,0px));
  animation:sheetUp .26s cubic-bezier(.22,1,.36,1) both}
.fr-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.fr-sheet-title{font-size:14px;font-weight:800;color:var(--text)}
.fr-sheet-close{background:none;border:0;color:var(--muted);font-size:16px;cursor:pointer;padding:4px}
.fr-sheet-item{display:block;width:100%;padding:12px 4px;border:0;border-top:0.5px solid var(--border);
  background:none;color:var(--text);font:inherit;font-size:13px;text-align:left;cursor:pointer}
.fr-sheet-item.danger{color:#ffb4a1}
/* Écrans étroits : la grille ville/salle passe sur une colonne. */
@media (max-width:359px){
  .fr-search-grid{grid-template-columns:1fr}
  .fr-btn{padding:7px 9px;font-size:10px}
}
/* ════ STATUT PRO (profil) ════ */
.pro-status{margin:0 0 14px;padding:14px 15px;border-radius:var(--r-card);
  background:var(--surface);border:0.5px solid var(--border);box-shadow:var(--shadow-card),var(--edge)}
.pro-status[data-state="active"]{border-color:rgba(34,197,94,.3)}
.pro-status[data-state="canceled"]{border-color:rgba(255,207,72,.34)}
.pro-status[data-state="expired"]{border-color:rgba(232,76,13,.3)}
.pro-status-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.pro-status-title{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1.4px;color:var(--dim)}
.pro-status-pill{padding:2px 8px;border-radius:var(--r-pill);font-size:9.5px;font-weight:800;
  text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}
.pro-status-active{color:#84e6a3;background:rgba(34,197,94,.14);border:0.5px solid rgba(34,197,94,.35)}
.pro-status-canceled{color:#ffcf48;background:rgba(255,207,72,.14);border:0.5px solid rgba(255,207,72,.35)}
.pro-status-expired{color:#ffb4a1;background:rgba(232,76,13,.14);border:0.5px solid rgba(232,76,13,.35)}
.pro-status-none{color:var(--muted);background:rgba(255,255,255,.05);border:0.5px solid var(--border)}
.pro-status-detail{font-size:12px;line-height:1.5;color:var(--muted)}
.pro-status-rows{margin-top:10px;border-top:0.5px solid var(--border);padding-top:8px}
.pro-status-row{display:flex;justify-content:space-between;gap:10px;padding:3px 0;font-size:11.5px;color:var(--dim)}
.pro-status-row b{color:var(--text);font-weight:700}
.pro-status-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.pro-status-btn{flex:1 1 auto;min-width:140px;padding:10px 12px;border-radius:10px;cursor:pointer;
  font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;
  color:var(--text);background:rgba(255,255,255,.06);border:0.5px solid var(--border)}
.pro-status-btn.ghost{background:none}
.pro-status-btn.accent{background:linear-gradient(180deg,#f2611a,var(--accent));border-color:transparent;color:#fff}
.pro-status-btn:active{transform:scale(.98)}
.pro-status-refresh{display:block;width:100%;margin-top:10px;padding:6px;background:none;border:0;
  font:inherit;font-size:11px;color:var(--dim);cursor:pointer;text-decoration:underline}
/* ════ LOGGER RAPIDE : reprise, objectif, écran final ════ */
.repeat-last{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 12px;padding:13px 15px;text-align:left;
  border-radius:var(--r-card);border:0.5px solid rgba(232,76,13,.35);cursor:pointer;
  background:linear-gradient(120deg,rgba(232,76,13,.16),rgba(232,76,13,.03)),var(--surface);
  box-shadow:var(--shadow-card),var(--edge);color:var(--text);font:inherit}
.repeat-last:active{transform:scale(.985)}
.repeat-last-ic{flex-shrink:0;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;
  background:rgba(232,76,13,.18);color:var(--accent);font-size:17px;font-weight:700}
.repeat-last-copy{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.repeat-last-copy b{font-size:13.5px;font-weight:800;letter-spacing:.2px}
.repeat-last-copy small{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.repeat-last-go{flex-shrink:0;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:var(--accent)}
.sx-next{display:flex;align-items:center;gap:8px;width:100%;margin:0 0 10px;padding:9px 12px;
  border-radius:var(--r-pill);border:0.5px solid rgba(34,197,94,.32);background:rgba(34,197,94,.09);
  color:var(--text);font:inherit;cursor:pointer;text-align:left}
.sx-next:active{transform:scale(.98)}
.sx-next-lbl{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:#84e6a3}
.sx-next b{font-size:12.5px;font-weight:800}
.sx-next em{margin-left:auto;font-style:normal;font-size:10px;font-weight:800;color:#84e6a3;
  text-transform:uppercase;letter-spacing:.6px}
.sx-last.applied em{color:#84e6a3}
.summary-box{text-align:center}
.summary-kicker{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1.6px;color:var(--accent)}
.summary-points{margin:10px 0 16px}
.summary-points b{display:block;font-size:52px;line-height:1;font-weight:800;color:var(--text)}
.summary-points span{display:block;margin-top:4px;font-size:10.5px;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted)}
.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.summary-stat{padding:10px 4px;border-radius:12px;background:rgba(255,255,255,.04);border:0.5px solid var(--border)}
.summary-stat b{display:block;font-size:19px;font-weight:800;color:var(--text)}
.summary-stat span{display:block;margin-top:2px;font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--dim)}
.summary-records{margin-bottom:12px;padding:12px;border-radius:12px;text-align:left;
  background:rgba(255,207,72,.08);border:0.5px solid rgba(255,207,72,.28)}
.summary-rec-title{font-size:12px;font-weight:800;color:#ffcf48;margin-bottom:6px}
.summary-rec-title.muted{color:var(--muted);margin-bottom:4px}
.summary-rec-empty{font-size:10.5px;line-height:1.45;color:var(--dim)}
.summary-rec-row{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;padding:3px 0;color:var(--muted)}
.summary-rec-row b{color:var(--text)}
.summary-rank{margin-bottom:14px;font-size:12px;color:var(--muted)}
.summary-close-link{display:block;width:100%;margin-top:10px;padding:8px;background:none;border:0;
  font:inherit;font-size:11.5px;color:var(--dim);cursor:pointer}
/* ════ CRÉDIBILITÉ : saison, défi hebdo, badges ════ */
.lb-season{margin:2px 0 8px;padding:12px 14px;border-radius:var(--r-card);border:0.5px solid rgba(255,207,72,.28);
  background:linear-gradient(135deg,rgba(255,207,72,.12),rgba(232,76,13,.06)),var(--surface);box-shadow:var(--shadow-card),var(--edge)}
.lb-season-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.lb-season-title{font-size:13px;font-weight:800;letter-spacing:.2px;color:var(--text)}
.lb-season-left{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#ffcf48}
.lb-season-bar{height:4px;border-radius:2px;background:rgba(255,255,255,.08);overflow:hidden;margin:9px 0 7px}
.lb-season-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,#e84c0d,#ffcf48)}
.lb-season-sub{font-size:10.5px;line-height:1.45;color:var(--muted)}
.lb-season-link{background:none;border:0;padding:0;font:inherit;color:#ffcf48;font-weight:700;cursor:pointer;text-decoration:underline}
.lb-chal{margin:0 0 12px;padding:12px 14px;border-radius:var(--r-card);border:0.5px solid var(--border);
  background:var(--surface);box-shadow:var(--shadow-card),var(--edge)}
.lb-chal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.lb-chal-tag{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;color:var(--accent)}
.lb-chal-left{font-size:9.5px;font-weight:700;color:var(--dim)}
.lb-chal-title{font-size:13px;font-weight:800;color:var(--text)}
.lb-chal-desc{font-size:11px;color:var(--muted);margin-top:2px}
.lb-chal-bar{height:5px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden;margin:9px 0 6px}
.lb-chal-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#e84c0d,#ff8a3d);transition:width .4s ease}
.lb-chal-fill.done{background:linear-gradient(90deg,#22c55e,#84e6a3)}
.lb-chal-prog{font-size:10.5px;font-weight:700;color:var(--muted)}
.verif-badge{display:inline-flex;align-items:center;gap:3px;margin-left:5px;padding:1px 5px;border-radius:var(--r-pill);
  font-size:8.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;vertical-align:1px;
  color:#84e6a3;background:rgba(34,197,94,.14);border:0.5px solid rgba(34,197,94,.35)}
.flag-badge{display:inline-flex;align-items:center;margin-left:5px;padding:1px 5px;border-radius:var(--r-pill);
  font-size:8.5px;font-weight:800;vertical-align:1px;
  color:#ffb4a1;background:rgba(232,76,13,.14);border:0.5px solid rgba(232,76,13,.35)}
.podium-verif{margin-top:3px}
.podium-verif .verif-badge,.podium-verif .flag-badge{margin-left:0}
/* ════ PODIUM TOP-3 (classement) ════ */
.lb-podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:8px;margin:4px 0 18px;padding:14px 4px 0}
.podium-spot{display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0;background:var(--surface);border:0.5px solid var(--border);border-radius:var(--r-card);padding:14px 8px 12px;box-shadow:var(--shadow-card),var(--edge);position:relative;animation:fadeUp .4s cubic-bezier(.22,1,.36,1) both}
.podium-spot:nth-child(1){animation-delay:.08s}.podium-spot:nth-child(2){animation-delay:0s}.podium-spot:nth-child(3){animation-delay:.16s}
.podium-1{padding-top:22px;background:linear-gradient(180deg,rgba(255,205,60,.08),transparent 55%),var(--surface);box-shadow:0 0 0 1px rgba(255,215,0,.4),0 10px 34px rgba(255,195,0,.17)}
.podium-1::before{content:'';position:absolute;top:-46%;left:50%;transform:translateX(-50%);width:165%;height:105%;background:radial-gradient(ellipse 44% 42% at 50% 0%,rgba(255,205,70,.22),transparent 66%);pointer-events:none;z-index:0}
.podium-1::after{content:'';position:absolute;inset:0;border-radius:var(--r-card);background:linear-gradient(115deg,transparent 44%,rgba(255,230,160,.16) 50%,transparent 56%);background-size:260% 100%;pointer-events:none;z-index:1;animation:podiumShine 3.8s ease-in-out infinite}
@keyframes podiumShine{0%{background-position:150% 0}55%,100%{background-position:-130% 0}}
@media (prefers-reduced-motion:reduce){.podium-1::after{animation:none}}
.podium-rank{position:absolute;top:-11px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:13px;color:#0a0a0b;box-shadow:0 2px 8px rgba(0,0,0,.5)}
/* Portraits de podium : le top 3 doit montrer l'athlète avant son badge de rang. */
.podium-avatar{position:relative;z-index:2;width:76px;height:92px;margin:4px 0 9px;display:grid;place-items:center;isolation:isolate}
.podium-avatar::before{content:'';position:absolute;inset:8px 3px 2px;border-radius:24px;background:radial-gradient(circle at 50% 32%,rgba(255,255,255,.16),rgba(255,255,255,.025) 56%,transparent 72%);box-shadow:0 12px 26px rgba(0,0,0,.45);z-index:-1}
.podium-avatar .lb-mini-av{width:68px;height:84px;border-radius:21px;overflow:visible;border:1.5px solid rgba(255,255,255,.24);background:radial-gradient(ellipse 82% 92% at 50% 38%,#2a150b 0%,#0c0805 72%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06),0 9px 22px rgba(0,0,0,.5)}
.podium-avatar .lb-mini-av img{width:68px;height:84px;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 7px 10px rgba(0,0,0,.6))}
.podium-avatar-1{width:92px;height:112px;margin-top:0}
.podium-avatar-1 .lb-mini-av{width:84px;height:104px;border-radius:25px;border-color:rgba(255,215,0,.7);box-shadow:inset 0 0 0 1px rgba(255,245,190,.16),0 0 0 2px rgba(255,215,0,.12),0 13px 30px rgba(255,190,0,.18)}
.podium-avatar-1 .lb-mini-av img{width:84px;height:104px}
.podium-avatar-2 .lb-mini-av{border-color:rgba(210,220,235,.62)}
.podium-avatar-3 .lb-mini-av{border-color:rgba(205,127,50,.68)}
@media(max-width:360px){
  .lb-podium{gap:5px;padding-left:0;padding-right:0}
  .podium-avatar{width:66px;height:82px}
  .podium-avatar .lb-mini-av,.podium-avatar .lb-mini-av img{width:60px;height:74px}
  .podium-avatar-1{width:78px;height:98px}
  .podium-avatar-1 .lb-mini-av,.podium-avatar-1 .lb-mini-av img{width:72px;height:90px}
}
.podium-badge{width:54px;height:54px;margin-bottom:6px;display:grid;place-items:center;padding:2px;border-radius:15px;background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.025));box-shadow:inset 0 0 0 0.5px rgba(255,255,255,.12)}
.podium-badge svg{width:100%;height:100%;display:block;overflow:visible}
.podium-1 .podium-badge{width:70px;height:70px;padding:3px;border-radius:18px}
.podium-name{font-size:12px;font-weight:700;color:var(--text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}
.podium-rname{font-size:8px;letter-spacing:1.2px;text-transform:uppercase;margin-top:2px;font-weight:700}
.podium-pts{font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:21px;letter-spacing:-.5px;font-variant-numeric:tabular-nums;margin-top:4px;line-height:1}
.podium-1 .podium-pts{font-size:27px}
.podium-ptsl{font-size:8px;letter-spacing:1.5px;text-transform:uppercase;color:var(--dim);font-weight:700}
.podium-spot.me{box-shadow:var(--shadow-accent),inset 0 0 0 1px rgba(232,76,13,.5)}
/* ════ OUTILS V2 ════ */
.tools-group-lbl{font-size:9px;letter-spacing:2.5px;text-transform:uppercase;color:var(--muted);font-weight:700;padding:0;margin:6px 0 10px}
.tools-grid{padding:0}
.tools-grid>.tool-card{background:linear-gradient(145deg,rgba(25,25,29,.96),rgba(16,16,19,.96));border-radius:16px;box-shadow:0 10px 26px rgba(0,0,0,.18)}
.tools-grid+.tools-group-lbl{margin-top:18px}
.theme-grid{grid-template-columns:repeat(2,1fr)}
/* Protéines — anneau */
.pring-wrap{display:flex;justify-content:center;padding:6px 0 20px}
.pring{position:relative;width:164px;height:164px}
.pring svg{transform:rotate(-90deg)}
.pring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pring-num{font-family:'Barlow Condensed',sans-serif;font-size:48px;font-weight:900;line-height:.85;font-variant-numeric:tabular-nums;color:var(--text)}
.pring-goal{font-size:11px;color:var(--muted);margin-top:3px;letter-spacing:.5px}
.pring-pct{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--accent);font-weight:800;margin-top:4px}
/* Protéines — 7 jours */
.pweek{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:2px 0 20px;height:60px}
.pweek-col{display:flex;flex-direction:column;align-items:center;gap:5px}
.pweek-bar{width:100%;flex:1;background:var(--bg3);border-radius:5px;display:flex;align-items:flex-end;overflow:hidden}
.pweek-bar i{display:block;width:100%;background:linear-gradient(180deg,#ff7a3d,#e8500a);border-radius:5px;min-height:3px}
.pweek-d{font-size:8px;color:var(--dim);letter-spacing:.5px}
.pweek-col.today .pweek-d{color:var(--accent);font-weight:800}
.pweek-col.today .pweek-bar{outline:1px solid rgba(232,76,13,.4)}
/* Mesures — sparkline */
.mes-spark{background:var(--bg3);border-radius:12px;padding:14px 12px 8px;margin-bottom:16px;box-shadow:var(--edge)}
.mes-chip{display:inline-flex;align-items:center;font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;font-variant-numeric:tabular-nums}
.mes-chip.up{background:rgba(239,68,68,.14);color:#ef4444}.mes-chip.dn{background:rgba(34,197,94,.16);color:#22c55e}.mes-chip.flat{background:var(--bg3);color:var(--muted)}
/* cohérence : prise (+) = rouge, perte (-) = vert, partout */
.mes-diff.up{background:rgba(239,68,68,.12);color:#ef4444}.mes-diff.dn{background:rgba(34,197,94,.14);color:#22c55e}.mes-diff.flat{background:var(--bg3);color:var(--muted)}
/* Calendrier — stats */
.cal-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}
.cal-stat{background:var(--bg3);border-radius:12px;padding:13px 6px;text-align:center;box-shadow:var(--edge)}
.cal-stat-n{font-family:'Barlow Condensed',sans-serif;font-size:27px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}
.cal-stat-l{font-size:8px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-top:4px;font-weight:700}
.cal-legend{display:flex;align-items:center;gap:5px;justify-content:flex-end;font-size:9px;color:var(--dim);letter-spacing:1px;text-transform:uppercase;margin-top:2px}
.cal-legend i{width:11px;height:11px;border-radius:3px;display:inline-block}
/* Thème — aperçu */
.theme-prev{height:50px;border-radius:9px;margin-bottom:8px;padding:8px;display:flex;flex-direction:column;gap:5px;overflow:hidden}
.theme-prev .tp-bar{height:5px;width:55%;border-radius:99px}
.theme-prev .tp-row{height:9px;border-radius:3px}
.theme-prev .tp-dot{height:7px;width:20px;border-radius:99px;align-self:flex-end;margin-top:auto}
.theme-opt{transition:transform .15s,border-color .2s}.theme-opt:active{transform:scale(.96)}
/* ════ SÉANCES TYPES (modèles) V2 ════ */
.tpl-section{margin-bottom:14px}
.tpl-section-head{align-items:flex-end}
.tpl-section-title{font-size:11px}
.tpl-new-btn{background:rgba(232,76,13,.12);border:0.5px solid rgba(232,76,13,.35);color:var(--accent);border-radius:99px;padding:6px 13px}
.tpl-new-btn:hover{background:rgba(232,76,13,.2);color:var(--accent)}
.tpl-card{width:auto;min-width:0;background:var(--surface);border-radius:var(--r-card);padding:11px 11px 10px;box-shadow:var(--shadow-card),var(--edge);border:0.5px solid var(--border);overflow:hidden}
.tpl-card:hover{border-color:rgba(232,76,13,.4);transform:translateY(-2px)}
.tpl-card-name{font-size:15px;margin-bottom:4px}
/* Compteur et dernière utilisation partagent une ligne : deux lignes de méta
   pour une carte demi-largeur, c'était 22 px de bruit par modèle. */
.tpl-card-meta2{display:flex;align-items:center;gap:6px;margin-bottom:6px;white-space:nowrap;overflow:hidden}
.tpl-card-count{font-size:9px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:0;flex:0 0 auto}
.tpl-card-dur{font-size:9px;letter-spacing:1.2px;text-transform:uppercase;color:var(--dim);font-weight:700;flex:0 0 auto}
.tpl-card-meta2 .tpl-card-dur::before{content:'·';margin-right:6px;color:var(--border2)}
.tpl-card-meta2 .tpl-card-last{margin-bottom:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:right}
.tpl-card-exs{font-size:10.5px;color:var(--muted);line-height:1.45;margin-bottom:8px;min-height:0}
.tpl-card-exs span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tpl-card-last{font-size:9px;color:var(--dim);margin-bottom:11px}
.tpl-card-start{display:flex;align-items:center;justify-content:center;gap:6px;border-radius:9px;padding:7px;box-shadow:0 6px 16px -8px rgba(232,76,13,.6)}
.tpl-empty2{background:var(--surface);border:0.5px dashed var(--border2);border-radius:var(--r-card);padding:18px 16px;display:flex;gap:13px;align-items:center;box-shadow:var(--edge);cursor:pointer;transition:border-color .2s}
.tpl-empty2:hover{border-color:rgba(232,76,13,.4)}
.tpl-empty2-ic{width:44px;height:44px;border-radius:12px;background:rgba(232,76,13,.12);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tpl-empty2-txt{flex:1;min-width:0}
.tpl-empty2-txt b{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:800;letter-spacing:.5px;color:var(--text);display:block;margin-bottom:3px}
.tpl-empty2-txt span{font-size:11px;color:var(--muted);line-height:1.5}
/* Création — lignes en mini-cartes */
.tpl-create-row{background:var(--bg3);border:0.5px solid var(--border);border-radius:11px;padding:9px 10px;margin-bottom:7px;box-shadow:var(--edge);animation:fadeUp .25s cubic-bezier(.22,1,.36,1) both}
.tpl-create-row-top{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.tpl-create-row-tools{display:flex;align-items:center;gap:2px;flex:0 0 auto}
.tpl-create-move{position:relative;width:34px;height:38px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--dim);font-size:14px;line-height:1;cursor:pointer;border-radius:8px}
.tpl-create-move:disabled{opacity:.22;cursor:default}
/* Pas de cible étendue via ::after : Chrome limite le test de survol
   d'un <button> à sa border-box. La taille réelle est la seule qui compte. */

.tpl-create-move:not(:disabled):active{transform:scale(.88);color:var(--text)}
.tpl-create-notetog{flex:0 0 auto;min-width:44px;height:38px;padding:0 9px;border-radius:9px;border:0.5px solid var(--border2);background:none;color:var(--dim);font-family:'Barlow',sans-serif;font-size:11px;letter-spacing:.4px;cursor:pointer;align-self:flex-start}
.tpl-create-notetog.on{color:var(--accent);border-color:rgba(232,76,13,.4)}
.tpl-create-notetog:active{transform:scale(.94)}
.tpl-row-out{animation:moFadeOut var(--mo-base) var(--mo-in) forwards;pointer-events:none}
.tpl-row-moved{animation:moConfirm var(--mo-quick) var(--mo-out)}
.tpl-create-sel{flex:1;padding:9px 10px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:9px;color:var(--text);font-size:13px;outline:none;-webkit-appearance:none;min-width:0}
/* Le nom d'exercice ouvre le sélecteur de « Commencer une séance ». Le bouton
   reprend l'allure du champ, avec un chevron qui pivote à l'ouverture. */
.tpl-ex-pick{display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer;font-family:inherit;transition:border-color var(--mo-quick,.16s) ease}
.tpl-ex-pick:hover,.tpl-ex-pick.open{border-color:rgba(232,76,13,.5)}
.tpl-ex-pick-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tpl-ex-pick-chev{flex-shrink:0;color:var(--dim);transition:transform .2s ease}
.tpl-ex-pick.open .tpl-ex-pick-chev{transform:rotate(180deg)}
/* Le panneau se déroule dans la ligne (il pousse la suite vers le bas), comme
   le panneau inline du logger. */
.tpl-ex-panel{margin:0 0 9px}
.tpl-create-row-nums{display:flex;gap:7px;align-items:flex-start}
.tpl-create-row-nums>div{flex:1}
.tpl-create-row-nums .tpl-mini-in{width:100%;padding:7px 6px;font-size:16px}
.routine-builder-hero{margin:-4px 0 12px;padding:0 0 11px;background:none;border:none;border-bottom:0.5px solid var(--border);border-radius:0;box-shadow:none}
.routine-builder-kicker{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:var(--accent);margin-bottom:5px}
.routine-builder-hero b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:21px;line-height:1;font-weight:900;letter-spacing:.7px;color:var(--text);margin-bottom:7px}
.routine-builder-hero span{display:block;font-size:12px;line-height:1.45;color:var(--muted)}
.routine-builder-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:12px}
.routine-builder-step{padding:8px 7px;border-radius:10px;background:rgba(255,255,255,.055);border:0.5px solid rgba(255,255,255,.08);font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;font-family:'Barlow Condensed',sans-serif;font-weight:800;text-align:center}
.tpl-name-row{display:grid;grid-template-columns:1fr;gap:8px;margin-bottom:12px}
.tpl-name-chips{display:flex;gap:7px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.tpl-name-chips::-webkit-scrollbar{display:none}
.tpl-name-chip{flex:0 0 auto;border:0.5px solid var(--border2);background:rgba(255,255,255,.05);color:var(--muted);border-radius:999px;padding:7px 10px;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase}
.tpl-builder-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;background:none;border:none;border-radius:0;padding:2px 2px 8px;margin:6px 0 8px;color:var(--muted);font-size:12px}
.tpl-builder-summary strong{font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:900;color:var(--text);letter-spacing:.5px}
.tpl-builder-empty{border:0.5px dashed var(--border2);border-radius:12px;padding:14px 12px;text-align:center;color:var(--muted);font-size:12px;line-height:1.45;margin-bottom:10px;background:rgba(232,76,13,.055)}
.tpl-create-row-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.tpl-create-index{width:24px;height:24px;border-radius:7px;background:rgba(255,255,255,.06);border:none;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:12px;font-family:'Barlow Condensed',sans-serif;font-weight:900;letter-spacing:.5px;flex-shrink:0}
.tpl-create-label{font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1.8px;text-transform:uppercase;color:var(--dim);margin:0 0 4px 2px}
.tpl-create-note{width:100%;box-sizing:border-box;margin-top:7px;min-height:42px;padding:8px 10px;animation:moRise var(--mo-base) var(--mo-out);background:var(--bg2);border:0.5px solid var(--border2);border-radius:10px;color:var(--text);font-size:12px;line-height:1.35;outline:none;resize:vertical}
.tpl-create-note::placeholder{color:var(--dim)}
.tpl-save-note{font-size:11px;color:var(--dim);text-align:center;margin:9px 0 0;line-height:1.4}
/* Lancement — exercice mini-cartes */
.tpl-ex-card{background:var(--bg3);border:0.5px solid var(--border);border-radius:12px;padding:10px 11px;margin-bottom:8px;box-shadow:var(--edge);animation:fadeUp .25s cubic-bezier(.22,1,.36,1) both}
.tpl-ex-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.tpl-ex-card-side{display:flex;align-items:center;gap:6px;flex-shrink:0}
.tpl-ex-del{flex:0 0 auto;min-width:36px;min-height:36px;display:flex;align-items:center;justify-content:center;border-radius:9px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--muted);font-size:12px;line-height:1;padding:0;cursor:pointer;touch-action:manipulation;transition:background .15s,color .15s,border-color .15s}
.tpl-ex-del:active{background:rgba(239,68,68,.16);border-color:rgba(239,68,68,.4);color:#ef4444}
.tpl-ex-empty{padding:26px 18px;text-align:center;color:var(--muted);font-size:13px;line-height:1.5}
.tpl-ex-card-name{font-family:'Barlow Condensed',sans-serif;font-size:15px;font-weight:800;letter-spacing:.5px;color:var(--text);line-height:1.1}
.tpl-last-badge{font-size:9px;color:var(--muted);background:rgba(255,255,255,.05);border:0.5px solid var(--border);border-radius:99px;padding:3px 9px;white-space:nowrap;flex-shrink:0;font-weight:600}
.tpl-last-badge.first{color:var(--accent);background:rgba(232,76,13,.1);border-color:rgba(232,76,13,.25)}
.tpl-ex-card-inputs{display:flex;gap:8px}
.tpl-ex-card-inputs>div{flex:1}
.tpl-ex-card-inputs .tpl-mini-in{width:100%;padding:10px 6px;font-size:17px}
.tpl-pts-total{background:linear-gradient(135deg,rgba(232,76,13,.14),rgba(232,76,13,.04));border:0.5px solid rgba(232,76,13,.25);box-shadow:var(--edge);border-radius:12px}
.tpl-pts-total-v{font-family:'Barlow Condensed',sans-serif;font-size:27px;font-weight:900;color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:-.5px}
/* Lancement — séries éditables par exercice */
.tplset-list{display:flex;flex-direction:column;gap:5px;margin-bottom:8px}
.tplset-row{display:flex;align-items:center;gap:7px}
.tplset-num{width:20px;height:20px;border-radius:6px;background:var(--bg2);font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:11px;display:flex;align-items:center;justify-content:center;color:var(--muted);flex-shrink:0}
.tplset-in{flex:1;display:flex;align-items:center;gap:5px;background:var(--bg2);border:0.5px solid var(--border2);border-radius:9px;padding:0 9px;min-width:0}
.tplset-in input{flex:1;background:none;border:none;color:var(--text);font-size:16px;font-weight:700;padding:7px 0;outline:none;-webkit-appearance:none;text-align:center;min-width:0}
.tplset-in span{font-size:10px;color:var(--muted);letter-spacing:.5px;flex-shrink:0}
.tplset-del{background:none;border:none;color:var(--dim);font-size:13px;cursor:pointer;padding:4px;flex-shrink:0;transition:color .2s}
.tplset-del:hover{color:#ef4444}
.tplset-add{width:100%;padding:7px;background:none;border:0.5px dashed var(--border2);border-radius:9px;color:var(--accent);font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;cursor:pointer;transition:border-color .2s,background .2s}
.tplset-add:hover{border-color:var(--accent);background:rgba(232,76,13,.06)}

/* ═══════════════ ÉCRAN DE SÉANCE LANCÉE (runner) ═══════════════
   Cet écran était une feuille de 480 px collée en bas : sur large écran il
   flottait au centre d'un grand vide, et passé quatre exercices le bouton
   « Terminer » disparaissait sous le pli. Il devient une coquille pleine
   hauteur — en-tête et pied fixes, exercices dans la seule zone qui défile. */
.runner-ov{align-items:stretch;justify-content:center;padding:0}
.runner-box{
  display:flex;flex-direction:column;
  width:100%;max-width:620px;height:100dvh;max-height:100dvh;
  padding:0;overflow:hidden;border-radius:0;border:none;
  background:var(--bg);
  transform:translate3d(0,18px,0) scale(.985);
  transition:transform var(--mo-view) var(--mo-out),opacity var(--mo-view) var(--mo-out);
  opacity:0
}
.runner-ov.show .runner-box{transform:none;opacity:1}
@media(min-width:640px){
  .runner-ov{align-items:center;padding:20px}
  .runner-box{height:min(880px,94dvh);max-height:94dvh;border-radius:20px;border:0.5px solid var(--border2)}
}

.runner-head{
  flex:0 0 auto;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 11px;
  background:var(--bg);border-bottom:0.5px solid var(--border);z-index:2
}
.runner-head-row{display:flex;align-items:center;gap:10px}
.runner-title{
  flex:1;min-width:0;margin:0;text-align:left;font-size:17px;letter-spacing:1.2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.runner-close{
  position:static;flex:0 0 auto;width:36px;height:36px;padding:0;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:16px;
  background:rgba(255,255,255,.05);border:0.5px solid var(--border2)
}
.runner-close:active{transform:scale(.9)}
.runner-prog{display:flex;align-items:center;gap:10px;margin-top:10px}
.runner-prog-bar{flex:1;height:3px;border-radius:999px;background:rgba(255,255,255,.09);overflow:hidden}
.runner-prog-bar i{
  display:block;width:100%;height:100%;border-radius:999px;background:var(--accent);
  transform-origin:left center;transform:scaleX(0);
  transition:transform var(--mo-view) var(--mo-out)
}
.runner-prog-txt{
  flex:0 0 auto;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;
  letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums
}

.runner-body{
  flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;padding:12px 16px 16px
}
.runner-foot{
  flex:0 0 auto;padding:11px 16px calc(12px + env(safe-area-inset-bottom,0px));
  background:var(--bg);border-top:0.5px solid var(--border);z-index:2
}
.runner-foot .tpl-pts-total{
  margin-bottom:9px;background:rgba(255,255,255,.035);
  border-color:var(--border2);box-shadow:none;padding:9px 13px
}
.runner-foot .sbtn{padding:14px}

/* Carte d'exercice : le numéro porte la position, le nom occupe la ligne, et
   la dernière performance descend en note discrète au lieu d'un badge qui
   disputait la largeur au titre. */
.tpl-ex-idx{
  flex:0 0 auto;width:22px;height:22px;border-radius:7px;display:flex;align-items:center;
  justify-content:center;background:rgba(255,255,255,.06);color:var(--dim);
  font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:12px
}
.tpl-ex-card.active .tpl-ex-idx{background:var(--accent);color:#fff}
.tpl-ex-card.done .tpl-ex-idx{background:rgba(34,197,94,.16);color:#4ade80}
.tpl-ex-card-name{flex:1;min-width:0}
.tpl-ex-meta{margin:-2px 0 8px 32px;font-size:11px;color:var(--dim)}
.tpl-ex-meta:empty{display:none}
.tpl-ex-meta .tpl-last-badge{background:none;border:none;padding:0;font-size:11px;color:var(--dim)}

/* Séries : une seule ligne d'en-tête porte les unités, les lignes ne
   contiennent plus que des nombres. Même gabarit de colonnes pour les deux,
   sinon l'en-tête ne tomberait pas en face des champs. */
.tplset-grid{--tplset-cols:22px 1fr 1fr 34px}
.tplset-grid.pdc{--tplset-cols:22px 1fr 34px}
/* Sur large écran, un exercice PDC n'a qu'un champ : étiré sur 500 px il
   ressemblait à une barre de recherche. On le borne sans casser l'alignement
   avec son en-tête, qui reçoit exactement la même contrainte. */
@media(min-width:640px){
  .tplset-grid.pdc .tplset-row>.tplset-in,
  .tplset-grid.pdc .tplset-head>span:nth-child(2){width:100%;max-width:340px;justify-self:center}
}
.tplset-head,.tplset-row{display:grid;grid-template-columns:var(--tplset-cols);gap:8px;align-items:center}
.tplset-head{
  padding:0 0 5px;font-family:'Barlow Condensed',sans-serif;font-size:9.5px;font-weight:800;
  letter-spacing:1.4px;text-transform:uppercase;color:var(--dim);text-align:center
}
.tplset-list{gap:6px}
.tplset-in{padding:0 6px}
.tplset-in input{padding:9px 0;font-size:16px}
.tplset-num{width:22px;height:22px}
.tplset-del{min-height:38px;padding:0;border-radius:9px}
.tplset-del:active{background:rgba(239,68,68,.14);color:#ef4444}

/* Trois actions, trois poids visuels distincts : ajouter une série est
   secondaire, valider est l'action principale, « enregistré » n'est plus un
   bouton — c'est un état, il ne doit pas ressembler à quelque chose à cliquer. */
.tpl-ex-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:stretch;margin-top:9px}
.tplset-add{
  width:100%;min-height:42px;padding:0;background:rgba(255,255,255,.045);
  border:0.5px solid var(--border2);border-radius:10px;color:var(--muted);
  font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:800;
  letter-spacing:1.4px;text-transform:uppercase;cursor:pointer
}
.tplset-add:hover{border-color:var(--border2);background:rgba(255,255,255,.075);color:var(--text)}
.tplset-add:active{transform:scale(.97)}
.tpl-ex-actions .tpl-ex-validate{
  min-height:42px;padding:0;border:none;border-radius:10px;
  background:var(--accent);color:#fff;
  font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;
  letter-spacing:1.4px;text-transform:uppercase;cursor:pointer
}
.tpl-ex-actions .tpl-ex-validate:hover{filter:brightness(1.07)}
.tpl-ex-actions .tpl-ex-validate:active{transform:scale(.97)}
.tpl-ex-saved{
  margin-top:9px;padding:10px;border-radius:10px;text-align:center;
  background:rgba(34,197,94,.09);color:#4ade80;
  font-family:'Barlow Condensed',sans-serif;font-size:11.5px;font-weight:800;
  letter-spacing:1.4px;text-transform:uppercase
}
/* Un exercice validé est en base : garder quatre champs éditables laissait
   croire qu'on pouvait encore le corriger. Il se replie en récapitulatif. */
.tpl-ex-card.done{padding:8px 11px;opacity:.72}
.tpl-ex-card.done .tpl-ex-meta{display:none}
.tpl-ex-card.done .tpl-ex-card-top{margin-bottom:0}
.tpl-ex-card.done .tpl-ex-saved{
  margin-top:7px;padding:7px 10px;text-align:left;display:flex;align-items:center;gap:7px;
  letter-spacing:.6px;text-transform:none;font-size:12.5px;font-weight:700;
  font-family:inherit;font-variant-numeric:tabular-nums;
  background:rgba(255,255,255,.04);color:var(--text2)
}
.tpl-ex-card.done .tpl-ex-saved b{font-size:11px;color:#4ade80}
.tpl-ex-actions .tplset-add{margin-top:0}
.workout-progress{display:none;margin:0 0 12px;padding:16px;border:1px solid rgba(232,76,13,.22);border-radius:24px;background:linear-gradient(150deg,rgba(232,76,13,.1),rgba(18,18,22,.97) 48%,rgba(9,9,11,.99));box-shadow:0 18px 38px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.045)}
.workout-progress.show{display:block}
.workout-progress.hevy-session{position:relative;overflow:hidden;padding:17px;border-radius:24px;background:linear-gradient(180deg,rgba(26,26,31,.985),rgba(13,13,16,.985));border:1px solid rgba(255,255,255,.1);box-shadow:0 18px 38px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.055)}
.workout-progress.hevy-session::before{content:'';position:absolute;left:16px;right:16px;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(232,76,13,.7),transparent)}
.workout-progress-head{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.workout-progress-title{font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:20px;letter-spacing:1.2px;text-transform:uppercase;color:var(--text)}
.workout-finish{border:0;background:linear-gradient(180deg,#ff5a1f,#e84c0d);color:#fff;border-radius:14px;padding:11px 14px;font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:10px;letter-spacing:1.2px;text-transform:uppercase;box-shadow:0 10px 24px -12px rgba(232,76,13,.9)}
.workout-progress-list{margin-top:12px}
.workout-progress-row{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px 13px;margin-top:8px;font-size:13px;color:var(--text2);border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(255,255,255,.035);text-align:left}
.workout-progress-row:first-child{margin-top:0}
.workout-progress-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.workout-progress-row b{color:#4ade80;font-variant-numeric:tabular-nums}
.workout-progress-row.inprogress{cursor:pointer;border-style:dashed;border-color:rgba(232,76,13,.4);color:var(--muted)}
.wp-resume{flex:0 0 auto;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:var(--accent)}
.workout-progress-empty{margin-top:12px;font-size:13px;line-height:1.45;color:var(--muted)}
/* Bottom sheet : liste complète des exercices */
.exsheet-overlay{position:fixed;inset:0;z-index:1200;display:flex;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.55);backdrop-filter:blur(2px);animation:fadeIn .2s ease both}
.exsheet-overlay[hidden]{display:none}
.exsheet{width:100%;max-width:480px;max-height:82dvh;display:flex;flex-direction:column;background:var(--bg2);border:0.5px solid var(--border2);border-radius:22px 22px 0 0;padding:10px 16px calc(18px + env(safe-area-inset-bottom,0px));box-shadow:0 -18px 44px rgba(0,0,0,.5);animation:sheetUp .28s cubic-bezier(.22,1,.36,1) both}
@keyframes sheetUp{from{transform:translateY(30px);opacity:.6}to{transform:translateY(0);opacity:1}}
.exsheet-grab{width:38px;height:4px;border-radius:2px;background:var(--border2);margin:2px auto 12px}
.exsheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.exsheet-title{font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:19px;letter-spacing:1px;text-transform:uppercase;color:var(--text)}
.exsheet-close{width:32px;height:32px;border-radius:50%;border:1px solid var(--border2);background:rgba(255,255,255,.05);color:var(--muted);font-size:14px;cursor:pointer}
.exsheet-search{display:flex;align-items:center;gap:8px;padding:10px 12px;margin-bottom:10px;border:1px solid var(--border2);border-radius:14px;background:rgba(255,255,255,.04);color:var(--muted)}
.exsheet-search input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--text);font-family:'Barlow',sans-serif;font-size:15px}
.exsheet-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:6px}
.exsheet-row{display:flex;align-items:center;gap:8px;padding:12px;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.025);color:var(--text);text-align:left;transition:background .15s,border-color .15s}
.exsheet-open{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.exsheet-open:active{opacity:.7}
.exsheet-del{flex:0 0 auto;min-width:38px;min-height:38px;display:flex;align-items:center;justify-content:center;border-radius:11px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--muted);font-size:14px;line-height:1;padding:0;cursor:pointer;touch-action:manipulation;transition:background .15s,color .15s,border-color .15s}
.exsheet-del:active{background:rgba(239,68,68,.16);border-color:rgba(239,68,68,.4);color:#ef4444}
.exsheet-row:active{background:rgba(255,255,255,.07)}
.exsheet-row.active{border-color:rgba(232,76,13,.45);background:rgba(232,76,13,.08)}
.exsheet-row{animation:moRise var(--mo-base) var(--mo-out) both}
.exsheet-row:nth-child(n+9){animation:none}
.exsheet-num{flex:0 0 auto;width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:13px;background:rgba(255,255,255,.06);color:var(--muted)}
.exsheet-row.done .exsheet-num{color:var(--ok)}
.exsheet-row.active .exsheet-num{background:var(--accent);color:#fff}
.exsheet-info{flex:1;min-width:0}
.exsheet-name{font-weight:700;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.exsheet-state{font-size:11.5px;color:var(--muted);margin-top:2px}
.exsheet-empty{padding:24px;text-align:center;color:var(--muted);font-size:13px}
.sets-list .sets-table-head{display:grid;grid-template-columns:48px 1fr auto;gap:10px;padding:0 2px 2px;font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim)}
.sets-list .set-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 10px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.08);border-radius:13px;color:var(--text);font-family:'Barlow',sans-serif;text-align:left;animation:fadeUp .25s cubic-bezier(.22,1,.36,1) both}
.note-coach{position:relative;z-index:1;margin:6px 0 13px;padding:14px;border-radius:20px;background:linear-gradient(155deg,rgba(255,255,255,.06),rgba(255,255,255,.025));border:1px solid rgba(255,255,255,.1)}
.note-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.note-title{font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:900;letter-spacing:1.6px;text-transform:uppercase;color:var(--text)}
.note-sub{margin-top:2px;font-size:10.5px;line-height:1.35;color:var(--muted)}
.note-pill{flex-shrink:0;font-family:'Barlow Condensed',sans-serif;font-size:9px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:#0a0a0b;background:#f8c56a;border-radius:999px;padding:5px 9px}
.note-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.note-field label{display:flex!important;align-items:center;justify-content:space-between;margin-bottom:6px!important;color:#a7a099!important}
.note-field label small{font-family:'Barlow',sans-serif;font-size:9px;letter-spacing:0;text-transform:none;color:var(--dim);font-weight:600}
.exercise-note{width:100%;min-height:84px;resize:vertical;padding:12px 13px;background:rgba(8,8,10,.72);border:1px solid rgba(255,255,255,.12);border-radius:15px;color:var(--text);font:12.5px/1.48 inherit;outline:none;box-sizing:border-box}
.exercise-note:focus{border-color:rgba(232,76,13,.55);box-shadow:0 0 0 3px rgba(232,76,13,.08)}
/* Notes : une colonne sur écrans étroits pour garder des zones de saisie confortables */
@media (max-width:360px){.note-grid{grid-template-columns:1fr}}
/* Repos : mise en avant du chrono de repos dans le cockpit de séance */
.session-rest-chip{transition:color .2s,background .2s}
.session-live-pill.rest{background:rgba(232,76,13,.16);color:var(--accent);font-weight:800}
.note-chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 0;margin-top:9px;scrollbar-width:none}
.note-chips::-webkit-scrollbar{display:none}
.note-chip{flex-shrink:0;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.055);color:var(--muted);border-radius:999px;padding:8px 11px;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;letter-spacing:1px;text-transform:uppercase;cursor:pointer}
.note-chip:hover{border-color:rgba(232,76,13,.45);color:var(--accent)}
@media(max-width:410px){.note-grid{grid-template-columns:1fr}.note-coach{padding:12px}}

/* ── CLEAN SESSION PASS — plus proche d'un log Hevy, moins dashboard brouillon ── */
.session-primary-action{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;margin:0 0 12px;padding:17px 16px;background:linear-gradient(135deg,var(--accent),#ff6633);border:0;border-radius:18px;color:#fff;cursor:pointer;font-family:'Barlow Condensed',sans-serif;font-size:13px;letter-spacing:2px;text-transform:uppercase;font-weight:900;box-shadow:0 16px 30px rgba(232,76,13,.25)}
.session-primary-action:active{transform:scale(.985)}
.session-primary-action.live{background:linear-gradient(135deg,#ff6633,var(--accent));box-shadow:0 16px 34px rgba(232,76,13,.34)}
.session-primary-copy{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}
.session-primary-copy small{font-size:9.5px;font-weight:800;letter-spacing:1.1px;text-transform:none;opacity:.85;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.session-primary-copy small[hidden]{display:none}
.session-secondary-row{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:13px}
.session-secondary-btn{display:flex;align-items:center;justify-content:flex-start;gap:9px;min-height:50px;padding:10px 13px;border:1px solid rgba(255,255,255,.1);border-radius:15px;background:rgba(255,255,255,.04);color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:900;letter-spacing:1.4px;text-transform:uppercase;cursor:pointer;text-align:left}
.session-secondary-btn span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.session-secondary-btn:active{transform:scale(.985)}
.add-card{background:linear-gradient(160deg,rgba(18,18,22,.96) 0%,rgba(12,12,15,.99) 68%,rgba(8,8,10,.99) 100%)!important;border-color:rgba(255,255,255,.09)!important;border-radius:26px!important;padding:18px!important;box-shadow:0 16px 34px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.045)!important}
.add-card::before{display:none!important}
.add-card::after{opacity:.55!important}
.note-coach{margin-top:8px!important;background:rgba(255,255,255,.035)!important;border-color:rgba(255,255,255,.08)!important}
.note-coach:not(.open) .note-grid,.note-coach:not(.open) .note-chips{display:none}
.note-coach:not(.open){cursor:pointer}
.note-coach:not(.open) .note-sub::after{content:' · toucher pour ouvrir';color:#ff7a3d}
.formula-box.clean-collapsed,#ex-progress-card.clean-collapsed{display:none!important}
.session-hero,.workout-progress,.add-card,.note-coach,.sets-list,.exercise-history-card{scroll-margin-top:20px}
@media(max-width:520px){
  .session-hero{padding:16px 15px 15px;border-radius:24px}
  /* Le chrono reste à droite du titre : une bande pleine largeur en plus allongeait
     inutilement le hero et repoussait le bouton principal hors de l'écran. */
  .session-hero-timer{min-width:0;min-height:60px;padding:0 11px;gap:7px}
  .session-hero-timer svg{width:20px;height:20px}
  .session-hero-grid{margin-top:12px;gap:8px}
  .session-metric{padding:10px 8px;border-radius:15px}
  .session-metric b{font-size:21px}
  /* 3 chips compactes plutôt qu'empilées : le bouton principal reste visible sans scroll */
  .session-chip{min-height:58px;padding:10px;gap:5px}
  .session-chip span{font-size:12px}
  .session-chip b{font-size:14px}
  .session-chip svg{width:13px;height:13px}
    .session-logger-head{align-items:center}
}
@media(max-width:390px){
  .session-hero-title-row{gap:8px}
  .session-hero-timer-copy span{font-size:20px}
  .workout-progress-head{flex-direction:column}
  .workout-finish{width:100%}
}
.tpl-ex-card.done{opacity:.6;border-color:var(--border)}
/* Trois états lisibles sans badge : à venir (sobre), en cours (liseré orange
   à gauche, seul usage de l'accent ici), terminé (retrait visuel). */
.tpl-ex-card{position:relative;transition:opacity var(--mo-quick) linear,border-color var(--mo-quick) linear}
.tpl-ex-card.active{border-color:var(--border2)}
.tpl-ex-card.active::before{content:'';position:absolute;left:0;top:9px;bottom:9px;width:2px;border-radius:0 2px 2px 0;background:var(--accent)}
.tpl-ex-card.done::before{display:none}
/* ════ HAUTS FAITS / BADGES ════ */
.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px}
.badge-tile{background:var(--bg3);border:0.5px solid var(--border);border-radius:12px;padding:13px 6px;text-align:center;opacity:.4;filter:grayscale(.7);transition:transform .2s,opacity .2s}
.badge-tile.on{opacity:1;filter:none;box-shadow:var(--edge),0 6px 18px -10px rgba(232,76,13,.45);border-color:rgba(232,76,13,.28)}
.badge-tile.on:active{transform:scale(.95)}
.badge-ic{font-size:26px;line-height:1;margin-bottom:6px}
.badge-name{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--text);line-height:1.1}
.badge-sub{font-size:8.5px;color:var(--muted);margin-top:3px;letter-spacing:.3px}
/* ════ DÉFIS 1v1 ════ */
.dm-duel-btn{background:none;border:none;font-size:18px;cursor:pointer;padding:4px 6px;flex-shrink:0;opacity:.7;transition:transform .15s,opacity .2s}
.dm-duel-btn:hover{opacity:1;transform:scale(1.15)}
.duel-head{font-family:'Barlow Condensed',sans-serif;font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:var(--muted);font-weight:700;margin:2px 0 8px}
.duel-card{background:var(--surface);border:0.5px solid var(--border);border-radius:14px;padding:15px 16px;margin-bottom:10px;box-shadow:var(--edge);display:flex;align-items:center;justify-content:space-between;gap:10px}
.duel-card.active{display:block}
.duel-vs{font-size:13px;color:var(--text);line-height:1.4}
.duel-actions{display:flex;gap:6px;flex-shrink:0}
.duel-ok,.duel-no{padding:6px 12px;border-radius:8px;font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;cursor:pointer;border:none}
.duel-ok{background:var(--accent);color:#fff}
.duel-no{background:var(--bg3);color:var(--muted);border:0.5px solid var(--border2)}
.duel-top{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text);margin-bottom:8px}
.duel-top b{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-variant-numeric:tabular-nums}
.duel-mid{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.duel-bar{height:8px;background:var(--bg3);border-radius:99px;overflow:hidden;margin-bottom:7px}
.duel-bar-me{height:100%;background:linear-gradient(90deg,#ff7a3d,#e8500a);border-radius:99px;transition:width .5s cubic-bezier(.22,1,.36,1)}
.duel-status{font-size:11px;color:var(--muted);text-align:center;font-weight:600}
/* ════ ANIM PASSAGE DE DIVISION (rank-up) ════ */
.rankup-badge-wrap{position:relative;width:120px;height:120px;margin:0 auto 22px;display:flex;align-items:center;justify-content:center}
.rankup-rays{position:absolute;inset:-60px;background:conic-gradient(from 0deg,transparent 0deg,rgba(232,76,13,.22) 10deg,transparent 20deg,transparent 40deg,rgba(232,76,13,.22) 50deg,transparent 60deg,transparent 80deg,rgba(232,76,13,.22) 90deg,transparent 100deg,transparent 120deg,rgba(232,76,13,.22) 130deg,transparent 140deg,transparent 160deg,rgba(232,76,13,.22) 170deg,transparent 180deg,transparent 200deg,rgba(232,76,13,.22) 210deg,transparent 220deg,transparent 240deg,rgba(232,76,13,.22) 250deg,transparent 260deg,transparent 280deg,rgba(232,76,13,.22) 290deg,transparent 300deg,transparent 320deg,rgba(232,76,13,.22) 330deg,transparent 340deg);border-radius:50%;-webkit-mask:radial-gradient(circle,transparent 38px,#000 40px);mask:radial-gradient(circle,transparent 38px,#000 40px);animation:rayspin 9s linear infinite,rayfade .6s ease both}
#rankup-overlay .rankup-badge{margin:0}
.rankup-char-wrap{position:relative;display:inline-block;margin:0 auto 10px}
.rankup-char{display:block;width:auto;height:210px;filter:drop-shadow(0 14px 32px rgba(0,0,0,.6)) drop-shadow(0 0 40px rgba(232,76,13,.2));animation:rankupCharIn .7s cubic-bezier(.2,1.35,.4,1) both}
.rankup-char-badge{position:absolute;right:-6px;bottom:-4px;width:76px;height:76px;animation:rankupBadgePop .5s .38s cubic-bezier(.2,1.6,.4,1) both}
.rankup-char-badge svg{width:100%;height:100%}
@keyframes rankupCharIn{0%{opacity:0;transform:scale(.4) translateY(34px)}60%{opacity:1}100%{opacity:1;transform:scale(1) translateY(0)}}
@keyframes rankupBadgePop{0%{opacity:0;transform:scale(0) rotate(-35deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
@media (prefers-reduced-motion:reduce){.rankup-char,.rankup-char-badge{animation:none!important}}
@keyframes rayspin{to{transform:rotate(360deg)}}
@keyframes rayfade{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}
.rankup-particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.rankup-particle{position:absolute;top:46%;left:50%;width:9px;height:9px;border-radius:2px;opacity:0;will-change:transform,opacity}
@keyframes partburst{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}12%{opacity:1}100%{opacity:0;transform:translate(var(--tx),var(--ty)) scale(1) rotate(var(--rot))}}
@media (prefers-reduced-motion:reduce){.rankup-rays{animation:none}.rankup-particle{display:none}}
/* ════ SAFE-AREAS + PETITS MOBILES (tous écrans) ════ */
.topbar{padding-top:calc(14px + env(safe-area-inset-top))}
.lnav{padding-top:env(safe-area-inset-top);height:calc(60px + env(safe-area-inset-top))}
.bnav{padding-bottom:calc(9px + env(safe-area-inset-bottom))}
/* .views ne porte plus de réserve : voir .view.on ci-dessus. */
/* Classement : la barre « moi » flotte au-dessus de la navigation. */
html.has-me-bar #v-lb.on{padding-bottom:calc(var(--bnav-clearance) + 58px)}
.pub-nav{padding-top:env(safe-area-inset-top)}
@media (max-width:360px){
  .lnav{padding-left:14px;padding-right:14px}
  .lnav-logo img{height:26px}
  .lnav-login,.lnav-cta{padding:10px 12px;font-size:11px;letter-spacing:1px}
  .lnav-actions{gap:7px}
  .toplogo img,.topbar img{height:30px}
  .topavatar{width:30px;height:30px;font-size:11px}
  .topdisc{padding:4px 8px;font-size:9px;letter-spacing:.5px}
  .toplogout{font-size:9px;letter-spacing:1px}
  .topright{gap:6px}
  .topbar{padding-left:12px;padding-right:12px}
  .hero-content{padding-left:16px;padding-right:16px}
  .badge-grid{gap:6px;padding:10px}
  .badge-ic{font-size:22px}
  .badge-name{font-size:10px}
}
/* Focus accent unifié sur tous les champs (placé en fin de feuille pour primer) */
.afield input:focus,.field input:focus,.field select:focus,.proto-add-row input:focus,.mes-add-row input:focus,.edit-pseudo-input:focus,.chat-input:focus,.ex-search-input:focus{border-color:rgba(232,76,13,.5);outline:none}
/* ── Sous-onglets profil ── */
.ptabs{display:flex;gap:4px;background:var(--bg2);border:0.5px solid var(--border);border-radius:12px;padding:4px;margin-bottom:14px}
.ptab{flex:1;padding:9px 0;border:none;background:none;color:var(--muted);font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:13px;letter-spacing:2px;text-transform:uppercase;border-radius:9px;cursor:pointer}
.ptab.on{background:var(--bg3);color:var(--text);box-shadow:0 1px 6px rgba(0,0,0,.35)}
/* ── Liste réglages compacte ── */
.set-list{background:var(--bg2);border:0.5px solid var(--border);border-radius:14px;overflow:hidden;margin-bottom:10px}
.set-row{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;background:none;border:none;border-bottom:0.5px solid var(--border);color:var(--text);font-family:'Barlow',sans-serif;font-size:14px;cursor:pointer;text-align:left}
.set-row:last-child{border-bottom:none}
.set-row:hover{background:var(--bg3)}
.set-row .set-chev{margin-left:auto;color:var(--dim);flex-shrink:0}
.set-row.danger{color:#ff6b6b}
.set-ic{width:20px;display:flex;justify-content:center;color:var(--muted);flex-shrink:0}

/* ═══════════════════════════════════════════════════════════════════════════
   SÉANCE — STRUCTURE SIMPLIFIÉE
   Deux couleurs fortes seulement : l'accent orange (action principale, série en
   cours) et le vert de validation. Tout le reste est en niveaux de gris.
   Priorité de lecture : exercice → série → charge → répétitions → valider → repos.
   ═══════════════════════════════════════════════════════════════════════════ */
#v-add{
  --sx-space:18px;         /* respiration entre les blocs */
  --sx-r:18px;
  --sx-card:#141417;
  --sx-line:rgba(255,255,255,.08);
  --sx-ink:var(--text);
  --sx-ink-2:rgba(240,237,232,.55);
}
/* La disposition flex ne s'applique QUE lorsque la vue est active : sans le
   `.on`, la spécificité de l'id écraserait `.view{display:none}` et l'écran de
   séance resterait visible dans Classement et Profil. */
#v-add.view{display:none}
#v-add.view.on{display:flex;flex-direction:column;gap:var(--sx-space);padding-top:6px;padding-bottom:var(--bnav-clearance)}
#v-add>*{margin:0}
/* #quick-add-wrap reçoit un display inline depuis setQuickAdd() : on espace ses
   enfants par des marges plutôt que par un gap flex, qui serait ignoré. */
#quick-add-wrap>*{margin:0}
#quick-add-wrap>*+*{margin-top:var(--sx-space)}
#v-add #workout-progress{order:2}
#v-add #quick-add-wrap{order:1}

/* Logger ouvert : l'écran ne montre plus que la séance en cours. */
body.session-logger-open #v-add .sx-pre{display:none!important}

/* ── 1 · En-tête compact : nom de l'exercice + position ─────────────────── */
.sx-head{position:relative}
.sx-head-row{display:flex;align-items:center;gap:10px}
.sx-head-ex{
  flex:1;min-width:0;display:flex;align-items:center;gap:8px;
  padding:0;background:none;border:0;color:var(--sx-ink);cursor:pointer;text-align:left
}
.sx-head-name{
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-family:'Barlow Condensed',sans-serif;font-size:21px;font-weight:900;
  line-height:1.1;letter-spacing:.3px
}
.sx-head-chev{flex:0 0 auto;color:var(--sx-ink-2)}
.sx-head-pos{
  flex:0 0 auto;min-width:48px;height:34px;padding:0 11px;border-radius:var(--r-pill);
  border:1px solid var(--sx-line);background:none;color:var(--sx-ink-2);
  font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:800;
  font-variant-numeric:tabular-nums;cursor:pointer
}
/* Retrait de l'exercice affiché : accessible directement depuis l'en-tête,
   sans passer par le bottom sheet. */
.sx-head-del{
  flex:0 0 auto;width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  border-radius:var(--r-pill);border:1px solid var(--sx-line);background:none;
  color:var(--sx-ink-2);font-size:14px;line-height:1;padding:0;cursor:pointer;
  touch-action:manipulation;transition:background .15s,color .15s,border-color .15s
}
.sx-head-del[hidden]{display:none}
.sx-head-del:active{background:rgba(239,68,68,.16);border-color:rgba(239,68,68,.45);color:#ef4444}

/* ── Navigation discrète : une ligne de points ──────────────────────────── */
.sx-nav{display:flex;align-items:center;gap:8px}
#quick-add-wrap>.sx-nav{margin-top:6px}
.sx-nav[hidden]{display:none}
.sx-nav-arrow{
  flex:0 0 auto;width:30px;height:28px;border:0;background:none;
  color:var(--sx-ink-2);font-size:19px;line-height:1;cursor:pointer
}
.sx-nav-arrow:disabled{opacity:.2;cursor:default}
.sx-nav-dots{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap}
.sx-dot{
  position:relative;width:7px;height:7px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.16);transition:transform .15s,background .15s
}
.sx-dot.done{background:var(--ok)}
.sx-dot.progress{background:rgba(255,255,255,.4)}
.sx-dot.active{width:20px;border-radius:var(--r-pill);background:var(--accent)}
/* Cible tactile confortable sans agrandir le point visible */
.sx-dot::after{content:'';position:absolute;top:50%;left:50%;width:30px;height:30px;transform:translate(-50%,-50%)}

/* ── 2 · Carte principale unique ────────────────────────────────────────── */
.sx-card{
  padding:13px 12px 12px;border-radius:var(--sx-r);
  background:linear-gradient(180deg,#17171c,#121215);border:1px solid var(--sx-line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 14px 30px -22px rgba(0,0,0,.85)
}
/* Bandeau contextuel : numéro de série, rappel de la dernière fois et
   suggestion de progression tenaient sur trois blocs empilés (≈ 140 px).
   Ils partagent désormais une rangée de puces qui défile horizontalement. */
.sx-meta{
  display:flex;align-items:center;gap:7px;margin-bottom:10px;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch
}
.sx-meta::-webkit-scrollbar{display:none}
.sx-meta>*{flex:0 0 auto}
.sx-serie{
  display:inline-flex;align-items:center;height:30px;margin:0;padding:0 11px;
  border-radius:var(--r-pill);
  background:rgba(232,76,13,.12);border:1px solid rgba(232,76,13,.28);
  font-family:'Barlow Condensed',sans-serif;font-size:11px;
  font-weight:900;letter-spacing:1.6px;text-transform:uppercase;color:var(--accent);
  white-space:nowrap
}
.sx-last,.sx-next{
  display:inline-flex;align-items:center;gap:7px;height:30px;width:auto;margin:0;
  padding:0 10px;border:1px solid var(--sx-line);border-radius:var(--r-pill);
  background:rgba(255,255,255,.025);color:var(--sx-ink-2);cursor:pointer;
  white-space:nowrap;text-align:left
}
.sx-last[hidden],.sx-next[hidden]{display:none}
.sx-last span{font-size:10.5px;font-weight:700}
.sx-last b{flex:0 0 auto;color:var(--sx-ink);font-family:'Barlow Condensed',sans-serif;font-size:14px;font-weight:900;font-variant-numeric:tabular-nums}
.sx-last em{color:var(--accent);font-family:'Barlow Condensed',sans-serif;font-size:13px;font-style:normal;font-weight:900;line-height:1}
.sx-last:active,.sx-next:active{transform:scale(.97)}
/* La suggestion garde son accent vert, seule sa géométrie devient une puce. */
.sx-next{border-color:rgba(34,197,94,.32);background:rgba(34,197,94,.09);color:var(--text)}
.sx-next b{font-size:13px}
/* Charge et répétitions partagent une rangée : deux champs empilés coûtaient
   ≈ 190 px, la grille en coûte 95. auto-fit rend toute la largeur aux
   répétitions quand la charge est masquée (exercice au poids du corps). */
.sx-inputs{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:9px}
.sx-input>label{
  display:flex;align-items:baseline;gap:5px;margin-bottom:5px;
  font-size:11.5px;font-weight:600;color:var(--sx-ink-2);
  letter-spacing:.2px;white-space:nowrap
}
.sx-input>label small{font-size:10px;color:var(--dim)}
#v-add .stepper{
  display:flex;align-items:center;height:48px;border-radius:12px;
  background:rgba(255,255,255,.04);border:1px solid var(--sx-line);overflow:hidden;
  transition:border-color .15s
}
#v-add .stepper:focus-within{border-color:rgba(232,76,13,.5)}
#v-add .step-btn{
  flex:0 0 auto;width:44px;min-width:44px;height:100%;padding:0;border:0;background:none;
  color:var(--sx-ink);font-size:21px;font-weight:300;cursor:pointer;
  display:flex;align-items:center;justify-content:center
}
#v-add .step-btn:hover{background:rgba(255,255,255,.05)}
#v-add .step-btn:active{background:rgba(255,255,255,.09)}
#v-add .step-input{
  flex:1;min-width:0;width:0;height:100%;border:0;border-left:1px solid var(--sx-line);
  border-right:1px solid var(--sx-line);background:none;text-align:center;color:var(--sx-ink);
  font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900;
  font-variant-numeric:tabular-nums;outline:none
}
#v-add .step-input::-webkit-outer-spin-button,
#v-add .step-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
#v-add .step-input[type=number]{-moz-appearance:textfield}

/* Valider et repos partagent une rangée : le repos restait 58 px plus bas,
   souvent hors écran une fois la liste des séries remplie. */
.sx-actions{display:grid;grid-template-columns:1fr 94px;gap:8px;align-items:stretch;margin-top:11px}
/* Action principale : le seul aplat orange plein de l'écran */
.sx-validate{
  width:100%;min-height:52px;margin-top:0;padding:9px 12px;border:0;border-radius:13px;
  background:linear-gradient(180deg,#f2611a,var(--accent));color:#fff;cursor:pointer;
  font-family:'Barlow Condensed',sans-serif;font-size:13.5px;font-weight:900;
  letter-spacing:1.8px;text-transform:uppercase;
  box-shadow:0 12px 26px -14px rgba(232,76,13,.9),inset 0 1px 0 rgba(255,255,255,.14)
}
.sx-validate:active{transform:scale(.99)}
/* Le bouton porte aussi les valeurs qu'il s'apprête à enregistrer. */
.sx-validate{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.sx-validate-main{display:block}
.sx-validate-vals{display:block;font-size:10.5px;font-weight:700;opacity:.78;letter-spacing:.4px;text-transform:none}
.sx-rest-wrap{display:flex;flex-direction:column;min-width:0}
.sx-rest{
  width:100%;flex:1;min-height:52px;margin-top:0;padding:6px 8px;border:1px solid var(--sx-line);
  border-radius:13px;background:none;color:var(--sx-ink-2);cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  font-family:'Barlow Condensed',sans-serif;font-size:9.5px;font-weight:800;
  letter-spacing:1.4px;text-transform:uppercase
}
.sx-rest b{color:var(--sx-ink);font-size:16px;font-variant-numeric:tabular-nums;letter-spacing:0}
.sx-rest.resting{border-color:rgba(232,76,13,.45);color:var(--accent)}
.sx-rest.resting b{color:var(--accent);font-size:18px}
/* Barre de décompte : le seul indicateur de progression du repos */
.sx-rest-bar{height:2px;margin-top:-1px;border-radius:0 0 13px 13px;background:rgba(255,255,255,.06);overflow:hidden}
.sx-rest-bar[hidden]{display:none}
/* La barre de repos tourne pendant plusieurs minutes : animer `width`
   relançait la mise en page à chaque image. `scaleX` reste sur le compositeur. */
.sx-rest-bar i{display:block;height:100%;width:100%;transform-origin:left center;transform:scaleX(1);background:var(--accent);transition:transform .25s linear;will-change:transform}
.sx-rest-actions{display:flex;gap:8px;margin-top:8px}
.sx-rest-actions[hidden]{display:none}
.sx-rest-actions button{
  flex:1;min-height:42px;border:1px solid var(--sx-line);border-radius:11px;background:none;
  color:var(--sx-ink-2);cursor:pointer;font-family:'Barlow Condensed',sans-serif;
  font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase
}
/* ── Très petits écrans (320–360 px) ────────────────────────────────────────
   Deux steppers côte à côte ne laissent que ~127 px par champ : les boutons
   passent à 40 px pour rendre au nombre la place de lire « 122,5 ». */
@media (max-width:360px){
  .sx-actions{grid-template-columns:1fr 78px;gap:7px}
  .sx-validate{font-size:12px;letter-spacing:1.2px;padding:8px 6px}
  .sx-rest{font-size:8.5px;letter-spacing:1px;padding:6px 4px}
  .sx-rest b{font-size:14px}
  .sx-inputs{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:7px}
  #v-add .step-btn{width:40px;min-width:40px;font-size:19px}
  #v-add .step-input{font-size:20px}
  .sx-head-name{font-size:19px}
}
/* Choix de la durée de repos, dans « Détails de la séance » */
/* Ligne empilée : un groupe de puces ne tient pas à droite d'un libellé sous 360 px */
.sx-line.stack{flex-direction:column;align-items:flex-start;gap:10px}
.sx-durs{display:flex;gap:6px;flex-wrap:wrap}
.sx-dur,.hr-chip{
  min-height:34px;padding:0 11px;border:1px solid var(--border2);border-radius:var(--r-pill);
  background:none;color:var(--muted);cursor:pointer;font-family:'Barlow Condensed',sans-serif;
  font-size:12px;font-weight:800;letter-spacing:.5px
}
.sx-dur.on,.hr-chip.on{border-color:var(--accent);color:var(--accent)}
.hr-chips{display:flex;gap:6px;flex-wrap:wrap}

/* ── Séries validées : liste dépouillée, sans carte ni bordure ──────────── */
#v-add .sets-list{
  margin:18px 0 0;padding:0;background:none;border:0;box-shadow:none;
  border-top:1px solid var(--sx-line);padding-top:14px
}
#v-add .sets-list-head{
  padding:0;margin-bottom:4px;font-size:10px;letter-spacing:1.6px;color:var(--sx-ink-2)
}
#v-add .sets-table-head,#v-add .sets-list .sets-table-head{display:none}
#v-add .sets-list .set-row,#v-add .sets-list .set-row.done{
  grid-template-columns:24px 1fr auto;gap:12px;padding:11px 0;margin:0;
  border:0;border-bottom:1px solid var(--sx-line);border-radius:0;background:none
}
#v-add .sets-list .set-row:last-child{border-bottom:0}
#v-add .set-num{
  width:24px;height:24px;border-radius:0;background:none;color:var(--dim);
  font-size:13px;justify-content:flex-start
}
#v-add .set-load,#v-add .set-reps{font-size:17px}
#v-add .set-reps-l,#v-add .set-x{color:var(--dim)}
#v-add .set-pts{gap:8px;font-size:12px;color:var(--sx-ink-2)}
#v-add .set-check{width:18px;height:18px;font-size:10px;background:none;color:var(--ok)}
#v-add .set-del{min-width:34px;min-height:34px;padding:0;font-size:14px;color:var(--dim)}
#v-add .set-best,#v-add .set-tag{
  font-size:8.5px;padding:2px 6px;background:rgba(255,255,255,.07);color:var(--sx-ink-2)
}
#v-add .set-coach{
  margin-top:12px;padding:0;border:0;border-radius:0;background:none
}
#v-add .set-coach-v{font-size:14px}
#v-add .set-coach-tip{font-size:11px}
#v-add .sets-clear{color:var(--dim)}

/* ── 3 · Sections repliables ────────────────────────────────────────────── */
.sx-fold{border-top:1px solid var(--sx-line)}
/* Les sections repliées se suivent sans espace : elles forment une seule liste,
   fermée par un filet bas pour la détacher de l'action d'enregistrement. */
#quick-add-wrap>.sx-fold+.sx-fold{margin-top:0}
#quick-add-wrap>.sx-fold:last-of-type{border-bottom:1px solid var(--sx-line)}
.sx-dot:focus-visible{outline-offset:4px}
/* Changement d'exercice : le contenu entre par le côté d'où vient le geste.
   Seuls transform et opacity sont animés — aucun recalcul de mise en page. */
.sx-card.sx-swap-next{animation:moSwapNext var(--mo-view) var(--mo-out)}
.sx-card.sx-swap-prev{animation:moSwapPrev var(--mo-view) var(--mo-out)}
.sx-nav-arrow:not(:disabled):active{transform:scale(.88)}
.sx-dot{transition:width var(--mo-quick) var(--mo-out),background var(--mo-quick) linear}
.sx-validate:active{transform:scale(.985)}
.sx-rest:active,.sx-save:active{transform:scale(.97)}
.sx-head-del:active,.sx-head-pos:active{transform:scale(.9)}
.sx-fold>summary{
  list-style:none;cursor:pointer;padding:12px 2px;display:flex;align-items:center;
  justify-content:space-between;color:var(--sx-ink-2);
  font-family:'Barlow Condensed',sans-serif;font-size:11.5px;font-weight:800;
  letter-spacing:1.5px;text-transform:uppercase
}
.sx-fold>summary::-webkit-details-marker{display:none}
.sx-fold>summary::after{
  content:'';width:8px;height:8px;border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);
  transition:transform .2s
}
.sx-fold[open]>summary{color:var(--sx-ink)}
.sx-fold[open]>summary::after{transform:rotate(-135deg) translateY(-2px)}
.sx-fold-body{padding:2px 0 14px;display:flex;flex-direction:column;gap:12px}
/* Deuxième corps dans un même repli (notes) : un filet suffit à séparer. */
.sx-fold-sep{padding-top:12px;border-top:1px solid var(--sx-line)}

/* Lignes d'information dans les sections repliées */
.sx-line{
  display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;
  padding:12px 0;border:0;border-bottom:1px solid var(--sx-line);background:none;
  color:var(--sx-ink-2);font-family:'Barlow',sans-serif;font-size:13px;text-align:left;cursor:default
}
button.sx-line{cursor:pointer}
.sx-line b{
  display:flex;align-items:center;gap:7px;color:var(--sx-ink);font-size:14px;
  font-weight:700;font-variant-numeric:tabular-nums
}
.sx-line.live b{color:var(--accent)}
.sx-line .add-disc-dot{width:8px;height:8px;border-radius:50%;display:block}
.sx-link{
  align-self:flex-start;padding:10px 0;border:0;background:none;color:var(--accent);
  font-size:13px;font-weight:700;cursor:pointer;text-align:left
}
.sx-sub{
  font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:900;
  letter-spacing:1.8px;text-transform:uppercase;color:var(--sx-ink-2);margin-bottom:8px
}
#v-add .set-options{display:flex;flex-direction:column;gap:10px;margin:0}
#v-add .set-type-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
#v-add .set-type-btn{
  min-height:44px;border:1px solid var(--sx-line);border-radius:12px;background:none;
  color:var(--sx-ink-2);font-size:10px;letter-spacing:.6px
}
#v-add .set-type-btn.on{border-color:var(--accent);color:var(--accent);background:none;box-shadow:none}
#v-add .rpe-mini{
  min-height:44px;padding:0 14px;border-radius:12px;background:none;border:1px solid var(--sx-line)
}
#v-add .rpe-mini input{font-size:17px;font-family:'Barlow Condensed',sans-serif;width:52px}
#v-add .exercise-note{
  width:100%;min-height:72px;padding:12px;border-radius:12px;background:rgba(255,255,255,.04);
  border:1px solid var(--sx-line);color:var(--sx-ink);font-family:'Barlow',sans-serif;font-size:14px
}
#v-add .note-field>label{
  display:flex;gap:6px;align-items:baseline;margin-bottom:7px;font-size:13px;color:var(--sx-ink-2)
}
#v-add .note-field>label small{color:var(--dim);font-size:11px}
#v-add .note-chips{display:flex;flex-wrap:wrap;gap:7px}
#v-add .note-chip{
  min-height:36px;padding:0 13px;border-radius:var(--r-pill);border:1px solid var(--sx-line);
  background:none;color:var(--sx-ink-2);font-size:12px;cursor:pointer
}
#v-add .ex-selected-preview{
  margin:0;padding:0;gap:12px;background:none;border:0;border-radius:0
}
#v-add .ex-selected-preview-num{display:none}
#v-add .exercise-history-card,#v-add .smart-progress,#v-add .formula-box,#v-add #ex-progress-card{
  margin:0;border-radius:14px
}
#v-add #ex-progress-card{padding:14px;background:rgba(255,255,255,.04);border:1px solid var(--sx-line)}
#v-add .formula-box{border-radius:12px;border-left-width:2px}

/* Enregistrement de l'exercice : action secondaire, contour seulement */
.sx-save{
  width:100%;min-height:46px;margin-top:11px;padding:12px;border:1px solid var(--accent);border-radius:13px;
  background:none;color:var(--accent);cursor:pointer;
  font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:900;
  letter-spacing:1.8px;text-transform:uppercase
}
.sx-save:active{transform:scale(.99)}

/* ── Panneau de choix d'exercice ────────────────────────────────────────── */
#v-add .ex-picker-panel{
  position:absolute;top:calc(100% + 8px);left:0;right:0;margin:0;border-radius:14px;
  background:var(--sx-card);border:1px solid var(--s-line-2,rgba(255,255,255,.15));z-index:20
}

/* ── Écran d'accueil de séance (logger fermé) ───────────────────────────── */
#v-add .session-hero{
  padding:0;background:none;border:0;box-shadow:none;overflow:visible
}
#v-add .session-hero::before,#v-add .session-hero::after{display:none}
#v-add .session-hero-title{font-size:clamp(26px,8vw,34px)}
#v-add .session-hero-sub{margin-top:8px;font-size:13px;color:var(--sx-ink-2)}
#v-add .session-progress{
  margin-top:16px;padding:0;background:none;border:0
}
#v-add .session-hero-grid{
  margin-top:16px;gap:0;padding:0;background:none;
  border-top:1px solid var(--sx-line);border-bottom:1px solid var(--sx-line);border-radius:0
}
#v-add .session-metric{padding:14px 6px;background:none;border:0}
#v-add .session-metric+.session-metric::before{
  content:'';position:absolute;left:0;top:24%;bottom:24%;width:1px;background:var(--sx-line)
}
#v-add .session-primary-action{
  margin:0;min-height:58px;padding:17px;border-radius:14px;background:var(--accent);
  box-shadow:none;font-size:14px;letter-spacing:2px
}
#v-add .session-secondary-row{gap:10px}
#v-add .session-secondary-btn{
  min-height:48px;border-radius:14px;border:1px solid var(--sx-line);background:none;
  box-shadow:none;justify-content:center
}
#v-add .quick-add-toggle{
  padding:15px;border-radius:14px;border:1px solid var(--sx-line);background:none;box-shadow:none
}
#v-add .tpl-presets-btn{border-radius:14px}
#v-add .workout-progress{
  padding:16px!important;border-radius:var(--sx-r)!important;background:var(--sx-card)!important;
  border:1px solid var(--sx-line)!important;box-shadow:none!important
}
#v-add .workout-progress-title{font-size:16px;letter-spacing:1px}
/* Résumé de séance : lignes séparées par de simples filets, sans cartes imbriquées */
#v-add .workout-progress-list{margin-top:14px}
#v-add .workout-progress-row{
  padding:12px 0;margin:0;border:0;border-bottom:1px solid var(--sx-line);
  border-radius:0;background:none
}
#v-add .workout-progress-row.inprogress{border-bottom:1px solid var(--sx-line)}
#v-add .workout-progress-empty{margin-top:14px}
/* « Valider la série » doit rester le seul aplat accent plein de l'écran. */
#v-add .workout-finish{
  min-height:40px;padding:10px 14px;border:1px solid var(--accent);border-radius:12px;
  background:none;color:var(--accent);box-shadow:none
}

/* ── Écrans étroits ─────────────────────────────────────────────────────── */
@media(max-width:390px){
  #v-add{--sx-space:16px}
  .sx-head-name{font-size:23px}
  #v-add .step-btn{width:50px;min-width:50px}
}
@media(max-width:340px){
  #v-add{--sx-space:14px}
  .sx-head-name{font-size:21px}
  .sx-card{padding:16px 13px 14px}
  #v-add .step-btn{width:44px;min-width:44px;font-size:22px}
  #v-add .step-input{font-size:23px}
  #v-add .set-type-btn{font-size:9px;letter-spacing:0}
}

/* ════ DIRECTION ARTISTIQUE 2026 — PERFORMANCE ÉDITORIALE ════ */
:root{
  --bg:#08090a;--bg2:#101113;--bg3:#191b1e;--card:#121417;--card2:#181a1e;
  --text:#f5f2eb;--text2:rgba(245,242,235,.78);--muted:rgba(245,242,235,.53);
  --accent:#ff4f12;--accent2:#ff7b38;--nutrition:#b7f34b;--nutrition-soft:rgba(183,243,75,.12)
}
body{background-color:var(--bg);background-image:radial-gradient(circle at 88% 4%,rgba(255,79,18,.12),transparent 26%),linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:auto,42px 42px,42px 42px}
.topbar{background:rgba(8,9,10,.92);border-bottom:1px solid rgba(255,255,255,.08)}
.topbar::after{left:0;right:72%;background:var(--accent);opacity:1}
.bnav{background:rgba(11,12,14,.96);border:1px solid rgba(255,255,255,.1);border-bottom:0;box-shadow:0 -16px 42px rgba(0,0,0,.66)}
/* Navigation compacte : chaque libellé reste dans sa colonne. */
@media(max-width:390px){
  .bnav{padding-left:5px;padding-right:5px;column-gap:0}
  .bnav .nitem{width:100%;padding-left:0;padding-right:0;overflow:hidden}
  .bnav .nlbl{display:block;width:100%;max-width:100%;font-size:8px;letter-spacing:.55px;white-space:nowrap;text-align:center;overflow:hidden;text-overflow:clip}
  .bnav .ncenter{width:54px;height:54px}
}
.card,.tool-card,.tools-list,.tools-shortcuts{border-color:rgba(255,255,255,.09)}
.tools-header{padding:18px 4px 8px}
.tools-badge{color:var(--accent);background:none;border:0;padding:0;letter-spacing:2.2px}
.tools-title{font-size:42px;line-height:.94;letter-spacing:-1.1px;max-width:300px;margin-top:9px}
.tools-intro{max-width:330px;line-height:1.55}
.tools-grid>.tool-card,.tools-list>.tool-card{background:linear-gradient(145deg,rgba(25,27,31,.98),rgba(14,15,17,.98));box-shadow:0 16px 38px rgba(0,0,0,.22),inset 0 1px rgba(255,255,255,.05)}
.tool-icon{border:1px solid rgba(255,255,255,.08)}

/* Nutrition — une surface claire, structurée et utilisable à une main. */
.nutrition-dashboard{--n:var(--nutrition);display:flex;flex-direction:column;gap:12px;padding-bottom:8px}
.nutrition-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:1fr 142px;align-items:center;min-height:190px;padding:22px 12px 22px 20px;border:1px solid rgba(183,243,75,.2);border-radius:22px;background:radial-gradient(circle at 87% 52%,rgba(183,243,75,.15),transparent 42%),linear-gradient(145deg,#181b19,#101210 70%)}
.nutrition-hero::after{content:'PROTEIN';position:absolute;left:17px;bottom:-14px;font:900 58px/1 'Barlow Condensed',sans-serif;letter-spacing:2px;color:rgba(255,255,255,.025);pointer-events:none}
.nutrition-hero-copy{position:relative;z-index:1;align-self:start;padding-top:7px}
.nutrition-kicker{display:block;font-size:8px;font-weight:800;letter-spacing:1.8px;text-transform:uppercase;color:var(--n);margin-bottom:7px}
.nutrition-hero h2,.nutrition-section-head h3{font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;color:var(--text);margin:0}
.nutrition-hero h2{font-size:27px;line-height:1.02;max-width:145px;letter-spacing:.2px}
.nutrition-hero p{font-size:11px;line-height:1.45;color:var(--muted);max-width:145px;margin:9px 0 0}
.nutrition-hero .pring-wrap{padding:0;justify-content:flex-end}
.nutrition-hero .pring{width:142px;height:142px}
.nutrition-hero .pring svg{width:142px;height:142px}
.pring-track{stroke:rgba(255,255,255,.08)}
.pring-value{stroke:var(--nutrition);filter:drop-shadow(0 0 6px rgba(183,243,75,.28));transition:stroke-dashoffset .7s cubic-bezier(.22,1,.36,1)}
.pring-num{font-size:43px}.pring-num small{font-size:17px;color:var(--nutrition);margin-left:2px}.pring-goal{font-size:10px}.pring-pct{color:var(--nutrition);font-size:9px}
.nutrition-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid rgba(255,255,255,.08);border-radius:17px;background:#111316;overflow:hidden}
.nutrition-stats>div{display:flex;flex-direction:column;padding:14px 11px}.nutrition-stats>div+div{border-left:1px solid rgba(255,255,255,.07)}
.nutrition-stats b{font:900 23px/1 'Barlow Condensed',sans-serif}.nutrition-stats b small{font-size:11px;color:var(--nutrition);margin-left:2px}.nutrition-stats span{font-size:8px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-top:6px}
.nutrition-panel{padding:18px;border:1px solid rgba(255,255,255,.09);border-radius:19px;background:linear-gradient(145deg,rgba(24,26,30,.98),rgba(15,16,18,.98));box-shadow:0 14px 34px rgba(0,0,0,.2)}
.nutrition-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:15px}.nutrition-section-head h3{font-size:19px;letter-spacing:.3px}.nutrition-section-head>strong{font-size:10px;color:var(--muted);padding-top:14px}
.nutrition-live-dot{font-size:8px;letter-spacing:1px;text-transform:uppercase;color:var(--nutrition);padding:6px 8px;border-radius:99px;background:var(--nutrition-soft)}
.nutrition-panel .tool-select{min-height:45px;margin-bottom:10px;background:#0d0f11;border:1px solid rgba(255,255,255,.1)}
.nutrition-panel .proto-add-row{margin-bottom:10px}.proto-input-wrap{position:relative;flex:1}.proto-input-wrap input{width:100%;height:48px;padding:9px 38px 9px 13px!important;background:#0d0f11!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:12px!important;font:800 19px 'Barlow Condensed',sans-serif!important}.proto-input-wrap>span{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--muted)}
.proto-add-btn,.proto-save-goal{min-height:48px;width:auto!important;padding:0 18px!important;background:var(--nutrition)!important;color:#10140a!important;border:0!important;border-radius:12px!important;box-shadow:none!important}
.proto-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:0}.proto-qbtn{min-height:39px;padding:7px 5px;border:1px solid rgba(255,255,255,.09);border-radius:10px;background:#111316;color:var(--text);font-size:12px;letter-spacing:.4px}.proto-qbtn span{color:var(--nutrition);margin-right:2px}.proto-qbtn:hover{border-color:rgba(183,243,75,.5);color:var(--text)}
.nutrition-today .tool-entry{position:relative;padding:13px 36px 13px 15px;border:0;border-left:2px solid var(--nutrition);background:#101215;margin-bottom:7px;border-radius:0 11px 11px 0}.nutrition-today .tool-entry>strong{color:var(--nutrition)}.nutrition-today .tool-entry button{position:absolute;right:10px}
.nutrition-empty{text-align:center;padding:22px 8px 12px}.nutrition-empty>span{display:block;color:var(--nutrition);font-size:25px;margin-bottom:8px}.nutrition-empty b{font-size:13px}.nutrition-empty p{font-size:11px;color:var(--muted);margin:5px 0}
.nutrition-week .pweek{height:112px;margin:4px 0 0;gap:7px}.nutrition-week .pweek-col{gap:6px}.pweek-val{font:700 9px 'Barlow Condensed',sans-serif;color:var(--muted)}.nutrition-week .pweek-bar{border-radius:4px;background:#0d0f11}.nutrition-week .pweek-bar i{background:linear-gradient(180deg,var(--nutrition),#6f9e25);border-radius:4px}.nutrition-week .pweek-col.today .pweek-bar{outline:1px solid rgba(183,243,75,.55)}.nutrition-week .pweek-col.today .pweek-d{color:var(--nutrition)}
.nutrition-goal>p{font-size:11px;line-height:1.5;color:var(--muted);margin:-5px 0 13px}.proto-goal-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:11px}.proto-goal-presets button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px;border:1px solid rgba(255,255,255,.09);border-radius:11px;background:#101215;color:var(--text)}.proto-goal-presets b{font:800 17px 'Barlow Condensed',sans-serif}.proto-goal-presets span{font-size:8px;color:var(--muted)}.proto-goal-presets button:focus,.proto-goal-presets button:hover{border-color:var(--nutrition)}.proto-goal-row{margin-bottom:0!important}
@media(max-width:370px){.nutrition-hero{grid-template-columns:1fr 126px;padding-left:16px}.nutrition-hero .pring,.nutrition-hero .pring svg{width:126px;height:126px}.nutrition-stats span{letter-spacing:.5px}.nutrition-panel{padding:15px}.proto-add-btn,.proto-save-goal{padding:0 13px!important}}
@media(prefers-reduced-motion:reduce){.pring-value{transition:none}}

/* Coach IA PRO */
.ai-program-entry{display:flex;align-items:center;gap:11px;width:100%;min-height:66px;margin:8px 0 12px;padding:11px 13px;border:1px solid rgba(232,76,13,.28);border-radius:17px;background:radial-gradient(circle at 10% 0,rgba(232,76,13,.2),transparent 48%),#131316;color:var(--text);text-align:left}.ai-program-spark{display:grid;flex:0 0 40px;width:40px;height:40px;place-items:center;border-radius:13px;background:linear-gradient(135deg,#ff6a2a,#d93d08);box-shadow:0 7px 20px rgba(232,76,13,.25);font-size:20px}.ai-program-entry>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.ai-program-entry b{font-size:13px}.ai-program-entry small{color:var(--muted);font-size:9px}.ai-program-entry em{padding:4px 6px;border-radius:7px;background:rgba(232,76,13,.14);color:var(--accent);font-size:8px;font-style:normal;font-weight:900;letter-spacing:1px}.ai-program-entry i{color:var(--muted);font-size:19px;font-style:normal}
.ai-program-overlay{display:none;position:fixed;inset:0;z-index:520;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.ai-program-overlay.show{display:flex}.ai-program-sheet{width:100%;max-width:520px;max-height:94dvh;overflow-y:auto;overscroll-behavior:contain;border:1px solid rgba(255,255,255,.1);border-radius:25px 25px 0 0;background:#0f1013;box-shadow:0 -20px 60px rgba(0,0,0,.55);padding-bottom:calc(20px + env(safe-area-inset-bottom))}.ai-program-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:18px 15px 13px;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(15,16,19,.94);backdrop-filter:blur(18px)}.ai-program-head>button{min-width:52px;border:0;background:none;color:var(--accent);font-size:11px;font-weight:800}.ai-program-head>div{display:flex;min-width:0;flex:1;flex-direction:column;align-items:center;gap:2px}.ai-program-head span{color:var(--muted);font-size:8px;font-weight:900;letter-spacing:1.3px;text-transform:uppercase}.ai-program-head b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:900 17px 'Barlow Condensed',sans-serif}.ai-program-head em{min-width:52px;color:var(--accent);font-size:8px;font-style:normal;font-weight:900;text-align:right}.ai-program-intro{margin:15px;padding:14px;border:1px solid rgba(232,76,13,.18);border-radius:15px;background:rgba(232,76,13,.07);color:var(--muted);font-size:11px;line-height:1.5}.ai-program-form{display:flex;flex-direction:column;gap:12px;padding:0 15px}.ai-program-form label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:9px;font-weight:900;letter-spacing:1px;text-transform:uppercase}.ai-program-form select,.ai-program-form textarea{width:100%;min-height:46px;padding:11px;border:1px solid rgba(255,255,255,.1);border-radius:13px;background:#17181c;color:var(--text);font:600 13px 'Barlow',sans-serif;outline:none;text-transform:none;letter-spacing:0}.ai-program-form textarea{min-height:62px;resize:vertical}.ai-program-form select:focus,.ai-program-form textarea:focus{border-color:rgba(232,76,13,.65)}.ai-program-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.ai-program-generate,.ai-import-all{min-height:52px;border:0;border-radius:15px;background:linear-gradient(135deg,#fa581d,#e84c0d);color:#fff;font-size:13px;font-weight:900;box-shadow:0 10px 24px rgba(232,76,13,.24)}.ai-program-generate:disabled{opacity:.7}.ai-program-spin{display:inline-block;animation:aiSpin 1.2s linear infinite}.ai-program-summary{display:grid;gap:8px;padding:15px}.ai-program-summary>p{margin:0 0 3px;color:var(--text);font-size:12px;line-height:1.5}.ai-program-summary>div{padding:11px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:#15161a}.ai-program-summary span{display:block;margin-bottom:4px;color:var(--accent);font-size:8px;font-weight:900;letter-spacing:1px;text-transform:uppercase}.ai-program-summary b{font-size:10px;line-height:1.45}.ai-session-list{display:flex;flex-direction:column;gap:10px;padding:0 15px}.ai-session-card{overflow:hidden;border:1px solid rgba(255,255,255,.09);border-radius:17px;background:#15161a}.ai-session-top{display:flex;flex-direction:column;gap:3px;padding:13px 14px;border-bottom:1px solid rgba(255,255,255,.07)}.ai-session-top span{color:var(--accent);font-size:8px;font-weight:900;letter-spacing:1px;text-transform:uppercase}.ai-session-top b{font:900 17px 'Barlow Condensed',sans-serif}.ai-session-top small{color:var(--muted);font-size:10px}.ai-session-exercises{padding:3px 14px}.ai-session-exercises>div{display:flex;align-items:center;gap:9px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.06)}.ai-session-exercises>div:last-child{border:0}.ai-session-exercises span{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.ai-session-exercises b{font-size:11px}.ai-session-exercises small{color:var(--muted);font-size:9px}.ai-session-exercises strong{color:var(--accent);font:800 12px 'Barlow Condensed',sans-serif}.ai-session-card>button{width:100%;min-height:42px;border:0;border-top:1px solid rgba(255,255,255,.07);background:rgba(232,76,13,.08);color:var(--accent);font-size:10px;font-weight:900;text-transform:uppercase}.ai-import-all{display:block;width:calc(100% - 30px);margin:14px 15px 0}.modal-open{overflow:hidden}@keyframes aiSpin{to{transform:rotate(360deg)}}
@media(max-width:360px){.ai-program-grid{grid-template-columns:1fr}.ai-program-entry{padding-left:10px;padding-right:10px}.ai-program-entry small{font-size:8px}}
@media(prefers-reduced-motion:reduce){.ai-program-spin{animation:none}}

/* Origine des programmes et résultat Coach IA */
.tpl-card-origin{display:inline-flex;align-items:center;gap:5px;margin:0 76px 8px 0;padding:4px 7px;border-radius:99px;font-size:8px;font-weight:900;letter-spacing:.9px;text-transform:uppercase}
.tpl-card-origin span{font-size:10px;line-height:1}.tpl-card-ai{border-color:rgba(129,92,246,.4);background:radial-gradient(circle at 0 0,rgba(129,92,246,.18),transparent 48%),var(--surface)}
.tpl-card-ai .tpl-card-origin{color:#bca9ff;background:rgba(129,92,246,.16);box-shadow:inset 0 0 0 1px rgba(188,169,255,.13)}
.tpl-card-ai .tpl-card-start{background:linear-gradient(135deg,#8b5cf6,#6842d9);box-shadow:0 7px 18px -8px rgba(139,92,246,.8)}
.tpl-card-personal .tpl-card-origin{color:var(--muted);background:rgba(255,255,255,.055);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.ai-result-hero{position:relative;display:grid;grid-template-columns:48px 1fr;gap:12px;margin:15px;padding:16px;border:1px solid rgba(139,92,246,.35);border-radius:19px;background:radial-gradient(circle at 0 0,rgba(139,92,246,.24),transparent 55%),linear-gradient(145deg,#191421,#111217);overflow:hidden}
.ai-result-icon{display:grid;width:48px;height:48px;place-items:center;border-radius:15px;background:linear-gradient(135deg,#a778ff,#6842d9);color:#fff;font-size:23px;box-shadow:0 9px 24px rgba(104,66,217,.35)}
.ai-result-hero>div:nth-child(2)>span{color:#bca9ff;font-size:8px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase}.ai-result-hero h3{margin:3px 0 5px;font:900 21px 'Barlow Condensed',sans-serif}.ai-result-hero p{margin:0;color:var(--muted);font-size:10px;line-height:1.45}
.ai-result-tags{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}.ai-result-tags b{padding:5px 8px;border:1px solid rgba(188,169,255,.16);border-radius:99px;background:rgba(139,92,246,.1);color:#cbbcff;font-size:8px;letter-spacing:.4px}
.ai-session-list-title{display:flex;align-items:center;justify-content:space-between;padding:3px 2px;color:var(--muted);font-size:9px;font-weight:900;letter-spacing:1px;text-transform:uppercase}.ai-session-list-title b{color:#bca9ff;font-size:8px}
.ai-session-card{border-color:rgba(139,92,246,.2)}.ai-session-top{flex-direction:row;align-items:center;gap:11px;background:linear-gradient(90deg,rgba(139,92,246,.1),transparent)}.ai-session-top>div{display:flex;min-width:0;flex-direction:column;gap:3px}.ai-day-badge{display:grid;flex:0 0 43px;height:43px;place-items:center;border-radius:13px;background:rgba(139,92,246,.16);color:#cbbcff!important;font-size:8px!important;text-align:center}.ai-session-exercises>div>i{display:grid;flex:0 0 23px;width:23px;height:23px;place-items:center;border-radius:8px;background:rgba(255,255,255,.055);color:var(--dim);font-size:9px;font-style:normal;font-weight:900}.ai-session-exercises strong{padding:5px 7px;border-radius:8px;background:rgba(139,92,246,.11);color:#cbbcff}.ai-session-card>button{display:flex;align-items:center;justify-content:center;gap:5px;background:rgba(139,92,246,.09);color:#bca9ff}.ai-session-card>button span{font-size:15px}.ai-import-all{background:linear-gradient(135deg,#8b5cf6,#6842d9);box-shadow:0 10px 24px rgba(104,66,217,.3)}
@media(max-width:370px){.tpl-card-origin{margin-right:64px;font-size:7px}.ai-result-hero{grid-template-columns:42px 1fr;padding:14px}.ai-result-icon{width:42px;height:42px}.ai-result-hero h3{font-size:19px}}

/* Questionnaire Coach IA : étapes lisibles et pédagogiques */
.ai-program-intro{display:flex;flex-direction:column;gap:6px}.ai-program-intro>b{color:var(--text);font-size:12px}.ai-program-intro>span{line-height:1.5}.ai-program-intro>div{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}.ai-program-intro i{padding:4px 7px;border-radius:99px;background:rgba(139,92,246,.1);color:#cbbcff;font-size:8px;font-style:normal;font-weight:800}
.ai-question-section{display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid rgba(255,255,255,.085);border-radius:17px;background:linear-gradient(155deg,rgba(139,92,246,.07),transparent 42%),#141519}
.ai-question-title{display:flex;align-items:center;gap:10px;padding-bottom:11px;border-bottom:1px solid rgba(255,255,255,.07)}.ai-question-title>i{display:grid;flex:0 0 31px;width:31px;height:31px;place-items:center;border-radius:10px;background:linear-gradient(135deg,#8b5cf6,#6842d9);color:#fff;font:900 14px 'Barlow Condensed',sans-serif;font-style:normal}.ai-question-title>span{display:flex;min-width:0;flex-direction:column;gap:2px}.ai-question-title b{color:var(--text);font-size:12px;letter-spacing:.2px;text-transform:none}.ai-question-title small{color:var(--muted);font-size:8px;font-weight:500;letter-spacing:0;text-transform:none}
.ai-program-form label>small{color:var(--dim);font-size:8px;font-weight:500;letter-spacing:0;line-height:1.35;text-transform:none}.ai-question-section select,.ai-question-section textarea{background:#101115}.ai-question-section select:focus,.ai-question-section textarea:focus{border-color:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.1)}
.ai-generate-note{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:14px;background:rgba(139,92,246,.09);color:#bca9ff}.ai-generate-note>span{font-size:19px}.ai-generate-note p{display:flex;flex-direction:column;gap:2px;margin:0;color:var(--muted);font-size:8px;line-height:1.35}.ai-generate-note b{color:#d7ccff;font-size:10px}
.ai-coach-actions{display:grid;gap:8px;margin:8px 0 12px}.ai-coach-actions .ai-program-entry{margin:0}.ai-session-entry{border-color:rgba(139,92,246,.34);background:radial-gradient(circle at 10% 0,rgba(139,92,246,.2),transparent 48%),#131316}.ai-session-entry .ai-program-spark{background:linear-gradient(135deg,#9d74ff,#6842d9);box-shadow:0 7px 20px rgba(104,66,217,.28)}.ai-session-entry em{background:rgba(139,92,246,.14);color:#cbbcff}

/* Cockpit de séance : chronos visibles, saisie rapide et hiérarchie nette */
.runner-head{background:linear-gradient(180deg,#151518,#0d0d0f);box-shadow:0 12px 30px rgba(0,0,0,.28)}
.runner-live-stats{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-top:11px}.runner-live-stat{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-height:49px;padding:8px 11px;border:1px solid rgba(255,255,255,.09);border-radius:13px;background:rgba(255,255,255,.045);color:var(--text);font:inherit;text-align:left}.runner-live-stat span{color:var(--dim);font-size:8px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase}.runner-live-stat b{margin-top:2px;font:900 19px 'Barlow Condensed',sans-serif;font-variant-numeric:tabular-nums;letter-spacing:.7px}.runner-rest-stat.resting{border-color:rgba(232,76,13,.48);background:rgba(232,76,13,.12)}.runner-rest-stat.resting b{color:#ff713c}.runner-rest-plus{min-width:53px;border:1px solid rgba(255,255,255,.09);border-radius:13px;background:rgba(255,255,255,.045);color:var(--text);font:900 11px 'Barlow Condensed',sans-serif;letter-spacing:.6px}.runner-rest-plus:active,.runner-live-stat:active{transform:scale(.97)}
.runner-body{padding:15px 13px 22px;background:radial-gradient(circle at 100% 0,rgba(232,76,13,.07),transparent 28%),#09090b}.runner-body .tpl-ex-card{margin-bottom:12px;padding:14px;border:1px solid rgba(255,255,255,.095);border-radius:18px;background:linear-gradient(160deg,rgba(27,27,32,.98),rgba(15,15,18,.99));box-shadow:0 13px 28px rgba(0,0,0,.24)}.runner-body .tpl-ex-card.active{border-color:rgba(232,76,13,.5);box-shadow:0 15px 34px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,108,54,.16)}.runner-body .tpl-ex-card-top{gap:10px}.runner-body .tpl-ex-card-name{font-size:16px;font-weight:800;line-height:1.25}.runner-body .tpl-ex-meta{margin:5px 0 10px 32px}.runner-body .tpl-live-note{margin:9px 0 11px;padding:10px 11px;border-radius:12px;background:rgba(248,197,106,.075)}
.tpl-weight-tools{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:6px;margin:0 0 10px;padding:8px 9px;border-radius:12px;background:rgba(255,255,255,.035)}.tpl-weight-tools span{color:var(--dim);font-size:9px}.tpl-weight-tools button{min-width:54px;min-height:34px;border:1px solid rgba(255,255,255,.1);border-radius:9px;background:rgba(255,255,255,.055);color:var(--text);font:800 11px 'Barlow Condensed',sans-serif}.tpl-weight-tools button:active{background:rgba(232,76,13,.14);color:var(--accent);transform:scale(.96)}
.runner-body .tplset-head{padding:0 2px 6px}.runner-body .tplset-row{padding:4px 5px;border-radius:12px}.runner-body .tplset-num{width:28px;height:28px;border-radius:9px}.runner-body .tplset-in{position:relative;min-height:46px;padding:0 30px 0 7px;border:1px solid rgba(255,255,255,.11);border-radius:12px;background:#0b0b0d}.runner-body .tplset-in:focus-within{border-color:rgba(232,76,13,.62);box-shadow:0 0 0 3px rgba(232,76,13,.09)}.runner-body .tplset-in::after{content:attr(data-unit);position:absolute;right:9px;color:var(--dim);font-size:8px;font-weight:800;text-transform:uppercase;pointer-events:none}.runner-body .tplset-in input{font-size:18px;font-variant-numeric:tabular-nums}.runner-body .tplset-del{min-height:42px}.runner-body .tpl-ex-actions{margin-top:12px}.runner-body .tpl-ex-actions .tplset-add,.runner-body .tpl-ex-actions .tpl-ex-validate{min-height:48px;border-radius:13px}.runner-body .tpl-ex-actions .tpl-ex-validate{box-shadow:0 10px 24px rgba(232,76,13,.22)}
.runner-foot{padding-top:10px;background:rgba(11,11,13,.96);backdrop-filter:blur(18px)}.runner-foot .tpl-pts-total{border-radius:13px}.runner-foot .sbtn{min-height:50px;border-radius:14px}
@media(max-width:360px){.runner-live-stats{grid-template-columns:1fr 1fr}.runner-rest-plus{grid-column:1/-1;min-height:34px}.tpl-weight-tools{grid-template-columns:1fr 52px 52px}.tpl-weight-tools span{font-size:8px}}
.logger-exit-bar{position:sticky;top:calc(70px + env(safe-area-inset-top,0px));z-index:45;display:flex;align-items:center;gap:10px;width:100%;min-height:58px;padding:9px 11px;border:1px solid rgba(255,111,55,.58);border-radius:16px;background:linear-gradient(135deg,rgba(56,24,13,.98),rgba(24,17,16,.98));color:var(--text);box-shadow:0 12px 30px rgba(0,0,0,.4),0 0 0 3px rgba(232,76,13,.08);backdrop-filter:blur(18px);text-align:left}.logger-exit-icon{display:grid;flex:0 0 35px;width:35px;height:35px;place-items:center;border-radius:11px;background:var(--accent);color:#fff;font-size:28px;line-height:1}.logger-exit-bar>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.logger-exit-bar b{font-size:12px}.logger-exit-bar small{color:#d3aca0;font-size:9px}.logger-exit-bar strong{flex:0 0 auto;padding:7px 9px;border-radius:9px;background:rgba(255,255,255,.08);color:#ff8a5b;font:900 9px 'Barlow Condensed',sans-serif;letter-spacing:1px;text-transform:uppercase}.logger-exit-bar:active{transform:scale(.985)}

/* ════ COACH IA CHAT ════ */
.ai-chat-overlay{position:fixed;inset:0;z-index:90;display:flex;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.55);opacity:0;pointer-events:none;transition:opacity .25s ease;backdrop-filter:blur(6px)}
.ai-chat-overlay.show{opacity:1;pointer-events:auto}
.ai-chat-sheet{position:relative;display:flex;width:100%;max-width:520px;max-height:92dvh;flex-direction:column;border-radius:22px 22px 0 0;background:linear-gradient(180deg,#131316,#0b0b0d);box-shadow:0 -20px 60px rgba(0,0,0,.55);transform:translateY(100%);transition:transform .28s cubic-bezier(.2,.8,.2,1)}
.ai-chat-overlay.show .ai-chat-sheet{transform:translateY(0)}
.ai-chat-head{display:flex;align-items:center;gap:10px;padding:14px 14px 10px;border-bottom:1px solid var(--border)}
.ai-chat-close{display:grid;flex:0 0 34px;width:34px;height:34px;place-items:center;border-radius:50%;background:rgba(255,255,255,.06);color:var(--muted);font-size:16px}
.ai-chat-title{display:flex;flex:1;align-items:center;gap:11px;min-width:0}
.ai-chat-avatar{display:grid;flex:0 0 40px;width:40px;height:40px;place-items:center;border-radius:12px;background:linear-gradient(135deg,#8b5cf6,#6842d9);color:#fff;font-size:18px;box-shadow:0 6px 16px rgba(104,66,217,.3)}
.ai-chat-title b{display:block;font-size:15px}.ai-chat-title small{display:block;color:var(--muted);font-size:9px}
.ai-chat-badge{flex:0 0 auto;padding:5px 8px;border-radius:99px;background:rgba(139,92,246,.12);color:#cbbcff;font-size:8px;font-weight:900;letter-spacing:.8px;text-transform:uppercase}
.ai-chat-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:14px;display:flex;flex-direction:column;gap:14px;scroll-padding-bottom:14px}
.ai-chat-welcome{display:flex;flex-direction:column;gap:8px;padding:16px;border:1px solid rgba(139,92,246,.2);border-radius:18px;background:radial-gradient(circle at 0 0,rgba(139,92,246,.14),transparent 50%),#14151a}
.ai-chat-welcome b{color:#d7ccff;font-size:13px}.ai-chat-welcome span{color:var(--muted);font-size:11px;line-height:1.5}
.ai-chat-suggestions{display:flex;flex-wrap:wrap;gap:7px;margin-top:6px}.ai-chat-suggestions button{padding:7px 11px;border:1px solid rgba(139,92,246,.28);border-radius:99px;background:rgba(139,92,246,.1);color:#cbbcff;font-size:9px;font-weight:700}.ai-chat-suggestions button:active{background:rgba(139,92,246,.2)}
.ai-chat-msg{display:flex;flex-direction:column;gap:3px;max-width:88%}.ai-chat-assistant{align-self:flex-start}.ai-chat-user{align-self:flex-end}
.ai-chat-bubble{padding:11px 13px;border-radius:17px;font-size:12px;line-height:1.55;word-break:break-word}
.ai-chat-assistant .ai-chat-bubble{border:1px solid rgba(139,92,246,.22);background:#1a1a20;color:var(--text);border-bottom-left-radius:5px}
.ai-chat-user .ai-chat-bubble{background:linear-gradient(135deg,#8b5cf6,#6842d9);color:#fff;border-bottom-right-radius:5px}
.ai-chat-time{color:var(--dim);font-size:8px}.ai-chat-user .ai-chat-time{text-align:right}
.ai-chat-foot{padding:10px 14px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);background:#0f0f12}
.ai-chat-input-wrap{display:flex;align-items:flex-end;gap:8px;padding:6px 8px;border:1px solid rgba(255,255,255,.1);border-radius:18px;background:#0b0b0d}
.ai-chat-input-wrap textarea{flex:1;min-height:22px;max-height:110px;padding:8px 4px;border:none;background:transparent;color:var(--text);font:inherit;font-size:13px;line-height:1.45;resize:none;outline:none}
.ai-chat-input-wrap textarea::placeholder{color:var(--dim)}
#ai-chat-send{display:grid;flex:0 0 38px;width:38px;height:38px;place-items:center;border-radius:50%;background:linear-gradient(135deg,#8b5cf6,#6842d9);color:#fff;box-shadow:0 4px 12px rgba(104,66,217,.3)}#ai-chat-send:disabled{opacity:.5}
.ai-chat-disclaimer{margin-top:8px;color:var(--dim);font-size:8px;text-align:center;line-height:1.4}
.ai-chat-limit{margin-top:5px;color:#cbbcff;font-size:8px;text-align:center;font-weight:700}
@media(min-width:520px){.ai-chat-sheet{border-radius:22px;max-height:min(760px,90vh);margin-bottom:5vh;transform:translateY(20px) scale(.96)}.ai-chat-overlay.show .ai-chat-sheet{transform:translateY(0) scale(1)}}

/* Cartes de séance générées directement dans le chat */
.ai-chat-session-bubble,.ai-chat-confirm-bubble{padding:14px 14px 16px;background:linear-gradient(145deg,#1a1625,#111218);border-color:rgba(139,92,246,.28)}
.ai-chat-session-title{font:900 16px 'Barlow Condensed',sans-serif;color:#d7ccff;margin-bottom:3px}
.ai-chat-session-sub{color:var(--muted);font-size:9px;font-weight:800;letter-spacing:1px;text-transform:uppercase;margin-bottom:11px}
.ai-chat-session-list{display:flex;flex-direction:column;gap:8px;margin-bottom:13px}
.ai-chat-sess-ex{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;background:rgba(255,255,255,.045)}
.ai-chat-sess-num{display:grid;flex:0 0 26px;width:26px;height:26px;place-items:center;border-radius:8px;background:rgba(139,92,246,.16);color:#cbbcff;font-size:9px;font-weight:900}
.ai-chat-sess-info{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}
.ai-chat-sess-info b{font-size:12px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-chat-sess-info small{color:var(--muted);font-size:9px}
.ai-chat-session-actions{display:flex;flex-wrap:wrap;gap:8px}
.ai-chat-sess-btn{flex:1;min-height:42px;padding:0 14px;border:1px solid rgba(139,92,246,.25);border-radius:12px;background:rgba(139,92,246,.1);color:#cbbcff;font-size:10px;font-weight:800}
.ai-chat-sess-btn:disabled{opacity:.5}.ai-chat-sess-btn.primary{background:linear-gradient(135deg,#8b5cf6,#6842d9);border-color:transparent;color:#fff;box-shadow:0 7px 18px rgba(104,66,217,.25)}
.ai-chat-confirm-title{font:900 15px 'Barlow Condensed',sans-serif;color:#d7ccff;margin-bottom:10px}
.ai-chat-confirm-row{margin-bottom:12px}
.ai-chat-confirm-q{color:var(--muted);font-size:11px;margin-bottom:7px}
.ai-chat-confirm-suggestions{display:flex;flex-wrap:wrap;gap:6px}
.ai-chat-sess-suggest{padding:6px 10px;border:1px solid rgba(255,255,255,.1);border-radius:99px;background:rgba(255,255,255,.055);color:var(--text);font-size:10px;font-weight:700}
.ai-chat-sess-suggest.selected{background:rgba(139,92,246,.25);border-color:rgba(139,92,246,.5);color:#cbbcff}
