/* Polices hébergées en local (fonts/) — 0 dépendance réseau au démarrage, fonctionne 100% hors-ligne */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('fonts/manrope-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url('fonts/spacegrotesk-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Pacifico';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/pacifico-400.woff2') format('woff2');
}
/* Empêche de « faire glisser » l'image fantôme (drag natif iOS) — appui long en séance
   ne déplace plus la vignette de l'exercice. Le tap et le zoom restent normaux.
   iOS Safari ignore -webkit-user-drag seul : il faut aussi couper le callout (menu
   appui-long) et la sélection pour bloquer le « lift »/drag de l'image (ft-v294). */
img {
  -webkit-user-drag: none; -khtml-user-drag: none; user-drag: none;
  -webkit-touch-callout: none;
  -webkit-user-select: none; user-select: none;
}

:root {
  /* DARK MODE — Charcoal Pro */
  --bg: #0C0D11; --bg2: #14161C; --bg3: #1B1E26;
  --sep: rgba(255,255,255,.08);
  --t1: #F2F3F5; --t2: #8A8F99; --t3: #6B7180;
  --red: #FF6A73; --red2: #EF3E57; --green: #34D399; --blue: #5BA8FF;
  --gold: #EAB308; --orange: #FF8A72; --purp: #A855F7;
  --r: 16px; --r-sm: 10px;
  --font: 'Manrope', -apple-system, sans-serif;
  --font-cond: 'Space Grotesk', sans-serif;
}
/* LIGHT MODE — adouci (blanc cassé, moins de glare) */
#root.light-mode, html.light-mode {
  --bg: #E7E8EC; --bg2: #F6F6F9; --bg3: #DCDDE4;
  --sep: #CBCCD6; --t1: #12121E; --t2: #4A4A6A; --t3: #8888AA;
  --red: #D91843; --green: #00A856; --blue: #1565C0;
  --gold: #CC8800; --orange: #CC5200;
}
#root.light-mode .topbar {
  background: #0C0D11;
  border-bottom: none;
}
#root.light-mode .topbar::after { display: none; }
#root.light-mode .nav {
  background: rgba(242,242,247,.95);
  border-top: 1px solid var(--sep);
}
#root.light-mode .rm-hero {
  background: linear-gradient(135deg,#F0F0FF,#E8E8FF);
  border-color: rgba(255,45,85,.2);
}
#root.light-mode .rm-hero::before { display:none; }
#root.light-mode .sbox:nth-child(1){background:linear-gradient(135deg,#E8F0FF,#EEF4FF);border-color:rgba(41,121,255,.2);}
#root.light-mode .sbox:nth-child(2){background:linear-gradient(135deg,#F0E8FF,#F6EEFF);border-color:rgba(170,0,255,.15);}
#root.light-mode .sbox:nth-child(3){background:linear-gradient(135deg,#FFE8EE,#FFF0F3);border-color:rgba(255,45,85,.2);}
#root.light-mode .sbox:nth-child(4){background:linear-gradient(135deg,#FFFDE8,#FFFBEE);border-color:rgba(255,214,0,.2);}
#root.light-mode .ex-hdr{background:linear-gradient(90deg,rgba(255,45,85,.05),transparent);}
#root.light-mode .cycle-card{background:rgba(255,45,85,.04);}
#root.light-mode .suppl-card .suppl-header{background:linear-gradient(90deg,rgba(41,121,255,.04),transparent);}
html.light-mode #menu-drawer{box-shadow:-4px 0 20px rgba(0,0,0,.10);}
html.light-mode #menu-drawer-bd{background:rgba(0,0,0,.25);}
#root.light-mode .drawer-hd{background:var(--bg2);}
#root.light-mode .drawer{box-shadow:-4px 0 16px rgba(0,0,0,.10);}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
html,body{height:100%;overflow:hidden;background:var(--bg);font-family:var(--font);color:var(--t1);overscroll-behavior-x:none;}
#root{display:flex;flex-direction:column;height:100dvh;max-width:430px;margin:0 auto;background: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.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E") repeat, radial-gradient(150% var(--halo-h,92%) at 50% var(--halo-y,0%), var(--halo,transparent), transparent var(--halo-stop,66%)) no-repeat, var(--bg);overflow:hidden;position:relative;}
/* Halo d'ambiance (signature du MODE NUIT) : un seul halo bleu derriere tout, reglable via Apparence (Menu). */
#root{ --halo-rgb:59,130,246; --halo-a:.30; --halo:rgba(var(--halo-rgb),var(--halo-a)); }
#root.light-mode{ background:var(--bg); } /* mode jour = clair epure, pas de halo */
html.no-halo #root{ background:var(--bg); } /* Apparence \00ab Fond uni \00bb */
.appr-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 8px;border-radius:12px;border:none;background:var(--bg3);color:var(--t2);font-family:var(--font);font-size:13px;font-weight:700;cursor:pointer;box-shadow:inset 0 0 0 1px var(--sep);touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:all .18s;}
.appr-btn.active{color:var(--t1);box-shadow:inset 0 0 0 2px var(--blue);background:rgba(91,168,255,.10);}
.appr-sw{width:18px;height:18px;border-radius:6px;flex-shrink:0;display:inline-block;}
.appr-colors{display:flex;flex-wrap:wrap;gap:10px;}
.appr-color{width:30px;height:30px;border-radius:50%;border:none;cursor:pointer;flex-shrink:0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:transform .12s;padding:0;}
.appr-color.active{box-shadow:0 0 0 2px var(--bg2),0 0 0 4px var(--t1);transform:scale(1.06);}
@media(orientation:landscape) and (hover:none) and (pointer:coarse){#rotate-overlay{display:flex!important;}}

/* TOPBAR */
.topbar{
  background:transparent;
  border-bottom:none;
  padding:max(env(safe-area-inset-top),44px) 16px 14px;
  display:flex;align-items:center;justify-content:space-between;flex-shrink:0;
  position:relative;
}
.topbar::after{display:none;}
.tb-title{font-family:var(--font-cond);font-size:21px;font-weight:800;letter-spacing:-.02em;color:#FF5A64;}
.tb-sub{font-size:13.5px;color:#F2F3F5;margin-top:1px;font-weight:500;opacity:.75;}
.topbar button{color:#F2F3F5;}
.sync-pill{display:flex;align-items:center;gap:5px;padding:6px 12px;border-radius:999px;border:none;background:rgba(242,243,245,.08);color:#F2F3F5;font-size:12px;cursor:pointer;font-family:var(--font);font-weight:600;transition:all .2s;}
.sync-pill.ok{color:#5be3b4;background:rgba(52,211,153,.1);}
#s-home{padding:0 0 calc(max(env(safe-area-inset-bottom,0px),8px) + 170px);gap:0;}
#s-log{padding:0 14px calc(max(env(safe-area-inset-bottom,0px),8px) + 170px);gap:10px;}
#s-setup{padding:0 0 calc(max(env(safe-area-inset-bottom,0px),8px) + 170px);gap:0;}
.menu-avatar{width:48px;height:48px;border-radius:15px;background:linear-gradient(135deg,#FF6A73,#EF3E57);display:flex;align-items:center;justify-content:center;font-family:var(--font-cond);font-size:23px;font-weight:900;color:#fff;flex-shrink:0;box-shadow:0 4px 14px -4px rgba(239,62,87,.45);}
.menu-row{display:flex;align-items:center;gap:14px;padding:15px 16px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .12s,transform .08s;touch-action:manipulation;background:var(--bg2);border-radius:14px;box-shadow:inset 0 0 0 1px var(--sep);}
.menu-row:active{background:var(--bg3);transform:scale(.985);}
/* Groupe de rows = cartes séparées (maquette Menu 06) */
.menu-group{display:flex;flex-direction:column;gap:10px;}
.menu-row-ic{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px;}
.menu-row-lbl{flex:1;font-size:15px;font-weight:600;color:var(--t1);}
.menu-row-arr{color:var(--t3);flex-shrink:0;}
/* MENU DRAWER */
#menu-drawer-bd{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9000;opacity:0;pointer-events:none;transition:opacity 250ms cubic-bezier(.4,0,.2,1);}
#menu-drawer-bd.open{opacity:1;pointer-events:all;}
#menu-drawer{position:fixed;top:0;bottom:0;right:max(0px,calc(50vw - 215px));width:min(352px,82vw);background:var(--bg);z-index:9001;transform:translateX(calc(100% + max(0px,50vw - 215px)));transition:transform 250ms cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden;box-shadow:-12px 0 40px rgba(0,0,0,.45);}
#menu-drawer.open{transform:translateX(0);}
#menu-drawer-body{flex:1;overflow-y:auto;padding:12px 16px 32px;display:flex;flex-direction:column;gap:10px;min-height:0;}
#menu-drawer-body>*{flex-shrink:0;}
.slq-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;background:var(--bg3);border:1.5px solid transparent;border-radius:10px;cursor:pointer;font-size:11px;font-weight:600;color:var(--t2);font-family:var(--font);touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:border-color .15s,background .15s,color .15s;}
.slq-btn.active{border-color:var(--green);background:rgba(52,211,153,.1);color:#5be3b4;}
.slq-bars{display:flex;gap:3px;align-items:flex-end;height:16px;}
.slq-bar{width:5px;border-radius:3px;background:var(--t3);}
.slq-btn.active .slq-bar{background:var(--green);}
.slq-bar-off{background:rgba(255,255,255,.1)!important;}

/* REST BAR */
#rest-bar{position:sticky;top:52px;z-index:20;display:none;flex-direction:column;align-items:center;
  gap:4px;padding:5px 12px 6px;margin:0 -14px;
  background:var(--bg2);border:1px solid rgba(52,211,153,.3);border-radius:0 0 16px 16px;
  transition:border-color .4s;}
#rest-bar.show{display:flex;}
#rest-time{font-family:var(--font-cond);font-size:26px;font-weight:900;line-height:1;letter-spacing:0;font-variant-numeric:tabular-nums;color:var(--green);transition:color .4s;}
#rest-label:empty{display:none;}          /* ligne label masquée quand vide → gagne ~15px de hauteur */
/* Écran GO : après 5 s sans tap, cycle de couleurs (attrape-l'œil) */
#ov-rest-countdown.go-cycle{animation:goCycle 3.2s linear infinite;}
@keyframes goCycle{0%{background:#00e676;}20%{background:#2979FF;}40%{background:#AA00FF;}60%{background:#FF6C00;}80%{background:#FF2D55;}100%{background:#00e676;}}
#rest-wrap{width:100%;max-width:260px;height:5px;background:var(--sep);border-radius:3px;overflow:hidden;}
#rest-bar .rbtn{padding:5px 9px;font-size:12px;border-radius:7px;}
#rest-fill{height:100%;background:var(--green);border-radius:3px;transition:width .5s linear,background .4s;}
#rest-btns{display:flex;gap:4px;align-items:center;flex-wrap:wrap;justify-content:center;}

/* PILL CHRONO FLOTTANTE */
#rest-pill{display:none;flex-shrink:0;height:38px;padding:0 14px;
  background:#0e1016;border-bottom:1px solid rgba(52,211,153,.4);
  align-items:center;gap:8px;cursor:pointer;touch-action:manipulation;overflow:hidden;
  -webkit-tap-highlight-color:transparent;transition:border-color .4s;
  position:relative;z-index:30;}
#rest-pill.show{display:flex;}
#rest-pill-time{font-family:var(--font-cond);font-size:15px;font-weight:900;
  font-variant-numeric:tabular-nums;color:#fff;letter-spacing:0;min-width:34px;}
#rest-pill-bar{flex:1;height:3px;background:rgba(255,255,255,.12);border-radius:2px;overflow:hidden;}
#rest-pill-fill{height:100%;border-radius:2px;background:var(--green);transition:width .5s linear,background .4s;}
.rbtn{font-size:14px;padding:8px 10px;border-radius:8px;border:1px solid var(--sep);background:rgba(255,255,255,.06);color:var(--t1);cursor:pointer;font-family:var(--font);font-weight:600;}
.rbtn.rp-active{background:var(--red);color:#fff;border-color:var(--red);}
.imp-dot{width:8px;height:8px;border-radius:4px;background:var(--sep);transition:all .3s;}
.imp-dot.active{width:24px;background:var(--red);}
/* ANIMATIONS + INTERACTIONS */
@keyframes ftRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.ft-rise{animation:ftRise .6s cubic-bezier(.22,.61,.36,1) both}
.ft-press{transition:transform .18s cubic-bezier(.22,.61,.36,1),box-shadow .25s,background .25s,border-color .25s,color .2s}
/* HOME ROW */
.home-row{display:flex;align-items:center;gap:13px;padding:15px 16px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
.home-row-ic{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex:none;}
.home-row-cnt{flex:1;}
.home-row-ttl{font-size:15px;font-weight:700;color:var(--t1);}
.home-row-sub{font-size:12px;color:var(--t3);margin-top:2px;line-height:1.4;}
.home-row-chev{flex:none;color:var(--t3);}
/* Coach proactif — carte Milo sur l'Accueil (brique 4) */
.milo-card{display:flex;align-items:flex-start;gap:12px;padding:13px 12px 13px 14px;border-radius:16px;background:var(--bg2);box-shadow:inset 0 0 0 1px var(--sep);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;position:relative;overflow:hidden;}
.milo-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#FF6A73,#EF3E57);}
.milo-av{width:34px;height:34px;border-radius:11px;flex:none;background:linear-gradient(135deg,#FF6A73,#EF3E57);display:flex;align-items:center;justify-content:center;box-shadow:0 5px 13px -4px rgba(239,62,87,.5);}
.milo-name{font-size:12px;font-weight:800;letter-spacing:.02em;color:var(--red);margin-bottom:2px;}
.milo-txt{font-size:13.5px;line-height:1.42;color:var(--t1);}
.milo-x{flex:none;width:26px;height:26px;margin:-2px -2px 0 0;border:none;background:transparent;color:var(--t3);display:flex;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.milo-x:active{background:var(--bg3);}
/* Observation de Milo à valider (brique 5A) */
.obs-card{padding:14px;border-radius:16px;background:var(--bg2);box-shadow:inset 0 0 0 1px var(--sep);position:relative;overflow:hidden;}
.obs-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#FF6A73,#EF3E57);}
.obs-head{display:flex;align-items:center;gap:10px;margin-bottom:9px;}
.obs-lead{font-size:12px;font-weight:800;letter-spacing:.02em;color:var(--red);}
.obs-txt{font-size:14.5px;line-height:1.5;color:var(--t1);margin-bottom:13px;}
.obs-btns{display:flex;gap:9px;}
.obs-yes,.obs-no{flex:1;padding:11px 8px;border-radius:11px;font-size:13.5px;font-weight:700;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit;}
.obs-yes{background:linear-gradient(135deg,#FF6A73,#EF3E57);color:#fff;box-shadow:0 5px 13px -5px rgba(239,62,87,.55);}
.obs-no{background:var(--bg3);color:var(--t2);box-shadow:inset 0 0 0 1px var(--sep);}
/* Ce que Milo sait de toi */
.mk-row{display:flex;align-items:center;gap:10px;padding:12px;border-radius:12px;background:var(--bg2);box-shadow:inset 0 0 0 1px var(--sep);margin-bottom:9px;}
.mk-txt{flex:1;font-size:13.5px;line-height:1.42;color:var(--t1);}
.mk-del{flex:none;width:30px;height:30px;border:none;background:transparent;color:var(--t3);display:flex;align-items:center;justify-content:center;border-radius:9px;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.mk-del:active{background:var(--bg3);color:var(--red);}
.mk-empty{font-size:13px;color:var(--t3);line-height:1.55;padding:6px 2px;}
/* État du jour (brique 3B) */
.ds-card{padding:12px 13px;border-radius:16px;background:var(--bg2);box-shadow:inset 0 0 0 1px var(--sep);}
.ds-ttl{font-size:13.5px;font-weight:700;color:var(--t1);margin-bottom:9px;}
.ds-opt{font-weight:500;color:var(--t3);font-size:11.5px;}
.ds-row{display:flex;gap:8px;margin-bottom:10px;}
.ds-en{flex:1;padding:8px 0;border-radius:11px;border:none;background:var(--bg3);box-shadow:inset 0 0 0 1px var(--sep);font-size:20px;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1;}
.ds-en.on{background:rgba(239,62,87,.14);box-shadow:inset 0 0 0 1.5px var(--red);}
.ds-sub{font-size:11.5px;color:var(--t3);margin-bottom:7px;}
.ds-zrow{display:flex;flex-wrap:wrap;gap:6px;}
.ds-z{padding:6px 11px;border-radius:20px;border:none;background:var(--bg3);box-shadow:inset 0 0 0 1px var(--sep);color:var(--t2);font-size:12px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit;}
.ds-z.on{background:var(--red);color:#fff;box-shadow:none;}
.ds-siderow{display:flex;align-items:center;gap:6px;margin-top:6px;}
.ds-sidelbl{flex:1;min-width:0;font-size:12px;color:var(--t2);font-weight:600;}
.ds-side{padding:5px 12px;border-radius:14px;border:none;background:var(--bg3);box-shadow:inset 0 0 0 1px var(--sep);color:var(--t2);font-size:12px;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit;}
.ds-side.on{background:var(--red);color:#fff;box-shadow:none;}
/* ── Écran de fin de séance ── */
.se-modal{max-height:92vh;overflow-y:auto;-webkit-overflow-scrolling:touch;text-align:left;}
.se-hd{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.se-badge{width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,#FF6A73,#EF3E57);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0;box-shadow:0 6px 16px -4px rgba(239,62,87,.45);}
.se-ttl{font-size:20px;font-weight:900;color:var(--t1);line-height:1.1;}
.se-sub{font-size:12.5px;color:var(--t3);margin-top:2px;}
.se-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px;}
.se-stat{background:var(--bg2);border-radius:14px;padding:11px 13px;box-shadow:inset 0 0 0 1px var(--sep);}
.se-stat.pr{background:rgba(234,179,8,.12);box-shadow:inset 0 0 0 1.5px var(--gold);}
.se-stat-v{font-size:20px;font-weight:800;color:var(--t1);font-family:var(--font-cond,inherit);line-height:1;}
.se-stat.pr .se-stat-v{color:var(--gold);}
.se-stat-l{font-size:10.5px;color:var(--t3);text-transform:uppercase;letter-spacing:.05em;margin-top:4px;}
.se-exs{display:flex;flex-direction:column;gap:7px;margin-bottom:14px;}
.se-ex{display:flex;align-items:center;gap:10px;background:var(--bg2);border-radius:12px;padding:8px 10px;box-shadow:inset 0 0 0 1px var(--sep);}
.se-ex-img{width:40px;height:40px;border-radius:9px;object-fit:cover;background:var(--bg3);flex-shrink:0;}
.se-ex-nm{font-size:13.5px;font-weight:700;color:var(--t1);line-height:1.2;}
.se-ex-dt{font-size:11.5px;color:var(--t3);margin-top:1px;}
.se-debrief-wrap{background:var(--bg2);border-radius:16px;padding:13px 14px;box-shadow:inset 0 0 0 1px var(--sep);margin-bottom:14px;}
.se-debrief-hd{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;color:var(--red);margin-bottom:9px;}
.se-milo-av{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,#FF6A73,#EF3E57);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.se-debrief{font-size:14px;color:var(--t1);line-height:1.6;}
.se-debrief .se-load{color:var(--t3);font-size:13px;font-style:italic;}
.se-debrief p{margin:0 0 8px;}
.se-mood{background:var(--bg2);border-radius:16px;padding:13px 14px;box-shadow:inset 0 0 0 1px var(--sep);}
.se-mood-q{font-size:13.5px;font-weight:700;color:var(--t1);margin-bottom:10px;}
.se-mood-row{display:flex;gap:8px;}
.se-mood-btn{flex:1;padding:10px 0;border-radius:12px;border:none;background:var(--bg3);box-shadow:inset 0 0 0 1px var(--sep);font-size:22px;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1;}
.se-mood-btn.on{background:rgba(239,62,87,.14);box-shadow:inset 0 0 0 1.5px var(--red);}
.imp-spinner{width:36px;height:36px;border:3px solid var(--sep);border-top-color:var(--red);border-radius:50%;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* NAV */
.nav{display:flex;align-items:flex-end;overflow:visible;background:linear-gradient(180deg,rgba(12,13,17,0),#0c0d11 32%);border-top:none;padding:22px 26px 0;padding-bottom:max(env(safe-area-inset-bottom),8px);position:absolute;bottom:0;left:0;right:0;z-index:20;}
.nb{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:0;background:none;border:none;cursor:pointer;font-family:var(--font);color:var(--t3);font-size:10px;font-weight:600;transition:color .15s;touch-action:manipulation;-webkit-tap-highlight-color:transparent;position:relative;}
.new-dot{position:absolute;top:2px;right:10px;width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 0 2px var(--bg2);pointer-events:none;z-index:1;}
/* Point rouge « nouveauté » INLINE dans une ligne de menu (indique QUEL item a du neuf) */
.menu-new-dot{flex-shrink:0;width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 0 4px rgba(255,45,85,.14);margin-right:8px;pointer-events:none;}
/* Point rouge « nouveauté » sur un élément précis d'un écran (onglet, carte, bouton) → montre OÙ est le neuf */
.feat-dot{position:absolute;top:6px;right:6px;width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 0 2px var(--bg2);pointer-events:none;z-index:4;animation:feat-dot-pulse 1.8s ease-in-out infinite;}
@keyframes feat-dot-pulse{0%,100%{box-shadow:0 0 0 2px var(--bg2),0 0 0 4px rgba(255,45,85,.35);}50%{box-shadow:0 0 0 2px var(--bg2),0 0 0 8px rgba(255,45,85,0);}}

/* ─── Statut « Testeur Fondateur » (récompense exclusive) ────── */
.tester-card{position:relative;display:flex;align-items:center;gap:13px;background:linear-gradient(135deg,rgba(234,179,8,.15),rgba(234,179,8,.03));border:1px solid rgba(234,179,8,.42);border-radius:16px;padding:14px 16px;overflow:hidden;}
.tester-card::after{content:"";position:absolute;top:-40%;right:-10%;width:120px;height:180px;background:radial-gradient(circle,rgba(234,179,8,.16),transparent 70%);pointer-events:none;}
.tester-card .tc-star{width:44px;height:44px;border-radius:13px;flex:none;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle,rgba(234,179,8,.30),rgba(234,179,8,.05));box-shadow:0 0 0 1px rgba(234,179,8,.30) inset;animation:tc-star-pulse 2.6s ease-in-out infinite;}
@keyframes tc-star-pulse{0%,100%{transform:scale(1);}50%{transform:scale(1.08);}}
.tester-card .tc-ttl{font-size:12px;font-weight:800;letter-spacing:.09em;color:var(--gold);text-transform:uppercase;}
.tester-card .tc-msg{font-size:13px;line-height:1.5;color:var(--t2);margin-top:3px;}
.tester-card .tc-sign{color:var(--gold);font-weight:700;white-space:nowrap;}
.tester-card .tc-espace{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:7px 12px;border-radius:10px;background:rgba(234,179,8,.16);border:1px solid rgba(234,179,8,.40);color:var(--gold);font-size:12.5px;font-weight:800;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
.tester-card .tc-espace:active{background:rgba(234,179,8,.26);}
/* Menu analyses photo (Coach) — 1 bouton → 2 choix */
.pm-opt{display:flex;align-items:center;gap:12px;width:100%;background:var(--bg3);border:1px solid var(--sep);border-radius:14px;padding:13px 14px;cursor:pointer;font-family:var(--font);text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
.pm-opt:active{background:var(--bg2);}
.pm-ic{width:42px;height:42px;border-radius:12px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--bg2);border:1px solid var(--sep);}
.pm-title{font-size:14.5px;font-weight:800;color:var(--t1);}
.pm-sub{font-size:11.5px;color:var(--t3);line-height:1.35;margin-top:2px;}
/* Espace testeur — lignes de la bienvenue */
.sw-feat{display:flex;gap:12px;align-items:flex-start;background:var(--bg3);border:1px solid var(--sep);border-radius:12px;padding:12px 13px;}
.sw-feat>span{font-size:22px;line-height:1.2;flex:none;}
.sw-feat b{display:block;font-size:14px;color:var(--t1);}
.sw-feat small{display:block;font-size:12px;color:var(--t3);line-height:1.4;margin-top:3px;}
/* Boîte à idées */
.tsp-card{background:var(--bg3);border:1px solid var(--sep);border-radius:14px;padding:14px;margin-bottom:12px;}
.tsp-card h4{font-size:14.5px;font-weight:800;color:var(--t1);margin:0 0 3px;display:flex;align-items:center;gap:7px;}
.tsp-card p{font-size:12.5px;color:var(--t3);line-height:1.45;margin:0 0 10px;}
.tsp-idea{background:var(--bg2);border:1px solid var(--sep);border-radius:10px;padding:9px 11px;font-size:13px;color:var(--t2);line-height:1.4;margin-bottom:7px;}
.tsp-idea .tsp-idea-date{display:block;font-size:10.5px;color:var(--t3);margin-top:4px;}
.nb svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;}
.nb.active{color:var(--red);}
.nb-ctr{color:var(--t3);}
.nb-ctr.active{color:var(--red);}
/* Bouton central « + » — docké DANS la barre (fini le flottant #fab-session) */
.nb-plus{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,#FF6A73,#EF3E57);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px -6px rgba(239,62,87,.6);transition:box-shadow .2s,transform .15s;}
.nb-plus svg{width:24px;height:24px;stroke:#fff;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;}
#root.on-log .nb-plus{box-shadow:0 8px 20px -6px rgba(239,62,87,.85);transform:scale(1.06);}

/* SCREENS */
.screens{flex:1;overflow:hidden;position:relative;}
.screen{position:absolute;top:0;left:0;right:0;bottom:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:12px 14px calc(max(env(safe-area-inset-bottom,0px),8px) + 170px);display:none;flex-direction:column;gap:10px;background:transparent;}
.screen.active{display:flex;}
/* Espaceur bas de scroll (fix iOS : padding-bottom d'un flex scroll ignoré par Safari).
   Un vrai élément est toujours compté dans la hauteur scrollable → la dernière carte passe au-dessus de la nav. */
.scroll-spacer{flex:0 0 auto;height:calc(max(env(safe-area-inset-bottom,0px),8px) + 110px);}
#s-progress{padding-bottom:8px;}
/* Chips de navigation période du graphique de poids */
.wrange-chip{flex:1;min-width:0;padding:7px 6px;border-radius:9px;border:1px solid var(--sep);background:var(--bg2);color:var(--t3);font-size:12px;font-weight:700;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .15s;}
.wrange-chip.active{background:rgba(91,168,255,.14);border-color:transparent;color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue);}
/* Bascule Poids ↔ Masse grasse du graphique */
.wmetric-chip{flex:1;padding:8px 6px;border-radius:10px;border:1px solid var(--sep);background:var(--bg2);color:var(--t3);font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .15s;}
.wmetric-chip.active{background:var(--bg3);border-color:transparent;color:var(--t1);box-shadow:inset 0 0 0 1px var(--t2);}
.wnav-btn{min-width:40px;padding:8px 10px;border-radius:9px;border:1px solid var(--sep);background:var(--bg2);color:var(--t2);font-size:14px;font-weight:700;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .15s;touch-action:manipulation;}
.wnav-btn:active{transform:scale(.94);}
.wnav-btn:disabled{opacity:.32;cursor:default;}
.screen>*{flex-shrink:0;}

.help-item{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--sep);}
.help-item:last-child{border-bottom:none;}
.help-item-icon{font-size:20px;flex-shrink:0;margin-top:1px;}
.help-item-text{font-size:14px;color:var(--t2);line-height:1.5;}
.help-female-block{background:rgba(255,45,85,.07);border:1px solid rgba(255,45,85,.18);border-radius:12px;padding:12px 14px;margin-bottom:14px;}
.help-female-hdr{font-size:11px;font-weight:800;color:var(--red);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;}
::-webkit-scrollbar{display:none;}

/* TYPOGRAPHY */
.sec{font-family:var(--font);font-size:11px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.14em;}
.empty{text-align:center;padding:32px 20px;color:var(--t3);font-size:15px;line-height:1.7;}

/* CARDS */
.card{background:var(--bg2);border-radius:var(--r);overflow:hidden;border:1px solid var(--sep);}
.cp{padding:16px;}

/* STAT GRID */
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.sbox{border-radius:var(--r);padding:12px 14px;position:relative;overflow:hidden;}
.sbox::before{content:'';position:absolute;top:0;right:0;width:60px;height:60px;border-radius:50%;opacity:.15;transform:translate(20px,-20px);}
.sbox:nth-child(1){background:linear-gradient(135deg,#1A1A2E,#0D1530);border:1px solid rgba(41,121,255,.2);}
.sbox:nth-child(1)::before{background:var(--blue);}
.sbox:nth-child(2){background:linear-gradient(135deg,#1A1020,#200D20);border:1px solid rgba(170,0,255,.2);}
.sbox:nth-child(2)::before{background:var(--purp);}
.sbox:nth-child(3){background:linear-gradient(135deg,#1A1020,#200A15);border:1px solid rgba(255,45,85,.2);}
.sbox:nth-child(3)::before{background:var(--red);}
.sbox:nth-child(4){background:linear-gradient(135deg,#1A1800,#201500);border:1px solid rgba(255,214,0,.2);}
.sbox:nth-child(4)::before{background:var(--gold);}
.sbox .lbl{font-size:15px;color:var(--t2);margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;}
.sbox .val{font-family:var(--font-cond);font-size:20px;font-weight:900;letter-spacing:-.5px;}
.sbox .unit{font-size:14px;color:var(--t2);margin-top:2px;}

/* BUTTONS */
button{position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent;}
button:active{transform:scale(.95);}
@keyframes btn-ripple{0%{transform:scale(0);opacity:.45;}100%{transform:scale(5);opacity:0;}}
@keyframes logo-pulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,45,85,0);}50%{transform:scale(1.06);box-shadow:0 0 14px 4px rgba(255,45,85,.28);}}
#tb-logo{animation:logo-pulse 3.5s ease-in-out infinite;}
/* Splash iPhone (app installée) — caché par défaut, affiché via html.ios-boot, fondu auto en CSS (jamais bloqué) */
#ios-splash{position:fixed;inset:0;z-index:100000;background:#0C0C0E;display:none;align-items:center;justify-content:center;}
#ios-splash img{width:170px;height:170px;object-fit:contain;-webkit-user-drag:none;}
html.ios-boot #ios-splash{display:flex;animation:iosSplashFade .5s ease 1.8s forwards;}
@keyframes iosSplashFade{from{opacity:1;}to{opacity:0;visibility:hidden;}}
.btn-ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.35);width:60px;height:60px;margin:-30px 0 0 -30px;pointer-events:none;animation:btn-ripple .5s ease-out forwards;}
.btn{width:100%;padding:15px;border:none;border-radius:var(--r);font-size:16px;font-weight:700;font-family:var(--font);cursor:pointer;transition:transform .15s,opacity .15s,background .15s,box-shadow .15s;letter-spacing:.3px;}
.btn:active{transform:scale(.95);opacity:.9;}
.btn-red{background:linear-gradient(135deg,#FF2D55,#FF4D6D);color:#fff;box-shadow:0 4px 20px rgba(255,45,85,.3);}
.btn-green{background:linear-gradient(135deg,#00E676,#00C853);color:#000;box-shadow:0 4px 20px rgba(0,230,118,.3);}
.btn-bg2{background:var(--bg3);color:var(--t1);border:1px solid var(--sep);}
.btn-sm{padding:9px 16px;font-size:15px;width:auto;border-radius:var(--r-sm);}
.btn-xs{padding:7px 12px;font-size:14px;width:auto;border-radius:8px;border:1px solid var(--sep);background:rgba(255,255,255,.06);color:var(--t2);cursor:pointer;font-family:var(--font);font-weight:600;min-width:38px;min-height:38px;touch-action:manipulation;}

/* FORMS */
input,select{width:100%;padding:12px 14px;font-size:16px;border:1px solid var(--sep);border-radius:var(--r-sm);background:var(--bg3);color:var(--t1);font-family:var(--font);outline:none;appearance:none;-webkit-appearance:none;transition:border-color .15s;}
input:focus,select:focus{border-color:var(--red);box-shadow:0 0 0 2px rgba(255,45,85,.15);}
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px var(--bg3) inset;-webkit-text-fill-color:var(--t1);transition:background-color 5000s ease-in-out 0s;}
label{font-size:15px;color:var(--t2);display:block;margin-bottom:6px;font-weight:600;}
.fg{display:flex;flex-direction:column;gap:5px;}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}

/* GENDER TOGGLE */
.gender-toggle{display:flex;background:var(--bg3);border-radius:var(--r-sm);padding:4px;gap:4px;border:1px solid var(--sep);}
.gtbtn{flex:1;padding:10px;border:none;border-radius:8px;background:transparent;color:var(--t2);font-size:15px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .2s;touch-action:manipulation;letter-spacing:.3px;}
.gtbtn.active{background:linear-gradient(135deg,#FF2D55,#FF4D6D);color:#fff;box-shadow:0 3px 12px rgba(255,45,85,.3);}
.work-toggle{display:flex;flex-wrap:wrap;background:var(--bg3);border-radius:var(--r-sm);padding:4px;gap:4px;border:1px solid var(--sep);}
.wtbtn{flex:1 1 calc(50% - 4px);padding:9px 4px;border:none;border-radius:8px;background:transparent;color:var(--t2);font-size:14px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .2s;touch-action:manipulation;text-align:center;}
.wtbtn.active{background:linear-gradient(135deg,#FF2D55,#FF4D6D);color:#fff;box-shadow:0 3px 12px rgba(255,45,85,.3);}
.cycle-phase-banner{border-radius:var(--r);padding:12px 14px;display:flex;gap:12px;align-items:flex-start;}
.ci-btn{display:flex;flex-direction:column;align-items:center;padding:14px 6px;border-radius:12px;border:2px solid var(--sep);background:var(--bg3);color:var(--t1);font-size:22px;cursor:pointer;gap:5px;transition:all .15s;touch-action:manipulation;flex:1;}
.ci-btn span{font-size:13px;font-weight:700;color:var(--t3);line-height:1;}
.ci-btn.active{border-color:var(--red);background:rgba(255,45,85,.12);transform:scale(1.06);}
.corr-card{background:var(--bg2);border-radius:var(--r);padding:12px 14px;border:1px solid var(--sep);display:flex;gap:10px;align-items:flex-start;}
.goal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;}
.goal-btn{display:flex;flex-direction:column;align-items:center;padding:11px 3px;border-radius:10px;border:1.5px solid var(--sep);background:var(--bg3);color:var(--t2);font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;gap:6px;transition:all .2s;touch-action:manipulation;text-align:center;line-height:1.25;}
.goal-btn span{font-size:10.5px;font-weight:600;overflow-wrap:break-word;hyphens:auto;}
.goal-ico{width:23px;height:23px;display:block;flex-shrink:0;}
.ob-goal-ico{width:27px;height:27px;display:block;flex-shrink:0;}
/* Profil en accordéon (sections repliables) */
details.acc{background:var(--bg2);border-radius:16px;box-shadow:inset 0 0 0 1px var(--sep);overflow:hidden;}
details.acc>summary{list-style:none;cursor:pointer;padding:15px 16px;display:flex;align-items:center;gap:9px;font-size:14px;font-weight:800;color:var(--t1);text-transform:uppercase;letter-spacing:.04em;-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
details.acc>summary::-webkit-details-marker{display:none;}
details.acc>summary::after{content:'';margin-left:auto;flex-shrink:0;width:8px;height:8px;border-right:2px solid var(--t3);border-bottom:2px solid var(--t3);transform:rotate(-45deg);transition:transform .2s;}
details.acc[open]>summary::after{transform:rotate(45deg);}
.acc-inner{padding:2px 16px 16px;display:flex;flex-direction:column;gap:12px;}
#root.a11y-lv details.acc>summary{font-size:16px;}
.goal-btn.active{background:linear-gradient(135deg,#FF2D55,#FF4D6D);color:#fff;border-color:transparent;box-shadow:0 3px 12px rgba(255,45,85,.3);}

/* WORKOUT */
.ex-block{background:var(--bg2);border-radius:var(--r);overflow:hidden;border:1px solid var(--sep);}
.ex-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--sep);background:linear-gradient(90deg,rgba(255,45,85,.08),transparent);}
.ex-name{font-family:var(--font-cond);font-size:18px;font-weight:800;color:var(--red);letter-spacing:.3px;}
.ex-meta{font-size:14px;color:var(--t3);margin-top:2px;font-weight:600;}
.ex-hdr-btns{display:flex;gap:6px;flex-shrink:0;align-items:center;}
/* Superset par glisser-déposer : poignée + surbrillance cible + fantôme */
.ex-grip{display:inline-flex;align-items:center;justify-content:center;padding:4px 5px;color:var(--t3);font-size:18px;line-height:1;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
.ex-grip:active{cursor:grabbing;color:var(--orange);}
.ex-block.drag-over{box-shadow:inset 0 0 0 2px var(--orange);background:rgba(255,109,0,.08);}
.prog-ex-card.drag-over{box-shadow:inset 0 0 0 2px var(--orange)!important;background:rgba(255,109,0,.12)!important;}
.ex-drag-ghost{position:fixed;z-index:9998;transform:translate(-50%,-150%);background:var(--bg2);color:var(--t1);border:1px solid var(--orange);border-radius:10px;padding:8px 14px;font-size:13px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.5);pointer-events:none;max-width:70vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.96;}
.sets-hdr{display:grid;grid-template-columns:24px 1fr 66px 54px 38px 32px;gap:5px;padding:6px 16px;align-items:center;background:rgba(255,255,255,.02);}
.sets-hdr span{font-size:11px;font-weight:700;color:var(--t3);text-align:center;text-transform:uppercase;letter-spacing:.06em;}
.sets-hdr span:first-child{text-align:left;}
.set-row{display:grid;grid-template-columns:24px 1fr 66px 54px 38px 32px;gap:5px;padding:9px 16px;border-top:1px solid var(--sep);align-items:center;transition:opacity .2s;}
.set-row.done-row{opacity:.45;}
.snum{font-size:13px;color:var(--t3);font-weight:800;text-align:center;}
.sprev{font-size:13px;color:var(--t3);text-align:center;overflow:hidden;line-height:1.3;}
#rest-label{font-size:11px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sinp{background:var(--bg3);border:1px solid var(--sep);border-radius:8px;padding:8px 4px;font-size:16px;font-weight:800;font-family:var(--font);color:var(--t1);text-align:center;width:100%;outline:none;transition:border-color .15s;}
.sinp:focus{border-color:var(--red);box-shadow:0 0 0 2px rgba(255,45,85,.15);}
.tbtn{font-size:13px;font-weight:800;border:1px solid var(--sep);border-radius:6px;padding:4px 2px;cursor:pointer;text-align:center;background:var(--bg3);color:var(--t2);width:100%;font-family:var(--font);touch-action:manipulation;letter-spacing:.05em;display:flex;flex-direction:column;align-items:center;gap:1px;}
.tbtn-rm{font-size:8.5px;font-weight:700;opacity:.8;line-height:1;letter-spacing:0;}
.tbtn.N{border-color:rgba(240,240,255,.12);color:var(--t3);}
.tbtn.É{border-color:rgba(41,121,255,.5);color:var(--blue);background:rgba(41,121,255,.1);}
.tbtn.X{border-color:rgba(255,45,85,.5);color:var(--red);background:rgba(255,45,85,.1);}
.tbtn.W{border-color:rgba(41,121,255,.5);color:var(--blue);background:rgba(41,121,255,.1);}
.tbtn.E{border-color:rgba(255,45,85,.5);color:var(--red);background:rgba(255,45,85,.1);}
.tbtn.D{border-color:rgba(255,214,0,.5);color:var(--gold);background:rgba(255,214,0,.1);}
.tbtn.M{border-color:rgba(255,109,0,.5);color:var(--orange);background:rgba(255,109,0,.1);}
.ss-group{border-left:3px solid var(--orange);border-radius:var(--r);overflow:hidden;background:var(--bg2);border:1px solid rgba(255,109,0,.25);margin-bottom:10px;}
.ss-grp-hdr{display:flex;align-items:center;justify-content:space-between;padding:7px 12px 6px;background:rgba(255,109,0,.06);border-bottom:1px solid rgba(255,109,0,.12);}
.ss-group .ex-block{border:none;border-radius:0;background:transparent;}
.ss-group .ex-block.ss-active{background:rgba(255,109,0,.05);}
.ex-block.ss-selected{box-shadow:inset 0 0 0 2px var(--orange);}
.chk{width:30px;height:30px;border-radius:50%;border:2px solid var(--sep);background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;font-family:var(--font);padding:0;transition:all .2s;touch-action:manipulation;}
.chk.done{background:var(--green);border-color:var(--green);color:#000;box-shadow:0 2px 8px rgba(0,230,118,.3);}
.ex-foot{display:flex;gap:8px;padding:10px 16px;border-top:1px solid var(--sep);}

/* PR LIST */
.pr-row{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--sep);gap:10px;}
.pr-row:last-child{border-bottom:none;}
.pr-name{font-size:15px;flex:1;font-weight:600;}
.pr-right{text-align:right;}
.pr-kg{font-family:var(--font-cond);font-size:18px;font-weight:900;color:var(--red);}
.pr-rm1{font-size:14px;color:var(--t3);margin-top:1px;font-weight:600;}

/* STRENGTH LEVEL */
.lvl-badge{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border-radius:20px;font-size:14px;font-weight:800;letter-spacing:.05em;}
.lvl-D{background:rgba(100,100,100,.2);color:var(--t2);}
.lvl-N{background:rgba(41,121,255,.2);color:var(--blue);}
.lvl-I{background:rgba(0,230,118,.2);color:var(--green);}
.lvl-A{background:rgba(255,109,0,.2);color:var(--orange);}
.lvl-E{background:rgba(255,109,0,.2);color:var(--orange);}
.lvl-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.lvl-box{background:var(--bg3);border-radius:var(--r-sm);padding:12px;text-align:center;border:1px solid var(--sep);}
.lvl-ex{font-size:13px;color:var(--t3);margin-bottom:5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;}

/* SESSIONS */
.sess-card{background:var(--bg2);border-radius:16px;overflow:hidden;margin-bottom:10px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
.sess-hdr{display:flex;justify-content:space-between;align-items:center;padding:14px 16px 8px;}
.sess-date{font-size:13px;font-weight:600;color:var(--t2);}
.sess-vol{font-family:var(--font-cond);font-size:16px;font-weight:900;color:var(--red);}
.sess-exs{padding:0 0 12px 16px;font-size:13px;color:var(--t3);line-height:1.5;overflow:hidden;}
.goal2-hdr{font-size:13px;font-weight:700;color:var(--t1);margin:18px 0 8px;}
.goal2-grid{display:flex;flex-wrap:wrap;gap:7px;}
.goal2-chip{padding:8px 13px;border-radius:12px;border:1px solid var(--sep);background:var(--bg2);color:var(--t2);font-size:13px;font-weight:600;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .15s;}
.goal2-chip.on{background:rgba(234,179,8,.14);border-color:transparent;color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);}
.goal2-note{font-size:12px;color:var(--t3);line-height:1.5;margin-top:10px;background:var(--bg3);border-radius:8px;padding:9px 11px;}
.goal2-nudge{font-size:12.5px;color:var(--blue);line-height:1.5;margin-top:9px;cursor:pointer;font-weight:600;-webkit-tap-highlight-color:transparent;}
.prio-chip{padding:8px 13px;border-radius:12px;border:1px solid var(--sep);background:var(--bg2);color:var(--t2);font-size:13px;font-weight:600;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .15s;}
.prio-chip.on{background:rgba(255,45,85,.12);border-color:transparent;color:var(--red);box-shadow:inset 0 0 0 1px var(--red);}
.sess-title{font-size:15px;font-weight:800;color:var(--t1);letter-spacing:.01em;line-height:1.2;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sess-meta{font-size:12px;color:var(--t2);margin-bottom:6px;display:flex;align-items:center;flex-wrap:wrap;gap:4px;}
.sess-date2{font-weight:600;color:var(--t2);}
.sess-vol2{font-family:var(--font-cond);font-weight:800;color:var(--red);}
.sess-cal2{color:var(--t3);font-weight:600;}
.sess-exs2{font-size:12px;color:var(--t3);line-height:1.45;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.sess-exs2.expanded{-webkit-line-clamp:99;}
.sess-exs-more{background:none;border:none;padding:3px 0 0;margin:0;color:var(--t2);font-size:11px;font-weight:700;cursor:pointer;font-family:var(--font);-webkit-tap-highlight-color:transparent;}
#sess-filter{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
#sess-filter:empty{display:none;}
.sessf-chip{padding:6px 11px;border-radius:14px;border:1px solid var(--sep);background:var(--bg2);color:var(--t3);font-size:12px;font-weight:700;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .15s;white-space:nowrap;}
.sessf-chip.on{background:rgba(255,45,85,.12);border-color:transparent;color:var(--red);box-shadow:inset 0 0 0 1px var(--red);}
.synced-pill{display:inline-flex;align-items:center;gap:3px;font-size:13px;background:rgba(0,230,118,.12);color:var(--green);padding:2px 8px;border-radius:10px;margin-left:8px;font-weight:700;}

/* CHART */
.chart-box{background:var(--bg2);border-radius:16px;padding:16px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
.chart-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.chart-title{font-family:var(--font-cond);font-size:17px;font-weight:800;}
.badge-gold{background:rgba(255,214,0,.15);color:var(--gold);font-size:14px;font-weight:800;padding:4px 10px;border-radius:20px;letter-spacing:.05em;}
.chart-meta{display:flex;gap:16px;margin-top:10px;font-size:14px;color:var(--t3);font-weight:600;}

/* NUTRITION */
.phase-row{display:flex;gap:10px;}
.phase-btn{flex:1;padding:13px;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.08);border:none;border-radius:12px;background:var(--bg3);color:var(--t2);font-size:14px;font-weight:700;font-family:var(--font);cursor:pointer;text-align:center;transition:all .2s;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
.phase-btn.charge.active{box-shadow:inset 0 0 0 1.5px rgba(91,168,255,.5);background:rgba(91,168,255,.1);color:var(--blue);}
.phase-btn.decharge.active{box-shadow:inset 0 0 0 1.5px rgba(255,138,114,.5);background:rgba(255,138,114,.1);color:var(--orange);}
.macro-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.macro-box{background:var(--bg2);border-radius:14px;padding:14px;text-align:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);position:relative;overflow:hidden;}
.macro-lbl{font-size:11px;color:var(--t3);margin-bottom:5px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;}
.macro-val{font-family:var(--font-cond);font-size:26px;font-weight:900;letter-spacing:-.5px;}
.macro-unit{font-size:12px;color:var(--t3);font-weight:600;}
.macro-bar{height:3px;border-radius:2px;margin-top:8px;opacity:.6;}
/* Macros en lignes + barres (maquette Nutrition 04) */
.macro-card{background:var(--bg2);border-radius:16px;padding:16px 16px 14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);display:flex;flex-direction:column;gap:14px;}
.macro-row2{display:flex;flex-direction:column;gap:8px;}
.macro-row2-top{display:flex;align-items:baseline;justify-content:space-between;}
.macro-row2-lbl{font-size:14px;font-weight:700;color:var(--t1);}
.macro-row2-val{font-size:14px;color:var(--t2);font-weight:600;}
.macro-row2-val b{font-family:var(--font-cond);font-size:19px;font-weight:900;color:var(--t1);letter-spacing:-.4px;}
.macro-row2-val .pct{font-size:12px;color:var(--t3);font-weight:600;margin-left:6px;}
.macro-row2-track{height:8px;border-radius:5px;background:var(--bg3);box-shadow:inset 0 0 0 1px var(--sep);overflow:hidden;}
.macro-row2-fill{height:100%;border-radius:5px;width:0;transition:width .5s cubic-bezier(.4,0,.2,1);}
#root.a11y-lv .macro-row2-lbl{font-size:16px!important;}
#root.a11y-lv .macro-row2-val b{font-size:21px!important;}
.meal-row{display:flex;align-items:flex-start;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--sep);}
.meal-row:last-child{border-bottom:none;}
.meal-name{font-size:15px;font-weight:700;margin-bottom:2px;}
.meal-detail{font-size:13px;color:var(--t2);line-height:1.5;}
.meal-kcal{font-family:var(--font-cond);font-size:16px;font-weight:900;color:var(--red);white-space:nowrap;margin-left:10px;}
.nu-stat{background:var(--bg2);border-radius:12px;padding:11px 14px;display:flex;justify-content:space-between;align-items:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
.nu-stat-lbl{font-size:13px;color:var(--t2);font-weight:600;}
.nu-stat-val{font-family:var(--font-cond);font-size:15px;font-weight:800;}
.rm-hero{background:linear-gradient(135deg,#0D0D1A,#1A0D20);border-radius:var(--r);padding:28px;text-align:center;border:1px solid rgba(255,45,85,.2);position:relative;overflow:hidden;}
.rm-hero::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:200px;height:200px;background:radial-gradient(circle,rgba(255,45,85,.1),transparent 70%);border-radius:50%;}
.rm-hero .lbl{font-size:14px;color:var(--t2);margin-bottom:6px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;}
.rm-hero .val{font-family:var(--font-cond);font-size:52px;font-weight:900;letter-spacing:-1px;background:linear-gradient(135deg,#FF2D55,#FF8C00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.pct-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.pct-item{background:var(--bg2);border-radius:var(--r-sm);padding:12px 14px;display:flex;justify-content:space-between;align-items:center;border:1px solid var(--sep);}
.pct-lbl{font-size:14px;color:var(--t2);font-weight:600;}
.pct-val{font-family:var(--font-cond);font-size:16px;font-weight:800;}

/* STATUS */
.status-row{display:flex;align-items:center;gap:8px;background:var(--bg2);border-radius:var(--r-sm);padding:12px 14px;font-size:14px;color:var(--t2);border:1px solid var(--sep);font-weight:600;}
.sdot{width:8px;height:8px;border-radius:50%;background:var(--t3);flex-shrink:0;}
.sdot.g{background:var(--green);box-shadow:0 0 6px rgba(0,230,118,.5);}
.sdot.r{background:var(--red);box-shadow:0 0 6px rgba(255,45,85,.5);}
.sdot.a{background:var(--gold);animation:pulse 1.2s infinite;box-shadow:0 0 6px rgba(255,214,0,.5);}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* SETUP */
.step-row{display:flex;gap:12px;padding:16px 0;border-bottom:1px solid var(--sep);}
.step-row:last-child{border-bottom:none;}
.sn{width:30px;height:30px;border-radius:50%;background:var(--red);color:#fff;font-size:14px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 8px rgba(255,45,85,.3);}
.sn.done{background:var(--green);color:#000;box-shadow:0 2px 8px rgba(0,230,118,.3);}
.sb{flex:1;min-width:0;}
.st{font-size:15px;font-weight:700;margin-bottom:3px;}
.sd{font-size:13px;color:var(--t2);line-height:1.5;font-weight:500;}
.url-inp{font-size:12px;font-family:'SF Mono',monospace;background:var(--bg3);border:1px solid var(--sep);border-radius:8px;padding:10px 12px;margin-top:6px;width:100%;color:var(--t1);outline:none;}
.url-inp:focus{border-color:var(--red);}

/* CYCLE */
.cycle-card{border:1.5px solid rgba(255,45,85,.4);border-radius:var(--r);padding:12px 14px;cursor:pointer;background:linear-gradient(135deg,rgba(255,45,85,.08),rgba(255,109,0,.04));display:flex;align-items:center;justify-content:space-between;touch-action:manipulation;transition:all .2s;}
.cycle-card:active{opacity:.8;transform:scale(.98);}
.cycle-left{flex:1;}
.cycle-title{font-family:var(--font-cond);font-size:17px;font-weight:900;color:var(--red);margin-bottom:3px;letter-spacing:.3px;}
.cycle-sub{font-size:13px;color:var(--t2);font-weight:600;}
.cycle-arrow{font-family:var(--font-cond);font-size:24px;font-weight:900;color:var(--red);}
.prog-bar{height:6px;background:var(--sep);border-radius:3px;overflow:hidden;margin:10px 0;}
.prog-fill{height:100%;background:linear-gradient(90deg,var(--red),var(--orange));border-radius:3px;transition:width .4s;}
.phase-chip{display:inline-block;font-size:14px;font-weight:800;padding:4px 11px;border-radius:20px;letter-spacing:.06em;text-transform:uppercase;}
.ph-acc{background:rgba(41,121,255,.2);color:var(--blue);}
.ph-int{background:rgba(255,109,0,.2);color:var(--orange);}
.ph-peak{background:rgba(255,45,85,.2);color:var(--red);}
.ph-del{background:rgba(174,174,178,.2);color:var(--t2);}
.ex-plan-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid var(--sep);gap:10px;}
.ex-plan-row:last-child{border-bottom:none;}
.ex-plan-name{font-size:15px;font-weight:700;flex:1;}
.ex-plan-load{font-family:var(--font-cond);font-size:20px;font-weight:900;color:var(--red);}
.ex-plan-detail{font-size:14px;color:var(--t3);margin-top:2px;font-weight:600;}
.week-table{width:100%;border-collapse:collapse;}
.week-table th{font-size:13px;font-weight:800;color:var(--t3);text-align:center;padding:8px 4px;border-bottom:1px solid var(--sep);text-transform:uppercase;letter-spacing:.08em;}
.week-table td{font-size:13px;text-align:center;padding:7px 3px;border-bottom:1px solid var(--sep);}
.week-table tr.current-week td{background:rgba(255,45,85,.1);font-weight:700;color:var(--t1);}
.week-table tr.current-week td:first-child{border-left:3px solid var(--red);}
.proj-box{background:var(--bg3);border-radius:var(--r-sm);padding:12px 16px;display:flex;justify-content:space-between;align-items:center;border:1px solid var(--sep);}
.proj-label{font-size:14px;color:var(--t2);font-weight:600;}
.proj-val{font-family:var(--font-cond);font-size:16px;font-weight:900;color:var(--green);}
.back-btn{display:flex;align-items:center;gap:6px;background:none;border:none;color:var(--t2);font-size:15px;font-family:var(--font);cursor:pointer;padding:0;margin-bottom:2px;font-weight:700;touch-action:manipulation;}
.week-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;}
.week-tab{flex-shrink:0;padding:7px 14px;border-radius:20px;font-size:13px;font-weight:800;font-family:var(--font);border:none;cursor:pointer;touch-action:manipulation;letter-spacing:.05em;}
.week-tab.active{background:var(--red);color:#fff;}
.week-tab.done{background:rgba(0,230,118,.15);color:var(--green);border:1px solid rgba(0,230,118,.3);}
.week-tab.future{background:var(--bg3);color:var(--t3);border:1px solid var(--sep);}

/* MODALS */
.overlay{position:absolute;inset:0;background:rgba(0,0,0,.75);z-index:200;display:none;align-items:flex-end;justify-content:center;backdrop-filter:blur(4px);}
.overlay.open{display:flex;}
/* Barre d'installation (téléchargement des assets par le Service Worker) */
/* Barre d'installation FINE et discrète (barre mince + petit %), sans ombre appuyée */
#install-progress{position:fixed;left:0;right:0;top:0;z-index:9998;background:var(--bg2);border-bottom:1px solid var(--sep);padding:calc(env(safe-area-inset-top) + 5px) 14px 6px;transform:translateY(-130%);transition:transform .35s ease;}
#install-progress.show{transform:translateY(0);}
#install-progress .ip-label{font-size:10.5px;font-weight:700;color:var(--t3);margin-bottom:4px;font-family:var(--font);letter-spacing:.01em;}
#install-progress .ip-track{height:4px;background:var(--bg3);border-radius:3px;overflow:hidden;}
#install-progress .ip-bar{height:100%;width:0;background:linear-gradient(90deg,#FF6A73,#EF3E57);border-radius:3px;transition:width .35s ease;}
/* Scan « analyse du rapport » — retour visuel pendant la lecture IA */
.bs-scan-frame{position:relative;border-radius:12px;overflow:hidden;max-height:44vh;background:var(--bg3);box-shadow:inset 0 0 0 1px var(--sep);}
.bs-scan-frame img{width:100%;display:block;}
.bs-scan-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(0,224,158,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(0,224,158,.08) 1px,transparent 1px);background-size:26px 26px;pointer-events:none;}
.bs-scan-line{position:absolute;left:0;right:0;top:-130px;height:130px;background:linear-gradient(180deg,rgba(0,224,158,0) 0%,rgba(0,224,158,.10) 40%,rgba(140,255,220,.80) 50%,rgba(0,224,158,.10) 60%,rgba(0,224,158,0) 100%);box-shadow:0 0 22px 6px rgba(0,224,158,.38);animation:bsScan 3.2s ease-in-out infinite;}
@keyframes bsScan{0%{top:-130px;}50%{top:100%;}100%{top:-130px;}}
.bs-scan-dot{width:9px;height:9px;border-radius:50%;background:#00e09e;box-shadow:0 0 8px 1px rgba(0,224,158,.6);animation:bsPulse 1s ease-in-out infinite;}
@keyframes bsPulse{0%,100%{opacity:.35;transform:scale(.85);}50%{opacity:1;transform:scale(1.15);}}
/* Hiérarchie des overlays empilés : le sélecteur d'exercices et surtout la
   confirmation doivent passer AU-DESSUS d'un autre overlay ouvert (ex. détail
   d'une séance passée). Sans ça, le popup s'ouvrait derrière → « la croix ne
   marche pas » (ft-v297). */
#mod-ex{z-index:300;}
#ov-confirm{z-index:500;}
.modal{background:var(--bg2);border-radius:24px 24px 0 0;padding:22px;width:100%;max-width:430px;max-height:85dvh;overflow-y:auto;border-top:1px solid var(--sep);}
/* Guide de l'appli & questionnaire : le contenu défile, la barre du bas (Suivant/Précédent) reste TOUJOURS visible (fix « Suivant coupé » sur petits écrans). */
#ov-appguide .modal, #ov-coach-quiz .modal{ display:flex; flex-direction:column; overflow:hidden; padding-bottom:calc(22px + env(safe-area-inset-bottom)); }
#ov-appguide #ag-slide{ flex:1 1 auto; min-height:0; overflow-y:auto; }
#ov-appguide #ag-dots, #ov-appguide #ag-nav{ flex:0 0 auto; }
#ov-coach-quiz #cq-step{ flex:1 1 auto; min-height:0 !important; overflow-y:auto; }
/* Éléments en TEST clone-only (marqueur html.is-clone posé par _initCloneTools) — ex. la « promesse » d'inscription */
.ob-clone-only{ display:none; }
html.is-clone .ob-clone-only{ display:block; }
.ob-promise{ width:100%; text-align:center; margin:4px 0 2px; }
.ob-promise-lead{ font-size:15px; font-weight:800; color:var(--t1); line-height:1.4; }
.ob-promise-sub{ font-size:13px; color:var(--t2); line-height:1.45; margin-top:6px; }
.ob-promise-sig{ font-size:12.5px; font-style:italic; color:var(--t3); line-height:1.5; margin-top:8px; }
.modal-handle{width:40px;height:4px;background:var(--t3);border-radius:2px;margin:0 auto 10px;cursor:grab;padding:14px 60px;background-clip:content-box;box-sizing:content-box;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;}
.modal-handle:active{cursor:grabbing;}
.modal h2{font-family:var(--font-cond);font-size:20px;font-weight:900;margin-bottom:16px;letter-spacing:.3px;}
.modal-btns{display:flex;gap:10px;margin-top:16px;}
.plate-bar{display:flex;align-items:center;gap:3px;justify-content:center;flex-wrap:nowrap;overflow-x:auto;padding:10px 0;}
.plate{display:flex;align-items:center;justify-content:center;border-radius:5px;font-size:9px;font-weight:900;color:#fff;flex-shrink:0;}
.p25{background:#C0392B;width:32px;height:56px;border-radius:5px;}
.p20{background:#2980B9;width:28px;height:50px;}
.p15{background:#D4AC0D;width:24px;height:42px;}
.p10{background:#229954;width:20px;height:36px;}
.p5{background:#6C3483;width:17px;height:30px;}
.p2{background:#566573;width:14px;height:24px;}
.p1{background:#2C3E50;width:12px;height:18px;}
.bar-shaft{width:12px;height:16px;background:var(--t3);border-radius:3px;flex-shrink:0;}
.ex-pick{padding:14px 2px;border-bottom:1px solid var(--sep);cursor:pointer;display:flex;align-items:center;justify-content:space-between;}
.ex-pick:last-child{border-bottom:none;}
.ex-pick:active{background:var(--bg3);margin:0 -8px;padding:14px 10px;}
.ex-pick-name{font-size:15px;font-weight:600;flex:1;min-width:0;}
.ex-pick-grp{font-size:13px;color:var(--t3);font-weight:600;flex-shrink:0;margin-left:8px;}
.ex-pick-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;align-items:flex-start;}
.ex-eq{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:800;padding:1px 8px;border-radius:20px;line-height:1.5;}
.ex-subhdr{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-radius:10px;margin:14px 0 6px;}
.ex-subhdr:first-child{margin-top:2px;}
.ex-subhdr-n{font-size:11px;font-weight:700;opacity:.75;}
.ex-grp-tile{display:flex;align-items:center;gap:14px;padding:14px 12px;border-radius:var(--r-sm);border:1px solid var(--sep);background:var(--bg3);cursor:pointer;margin-bottom:8px;transition:background .15s;}
.ex-grp-tile:active{background:var(--bg2);}
.ex-grp-icon{flex-shrink:0;width:64px;height:64px;border-radius:12px;background:rgba(255,45,85,.12);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:zoom-in;}
.ex-grp-info{flex:1;}
.ex-grp-label{font-size:14px;font-weight:400;color:var(--t1);}
.ex-grp-count{font-size:13px;color:var(--t3);margin-top:2px;font-weight:600;}
.ex-grp-arrow{font-size:20px;color:var(--t3);font-weight:700;}
.ex-grp-back{display:flex;align-items:center;gap:6px;background:none;border:none;color:var(--t2);font-size:15px;font-family:var(--font);cursor:pointer;padding:0 0 12px;font-weight:700;touch-action:manipulation;}
.ex-grp-header{font-family:var(--font-cond);font-size:17px;font-weight:900;color:var(--red);margin-bottom:10px;letter-spacing:.3px;}
.prog-card{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--bg3);border-radius:var(--r-sm);border:1px solid var(--sep);margin-bottom:8px;}
.prog-card-name{font-size:15px;font-weight:700;}
.prog-card-detail{font-size:13px;color:var(--t3);margin-top:2px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}



.nu-tabs{display:flex;background:var(--bg3);border-radius:13px;padding:4px;gap:3px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
.nu-tab{flex:1;padding:10px 4px;border:none;border-radius:10px;background:transparent;color:var(--t3);font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .2s;touch-action:manipulation;text-align:center;-webkit-tap-highlight-color:transparent;}
.nu-tab.active{background:linear-gradient(135deg,#FF6A73,#EF3E57);color:#fff;box-shadow:0 4px 12px -4px rgba(239,62,87,.5);}
.suppl-card{background:var(--bg2);border-radius:var(--r);border:1px solid var(--sep);overflow:hidden;margin-top:2px;}
.suppl-header{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--sep);}
.suppl-icon{font-size:22px;flex-shrink:0;}
.suppl-name{font-family:var(--font-cond);font-size:16px;font-weight:900;}
.suppl-sub{font-size:14px;color:var(--t2);margin-top:2px;}
.suppl-body{padding:14px 16px;display:flex;flex-direction:column;gap:10px;}
.dose-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:.5px solid var(--sep);}
.dose-row:last-child{border-bottom:none;}
.dose-label{font-size:14px;color:var(--t2);}
.dose-val{font-family:var(--font-cond);font-size:15px;font-weight:800;}
.tip-box{background:rgba(41,121,255,.08);border:1px solid rgba(41,121,255,.2);border-radius:var(--r-sm);padding:10px 12px;font-size:13px;color:var(--t2);line-height:1.5;}
.tip-box strong{color:var(--blue);}
.phase-toggle-small{display:flex;background:var(--bg3);border-radius:8px;padding:3px;gap:3px;border:1px solid var(--sep);}
.ptbtn{flex:1;padding:7px 10px;border:none;border-radius:6px;background:transparent;color:var(--t2);font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .2s;touch-action:manipulation;}
.ptbtn.active{background:var(--blue);color:#fff;}
.protein-bar-wrap{height:8px;background:var(--sep);border-radius:4px;overflow:hidden;margin:6px 0;}
.protein-bar-fill{height:100%;border-radius:4px;transition:width .4s;}

.combo-gate{background:var(--bg2);border-radius:var(--r);border:1px solid var(--sep);padding:22px 18px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;position:relative;overflow:hidden;}
.combo-gate-blur{filter:blur(4px);pointer-events:none;opacity:.45;margin-bottom:4px;width:100%;}
.combo-card{background:var(--bg2);border-radius:var(--r);border:1px solid var(--sep);overflow:hidden;}
.combo-card-hdr{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;touch-action:manipulation;user-select:none;}
.combo-card-hdr:active{background:rgba(255,255,255,.03);}
.combo-card-icon{font-size:22px;flex-shrink:0;}
.combo-card-title{font-family:var(--font-cond);font-size:15px;font-weight:900;flex:1;}
.combo-card-chev{font-size:18px;color:var(--t3);transition:transform .2s;flex-shrink:0;}
.combo-card-chev.open{transform:rotate(180deg);}
.combo-card-body{padding:0 16px 14px;display:none;flex-direction:column;gap:0;}
.combo-card-body.open{display:flex;}
.combo-item{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-bottom:.5px solid var(--sep);}
.combo-item:last-child{border-bottom:none;}
.combo-item-name{font-size:14px;font-weight:700;color:var(--t1);}
.combo-item-dose{font-family:var(--font-cond);font-size:13px;font-weight:800;color:var(--orange);}
.combo-item-info{font-size:12.5px;color:var(--t2);line-height:1.5;}
.combo-warn{margin-top:10px;background:rgba(255,45,85,.07);border:1px solid rgba(255,45,85,.2);border-radius:8px;padding:9px 12px;font-size:12.5px;color:#ff8a99;line-height:1.5;}

/* COACH IA */
.coach-screen{flex-direction:column;padding:0 0 calc(66px + max(env(safe-area-inset-bottom),8px)) 0!important;gap:0!important;}
.screen.active.coach-screen{display:flex;overflow:hidden;}
.coach-header{padding:8px 16px 12px;border-bottom:none;background:transparent;flex-shrink:0;}
.coach-header-title{font-family:var(--font-cond);font-size:21px;font-weight:800;letter-spacing:-.02em;color:var(--t1);}
.coach-header-sub{font-size:12px;color:var(--t3);font-weight:600;margin-top:2px;}
.coach-messages{flex:1;min-height:0;overflow-y:scroll;-webkit-overflow-scrolling:touch;padding:14px 14px 8px;display:flex;flex-direction:column;gap:12px;}
/* Façon iMessage : les messages se collent en bas quand il y en a peu (margin-top:auto sur le 1er),
   et le scroll reste normal quand la conversation dépasse (l'auto se réduit à 0). */
.coach-messages > *:first-child{margin-top:auto;}
.msg-bubble{max-width:86%;padding:11px 14px;border-radius:18px;font-size:15px;line-height:1.6;font-weight:500;}
.msg-user{align-self:flex-end;background:linear-gradient(135deg,#FF6A73,#EF3E57);color:#fff;border-bottom-right-radius:4px;}
.msg-coach{align-self:flex-start;background:var(--bg2);color:var(--t1);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);border-bottom-left-radius:4px;}
.msg-typing{align-self:flex-start;background:var(--bg2);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);padding:12px 16px;border-radius:18px;border-bottom-left-radius:4px;display:flex;gap:5px;align-items:center;}
.typing-dot{width:7px;height:7px;border-radius:50%;background:var(--t3);animation:typing-bounce .8s infinite;}
.typing-dot:nth-child(2){animation-delay:.15s;}
.typing-dot:nth-child(3){animation-delay:.3s;}
@keyframes typing-bounce{0%,80%,100%{transform:translateY(0)}40%{transform:translateY(-6px)}}
@keyframes ml-scan{0%{top:-70px}50%{top:100%}100%{top:-70px}}
@keyframes ml-pulse{0%,100%{opacity:.25;transform:scale(.65)}50%{opacity:1;transform:scale(1)}}
.ml-dot{width:11px;height:11px;border-radius:50%;background:var(--red);animation:ml-pulse 1.3s ease-in-out infinite}
.ml-dot:nth-child(2){animation-delay:.25s}.ml-dot:nth-child(3){animation-delay:.5s}
/* ─── DRAWER ─── */
.drawer-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.6);z-index:400;opacity:0;pointer-events:none;transition:opacity .3s;}
.drawer-backdrop.open{opacity:1;pointer-events:all;}
.drawer{position:fixed;top:0;right:max(0px,calc(50vw - 215px));bottom:0;width:290px;max-width:90%;background:var(--bg2);z-index:401;transform:translateX(calc(100% + max(0px,50vw - 215px)));transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;box-shadow:-6px 0 32px rgba(0,0,0,.55);}
.drawer.open{transform:translateX(0);}
.drawer-hd{padding:max(env(safe-area-inset-top),44px) 16px 14px;border-bottom:1px solid var(--sep);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#0D0D1A,#12121F);}
.drawer-item{display:flex;align-items:center;gap:14px;padding:15px 20px;border-bottom:1px solid rgba(255,255,255,.045);cursor:pointer;color:var(--t1);font-size:15px;font-weight:600;-webkit-tap-highlight-color:transparent;transition:background .12s;}
.drawer-item:active,.drawer-item:hover{background:var(--bg3);}
.drawer-item .di-ic{font-size:22px;width:30px;text-align:center;flex-shrink:0;}
.drawer-item .di-arr{margin-left:auto;font-size:11px;color:var(--t3);}
/* ─── DRAWER CONTENT OVERLAY ─── */
#ov-drawer-cnt{background:var(--bg);}
#ov-drawer-cnt .modal{max-width:460px;max-height:88vh;overflow-y:auto;}
/* Sous-menus (Menu → 1RM, guide, protéines…) : ouverture ET fermeture en glissé doux (avant : instantané, « ça claque ») */
#ov-drawer-cnt.open .modal{animation:dcUp .30s cubic-bezier(.32,.72,0,1);}
#ov-drawer-cnt.dc-closing{display:flex;}
#ov-drawer-cnt.dc-closing .modal{animation:dcDown .26s cubic-bezier(.32,.72,0,1) forwards;}
@keyframes dcUp{from{transform:translateY(100%);}to{transform:translateY(0);}}
@keyframes dcDown{from{transform:translateY(0);}to{transform:translateY(100%);}}
.coach-suggestions{padding:8px 14px;display:flex;gap:8px;overflow-x:auto;flex-shrink:0;border-top:1px solid var(--sep);}
.coach-suggestions::-webkit-scrollbar{display:none;}
.sugg-chip{flex-shrink:0;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;border:none;box-shadow:inset 0 0 0 1px rgba(255,106,115,.35);background:rgba(255,106,115,.08);color:var(--red);cursor:pointer;font-family:var(--font);white-space:nowrap;touch-action:manipulation;transition:all .15s;-webkit-tap-highlight-color:transparent;}
.sugg-chip:active{background:rgba(255,106,115,.18);}
.coach-input-row{display:flex;flex-direction:column;gap:8px;padding:8px 14px max(env(safe-area-inset-bottom),12px);border-top:1px solid rgba(255,255,255,.05);background:var(--bg);flex-shrink:0;}
.coach-input-inner{display:flex;gap:8px;align-items:center;}
.coach-input{flex:1;padding:11px 14px;font-size:16px;border:none;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.08);border-radius:24px;background:var(--bg2);color:var(--t1);font-family:var(--font);outline:none;transition:box-shadow .15s;}
.coach-input:focus{box-shadow:inset 0 0 0 1.5px var(--red);}
.coach-cam-btn{width:40px;height:40px;border-radius:50%;border:none;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.1);background:var(--bg2);color:var(--t2);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-tap-highlight-color:transparent;}
#coach-img-preview{display:none;position:relative;align-self:flex-start;}
#coach-img-preview img{width:64px;height:64px;border-radius:10px;object-fit:cover;border:2px solid var(--red);}
#coach-img-preview button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:var(--red);color:#fff;border:none;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;}
.coach-send{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#FF6A73,#EF3E57);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;touch-action:manipulation;box-shadow:0 4px 14px -4px rgba(239,62,87,.6);}
.coach-send svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;}
.coach-send:disabled{opacity:.4;cursor:not-allowed;}
.msg-coach p{margin-bottom:8px;}
.msg-coach p:last-child{margin-bottom:0;}
.msg-coach strong{color:var(--red);}
.msg-coach ul{padding-left:16px;margin-top:4px;}
.msg-coach li{margin-bottom:3px;}
/* Pied de bulle Coach : bouton Partager/Exporter */
.coach-msg-foot{margin-top:9px;padding-top:8px;border-top:1px solid var(--sep);display:flex;justify-content:flex-end;gap:8px;}
.coach-share-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:9px;border:1px solid var(--sep);background:var(--bg3);color:var(--t2);font-family:var(--font);font-size:12px;font-weight:700;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:.12s;}
.coach-share-btn:hover{color:var(--t1);}
.gardien-flag{margin-top:8px;padding:5px 9px;border-radius:8px;background:rgba(255,45,85,.10);border:1px dashed rgba(255,45,85,.5);color:#FF2D55;font-size:11px;font-weight:700;line-height:1.35;}
.coach-share-btn:active{transform:scale(.94);}
/* HISTORIQUE DISCUSSIONS COACH */
.cconv-row{display:flex;align-items:center;gap:10px;background:var(--bg2);border-radius:14px;box-shadow:inset 0 0 0 1px var(--sep);padding:12px 14px;cursor:pointer;transition:.12s;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
.cconv-row:active{transform:scale(.985);}
.cconv-main{flex:1;min-width:0;}
.cconv-title{font-size:14px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cconv-sub{font-size:11.5px;color:var(--t3);margin-top:2px;}
.cconv-del{flex-shrink:0;background:none;border:none;color:var(--t3);font-size:18px;line-height:1;cursor:pointer;padding:4px 6px;border-radius:8px;}
.cconv-del:active{color:var(--red);}
.cconv-empty{text-align:center;color:var(--t3);padding:26px 10px;font-size:13px;line-height:1.6;}
/* COACH PREMIUM */
.coach-quota{font-size:11px;font-weight:700;padding:5px 11px;border-radius:999px;background:rgba(255,106,115,.1);color:var(--red);box-shadow:inset 0 0 0 1px rgba(255,106,115,.25);white-space:nowrap;}
.coach-quota.is-premium{background:rgba(234,179,8,.12);color:#F2D472;box-shadow:inset 0 0 0 1px rgba(234,179,8,.35);}
/* COACH ACCUEIL */
.coach-home{display:flex;flex-direction:column;gap:14px;padding:12px 14px 8px;overflow-y:auto;flex:1;}
/* Empêche les cartes de se comprimer (flex-shrink) → elles gardent leur hauteur, la zone scrolle (fix carte « Gagner en force » écrasée) */
.coach-home>*{flex-shrink:0;}
.coach-ctx-card{background:var(--bg2);border-radius:16px;padding:14px 16px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
.coach-ctx-title{font-size:11px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.14em;margin-bottom:10px;}
.coach-ctx-tags{display:flex;flex-wrap:wrap;gap:7px;}
.coach-ctx-tag{display:flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;font-size:12px;font-weight:600;background:var(--bg3);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);color:var(--t2);}
.coach-ctx-tag svg{flex-shrink:0;}
/* Tuiles Coach : une seule colonne, icône à GAUCHE, 2 LIGNES MAX (titre + sous-titre, chacun 1 ligne) */
.coach-action-grid{display:grid;grid-template-columns:1fr;gap:8px;}
.coach-action-card{background:var(--bg2);border-radius:14px;padding:11px 12px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);border:none;cursor:pointer;text-align:left;font-family:var(--font);display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:11px;row-gap:1px;align-items:center;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background .15s;}
.coach-action-card:active{background:var(--bg3);}
.coach-action-ic{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;grid-row:1 / span 2;align-self:center;}
.coach-action-lbl{font-size:14px;font-weight:700;color:var(--t1);line-height:1.3;grid-column:2;align-self:end;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.coach-action-sub{font-size:12px;color:var(--t3);font-weight:500;line-height:1.35;grid-column:2;align-self:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* Questionnaire « Milo apprend à te connaître » */
.cq-card{background:linear-gradient(135deg,rgba(239,62,87,.14),rgba(255,106,115,.07));border-radius:14px;padding:13px 14px;margin:10px 0 4px;box-shadow:inset 0 0 0 1px rgba(239,62,87,.28);cursor:pointer;display:flex;align-items:center;gap:12px;text-align:left;width:100%;border:none;font-family:var(--font);}
.cq-card:active{filter:brightness(1.08);}
.cq-card.done{background:var(--bg2);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
.cq-card-ic{width:40px;height:40px;border-radius:12px;background:rgba(239,62,87,.16);display:flex;align-items:center;justify-content:center;flex:none;}
.cq-card-ttl{font-size:14.5px;font-weight:800;color:var(--t1);line-height:1.25;}
.cq-card-sub{font-size:12px;color:var(--t3);font-weight:500;line-height:1.35;margin-top:2px;}
.cq-progress{height:6px;border-radius:4px;background:var(--bg3);overflow:hidden;}
.cq-progress-fill{height:100%;background:linear-gradient(90deg,var(--red),#ff8a94);border-radius:4px;transition:width .25s;width:0;}
.cq-q{font-size:17px;font-weight:800;color:var(--t1);line-height:1.35;margin-bottom:4px;}
.cq-hint{font-size:12.5px;color:var(--t3);margin-bottom:14px;line-height:1.4;}
.cq-opts{display:flex;flex-direction:column;gap:9px;}
.cq-opt{background:var(--bg2);border:1.5px solid var(--sep);border-radius:12px;padding:13px 14px;font-size:14.5px;font-weight:600;color:var(--t1);text-align:left;cursor:pointer;font-family:var(--font);transition:all .12s;display:flex;align-items:center;gap:10px;}
.cq-opt:active{background:var(--bg3);}
.cq-opt.sel{border-color:var(--red);background:rgba(239,62,87,.10);color:var(--t1);}
.cq-opt .cq-check{margin-left:auto;color:var(--red);font-weight:900;opacity:0;transition:opacity .12s;}
.cq-opt.sel .cq-check{opacity:1;}
.cq-textarea{width:100%;background:var(--bg2);border:1.5px solid var(--sep);border-radius:12px;padding:12px;font-size:14.5px;color:var(--t1);font-family:var(--font);min-height:90px;resize:vertical;}
.coach-wall{position:absolute;inset:0;z-index:15;display:none;flex-direction:column;align-items:center;justify-content:flex-start;background:var(--bg);padding:20px 20px 100px;overflow-y:auto;gap:12px;}
.coach-wall-icon{font-size:52px;line-height:1;margin-top:8px;}
.coach-wall-title{font-family:var(--font-cond);font-size:28px;font-weight:900;background:linear-gradient(135deg,#FFB800,#FF6D00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-align:center;}
.coach-wall-sub{font-size:14px;color:var(--t3);font-weight:600;text-align:center;margin-top:-4px;}
.coach-wall-price{font-family:var(--font-cond);font-size:42px;font-weight:900;color:var(--t1);text-align:center;}
.coach-wall-price span{font-size:16px;color:var(--t3);font-weight:600;}
.coach-wall-card{width:100%;background:var(--bg2);border:1px solid var(--sep);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:10px;}
.coach-wall-perk{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;color:var(--t2);}
.coach-wall-perk .pi{font-size:18px;flex-shrink:0;}
.coach-wall-perk .soon{font-size:10px;font-weight:700;color:var(--t3);border:1px solid var(--sep);border-radius:6px;padding:1px 5px;margin-left:auto;}
.coach-code-row{display:flex;gap:8px;width:100%;}
.coach-code-inp{flex:1;padding:11px 14px;font-size:15px;border:1.5px solid var(--sep);border-radius:12px;background:var(--bg2);color:var(--t1);font-family:var(--font);outline:none;text-transform:uppercase;letter-spacing:1px;}
.coach-code-inp::placeholder{text-transform:none;letter-spacing:0;}
.coach-code-inp:focus{border-color:#FFB800;}
.coach-wall-or{font-size:13px;color:var(--t3);font-weight:700;text-align:center;}

/* SETUP MINI TABS */
.setup-tabs{display:flex;background:var(--bg3);border-radius:var(--r-sm);padding:4px;gap:4px;border:1px solid var(--sep);margin-bottom:2px;}
.setup-tab{flex:1;padding:10px;border:none;border-radius:8px;background:transparent;color:var(--t2);font-size:15px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .2s;touch-action:manipulation;}
.setup-tab.active{background:var(--bg2);color:var(--t1);box-shadow:0 2px 8px rgba(0,0,0,.3);}

/* SUPPLEMENTS & PROTEIN TRACKER */
.protein-bar-wrap{height:10px;background:var(--sep);border-radius:5px;overflow:hidden;margin:10px 0;}
.protein-bar-fill{height:100%;border-radius:5px;transition:width .4s;}
.suppl-card{background:var(--bg2);border-radius:var(--r);border:1px solid var(--sep);overflow:hidden;}
.suppl-header{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--sep);background:linear-gradient(90deg,rgba(41,121,255,.06),transparent);}
.suppl-icon{font-size:24px;flex-shrink:0;}
.suppl-name{font-family:var(--font-cond);font-size:17px;font-weight:900;letter-spacing:.3px;}
.suppl-sub{font-size:14px;color:var(--t2);margin-top:2px;font-weight:600;}
.suppl-body{padding:14px 16px;display:flex;flex-direction:column;gap:10px;}
.dose-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:.5px solid var(--sep);}
.dose-row:last-child{border-bottom:none;}
.dose-label{font-size:14px;color:var(--t2);font-weight:600;}
.dose-val{font-family:var(--font-cond);font-size:16px;font-weight:900;}
.phase-toggle-small{display:flex;background:var(--bg3);border-radius:8px;padding:3px;gap:3px;border:1px solid var(--sep);}
.ptbtn{flex:1;padding:7px 10px;border:none;border-radius:6px;background:transparent;color:var(--t2);font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .2s;touch-action:manipulation;}
.ptbtn.active{background:var(--blue);color:#fff;}
.ptbtn.active.orange{background:var(--orange);}
.progress-ring{text-align:center;padding:6px 0;}
.progress-ring .big{font-family:var(--font-cond);font-size:28px;font-weight:900;}
.progress-ring .small{font-size:14px;color:var(--t2);font-weight:600;margin-top:2px;}
.tip-box{background:rgba(41,121,255,.08);border:1px solid rgba(41,121,255,.2);border-radius:var(--r-sm);padding:10px 12px;font-size:13px;color:var(--t2);line-height:1.5;}
.tip-box strong{color:var(--blue);}

/* CALORIES BRÛLÉES */
.cal-summary{background:linear-gradient(135deg,rgba(255,45,85,.1),rgba(255,109,0,.08));border:1px solid rgba(255,45,85,.3);border-radius:var(--r);padding:16px;display:flex;align-items:center;gap:14px;}
.cal-flame{font-size:32px;flex-shrink:0;}
.cal-main{flex:1;}
.cal-val{font-family:var(--font-cond);font-size:32px;font-weight:900;background:linear-gradient(135deg,#FF2D55,#FF6D00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.5px;}
.cal-label{font-size:12px;color:var(--t2);font-weight:600;margin-top:2px;}
.cal-breakdown{display:flex;flex-direction:column;gap:4px;}
.cal-item{font-size:14px;color:var(--t2);display:flex;justify-content:space-between;}
.cal-item strong{color:var(--t1);}
.cal-today-card{background:var(--bg2);border-radius:var(--r-sm);padding:12px 14px;border:1px solid rgba(255,45,85,.2);display:flex;justify-content:space-between;align-items:center;}
#toast{position:absolute;top:100px;left:50%;transform:translateX(-50%) translateY(-8px);padding:12px 22px;border-radius:24px;font-size:14px;font-weight:700;color:#fff;opacity:0;pointer-events:none;white-space:nowrap;z-index:600;transition:opacity .2s,transform .2s;letter-spacing:.3px;}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
#toast.success{background:linear-gradient(135deg,#00C853,#00E676);color:#000;}
#toast.error{background:linear-gradient(135deg,#FF2D55,#FF4D6D);}
#toast.info{background:#23252D;border:1px solid rgba(255,255,255,.14);color:#F2F3F5;}

/* ─── ONBOARDING ─────────────────────────────────────────────── */
#onboarding{position:fixed;top:0;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;z-index:9999;background:var(--bg);display:flex;flex-direction:column;overflow:hidden;}
html.ob-done #onboarding{display:none;}
.ob-progress{display:flex;gap:8px;justify-content:center;padding:max(env(safe-area-inset-top),48px) 0 8px;}
.ob-dot{width:8px;height:8px;border-radius:50%;background:var(--sep);transition:all .35s;}
.ob-dot.ob-active{width:28px;border-radius:4px;background:var(--red);}
.ob-wrap{flex:1;overflow:hidden;position:relative;}
.ob-step{position:absolute;inset:0;display:flex;flex-direction:column;padding:0 24px;overflow:hidden;transition:transform .38s cubic-bezier(.4,0,.2,1),opacity .38s;transform:translateX(100%);opacity:0;pointer-events:none;}
.ob-step.ob-active{transform:translateX(0);opacity:1;pointer-events:all;}
.ob-step.ob-prev{transform:translateX(-60px);opacity:0;}
.ob-hero{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;}
.ob-hero.ob-top{justify-content:flex-start;padding-top:20px;}
.ob-logo{font-family:var(--font-cond);font-size:56px;font-weight:900;background:linear-gradient(135deg,#FF2D55,#FF6D00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.1;}
.ob-title{font-family:var(--font-cond);font-size:32px;font-weight:900;line-height:1.1;}
.ob-sub{font-size:16px;color:var(--t2);line-height:1.5;max-width:280px;}
.ob-inp{font-size:22px;font-weight:700;font-family:var(--font);background:var(--bg3);border:2px solid var(--sep);border-radius:var(--r);color:var(--t1);padding:14px 18px;outline:none;width:100%;text-align:center;transition:border-color .2s;}
.ob-inp:focus{border-color:var(--red);box-shadow:0 0 0 3px rgba(255,45,85,.15);}
.ob-footer{padding:10px 0 max(env(safe-area-inset-bottom),10px);display:flex;flex-direction:column;gap:8px;}
.ob-gbrow{display:flex;gap:10px;width:100%;}
.ob-gbtn{flex:1;padding:14px;border-radius:var(--r);border:2px solid var(--sep);background:var(--bg3);color:var(--t2);font-size:16px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .2s;touch-action:manipulation;}
.ob-gbtn.ob-sel{border-color:var(--red);color:var(--t1);background:rgba(255,45,85,.12);}
.ob-goal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;}
@keyframes ob0-bounce{0%,100%{transform:translateY(0);}50%{transform:translateY(8px);}}
.ob-goal-btn{display:flex;flex-direction:column;align-items:center;padding:16px 8px;border-radius:var(--r);border:2px solid var(--sep);background:var(--bg3);color:var(--t2);font-size:15px;font-weight:700;font-family:var(--font);cursor:pointer;gap:8px;transition:all .2s;touch-action:manipulation;}
.ob-goal-btn.ob-sel{background:rgba(255,45,85,.12);border-color:var(--red);color:var(--t1);}
.ob-mini-inp{width:100%;font-size:18px;font-weight:700;font-family:var(--font);background:var(--bg3);border:2px solid var(--sep);border-radius:12px;color:var(--t1);padding:10px 10px;outline:none;text-align:center;transition:border-color .2s;}
.ob-mini-inp:focus{border-color:var(--red);}
.ob-lvl-big{width:100%;padding:15px 16px;border-radius:var(--r);border:2px solid var(--sep);background:var(--bg3);color:var(--t1);font-family:var(--font);cursor:pointer;text-align:left;transition:all .2s;touch-action:manipulation;}
.ob-lvl-big.ob-sel{border-color:var(--red);background:rgba(255,45,85,.12);}
.ob-lvl-t{font-size:17px;font-weight:800;margin-bottom:4px;}
.ob-lvl-d{font-size:13px;color:var(--t3);line-height:1.4;}
.ob-lvl-big.ob-sel .ob-lvl-d{color:var(--t2);}

/* ─── PWA INSTALL ────────────────────────────────────────────── */
#install-popup{position:fixed;top:0;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;z-index:8000;background:rgba(0,0,0,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:24px 20px max(calc(env(safe-area-inset-bottom)+24px),40px);}
#install-popup.hidden{display:none;}
.install-card{background:var(--bg2);border-radius:24px;padding:24px;border:1px solid var(--sep);width:100%;animation:iSlideUp .38s cubic-bezier(.25,.46,.45,.94);}
.install-arrow{font-size:36px;text-align:center;display:block;animation:iBounce .9s ease-in-out infinite;}
@keyframes iBounce{0%,100%{transform:translateY(-5px)}50%{transform:translateY(5px)}}
@keyframes iSlideUp{from{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}

/* ─── Guide d'installation iPhone (visuel, iOS-fidèle) ───────── */
.ii-guide{display:flex;flex-direction:column;gap:10px;}
.ii-step{display:flex;align-items:flex-start;gap:12px;background:var(--bg3);border-radius:14px;padding:13px 14px;}
.ii-num{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--red);color:#fff;font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center;margin-top:1px;}
.ii-body{flex:1;min-width:0;}
.ii-txt{font-size:14.5px;font-weight:600;color:var(--t1);line-height:1.35;}
.ii-txt b{color:var(--blue);font-weight:800;}
.ii-safaribar{margin-top:10px;display:flex;align-items:center;justify-content:space-between;background:#1c1c1e;border:1px solid rgba(255,255,255,.10);border-radius:12px;padding:7px 14px;}
.ii-sfico{color:#8e8e93;display:flex;align-items:center;}
.ii-share{position:relative;width:34px;height:34px;border-radius:9px;background:#007AFF;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 8px rgba(0,122,255,.5);}
.ii-share::after{content:"";position:absolute;inset:-5px;border-radius:13px;border:2.5px solid #007AFF;animation:iiPulse 1.4s ease-out infinite;}
@keyframes iiPulse{0%{transform:scale(1);opacity:.9}100%{transform:scale(1.55);opacity:0}}
.ii-sheetrow{margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg2);border-radius:11px;padding:10px 13px;box-shadow:0 0 0 2px var(--blue);}
.ii-sheetlbl{font-size:14px;font-weight:700;color:var(--t1);}
.ii-sqadd{flex-shrink:0;color:var(--t1);display:flex;}
.ii-addbtn{margin-top:10px;display:inline-block;background:#007AFF;color:#fff;font-size:13px;font-weight:800;padding:6px 18px;border-radius:8px;}
.ii-hint{display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--t3);font-size:12px;margin-top:6px;text-align:center;}
.ii-downarrow{font-size:26px;line-height:1;animation:ob0-bounce .85s infinite ease-in-out;}

/* ─── BANNIÈRE INSTALLATION ──────────────────────────────────── */
#install-banner{position:fixed;bottom:calc(68px + max(env(safe-area-inset-bottom),0px));left:50%;transform:translateX(-50%);width:calc(100% - 24px);max-width:410px;z-index:9000;padding:12px 14px;background:var(--bg2);border:1px solid var(--sep);border-radius:16px;box-shadow:0 4px 24px rgba(0,0,0,.28);transition:transform .3s ease,opacity .3s ease;pointer-events:none;}
#install-banner button,#install-banner a{pointer-events:auto;}
#install-banner.hidden{transform:translateX(-50%) translateY(20px);opacity:0;}
#install-banner.hidden button,#install-banner.hidden a{pointer-events:none;}
.ib-row{display:flex;align-items:center;gap:10px;}
.ib-qr{background:#fff;border-radius:8px;padding:4px;flex-shrink:0;}
.ib-qr img{width:60px;height:60px;display:block;}
.ib-text{flex:1;min-width:0;}
.ib-close{background:none;border:none;color:var(--t3);font-size:22px;cursor:pointer;padding:4px;flex-shrink:0;line-height:1;}
/* BADGES */
.badge-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.badge-card{background:var(--bg2);border-radius:var(--r);padding:14px;border:1px solid var(--sep);display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;position:relative;overflow:hidden;transition:border-color .2s;}
.badge-card.unlocked{border-color:rgba(255,214,0,.45);background:linear-gradient(135deg,rgba(255,214,0,.05),var(--bg2));}
.badge-card.locked{opacity:.5;}
.badge-prog{width:100%;margin-top:4px;display:flex;flex-direction:column;align-items:center;gap:3px;}
.badge-prog-bar{width:100%;height:5px;border-radius:4px;background:var(--bg3);overflow:hidden;}
.badge-prog-fill{height:100%;border-radius:4px;background:var(--gold);transition:width .4s;}
.badge-prog-txt{font-size:10px;font-weight:800;color:var(--t2);}
.badge-icon{font-size:34px;line-height:1;}
.badge-name{font-size:13px;font-weight:800;color:var(--t1);line-height:1.2;}
.badge-desc{font-size:11px;color:var(--t3);line-height:1.35;}
.badge-date{font-size:10px;color:var(--gold);font-weight:700;margin-top:1px;}
.badge-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 0%,rgba(255,214,0,.1),transparent 65%);pointer-events:none;}
/* PR CONGRATS */
#ov-pr-congrats{align-items:center;justify-content:center;background:rgba(0,0,0,.88);}
.pr-card{background:var(--bg2);border-radius:24px;padding:28px 20px;width:calc(100% - 48px);max-width:360px;text-align:center;border:1px solid rgba(255,214,0,.4);box-shadow:0 0 40px rgba(255,214,0,.12);animation:prPop .38s cubic-bezier(.25,.46,.45,.94);}
@keyframes prPop{from{transform:scale(.82) translateY(24px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
@keyframes bday-fall{0%{transform:translateY(0) rotate(0deg);opacity:0;}8%{opacity:1;}90%{opacity:.75;}100%{transform:translateY(102vh) rotate(720deg);opacity:0;}}
@keyframes bday-rise{0%{transform:translateY(0) rotate(-4deg);opacity:0;}8%{opacity:.9;}85%{opacity:.6;}100%{transform:translateY(-112vh) rotate(4deg);opacity:0;}}
@keyframes bday-twinkle{0%,100%{opacity:.12;transform:scale(.65);}50%{opacity:1;transform:scale(1.6);}}
@keyframes bday-flicker{0%{transform:scaleX(1) scaleY(1);opacity:1;}100%{transform:scaleX(.82) scaleY(1.18);opacity:.78;}}
@keyframes bday-sparkle{0%,100%{opacity:0;transform:scale(.5) translateY(0);}50%{opacity:1;transform:scale(1.3) translateY(-7px);}}
@keyframes bday-smoke{0%{opacity:.6;transform:translateX(-50%) translateY(0) scaleX(1);}100%{opacity:0;transform:translateX(-50%) translateY(-30px) scaleX(3);}}
@keyframes bday-btn-pop{0%{transform:scale(.88);}60%{transform:scale(1.07);}100%{transform:scale(1);}}
.pr-card-emoji{font-size:52px;line-height:1;margin-bottom:6px;}
.pr-card-title{font-family:var(--font-cond);font-size:26px;font-weight:900;background:linear-gradient(135deg,#FFB800,#FF6D00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:4px;}
.pr-card-ex{font-size:15px;color:var(--t2);font-weight:600;margin-bottom:14px;}
.pr-rm-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:4px;}
.pr-rm-old{font-family:var(--font-cond);font-size:24px;font-weight:900;color:var(--t3);text-decoration:line-through;}
.pr-rm-arr{font-size:18px;color:var(--gold);}
.pr-rm-new{font-family:var(--font-cond);font-size:40px;font-weight:900;color:var(--gold);}
.pr-rm-unit{font-size:13px;color:var(--t2);margin-bottom:14px;}
.pr-lvl-chip{background:rgba(0,230,118,.1);border:1px solid rgba(0,230,118,.3);border-radius:10px;padding:8px 12px;font-size:13px;color:var(--green);font-weight:700;margin-bottom:14px;}
/* WEEKLY SUMMARY */
.week-sum-row{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid var(--sep);}
.week-sum-row:last-child{border-bottom:none;}
.week-sum-lbl{font-size:15px;color:var(--t2);font-weight:600;}
.week-sum-val{font-family:var(--font-cond);font-size:22px;font-weight:900;}
.week-badge-pill{background:rgba(255,214,0,.1);border:1px solid rgba(255,214,0,.3);border-radius:10px;padding:8px 12px;font-size:14px;color:var(--gold);font-weight:700;text-align:center;margin:4px 0;}

/* ─── ACCESSIBILITÉ — Mode basse vision ──────────────────── */
#root.a11y-lv {
  --t1: #FFFFFF;
  --t2: #D2D5DE;
  --t3: #A4A9B8;
  --sep: rgba(255,255,255,.20);
  --bg: #060710;
  --bg2: #0E1018;
  --bg3: #161921;
}
#root.a11y-lv.light-mode {
  --t1: #000000;
  --t2: #18182E;
  --t3: #38385A;
  --sep: #A4A4C0;
  --bg: #FFFFFF;
  --bg2: #F4F4F8;
  --bg3: #E8E8EF;
}
/* Gros texte — classes CSS principales */
#root.a11y-lv label                { font-size: 17px !important; }
#root.a11y-lv .btn                 { font-size: 18px !important; }
#root.a11y-lv .btn-sm              { font-size: 16px !important; }
#root.a11y-lv input,
#root.a11y-lv select,
#root.a11y-lv textarea             { font-size: 18px !important; border-width: 2px !important; }
#root.a11y-lv .ex-name             { font-size: 21px !important; }
#root.a11y-lv .ex-meta             { font-size: 15px !important; }
#root.a11y-lv .sinp                { font-size: 19px !important; font-weight: 900 !important; }
#root.a11y-lv .snum                { font-size: 15px !important; font-weight: 900 !important; }
#root.a11y-lv .sprev               { font-size: 14px !important; }
#root.a11y-lv .tbtn                { font-size: 14px !important; font-weight: 900 !important; }
#root.a11y-lv .sets-hdr span       { font-size: 13px !important; }
#root.a11y-lv .rbtn                { font-size: 16px !important; }
#root.a11y-lv .home-row-ttl,
#root.a11y-lv .coach-action-lbl    { font-size: 16px !important; font-weight: 700 !important; }
#root.a11y-lv .home-row-sub,
#root.a11y-lv .coach-action-sub    { font-size: 13px !important; }
#root.a11y-lv .sbox .lbl           { font-size: 16px !important; }
#root.a11y-lv .sbox .val           { font-size: 24px !important; }
#root.a11y-lv .sbox .unit          { font-size: 15px !important; }
#root.a11y-lv .sec                 { font-size: 13px !important; }
#root.a11y-lv .empty               { font-size: 17px !important; }
#root.a11y-lv .help-item-text      { font-size: 16px !important; }
#root.a11y-lv .menu-row-lbl        { font-size: 17px !important; }
#root.a11y-lv .nb                  { font-size: 12px !important; }
#root.a11y-lv .slq-btn             { font-size: 13px !important; }
#root.a11y-lv .week-sum-lbl        { font-size: 17px !important; }
/* Contraste renforcé — boutons & séparateurs */
#root.a11y-lv .btn-red             { background: #FF1035 !important; box-shadow: 0 4px 18px rgba(255,16,53,.4) !important; }
#root.a11y-lv .card                { border-width: 1.5px !important; }

/* ─── DALTONISME ─────────────────────────────────────────── */
/* Deutéranopie — rouge→orange, vert→bleu */
#root.cb-deut{--red:#E8610A;--red2:#C94D00;--green:#1A78C2;}
#root.cb-deut.light-mode{--red:#B84500;--red2:#903400;--green:#005FA3;}
#root.cb-deut .tbtn.E,#root.cb-deut .tbtn.X{border-color:rgba(232,97,10,.5)!important;background:rgba(232,97,10,.1)!important;}
#root.cb-deut .chk.done{box-shadow:0 2px 8px rgba(26,120,194,.3)!important;}
/* Protanopie — rouge→orange-brun, vert→bleu */
#root.cb-prot{--red:#D46000;--red2:#B04D00;--green:#0077BB;}
#root.cb-prot.light-mode{--red:#A04000;--red2:#7A3000;--green:#005899;}
#root.cb-prot .tbtn.E,#root.cb-prot .tbtn.X{border-color:rgba(212,96,0,.5)!important;background:rgba(212,96,0,.1)!important;}
#root.cb-prot .chk.done{box-shadow:0 2px 8px rgba(0,119,187,.3)!important;}
/* Tritanopie — bleu→rose, or→émeraude, violet→orange */
#root.cb-trit{--blue:#E8477A;--gold:#009B77;--purp:#C8500A;}
#root.cb-trit.light-mode{--blue:#C2195A;--gold:#007A5C;--purp:#A04000;}
#root.cb-trit .tbtn.W,#root.cb-trit .tbtn.É{border-color:rgba(232,71,122,.5)!important;background:rgba(232,71,122,.1)!important;}
#root.cb-trit .tbtn.D{border-color:rgba(0,155,119,.5)!important;background:rgba(0,155,119,.1)!important;}

/* ─── GAUCHER ────────────────────────────────────────────── */
#root.lh #rest-bar          { flex-direction:column; }
#root.lh #rest-btns         { flex-direction:row-reverse; }
#root.lh .ex-hdr-btns       { order:-1; }

/* ─── Impression / export PDF d'un programme ─────────────────── */
#print-area{ display:none; }
@media print{
  @page{ margin:14mm; }
  html,body{ background:#fff !important; }
  body>*:not(#print-area){ display:none !important; }
  #print-area{ display:block !important; color:#111; font-family:'Manrope',system-ui,sans-serif; }
  .prt-doc{ max-width:100%; }
  .prt-h{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; border-bottom:2px solid #111; padding-bottom:8px; margin-bottom:4px; }
  .prt-logo{ font-weight:800; font-size:15px; letter-spacing:.02em; white-space:nowrap; }
  .prt-name{ font-weight:800; font-size:20px; text-align:right; }
  .prt-sub{ font-size:12px; color:#555; margin-bottom:14px; }
  .prt-doc h3{ font-size:15px; margin:16px 0 6px; padding:5px 8px; background:#f0f0f0; border-left:3px solid #111; }
  .prt-doc table{ width:100%; border-collapse:collapse; margin-bottom:6px; }
  .prt-doc th,.prt-doc td{ border:1px solid #bbb; padding:6px 8px; font-size:12.5px; text-align:left; }
  .prt-doc th{ background:#111; color:#fff; font-weight:700; }
  .prt-doc td.c,.prt-doc th.c{ text-align:center; white-space:nowrap; }
  .prt-doc thead{ display:table-header-group; }
  .prt-doc tr{ break-inside:avoid; }
  .prt-foot{ margin-top:16px; font-size:11.5px; color:#444; border-top:1px solid #ccc; padding-top:8px; line-height:1.5; }
}

/* ─── Bandeau MODE DÉMO (admin) ──────────────────────────────── */
#demo-banner{ display:none; align-items:center; justify-content:center; gap:12px; background:linear-gradient(90deg,#FF6C00,#FF2D55); color:#fff; font-weight:800; font-size:12.5px; letter-spacing:.02em; padding:max(env(safe-area-inset-top),8px) 12px 9px; flex-shrink:0; }
#demo-banner button{ background:rgba(0,0,0,.28); color:#fff; border:1px solid rgba(255,255,255,.55); border-radius:8px; padding:5px 14px; font-weight:700; font-family:var(--font); font-size:12.5px; cursor:pointer; touch-action:manipulation; }
#root.demo-on #demo-banner{ display:flex; }
/* le bandeau a déjà géré l'encoche → on réduit le padding haut de la topbar en mode démo */
#root.demo-on .topbar{ padding-top:14px; }

/* ─── Guide de l'application (diaporama) ─────────────────────── */
.ag-dot{ width:7px; height:7px; border-radius:50%; background:var(--sep); transition:all .25s; }
.ag-dot.on{ background:var(--red); width:22px; border-radius:4px; }

/* ─── Guide-film : téléphone + vraie capture + doigt animé ───── */
.ag-phone{ width:210px; margin:2px auto 0; border-radius:30px; background:#000; padding:7px; box-shadow:0 18px 44px -18px rgba(0,0,0,.75), 0 0 0 2px var(--sep); }
.ag-screen{ position:relative; width:100%; aspect-ratio:390/844; border-radius:24px; overflow:hidden; background:var(--bg2); }
#ag-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:top center; transition:opacity .35s ease; }
.ag-tap{ position:absolute; width:32px; height:32px; margin:-16px 0 0 -16px; pointer-events:none; z-index:3; display:none; }
.ag-tap::before{ content:""; position:absolute; inset:0; border-radius:50%; background:rgba(255,255,255,.92); box-shadow:0 0 12px rgba(255,255,255,.55); }
.ag-tap.on::before{ animation:ag-dot 1.4s ease-out infinite; }
.ag-tap::after{ content:""; position:absolute; inset:0; border-radius:50%; border:2.5px solid var(--red); }
.ag-tap.on::after{ animation:ag-ring 1.4s ease-out infinite; }
@keyframes ag-dot{ 0%,100%{ transform:scale(.42); opacity:.9;} 60%{ transform:scale(.62); opacity:.5;} }
@keyframes ag-ring{ 0%{ transform:scale(.42); opacity:.9;} 75%{ transform:scale(1.9); opacity:0;} 100%{ opacity:0;} }
/* Slide finale Premium : grande étoile qui pulse */
.ag-premium{ width:120px; height:120px; margin:14px auto 0; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:58px; background:radial-gradient(circle,rgba(234,179,8,.22),rgba(234,179,8,.04)); animation:ag-star 2s ease-in-out infinite; }
@keyframes ag-star{ 0%,100%{ transform:scale(1); box-shadow:0 0 0 0 rgba(234,179,8,.28);} 50%{ transform:scale(1.08); box-shadow:0 0 0 14px rgba(234,179,8,0);} }

/* Score santé produit (module food-health.js) — habillé aux couleurs Force Tracker (jour/nuit auto) */
.fh-card{
  --fh-bg:var(--bg2); --fh-alt:var(--bg3); --fh-line:var(--sep);
  --fh-text:var(--t1); --fh-muted:var(--t3); --fh-accent:var(--red);
  --fh-green:var(--green); --fh-lime:#8FC742; --fh-yellow:var(--gold);
  --fh-orange:var(--orange); --fh-red:var(--red);
  max-width:100%!important; font-family:var(--font)!important;
}
