:root {
  --bg: #050708;
  --panel: #121415;
  --panel-2: #17191a;
  --text: #f7f7f4;
  --muted: #8c8d8d;
  --red: #ef3340;
  --red-deep: #9e111b;
  --line: rgba(255,255,255,.1);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --nav-space: calc(76px + env(safe-area-inset-bottom, 0px));
}
* { box-sizing: border-box; }
/* barres de défilement masquées : le contenu reste scrollable */
* { scrollbar-width: none; }
*::-webkit-scrollbar { width: 0; height: 0; display: none; }
html { -ms-overflow-style: none; }
html { background: var(--bg); }
body {
  margin: 0;
  min-height: 100vh;
  color: var(--text);
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background: radial-gradient(circle at 55% 0%, #2b070a 0, transparent 26rem), var(--bg);
  -webkit-font-smoothing: antialiased;
}
button { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
.app { width: min(100%, 460px); margin: auto; min-height: 100vh; padding-bottom: var(--nav-space); overflow: hidden; }
.hero { min-height: 353px; position: relative; isolation: isolate; overflow: hidden; }
.hero-art { position: absolute; z-index: -3; top: 0; right: -20px; width: 76%; height: 100%; object-fit: cover; object-position: 42% top; filter: contrast(1.12) saturate(1.08); }
.hero::before { content: ""; position: absolute; z-index: -2; inset: 0; background: linear-gradient(90deg, #050708 0 25%, rgba(5,7,8,.72) 43%, rgba(5,7,8,.04) 72%), linear-gradient(0deg, #050708 0%, transparent 32%, rgba(5,7,8,.55) 100%); }
.hero::after { content: ""; position: absolute; z-index: -1; inset: 0; background: repeating-linear-gradient(165deg, transparent 0 9px, rgba(255,255,255,.015) 10px 11px); mix-blend-mode: overlay; }
.head { display: flex; justify-content: space-between; align-items: center; padding: 7px 24px 0; }
.brand-logo { display: block; width: 156px; height: auto; }
.jp-red { color: var(--red); font-size: 9px; font-weight: 900; letter-spacing: 2px; margin-top: 10px; padding-left: 5px; }
.icon-btn { width: 38px; height: 38px; border: 0; border-radius: 50%; color: #ddd; background: rgba(8,8,8,.56); display: grid; place-items: center; cursor: pointer; position: relative; }
.welcome { position: absolute; left: 24px; top: 96px; width: 70%; }
.welcome small { color: var(--red); font-weight: 900; font-size: 10px; }
.welcome h1 { font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif; font-size: clamp(34px, 10vw, 46px); line-height: .95; letter-spacing: .3px; margin: 10px 0 8px; font-weight: 950; text-transform: uppercase; }
.welcome h1 em { color: var(--red); font-style: normal; }
.welcome p { margin: 0; color: #aaa; font-size: 9px; letter-spacing: 1.4px; }
.streak-panel { position: absolute; left: 24px; right: 24px; bottom: 8px; min-height: 56px; border: 1px solid var(--line); border-radius: 10px; background: linear-gradient(105deg, rgba(27,28,29,.93), rgba(15,16,17,.82)); backdrop-filter: blur(12px); display: grid; grid-template-columns: 1fr 1px .72fr; align-items: center; padding: 8px 12px; box-shadow: 0 18px 40px #0008; }
.streak-main { display: grid; grid-template-columns: 28px 1fr; gap: 7px; align-items: center; }
.flame { color: var(--red); font-size: 23px; filter: drop-shadow(0 0 11px rgba(239,51,64,.38)); }
.eyebrow { color: #d8d8d8; text-transform: uppercase; font-size: 9px; letter-spacing: 1px; }
.value { font-size: 17px; font-weight: 950; margin-top: 1px; }
.value span { font-size: 9px; color: var(--red); margin-left: 2px; }
.mini-progress { display: flex; gap: 2px; margin-top: 4px; }
.mini-progress i { width: 14px; height: 3px; border-radius: 99px; background: #363738; }
.mini-progress i.on { background: var(--red); box-shadow: 0 0 8px rgba(239,51,64,.4); }
.divider { height: 36px; background: var(--line); }
.level { padding-left: 12px; }
.level .value { color: var(--red); }
.section { padding: 19px 24px 0; }
.section-head { display: flex; align-items: end; justify-content: space-between; margin-bottom: 11px; }
.section-title { margin: 0; font-size: 15px; text-transform: uppercase; letter-spacing: .4px; }
.section-jp { display: block; margin-top: 4px; color: #777; font-weight: 500; font-size: 11px; letter-spacing: 1.5px; }
.link-btn { min-height: 44px; border: 0; color: var(--red); background: transparent; padding: 0; cursor: pointer; font-size: 11px; text-transform: uppercase; }
.workout { position: relative; aspect-ratio: 783 / 310; border: 1px solid rgba(239,51,64,.25); border-radius: 16px; overflow: hidden; box-shadow: inset 0 0 30px rgba(0,0,0,.45); }
.workout-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.workout-content { display: none; }
.workout::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(100deg, rgba(5,7,8,.99) 0%, rgba(5,7,8,.97) 47%, rgba(5,7,8,.62) 63%, rgba(5,7,8,0) 80%); }
.workout-overlay { position: absolute; z-index: 2; left: 6%; top: 50%; transform: translateY(-50%); max-width: 55%; display: grid; gap: 7px; pointer-events: none; }
.workout-overlay span { font-size: 9px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--red); font-weight: 900; }
.workout-overlay strong { font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif; font-size: 24px; line-height: 1.02; text-transform: uppercase; }
.workout-overlay small { font-size: 10px; color: #d8d8d8; text-transform: uppercase; letter-spacing: .4px; }
.start-btn { position: absolute; z-index: 3; right: 3%; bottom: 7%; width: 33%; height: 23%; min-width: 0; border: 0; border-radius: 999px; color: white; font-size: 11px; font-weight: 900; letter-spacing: .6px; background: linear-gradient(135deg, #ff4d5a, #d31f2c); box-shadow: 0 6px 18px rgba(0,0,0,.45); cursor: pointer; }
.start-btn:hover { filter: brightness(1.08); }
.start-btn:focus-visible { outline: 3px solid white; outline-offset: 2px; }
.start-btn:active { background: rgba(255,255,255,.15); }
.stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.stat { min-height: 91px; background: linear-gradient(145deg, #17191a, #101112); border: 1px solid var(--line); border-radius: 11px; padding: 13px 8px; display: flex; gap: 8px; align-items: flex-start; }
.stat-icon { color: var(--red); font-size: 21px; line-height: 1; }
.stat:nth-child(2) .stat-icon { color: #f4c542; }
.stat strong { display: block; font-size: 18px; line-height: 1; white-space: nowrap; }
.stat span { display: block; color: #c6c6c6; font-size: 8px; line-height: 1.3; text-transform: uppercase; margin-top: 5px; }
.programs { display: flex; gap: 10px; overflow-x: auto; padding: 1px 24px 7px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.programs::-webkit-scrollbar { display: none; }
.program { flex: 0 0 142px; height: 170px; padding: 0; border: 1px solid var(--line); border-radius: 13px; overflow: hidden; background: #111; cursor: pointer; scroll-snap-align: start; position: relative; }
.program img { width: 100%; height: 100%; object-fit: cover; transition: transform .25s, filter .25s; }
.program:hover img { transform: scale(1.035); filter: brightness(1.08); }
.program.active { border-color: var(--red); box-shadow: 0 0 0 1px var(--red), 0 0 20px rgba(239,51,64,.16); }
.screen-view[hidden] { display: none !important; }
.phase-card { flex: 0 0 142px; height: 170px; border: 1px solid var(--line); border-radius: 13px; overflow: hidden; position: relative; cursor: pointer; background: #111 center top / cover no-repeat; color: white; text-align: left; padding: 0; }
.phase-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg,#050708 4%,rgba(5,7,8,.78) 34%,transparent 72%); }
.phase-card span { position: absolute; z-index: 1; left: 12px; right: 8px; bottom: 13px; font-size: 12px; font-weight: 900; text-transform: uppercase; }
.phase-card small { display: block; color: var(--red); margin-top: 4px; font-size: 8px; }
.program-page { min-height: calc(100vh - var(--nav-space)); padding-bottom: 12px; background: #050708; }
.program-hero { height: 206px; position: relative; overflow: hidden; padding: 12px 24px; isolation: isolate; }
.program-hero img { position: absolute; z-index: -2; inset: 0 0 0 auto; width: 72%; height: 100%; object-fit: cover; object-position: 42% 12%; filter: contrast(1.15) saturate(1.1); }
.program-hero::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(90deg,#050708 0 33%,rgba(5,7,8,.56) 58%,transparent),linear-gradient(0deg,rgba(5,7,8,.9),rgba(5,7,8,.22) 36%,transparent 62%); }
.program-top { display:flex; justify-content:flex-end; align-items:center; }
.program-kicker { margin-top: 22px; color: var(--red); font-size: 10px; font-weight: 900; letter-spacing: 2px; }
.program-title { margin: 39px 0 0; font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif; font-style: italic; font-size: 42px; letter-spacing: .5px; }
.program-jp { color:var(--red);font-size:12px;letter-spacing:2px;margin-top:4px; }
.personal-block { position: relative; z-index: 2; margin-top: -62px; padding: 0 18px 18px; }
.day-tabs { display:flex; gap:7px; overflow-x:auto; scrollbar-width:none; padding: 0 0 12px; }
.day-tabs::-webkit-scrollbar { display:none; }
.day-tab { flex:0 0 auto; min-height:30px; display:flex; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,.16); border-radius:9px; background:rgba(14,16,18,.34); backdrop-filter:blur(16px) saturate(170%); -webkit-backdrop-filter:blur(16px) saturate(170%); color:#c2c3c3; padding:5px 10px; text-align:center; cursor:pointer; }
.day-tab strong { display:block; color:inherit; font-size:11px; letter-spacing:.3px; text-transform:uppercase; }
.day-tab span { display:block; font-size:8px; line-height:1.2; color:#868686; }
.day-tab.active { color:white; border-color:var(--red); background:linear-gradient(145deg,rgba(70,20,27,.72),rgba(17,19,20,.5)); box-shadow:0 0 18px rgba(239,51,64,.22); }
.day-tab.active span { color:#ef3340; }
.today-session { border:1px solid rgba(239,51,64,.35); border-radius:17px; overflow:hidden; background:linear-gradient(145deg,#151718,#0b0d0e); box-shadow:0 16px 34px #0008; }
.today-session-head { padding:16px; position:relative; isolation:isolate; overflow:hidden; }
.today-session-head::before { content:""; position:absolute; z-index:-2; inset:0; background:url('assets/program-strength.webp') center / cover; filter:grayscale(.25) contrast(1.15) brightness(.65); }
.today-session-head::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(90deg,#090b0c 0 42%,rgba(9,11,12,.62)),linear-gradient(0deg,#090b0c,transparent 58%); }
.today-session-day { color:var(--red); font-size:10px; font-weight:900; letter-spacing:1.6px; text-transform:uppercase; }
.today-session-title { margin:6px 0 0; font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif; font-size:34px; line-height:.95; font-style:italic; text-transform:uppercase; }
.today-session-meta { color:#aaa; font-size:10px; line-height:1.45; max-width:210px; }
.today-session-body { padding:14px; }
.daily-session-card { margin:0 0 14px; padding:14px; border:1px solid rgba(255,255,255,.1); border-radius:15px; background:rgba(8,9,10,.68); }
.daily-session-head { position:relative; display:block; width:100%; padding:0 24px 0 0; border:0; background:transparent; color:inherit; text-align:left; cursor:pointer; }
.daily-session-chevron { position:absolute; right:0; top:50%; transform:translateY(-50%) rotate(90deg); font-style:normal; color:#777; font-size:20px; transition:transform .2s, color .2s; }
.daily-session-card.open .daily-session-chevron { transform:translateY(-50%) rotate(-90deg); color:var(--red); }
.daily-session-card:not(.open) .daily-session-body { display:none; }
.daily-session-card:not(.open) .daily-session-head p { margin-bottom:0; }
.daily-session-card.open { border-color:rgba(239,51,64,.32); }
.daily-session-top { display:flex; justify-content:space-between; align-items:center; color:var(--red); font-weight:900; text-transform:uppercase; font-size:10px; letter-spacing:1.2px; }
.daily-session-top small { color:#999; font-size:10px; letter-spacing:0; }
.daily-session-card h3 { margin:9px 0 4px; font-size:18px; text-transform:uppercase; }
.daily-session-card p { margin:0 0 8px; color:#aaa; font-size:11px; }
.session-direct-exercise { border-top:1px solid var(--line); padding:12px 0; }
.session-direct-exercise:first-child { border-top:0; padding-top:0; }
.session-direct-exercise strong { display:block; font-size:13px; }
.session-direct-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:5px; margin-top:8px; }
.session-direct-grid span { background:#090b0c; border-radius:8px; padding:7px 3px; text-align:center; color:#aaa; font-size:7px; text-transform:uppercase; }
.session-direct-grid b { display:block; color:white; font-size:10px; margin-top:2px; text-transform:none; }
.session-start-full { width:100%; min-height:46px; margin-top:8px; border:0; border-radius:999px; background:var(--red); color:white; font-weight:950; cursor:pointer; box-shadow:0 0 22px rgba(239,51,64,.24); }
.knee-note { margin-top:12px;padding:12px;border:1px solid #8c6a1d55;border-radius:11px;background:#8c6a1d12;color:#d9bc70;font-size:10px;line-height:1.45; }
.session-modal-list { max-height:48vh;overflow:auto;margin-top:10px; }
.session-exercise { border-top:1px solid var(--line);padding:11px 0; }
.session-exercise strong { display:block;font-size:13px; }
.session-exercise-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:7px; }
.session-exercise-grid span { background:#090b0c;border-radius:7px;padding:7px 3px;text-align:center;color:#aaa;font-size:8px; }
.session-exercise-grid b { display:block;color:white;font-size:10px;margin-top:2px; }
.session-fullscreen { z-index:90;padding:0;background:#030404;backdrop-filter:none;align-items:stretch;justify-content:center;overflow:auto; }
.session-fullscreen.open { display:flex; }
.session-fullscreen .session-shell { position:relative;width:min(100%,460px);min-height:100vh;padding:28px 22px calc(26px + var(--safe-bottom));isolation:isolate;overflow:hidden;background:#030404; }
.session-bg { position:absolute;z-index:-3;top:0;right:-36px;width:82%;height:42%;object-fit:cover;object-position:55% 0;filter:grayscale(.45) contrast(1.25) brightness(.68); }
.session-shell::before { content:"";position:absolute;z-index:-2;inset:0;background:linear-gradient(90deg,#030404 0 28%,rgba(3,4,4,.62) 58%,rgba(3,4,4,.05)),linear-gradient(0deg,#030404 44%,rgba(3,4,4,.45) 70%,rgba(3,4,4,.88)); }
.session-top { display:flex;justify-content:space-between;align-items:center;margin-bottom:22px; }
.session-back,.session-menu { width:54px;height:54px;border:1px solid rgba(255,255,255,.16);border-radius:50%;background:rgba(8,9,10,.42);color:white;font-size:30px;font-weight:900;display:grid;place-items:center;cursor:pointer; }
.session-menu { font-size:27px;letter-spacing:3px; }
.session-clock { margin:0;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:clamp(72px,20vw,112px);line-height:.9;letter-spacing:2px;color:white;text-shadow:0 6px 28px #000; }
.session-clock .red { color:var(--red); }
.session-tour { display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:center;margin:18px 0 34px;color:#a5a6a6;font-size:16px;font-weight:800;text-transform:uppercase;letter-spacing:.6px; }
.session-tour b { color:var(--red); }.session-tour-bar{height:5px;border-radius:99px;background:rgba(255,255,255,.1);overflow:hidden}.session-tour-bar i{display:block;width:var(--tour-progress,25%);height:100%;border-radius:inherit;background:var(--red);box-shadow:0 0 14px rgba(239,51,64,.55)}
.session-status { color:#b9b9b9;font-size:14px;text-transform:uppercase;letter-spacing:.8px;margin:0 0 16px; }.session-status::after{content:"";display:block;width:54px;height:5px;border-radius:99px;background:var(--red);margin-top:14px;box-shadow:0 0 12px rgba(239,51,64,.45)}
.active-workout-title { margin:0;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:43px;line-height:1;text-transform:uppercase;letter-spacing:.5px; }.active-workout-subtitle{margin:9px 0 24px;color:#c7c7c7;text-transform:uppercase;font-size:20px;letter-spacing:.6px}
.session-meta-row { display:flex;gap:18px;align-items:center;margin-bottom:24px;color:#c9c9c9;text-transform:uppercase;font-size:13px;font-weight:800; }.session-meta-row span{display:flex;align-items:center;gap:8px}.session-meta-row span+span{border-left:1px solid rgba(255,255,255,.12);padding-left:18px}.session-meta-row b{color:var(--red)}
.current-exercise-panel { position:relative;min-height:218px;border:1px solid rgba(239,51,64,.55);border-radius:17px;overflow:hidden;padding:28px 20px;margin-bottom:24px;background:#080909;box-shadow:0 18px 50px #0009; }
.current-exercise-panel::after { content:"";position:absolute;inset:0;background:linear-gradient(90deg,#070808 0 39%,rgba(7,8,8,.78) 57%,rgba(7,8,8,.14));pointer-events:none; }.current-exercise-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:72% center;filter:contrast(1.18) brightness(.8);}
.current-exercise-content { position:relative;z-index:1;max-width:58%; }.current-label{color:var(--red);font-size:13px;text-transform:uppercase;font-weight:900;margin-bottom:22px}.current-exercise-content h3{margin:0 0 8px;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:34px;text-transform:uppercase}.current-exercise-content em{display:block;color:#777;font-style:normal;font-size:20px;font-weight:900;text-transform:uppercase;margin-bottom:32px}.current-exercise-content p{margin:13px 0 0;color:#bbb;font-size:14px;text-transform:uppercase}.current-exercise-content p span{display:inline-block;width:30px;color:#888;font-size:18px}.current-serie{display:inline-block;white-space:nowrap;margin:-20px 0 18px;padding:6px 12px;border:1px solid rgba(239,51,64,.42);border-radius:999px;background:rgba(239,51,64,.14);color:#fff;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.4px}
.up-next-title{margin:0 0 12px;color:#bbb;text-transform:uppercase;font-size:17px;letter-spacing:.5px}.up-next-list{display:grid;gap:10px;margin-bottom:28px}.next-card{display:grid;grid-template-columns:92px 28px 1fr auto;gap:12px;align-items:center;min-height:82px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(14,15,16,.86);padding:8px 13px 8px 8px}.next-card img{width:92px;height:58px;border-radius:8px;object-fit:cover;filter:brightness(.72) contrast(1.12)}.next-card .num{color:var(--red);font-size:22px}.next-card strong{display:block;font-size:15px;text-transform:uppercase}.next-card small{display:block;color:#999;font-size:12px;text-transform:uppercase;margin-top:6px}.next-card .dots{color:#777;font-size:22px;letter-spacing:2px}
.bottom-session-controls{display:grid;grid-template-columns:1fr 132px 1fr;gap:18px;align-items:center}.bottom-session-controls button{border:0;background:transparent;color:#aaa;font-weight:900;text-transform:uppercase;cursor:pointer}.round-control{display:grid;place-items:center;gap:11px}.round-control i{width:68px;height:68px;border:1px solid rgba(255,255,255,.13);border-radius:50%;display:grid;place-items:center;color:white;font-size:24px;font-style:normal;background:rgba(10,10,11,.65)}.main-pause{width:132px;height:132px;border:3px solid var(--red)!important;border-radius:50%;background:radial-gradient(circle,rgba(239,51,64,.24),rgba(239,51,64,.06) 58%,transparent)!important;color:var(--red)!important;font-size:42px!important;box-shadow:0 0 42px rgba(239,51,64,.32)}
.progress-page { min-height:calc(100vh - var(--nav-space));background:#050708; }
.progress-hero { height:252px;position:relative;isolation:isolate;overflow:hidden;padding:12px 24px; }
.progress-hero>img { position:absolute;z-index:-2;right:-25px;top:0;width:78%;height:100%;object-fit:cover;object-position:43% 12%;filter:contrast(1.17) saturate(1.12); }
.progress-hero::after { content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#050708 0 32%,rgba(5,7,8,.55) 62%,transparent),linear-gradient(0deg,#050708,transparent 50%); }
.progress-heading { margin:39px 0 0;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:42px;font-style:italic; }
.progress-jp { color:var(--red);font-size:12px;letter-spacing:2px; }
.player { position:absolute;left:24px;bottom:26px;display:flex;align-items:center;gap:12px; }
.player-avatar { width:61px;height:61px;border-radius:50%;border:2px solid var(--red);object-fit:cover;box-shadow:0 0 18px rgba(239,51,64,.25); }
.player h2 { margin:0;font-size:17px; }
.player-rank { margin-top:5px;font-size:11px;color:#aaa; }
.player-rank b { color:#b7c1c7;font-size:15px; }
.xp-bar { width:135px;height:5px;background:#292b2c;border-radius:99px;margin-top:8px;overflow:hidden; }
.xp-bar i { display:block;width:0%;height:100%;background:var(--red); }
.xp-copy { margin-top:5px;color:#777;font-size:9px; }
.progress-content { padding:0 16px;display:grid;gap:16px; }
.progress-panel { min-width:0;width:100%;background:linear-gradient(145deg,#141617,#0d0f10);border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:14px;overflow:hidden; }
.progress-panel h2 { margin:0 0 13px;font-size:13px;text-transform:uppercase;letter-spacing:.4px; }
.weight-head { display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px; }
.weight-entry { display:flex;gap:5px; }
.weight-entry input { width:68px;height:34px;border:1px solid var(--line);border-radius:8px;background:#090b0c;color:white;text-align:center;font-weight:800; }
.weight-entry button { height:34px;border:0;border-radius:8px;background:var(--red);color:white;font-weight:900;padding:0 10px;cursor:pointer; }
.weight-chart { width:100%;height:150px;display:block;overflow:visible; }
.rank-ladder { display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;margin:-2px 0 13px; }
.rank-pill { flex:0 0 auto;padding:5px 7px;border-radius:99px;background:#090b0c;border:1px solid var(--rank-color);color:var(--rank-color);font-size:7px;font-weight:900;text-transform:uppercase; }
.muscle-layout { display:grid;grid-template-columns:162px 1fr;gap:10px;align-items:center; }
.body-map { display:flex;gap:4px; }
.body-view { position:relative;flex:1;min-width:0; }
.body-view img { position:relative;z-index:1;width:100%;height:auto;display:block;opacity:.65; }
.body-glow { position:absolute;z-index:0;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;filter:blur(3px); }
.muscle-ranks { display:grid;gap:8px; }
.muscle-row { display:grid;grid-template-columns:62px 1fr auto;gap:6px;align-items:center;font-size:9px; }
.muscle-row b { font-size:8px;color:var(--rank); }
.muscle-track { height:5px;border-radius:99px;background:#292b2c;overflow:hidden; }
.muscle-track i { display:block;height:100%;width:var(--fill);background:var(--rank); }
.records { display:flex;gap:7px;overflow-x:auto;scrollbar-width:none; }
.record { flex:0 0 111px;min-height:92px;padding:11px 8px;border:1px solid var(--line);border-radius:10px;background:#0b0d0e;text-align:center; }
.record b { display:block;font-size:16px;margin:8px 0 2px; }
.record.empty { opacity:.5; }
.record.empty b { color:#777; }
.record span { color:#888;font-size:8px;text-transform:uppercase; }
.recap-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:7px; }
.recap-item { background:#090b0c;border:1px solid var(--line);border-radius:9px;padding:10px;text-align:center; }
.recap-item strong { display:block;color:var(--red);font-size:16px; }
.recap-item span { display:block;color:#777;font-size:7px;text-transform:uppercase;margin-top:3px; }
.recap-note { margin:10px 0 0;color:#9a9b9b;font-size:10px;line-height:1.45; }
.profile-page { min-height:calc(100vh - var(--nav-space));background:#050708;padding-bottom:20px; }
.profile-hero { height:206px;position:relative;isolation:isolate;overflow:hidden;padding:12px 24px; }
.profile-hero .program-top { position: absolute; top: 12px; right: 24px; }
.profile-hero>img { position:absolute;z-index:-2;right:-30px;top:0;width:84%;height:100%;object-fit:cover;object-position:43% 8%;filter:contrast(1.18) saturate(1.1); }
.profile-hero::after { content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#050708 0 27%,rgba(5,7,8,.48) 65%,transparent),linear-gradient(0deg,#050708,transparent 48%); }
.profile-heading { margin:39px 0 0;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:45px;font-style:italic; }
.profile-content { padding:0 16px 20px;display:grid;gap:13px; }
.profile-section-title{display:flex;justify-content:space-between;align-items:center;margin:4px 3px -2px}.profile-section-title h2{margin:0;font-size:14px}.profile-section-title button{border:0;background:transparent;color:var(--red);font-size:9px;cursor:pointer}
.profile-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:13px;overflow:hidden}.profile-overview div{background:#121415;padding:16px 5px;text-align:center}.profile-overview strong{display:block;font-size:15px}.profile-overview span{display:block;color:#777;font-size:7px;text-transform:uppercase;margin-top:4px}
.goal-list{border:1px solid var(--line);border-radius:13px;overflow:hidden}.goal-list.collapsed .goal-row:nth-child(n+2){display:none}.goal-list.collapsed .goal-row:first-child{border-bottom:0}.goal-row{display:grid;grid-template-columns:32px 1fr 70px;gap:9px;align-items:center;padding:9px 11px;background:#111314;border-bottom:1px solid var(--line)}.goal-row:last-child{border-bottom:0}.goal-icon{width:32px;height:32px;border:1px solid #444;border-radius:50%;display:grid;place-items:center;color:var(--red);font-size:11px;font-weight:900}.goal-row strong{display:block;font-size:10px}.goal-row small{display:block;color:#777;font-size:8px;margin-top:3px}.goal-progress{height:5px;background:#292b2c;border-radius:99px;overflow:hidden}.goal-progress i{display:block;height:100%;background:var(--red);width:var(--goal)}
.badges{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}.badge{flex:0 0 105px;text-align:center}.badge-mark{width:62px;height:68px;margin:auto;clip-path:polygon(50% 0,95% 25%,95% 74%,50% 100%,5% 74%,5% 25%);background:linear-gradient(145deg,#3a1115,#111);border:1px solid var(--red);display:grid;place-items:center;color:var(--red);font-size:21px;font-weight:950}.badge strong{display:block;font-size:9px;margin-top:7px}.badge span{display:block;color:#777;font-size:7px;margin-top:3px}.badge.locked{filter:grayscale(1);opacity:.45}
.profile-menu{border:1px solid var(--line);border-radius:13px;overflow:hidden}.profile-menu button{width:100%;min-height:52px;border:0;border-bottom:1px solid var(--line);background:#111314;color:#bbb;display:grid;grid-template-columns:30px 1fr auto;align-items:center;text-align:left;padding:0 14px;cursor:pointer}.profile-menu button:last-child{border-bottom:0}.profile-menu b{color:#777;font-size:18px}.profile-menu span{font-size:11px}.profile-menu i{font-style:normal;color:#777;font-size:18px}
.profile-menu span small{display:block;margin-top:3px;color:#666;font-size:8px;letter-spacing:.5px}.profile-menu span small.on{color:var(--red)}
.profile-form{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.profile-form label{color:#888;font-size:9px;text-transform:uppercase}.profile-form input,.profile-form select{width:100%;height:42px;margin-top:5px;border:1px solid var(--line);border-radius:9px;background:#090b0c;color:white;padding:0 10px}.profile-form .wide{grid-column:1/-1}
/* --- Succès & trophées --- */
.trophy-page { min-height:calc(100vh - var(--nav-space));background:#050708;padding-bottom:20px; }
.trophy-hero { height:300px;position:relative;isolation:isolate;overflow:hidden;padding:12px 24px; }
.trophy-hero>img { position:absolute;z-index:-2;right:-25px;top:0;width:78%;height:100%;object-fit:cover;object-position:43% 10%;filter:contrast(1.17) saturate(1.12); }
.trophy-hero::after { content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#050708 0 34%,rgba(5,7,8,.58) 62%,transparent),linear-gradient(0deg,#050708,transparent 52%); }
.trophy-heading { margin:26px 0 0;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:42px;font-style:italic; }
.trophy-headline { position:absolute;left:24px;right:24px;bottom:16px;display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end; }
.trophy-headline .big { font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:38px;line-height:.9; }
.trophy-headline .big em { color:var(--red);font-style:normal; }
.trophy-headline small { color:#b6b7b7;font-size:10px;text-transform:uppercase;letter-spacing:1.1px;padding-bottom:5px; }
.trophy-content { padding:14px 16px 20px;display:grid;gap:12px; }
.trophy-filters { display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px; }
.trophy-filters::-webkit-scrollbar { display:none; }
.trophy-filter { flex:0 0 auto;min-height:32px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#111314;color:#888;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.5px;cursor:pointer; }
.trophy-filter.active { color:white;border-color:var(--red);background:linear-gradient(145deg,#311015,#111314); }
.trophy-list { display:grid;gap:10px; }
.trophy-card { display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:start;width:100%;text-align:left;padding:13px;border:1px solid var(--line);border-left:3px solid var(--rank,#3a3c3d);border-radius:14px;background:linear-gradient(145deg,#141617,#0c0e0f);color:inherit;font:inherit;cursor:pointer; }
.trophy-card.locked { opacity:.62; }
.trophy-card.complete { border-color:rgba(180,108,255,.5);box-shadow:0 0 22px rgba(180,108,255,.14); }
.trophy-art { width:52px; height:58px; object-fit:contain; }
.trophy-card.locked .trophy-art { filter:grayscale(1) brightness(.55); }
.record-badge { display:block; width:104px; height:104px; object-fit:contain; margin:0 auto 6px; }
.record-badge.locked { filter:grayscale(1) brightness(.55); }
.trophy-mark { width:52px;height:58px;display:grid;place-items:center;clip-path:polygon(50% 0,95% 25%,95% 74%,50% 100%,5% 74%,5% 25%);background:linear-gradient(150deg,color-mix(in srgb,var(--rank,#3a3c3d) 42%,#111),#101112);color:var(--rank,#8a8c8d);font-size:17px;font-weight:950; }
.trophy-head { display:flex;justify-content:space-between;align-items:baseline;gap:8px; }
.trophy-head strong { font-size:13px;text-transform:uppercase;letter-spacing:.2px; }
.trophy-rank { color:var(--rank,#7d7f80);font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.8px;white-space:nowrap; }
.trophy-value { color:#9a9b9b;font-size:10px;margin-top:4px; }
.trophy-track { height:5px;border-radius:99px;background:#26282a;overflow:hidden;margin:8px 0 6px; }
.trophy-track i { display:block;height:100%;border-radius:inherit;background:var(--rank,#5a5c5d); }
.trophy-next { color:#c4c5c5;font-size:10px;line-height:1.4; }
.trophy-preview { display:grid;gap:9px; }
.trophy-summary-row { display:grid;grid-template-columns:repeat(3,1fr);gap:7px; }
.trophy-summary-cell { background:#0f1112;border:1px solid var(--line);border-radius:11px;padding:11px 8px;text-align:center; }
.trophy-summary-cell strong { display:block;color:var(--red);font-size:17px; }
.trophy-summary-cell span { display:block;color:#818282;font-size:7px;text-transform:uppercase;margin-top:4px;line-height:1.3; }
.section-actions { display:flex;gap:10px;align-items:center; }
.goal-filters { display:flex;gap:5px;overflow-x:auto;scrollbar-width:none;margin:12px 0 9px;padding-bottom:2px; }
.goal-filters::-webkit-scrollbar { display:none; }
.goal-filter { flex:0 0 auto;min-height:28px;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:#0d0f10;color:#888;font-size:9px;font-weight:900;text-transform:uppercase;cursor:pointer; }
.goal-filter.active { color:white;border-color:var(--red);background:linear-gradient(145deg,#311015,#111314); }
.goal-picker { display:grid;gap:6px;max-height:40vh;overflow:auto;padding-right:2px; }
.goal-pick { display:grid;grid-template-columns:30px 1fr 66px;gap:9px;align-items:center;padding:8px 10px;border:1px solid #2a2c2d;border-radius:11px;background:#0a0c0d; }
.goal-pick.on { border-color:var(--red);background:#150d0f; }
.goal-pick-toggle { width:30px;height:30px;border:1px solid #3a3c3d;border-radius:50%;background:transparent;color:#777;font-size:14px;font-weight:900;cursor:pointer; }
.goal-pick.on .goal-pick-toggle { border-color:var(--red);color:var(--red); }
.goal-pick-body strong { display:block;font-size:11px; }
.goal-pick-body small { display:block;color:#777;font-size:8px;margin-top:3px;text-transform:uppercase; }
.goal-pick-target { width:100%;height:34px;border:1px solid var(--line);border-radius:8px;background:#090b0c;color:white;text-align:center;font-weight:800;font-size:12px; }
.goal-pick-target:disabled { opacity:.35; }
.goal-pick-unit { display:block;color:#777;font-size:7px;text-align:center;text-transform:uppercase;margin-top:3px; }
.goal-count { margin-top:10px;color:#999;font-size:10px;text-align:center; }
.record-ladder { display:grid;gap:6px;margin:12px 0 4px;max-height:38vh;overflow:auto; }
.record-step { display:grid;grid-template-columns:20px 1fr auto;gap:9px;align-items:center;padding:8px 10px;border:1px solid #2a2c2d;border-radius:10px;background:#0a0c0d;font-size:11px; }
.record-step.on { border-color:var(--tier);background:color-mix(in srgb,var(--tier) 10%,#0a0c0d); }
.record-step b { color:var(--tier);font-size:10px;text-transform:uppercase; }
.record-step i { font-style:normal;color:var(--tier);font-size:13px; }
.record-step span { color:#c9caca; }
.record-field { display:block;margin-top:12px;color:#888;font-size:9px;text-transform:uppercase; }
.record-field input { width:100%;height:44px;margin-top:6px;border:1px solid var(--line);border-radius:10px;background:#090b0c;color:white;text-align:center;font-weight:900;font-size:16px; }
.ghost-btn { width:100%;min-height:42px;margin-top:8px;border:1px solid var(--line);border-radius:12px;background:transparent;color:#999;font-weight:900;cursor:pointer; }
/* --- compte & synchronisation multi-appareils --- */
.account-page { z-index:110;padding:0!important;align-items:stretch!important;background:#030404!important;backdrop-filter:none!important;overflow:auto; }
.account-page.open { display:flex; }
.account-shell { position:relative;width:min(100%,460px);min-height:100dvh;margin:auto;overflow:hidden;background:#030404;color:white;isolation:isolate; }
.account-shell::before { content:"";position:absolute;z-index:-3;inset:0 0 auto;height:53%;background:url('assets/hero.webp') 73% 7% / cover no-repeat;filter:contrast(1.25) saturate(1.22) brightness(.64); }
.account-shell::after { content:"";position:absolute;z-index:-2;inset:0;background:linear-gradient(90deg,#030404 0 24%,rgba(3,4,4,.54) 55%,rgba(3,4,4,.08)),linear-gradient(0deg,#030404 43%,rgba(3,4,4,.84) 54%,rgba(3,4,4,.16) 78%),radial-gradient(circle at 86% 18%,rgba(239,51,64,.34),transparent 30%);pointer-events:none; }
.account-page-close { position:absolute;z-index:3;top:calc(14px + env(safe-area-inset-top,0px));right:16px;width:42px;height:42px;border:1px solid rgba(255,255,255,.17);border-radius:50%;background:rgba(3,4,4,.52);color:#bbb;font-size:25px;cursor:pointer; }
.account-visual { min-height:315px;padding:calc(29px + env(safe-area-inset-top,0px)) 28px 0; }
.account-logo { width:142px;height:auto;display:block; }
.account-motto { margin-top:102px; }
.account-motto strong { display:block;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:35px;line-height:.98;letter-spacing:.2px; }
.account-motto strong em { color:var(--red);font-style:normal; }
.account-motto span { display:block;margin-top:14px;color:#a5a6a6;font-size:12px;line-height:1.55; }
.account-card { position:relative;padding:20px 28px calc(32px + env(safe-area-inset-bottom,0px)); }
.account-card h2 { margin:0 0 6px;font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:31px;letter-spacing:.5px; }
.account-card>p { margin:0;color:#8f9192;font-size:12px;line-height:1.5; }
.account-form { display:grid;gap:13px;margin-top:17px; }
.account-form label { color:#a4a6a7;font-size:10px;font-weight:800;letter-spacing:.7px; }
.account-form input { width:100%;height:54px;margin-top:7px;border:1px solid rgba(255,255,255,.24);border-radius:12px;background:rgba(10,11,12,.72);color:white;padding:0 16px;font-size:15px; }
.account-form input::placeholder { color:#66686a; }
.account-form input:focus { outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(239,51,64,.13); }
.account-forgot { display:block;margin:9px 0 0 auto;border:0;background:transparent;color:var(--red);font-size:11px; }
.account-forgot small { display:block;margin-top:3px;color:#777;font-size:7px;letter-spacing:.5px; }
.account-primary { display:flex;align-items:center;justify-content:center;position:relative;width:100%;min-height:54px;border:0;border-radius:12px;background:linear-gradient(105deg,#f52231,#ff3845);color:#070707;font-weight:950;font-size:14px;cursor:pointer;box-shadow:0 12px 28px rgba(239,51,64,.2); }
.account-primary span,.account-primary::after { position:absolute;right:18px;font-size:24px;font-weight:400; }
#account-submit::after { content:"→"; }
.account-secondary { width:100%;min-height:46px;margin-top:10px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(8,9,10,.7);color:#aaa;font-weight:900;cursor:pointer; }
.account-separator { display:flex;align-items:center;gap:16px;margin:19px 0;color:#777;font-size:11px; }
.account-separator::before,.account-separator::after { content:"";height:1px;flex:1;background:rgba(255,255,255,.16); }
.account-socials { display:grid;gap:10px; }
.account-socials button { width:100%;min-height:57px;border:1px solid rgba(255,255,255,.22);border-radius:12px;background:rgba(9,10,11,.72);color:#ddd;display:grid;grid-template-columns:34px 1fr 90px;align-items:center;padding:7px 13px;text-align:left;font-size:13px; }
.account-socials button:disabled { opacity:.68;cursor:not-allowed; }
.account-socials button>span:nth-child(2) { display:contents; }
.account-socials small { color:var(--red);font-size:7px;font-weight:900;letter-spacing:.5px;text-align:right; }
.apple-mark { color:white;font-size:22px;text-align:center; }
.google-mark { color:#4285f4;font-size:23px;font-weight:950;text-align:center;text-shadow:1px 1px #34a853,-1px 1px #fbbc05,1px -1px #ea4335; }
.account-mode { display:block;width:100%;margin:24px 0 0;border:0;background:transparent;color:#969899;font-size:12px;cursor:pointer; }
.account-mode b { color:var(--red);text-decoration:underline;text-underline-offset:4px; }
.account-state { margin:16px 0;padding:15px;border:1px solid rgba(239,51,64,.35);border-radius:12px;background:rgba(239,51,64,.08); }
.account-state strong,.account-state span { display:block; }
.account-state strong { font-size:14px; }
.account-state span { margin-top:5px;color:#a1a3a4;font-size:10px; }
.account-error { min-height:18px;margin:8px 0 0!important;color:#ff7780!important;font-size:11px!important; }
#account-status.on { color:var(--red); }
#account-sync-now[hidden],#account-logout[hidden],#account-form[hidden],#account-mode[hidden],#account-name-field[hidden] { display:none; }
.account-page.connected .account-visual { min-height:260px; }
.account-page.connected .account-separator,.account-page.connected .account-socials { display:none; }
@media (min-width:760px) {
  .account-shell { width:min(100%,980px);min-height:min(820px,100dvh);display:grid;grid-template-columns:1.08fr .92fr;align-items:center; }
  .account-shell::before { inset:0 auto 0 0;width:58%;height:100%;background-position:63% center; }
  .account-shell::after { background:linear-gradient(90deg,rgba(3,4,4,.1) 0 42%,#030404 57%),linear-gradient(0deg,#030404 0,transparent 36%),radial-gradient(circle at 34% 22%,rgba(239,51,64,.28),transparent 30%); }
  .account-visual { min-height:100%;padding:48px;display:flex;flex-direction:column;justify-content:space-between; }
  .account-motto { margin:0 0 60px; }
  .account-card { padding:58px 54px;max-height:100dvh;overflow:auto; }
}
.bottom-nav { position: fixed; z-index: 30; left: 50%; bottom: 0; transform: translateX(-50%); width: min(100%, 460px); min-height: calc(56px + var(--safe-bottom)); padding: 5px 6px var(--safe-bottom); background: rgba(14,16,18,.26); border-top: 1px solid rgba(255,255,255,.12); backdrop-filter: blur(34px) saturate(190%); -webkit-backdrop-filter: blur(34px) saturate(190%); box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 -14px 34px rgba(0,0,0,.24); display: grid; grid-template-columns: repeat(4,1fr); }
.nav-btn { min-height: 46px; border: 0; background: transparent; color: #8e9091; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; font-size: 8px; letter-spacing: .3px; text-transform: uppercase; }
.nav-btn img { width:24px;height:24px;object-fit:contain;transition:filter .18s,opacity .18s,transform .18s; }
.nav-btn:not(.active) img { filter:grayscale(1) brightness(.72);opacity:.68; }
.nav-btn.active img { filter:saturate(1.35) brightness(1.18) drop-shadow(0 0 6px rgba(239,51,64,.38));transform:translateY(-1px); }
.nav-btn.active { color: var(--red); }
.toast { position: fixed; z-index: 60; left: 50%; bottom: calc(72px + var(--safe-bottom)); transform: translate(-50%, 20px); background: #1b1d1e; border: 1px solid var(--line); color: white; padding: 11px 15px; border-radius: 999px; font-size: 12px; opacity: 0; pointer-events: none; transition: .25s; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.modal { position: fixed; z-index: 50; inset: 0; padding: 24px; background: rgba(0,0,0,.79); backdrop-filter: blur(8px); display: none; align-items: flex-end; justify-content: center; }
.modal.open { display: flex; }
.modal.session-fullscreen.open { align-items:flex-start; padding:0; background:#030404; z-index:90; overflow:auto; }
body.session-active .app, body.session-active .bottom-nav { display:none; }
.modal-card { width: min(100%, 420px); border: 1px solid rgba(239,51,64,.35); border-radius: 22px; background: #111314; padding: 21px; box-shadow: 0 30px 80px #000; animation: rise .24s ease-out; }
.modal-card h2 { margin: 0 0 7px; font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif; font-size: 30px; letter-spacing: .5px; }
.modal-card p { color: var(--muted); font-size: 13px; }
.exercise { display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--line); padding: 12px 0; font-size: 13px; }
.close-btn { width: 100%; min-height: 46px; margin-top: 9px; border: 0; border-radius: 12px; background: var(--red); color: #fff; font-weight: 900; cursor: pointer; }
@keyframes rise { from { transform: translateY(35px); opacity: 0; } }
/* --- Enveloppes de mise en page : neutres tant qu'on est en mobile --- */
.nav-brand { display: none; }
.session-columns, .session-left, .session-right { display: contents; }

/* --- Tablette : la maquette mobile posée sur la page --- */
@media (min-width: 760px) and (max-width: 1099.98px) {
  body { padding: 24px 0; }
  .app { border: 1px solid var(--line); border-radius: 26px; box-shadow: 0 30px 100px #000; }
  .bottom-nav { bottom: 24px; border: 1px solid var(--line); border-radius: 0 0 26px 26px; }
}

/* --- Desktop : barre latérale + contenu sur plusieurs colonnes --- */
@media (min-width: 1100px) {
  :root { --sidebar: 244px; --gutter: 38px; }
  body { padding: 0; }

  /* barre latérale */
  .bottom-nav { left: 0; top: 0; bottom: auto; transform: none; width: var(--sidebar); height: 100vh; min-height: 0; padding: 30px 16px 22px; border-top: 0; border-right: 1px solid var(--line); border-radius: 0; background: linear-gradient(180deg, #101112, #0a0b0c); display: flex; flex-direction: column; gap: 6px; align-items: stretch; }
  .nav-brand { display: block; padding: 0 14px 26px; }
  .nav-brand .brand-logo { width: 184px; }
  .nav-brand .jp-red { display: block; }
  .nav-btn { flex-direction: row; justify-content: flex-start; align-items: center; gap: 14px; min-height: 52px; padding: 0 14px; border-radius: 12px; font-size: 12px; letter-spacing: .6px; text-align: left; transition: background .18s, color .18s; }
  .nav-btn img { width: 28px; height: 28px; }
  .nav-btn:hover { color: #ddd; background: rgba(255,255,255,.045); }
  .nav-btn.active { background: linear-gradient(110deg, rgba(239,51,64,.18), rgba(239,51,64,.03)); box-shadow: inset 0 0 0 1px rgba(239,51,64,.32); }

  /* zone de contenu */
  .app { width: auto; margin: 0 0 0 var(--sidebar); min-height: 100vh; padding-bottom: 40px; overflow: visible; }

  /* accueil */
  #home-screen { display: grid; grid-template-columns: minmax(0,1.12fr) minmax(0,1fr); gap: 26px var(--gutter); align-content: start; padding: 30px var(--gutter) 0; }
  #home-screen > .hero { grid-column: 1; grid-row: 1 / span 2; min-height: min(74vh, 640px); border: 1px solid var(--line); border-radius: 22px; }
  #home-screen > .hero .head { display: none; }
  #home-screen > .hero .welcome { top: 72px; }
  #home-screen > .section { grid-column: 2; padding: 0; align-self: start; }
  #home-screen > .section:last-child { align-self: start; }
  .stats { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .stat { min-height: 118px; align-items: center; }
  .stat strong { font-size: 24px; }
  .stat span { font-size: 9px; }

  /* programme */
  .program-hero, .progress-hero, .profile-hero { padding-left: var(--gutter); padding-right: var(--gutter); }
  .personal-block { padding: 0 var(--gutter) 34px; }
  .today-session-head { padding: 22px var(--gutter); }
  .today-session-body { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 18px; align-items: start; padding: 20px; }
  .daily-session-card { margin: 0; }

  /* progression */
  .progress-content { padding: 0 var(--gutter) 34px; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 20px; align-items: start; }
  .progress-panel { padding: 18px; }
  .weight-chart { height: 190px; }

  /* trophées */
  .trophy-content { padding: 14px var(--gutter) 34px; }
  .trophy-list { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; align-items: start; }
  .trophy-preview .trophy-list { grid-template-columns: repeat(2, minmax(0,1fr)); }

  /* profil : colonne centrée, plus aérée */
  .profile-content { max-width: 820px; margin: 0 auto; padding: 0 var(--gutter) 40px; gap: 16px; }
  .profile-overview { grid-template-columns: repeat(3, 1fr); }

  /* lecteur de séance */
  .session-fullscreen .session-shell { width: min(100%, 1180px); padding: 34px 46px 40px; }
  .session-bg { width: 52%; height: 58%; right: 0; opacity: .5; }
  .session-shell::before { background: linear-gradient(90deg,#030404 0 42%,rgba(3,4,4,.86) 66%,rgba(3,4,4,.55)), linear-gradient(0deg,#030404 40%,rgba(3,4,4,.7) 72%,rgba(3,4,4,.92)); }
  .session-columns { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.05fr); gap: 46px; align-items: start; }
  .session-left, .session-right { display: block; }
  .session-clock { font-size: clamp(72px, 7vw, 104px); }
  .current-exercise-panel { min-height: 280px; }
  .bottom-session-controls { max-width: 620px; margin: 8px auto 0; }

  .toast { left: calc(50% + var(--sidebar) / 2); bottom: 34px; }
  .modal:not(.session-fullscreen) { padding-left: var(--sidebar); align-items: center; }
}
@media (max-width: 380px) {
  .welcome h1 { font-size: 33px; }
  .stats { grid-template-columns: repeat(2,1fr); }
  .stat { min-height: 76px; }
  .hero-art { width: 88%; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none!important; transition: none!important; } }

/* --- saisie d'une série --- */
.set-entry { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 24px; }
.set-entry label { color:#8b8d8e;font-size:11px;text-transform:uppercase;letter-spacing:.6px; }
.set-entry input { width:100%;height:52px;margin-top:7px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(10,11,12,.72);color:white;text-align:center;font-size:22px;font-weight:900; }
.set-entry input:focus { outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(239,51,64,.16); }

/* --- écran de repos --- */
.rest-overlay { position:fixed;inset:0;z-index:95;display:grid;place-content:center;justify-items:center;gap:6px;padding:24px;background:rgba(3,4,4,.93);backdrop-filter:blur(10px); }
.rest-overlay[hidden] { display:none; }
.rest-label { color:var(--red);font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:3px; }
.rest-clock { font-family:Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;font-size:clamp(76px,22vw,124px);line-height:1; }
.rest-ring { width:min(78%,280px);height:6px;border-radius:99px;background:rgba(255,255,255,.12);overflow:hidden;margin:10px 0 4px; }
.rest-ring i { display:block;height:100%;width:100%;background:var(--red);box-shadow:0 0 16px rgba(239,51,64,.5);transition:width 1s linear; }
.rest-next { margin:6px 0 22px;color:#bcbdbd;font-size:13px;text-transform:uppercase;letter-spacing:.6px;text-align:center; }
.rest-next b { color:white; }
.rest-actions { display:flex;gap:12px; }
.rest-actions button { min-height:46px;padding:0 22px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:transparent;color:#ddd;font-weight:900;cursor:pointer; }
.rest-actions #rest-skip { border-color:var(--red);color:white;background:var(--red); }

/* --- historique --- */
.history-list { display:grid;gap:10px; }
.history-card { display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#141617,#0c0e0f); }
.history-date { display:grid;place-items:center;gap:1px;height:52px;border-radius:11px;background:#0a0c0d;border:1px solid rgba(239,51,64,.3); }
.history-date b { color:var(--red);font-size:17px;line-height:1; }
.history-date span { color:#8b8c8c;font-size:8px;text-transform:uppercase; }
.history-card strong { display:block;font-size:13px;text-transform:uppercase; }
.history-card small { display:block;color:#9a9b9b;font-size:10px;margin-top:4px; }
.history-empty { padding:26px 16px;text-align:center;color:#8b8c8c;font-size:12px;line-height:1.6; }

/* --- formulaire : sous-section --- */
.form-section { margin:18px 0 0;font-size:12px;text-transform:uppercase;letter-spacing:.6px; }
.form-section small { color:#777;font-size:9px;font-weight:400;margin-left:6px;text-transform:none;letter-spacing:0; }
.form-note { margin:10px 0 0;color:#8b8c8c;font-size:10px;line-height:1.5; }

/* --- chronomètre pour les exercices en maintien --- */
.hold-field[hidden] { display:none; }
.hold-label { display:block;color:#8b8d8e;font-size:11px;text-transform:uppercase;letter-spacing:.6px; }
.hold-field button { width:100%;height:52px;margin-top:7px;border:1px solid rgba(239,51,64,.45);border-radius:12px;background:rgba(239,51,64,.12);color:white;cursor:pointer;display:grid;place-items:center;gap:0;line-height:1; }
.hold-field button b { font-size:22px;font-weight:900; }
.hold-field button small { color:#c9caca;font-size:8px;text-transform:uppercase;letter-spacing:.8px;margin-top:2px; }
.hold-field button.running { border-color:var(--red);background:var(--red); }
.hold-field button.running small { color:#ffe3e5; }

/* --- courbe des mesures --- */
.measure-chart { width:100%;height:130px;display:block;margin-top:12px;overflow:visible; }
.measure-chart[hidden] { display:none; }
.measure-legend { display:flex;flex-wrap:wrap;gap:10px;margin-top:8px; }
.measure-legend span { display:flex;align-items:center;gap:5px;color:#9a9b9b;font-size:9px;text-transform:uppercase; }
.measure-legend i { width:10px;height:3px;border-radius:99px;background:var(--trait); }

/* --- échéance des objectifs --- */
.goal-deadline { display:block;margin-top:12px;color:#888;font-size:9px;text-transform:uppercase; }
.goal-deadline small { color:#666;text-transform:none;margin-left:5px; }
.goal-deadline input { width:100%;height:42px;margin-top:6px;border:1px solid var(--line);border-radius:10px;background:#090b0c;color:white;padding:0 12px;font-weight:700; }
.goal-countdown { display:block;color:var(--red);font-size:8px;text-transform:uppercase;letter-spacing:.5px;margin-top:3px; }
.goal-countdown.late { color:#8b8c8c; }

/* --- séance libre --- */
.free-session-btn { width:100%;min-height:46px;margin-top:12px;border:1px dashed rgba(239,51,64,.5);border-radius:14px;background:transparent;color:var(--red);font-weight:900;font-size:11px;letter-spacing:1px;cursor:pointer; }
.free-session-btn:hover { background:rgba(239,51,64,.08); }
.free-pick { display:grid;grid-template-columns:30px 1fr;gap:9px;align-items:center;padding:8px 10px;border:1px solid #2a2c2d;border-radius:11px;background:#0a0c0d;cursor:pointer;text-align:left;width:100%;color:inherit;font:inherit; }
.free-pick.on { border-color:var(--red);background:#150d0f; }
.free-pick b { width:30px;height:30px;border:1px solid #3a3c3d;border-radius:50%;display:grid;place-items:center;color:#777;font-size:14px; }
.free-pick.on b { border-color:var(--red);color:var(--red); }
.free-pick strong { display:block;font-size:11px; }
.free-pick small { display:block;color:#777;font-size:8px;margin-top:3px;text-transform:uppercase; }
