:root{
  --bg:#eef2f7; --bg2:#e6edf6; --card:#ffffff; --ink:#0f172a; --muted:#64748b;
  --line:#e5eaf1; --soft:#f7f9fc;
  --accent:#0ea5e9; --accent2:#6366f1; --ok:#10b981; --warn:#f59e0b; --rest:#94a3b8;
  --radius:18px; --shadow:0 10px 30px rgba(15,23,42,.08); --shadow-lg:0 18px 50px rgba(15,23,42,.16);
}
body.dark{
  --bg:#0b1220; --bg2:#0f172a; --card:#141d30; --ink:#e8eefb; --muted:#93a2bd;
  --line:#233147; --soft:#1a2437;
  --accent:#38bdf8; --accent2:#818cf8; --shadow:0 10px 30px rgba(0,0,0,.35); --shadow-lg:0 18px 50px rgba(0,0,0,.5);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink); background:linear-gradient(160deg,var(--bg) 0%,var(--bg2) 100%);
  min-height:100vh; min-height:100dvh; -webkit-font-smoothing:antialiased; transition:background .3s,color .3s;
}
.wrap{max-width:900px;margin:0 auto;padding:22px 16px 120px}

header.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.brand{display:flex;align-items:center;gap:12px}
.logo{width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,var(--accent),var(--accent2));
  display:grid;place-items:center;font-size:24px;box-shadow:var(--shadow)}
.brand h1{font-size:19px;margin:0;line-height:1.15}
.brand p{margin:2px 0 0;font-size:12.5px;color:var(--muted)}
.top-actions{display:flex;align-items:center;gap:8px}
.iconbtn{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--card);
  color:var(--ink);font-size:18px;cursor:pointer;display:grid;place-items:center;transition:.15s;box-shadow:var(--shadow)}
.iconbtn:hover{transform:translateY(-1px)}

nav.tabs{display:flex;gap:6px;background:var(--card);border:1px solid var(--line);padding:5px;border-radius:14px;
  margin-bottom:16px;box-shadow:var(--shadow)}
nav.tabs button{flex:1;border:none;background:none;color:var(--muted);font-weight:700;font-size:13.5px;
  padding:10px 6px;border-radius:10px;cursor:pointer;transition:.18s;font-family:inherit}
nav.tabs button.active{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:var(--shadow)}

.hero{border-radius:var(--radius);padding:24px;color:#fff;position:relative;overflow:hidden;
  box-shadow:var(--shadow-lg);margin-bottom:16px;animation:pop .35s ease}
@keyframes pop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.hero::after{content:"";position:absolute;right:-40px;top:-40px;width:170px;height:170px;border-radius:50%;
  background:rgba(255,255,255,.13)}
.hero.s{background:linear-gradient(135deg,#0ea5e9 0%,#6366f1 100%)}
.hero.rest{background:linear-gradient(135deg,#64748b 0%,#475569 100%)}
.hero.ems{background:linear-gradient(135deg,#10b981 0%,#0d9488 100%)}
.hero .tag{font-size:12px;text-transform:uppercase;letter-spacing:.12em;opacity:.92;font-weight:700;position:relative}
.hero h2{margin:7px 0 5px;font-size:26px;line-height:1.2;position:relative}
.hero .meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:13.5px;opacity:.96;position:relative}
.hero .progress{margin-top:16px;position:relative}
.bar{height:9px;border-radius:99px;background:rgba(255,255,255,.28);overflow:hidden}
.bar > i{display:block;height:100%;width:0;background:#fff;border-radius:99px;transition:width .4s ease}
.hero .pct{font-size:12.5px;margin-top:7px;opacity:.96}
.hero .cta{margin-top:16px;position:relative}
.hero .cta button{border:none;border-radius:12px;padding:12px 18px;font-size:14px;font-weight:800;cursor:pointer;
  background:#fff;color:#0f172a;box-shadow:0 6px 18px rgba(0,0,0,.18);font-family:inherit;transition:.15s}
.hero .cta button:hover{transform:translateY(-1px)}

.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 0 14px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;padding:8px 13px;border-radius:99px;border:1px solid var(--line);background:var(--card);
  font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap;transition:.15s;font-family:inherit}
.chip.active{background:var(--ink);color:var(--card);border-color:var(--ink)}
.chip .dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;vertical-align:middle}

.banner{border-radius:14px;padding:12px 16px;font-size:13.5px;margin-bottom:14px;display:flex;gap:10px;align-items:center;
  background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;line-height:1.4}
body.dark .banner{background:#2a1e0e;border-color:#7c4a12;color:#fcd9a8}
.banner.ok{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}
body.dark .banner.ok{background:#0d2a20;border-color:#12654a;color:#a7f3d0}

.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:800;margin:22px 4px 10px}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px 0;margin-bottom:14px;
  border:1px solid var(--line);animation:pop .3s ease}
.warm{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:14px;border:1px solid var(--line)}
.warm h3{margin:0 0 8px;font-size:15px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.warm ul{margin:0;padding-left:18px;color:var(--muted);font-size:13.5px;line-height:1.75}

.ex{display:flex;gap:14px;align-items:flex-start;padding:14px 18px;border-bottom:1px solid var(--line)}
.ex:last-child{border-bottom:none}
.ex .num{flex:0 0 34px;height:34px;border-radius:11px;background:var(--soft);color:var(--muted);
  display:grid;place-items:center;font-weight:800;font-size:15px;margin-top:2px}
.ex .body{flex:1;min-width:0}
.ex .name{font-weight:800;font-size:15.5px;margin-bottom:5px;display:flex;align-items:center;gap:8px}
.ex .specs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:6px}
.pill{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:99px;background:rgba(14,165,233,.13);color:#0369a1}
body.dark .pill{color:#7dd3fc}
.pill.charge{background:rgba(16,185,129,.15);color:#047857}
body.dark .pill.charge{color:#6ee7b7}
.pill.rest{background:rgba(245,158,11,.16);color:#b45309;cursor:pointer;border:none;font-family:inherit}
body.dark .pill.rest{color:#fcd34d}
.ex .tech{font-size:12.5px;color:var(--muted);line-height:1.5}
.check{flex:0 0 28px;margin-top:2px}
.check input{width:24px;height:24px;accent-color:var(--accent);cursor:pointer}
.ex.done .name{color:var(--ink)}
.ex.done{background:var(--soft)}
.ex .logbox{display:flex;gap:8px;align-items:center;margin-top:9px;flex-wrap:wrap}
.ex .logbox input{width:88px;border:1px solid var(--line);border-radius:9px;padding:6px 9px;font-size:12.5px;
  background:var(--soft);color:var(--ink);font-family:inherit}
.ex .logbox label{font-size:11.5px;color:var(--muted);font-weight:700}
.ex .suggest{margin-top:7px;font-size:12px;color:var(--ok);font-weight:700}

.restcard{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px 20px;text-align:center;color:var(--muted);border:1px solid var(--line)}
.restcard .big{font-size:36px;margin-bottom:6px}
.restcard p{margin:6px 0;font-size:14px}
.restcard .hint{font-size:13px;color:var(--muted)}

.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow)}
.stat .v{font-size:26px;font-weight:800;line-height:1}
.stat .k{font-size:12px;color:var(--muted);margin-top:6px;font-weight:600}
.stat .sub{font-size:11px;color:var(--muted);margin-top:3px}

.cal{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
.cal .head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.cal .head b{font-size:15px;text-transform:capitalize}
.cal .head .navbtn{border:1px solid var(--line);background:var(--soft);border-radius:9px;width:32px;height:32px;cursor:pointer;color:var(--ink);font-family:inherit}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.calgrid .dn{text-align:center;font-size:11px;color:var(--muted);font-weight:800;padding-bottom:4px}
.calgrid .cell{min-height:34px;aspect-ratio:1;border-radius:11px;border:1px solid var(--line);display:flex;flex-direction:column;
  align-items:center;justify-content:center;font-size:12.5px;position:relative;background:var(--soft);color:var(--muted)}
.calgrid .cell.out{opacity:.28}
.calgrid .cell.today{outline:2px solid var(--accent);outline-offset:-2px}
.calgrid .cell .mini{font-size:9px;font-weight:800;margin-top:2px}
.cell.done{background:rgba(16,185,129,.18);border-color:#10b981;color:#047857}
body.dark .cell.done{color:#6ee7b7}
.cell.missed{background:rgba(239,68,68,.12);border-color:#f87171;color:#b91c1c}
body.dark .cell.missed{color:#fca5a5}
.cell.ems{background:rgba(16,185,129,.08);border-color:#10b981}
.cell.plan{background:rgba(14,165,233,.10);border-color:#38bdf8;color:#0369a1}
body.dark .cell.plan{color:#7dd3fc}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;font-size:11.5px;color:var(--muted)}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:12px;height:12px;border-radius:4px;display:inline-block}

.settings{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:14px}
.settings h3{margin:0 0 14px;font-size:15px}
.settings .row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 0;border-bottom:1px solid var(--line)}
.settings .row:last-child{border-bottom:none}
.settings .row .lab{font-size:13.5px;font-weight:600}
.settings .row .desc{font-size:11.5px;color:var(--muted);margin-top:3px}
.btn{border:none;border-radius:11px;padding:10px 15px;font-size:13px;font-weight:800;cursor:pointer;
  background:var(--ink);color:var(--card);transition:.15s;font-family:inherit}
.btn.ghost{background:var(--soft);color:var(--ink);border:1px solid var(--line)}
.btn.danger{background:#ef4444;color:#fff}
.btn:hover{transform:translateY(-1px)}
input[type=date]{border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:13px;font-family:inherit;background:var(--soft);color:var(--ink)}
.switch{position:relative;width:48px;height:27px;border-radius:99px;background:var(--line);cursor:pointer;transition:.2s;flex:0 0 48px}
.switch.on{background:var(--accent)}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;transition:.2s}
.switch.on::after{left:24px}
footer{text-align:center;color:var(--muted);font-size:11.5px;margin-top:26px;line-height:1.6}
.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--card);
  padding:11px 18px;border-radius:12px;font-size:13px;font-weight:700;opacity:0;transition:.3s;pointer-events:none;z-index:60;box-shadow:var(--shadow-lg)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* Barre de repos flottante */
#restbar{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);
  box-shadow:0 -8px 30px rgba(0,0,0,.15);padding:12px 16px;display:none;z-index:50;animation:up .25s ease}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
#restbar .inner{max-width:900px;margin:0 auto;display:flex;align-items:center;gap:14px}
#restbar .time{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;min-width:92px}
#restbar .lbl{font-size:12px;color:var(--muted);font-weight:700}
#restbar .grow{flex:1}
#restbar button{border:none;border-radius:10px;padding:9px 13px;font-weight:800;font-size:13px;cursor:pointer;font-family:inherit}
#restbar .add{background:var(--soft);color:var(--ink);border:1px solid var(--line)}
#restbar .stop{background:#ef4444;color:#fff}
#restfill{height:5px;background:var(--line);border-radius:99px;margin-top:9px;overflow:hidden}
#restfill > i{display:block;height:100%;background:var(--accent);width:100%}

/* Mode séance plein écran */
#session{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;background:linear-gradient(160deg,var(--bg) 0%,var(--bg2) 100%);z-index:80;
  display:none;flex-direction:column;padding:20px;overflow-y:auto}
#session .stop{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
#session .stop .t{font-size:12.5px;color:var(--muted);font-weight:700}
#session .prog{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin:10px 0 18px}
#session .prog > i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));width:0;transition:.3s}
#session .stage{flex:1;display:flex;flex-direction:column;justify-content:center}
#session .exnum{font-size:13px;font-weight:800;color:var(--accent);letter-spacing:.1em;text-transform:uppercase}
#session .exname{font-size:clamp(26px,6vw,42px);font-weight:800;line-height:1.15;margin:10px 0 16px}
#session .exspecs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
#session .exspecs .pill{font-size:15px;padding:7px 14px;border-radius:99px}
#session .exspecs .pill.red{background:rgba(245,158,11,.18);color:#b45309}
#session .exspecs .pill.grn{background:rgba(16,185,129,.18);color:#047857}
#session .extech{font-size:15px;color:var(--muted);line-height:1.55;max-width:640px}
#session .navbtn{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
#session .navbtn button{flex:1;min-width:130px;border:none;border-radius:14px;padding:18px;font-size:16px;font-weight:800;cursor:pointer;font-family:inherit}
#session .navbtn .prev{background:var(--soft);color:var(--ink);border:1px solid var(--line)}
#session .navbtn .done{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}
#session .navbtn .done.isdone{background:#10b981}
#session .restline{display:flex;align-items:center;gap:10px;margin-top:16px;font-size:12.5px;color:var(--muted);flex-wrap:wrap}
#session .restline button{border:1px solid var(--line);background:var(--soft);border-radius:10px;padding:8px 12px;font-weight:800;cursor:pointer;color:var(--ink);font-family:inherit}

.simrow{margin:14px 0}
.simlab{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13.5px;font-weight:600}
.simlab b{color:var(--accent);font-weight:800;font-variant-numeric:tabular-nums}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:8px;border-radius:99px;background:var(--line);outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent),var(--accent2));cursor:pointer;box-shadow:0 3px 10px rgba(14,165,233,.5);border:2px solid var(--card)}
input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--card)}
.big-stat{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-radius:16px;padding:18px;box-shadow:var(--shadow-lg)}
.big-stat .v{font-size:30px;font-weight:800;line-height:1}
.big-stat .k{font-size:12.5px;opacity:.95;margin-top:7px;font-weight:600}
.big-stat .sub{font-size:11.5px;opacity:.85;margin-top:3px}

.stat.tone-ok{border-color:#10b981;background:rgba(16,185,129,.09)}
.stat.tone-warn{border-color:#f59e0b;background:rgba(245,158,11,.11)}
.stat.tone-bad{border-color:#ef4444;background:rgba(239,68,68,.10)}
.stat.tone-ok .v{color:#047857} .stat.tone-warn .v{color:#b45309} .stat.tone-bad .v{color:#b91c1c}
body.dark .stat.tone-ok .v{color:#6ee7b7} body.dark .stat.tone-warn .v{color:#fcd34d} body.dark .stat.tone-bad .v{color:#fca5a5}
.big-stat.tone-warn{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%)}
.big-stat.tone-bad{background:linear-gradient(135deg,#ef4444 0%,#b91c1c 100%)}
.big-stat.tone-neutral{background:linear-gradient(135deg,#64748b 0%,#475569 100%)}

.simseg{display:flex;gap:6px;background:var(--soft);border:1px solid var(--line);padding:5px;border-radius:12px;margin-bottom:6px}
.simseg button{flex:1;border:none;background:none;color:var(--muted);font-weight:700;font-size:13.5px;padding:9px;border-radius:9px;cursor:pointer;font-family:inherit;transition:.15s}
.simseg button.active{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}
.simsel{width:100%;margin-top:2px;border:1px solid var(--line);border-radius:10px;padding:10px 11px;font-size:13px;font-family:inherit;background:var(--soft);color:var(--ink)}
.simcheck{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);margin-top:12px;cursor:pointer;font-weight:600}
.simcheck input{width:18px;height:18px;accent-color:var(--accent)}
.banner-verdict{border-radius:16px;padding:16px 18px;margin:16px 0;border:1px solid var(--line);box-shadow:var(--shadow)}
.banner-verdict.ok{background:rgba(16,185,129,.13);border-color:#10b981}
.banner-verdict.warn{background:rgba(245,158,11,.15);border-color:#f59e0b}
.banner-verdict.bad{background:rgba(239,68,68,.14);border-color:#ef4444}
.banner-verdict .vhead{display:flex;gap:12px;align-items:flex-start}
.banner-verdict .vico{font-size:26px;line-height:1}
.banner-verdict .vtitle{font-size:16px;font-weight:800}
.banner-verdict .vsub{font-size:12.5px;color:var(--muted);margin-top:2px}
.banner-verdict ul{margin:10px 0 0;padding-left:20px;font-size:13px;line-height:1.6;color:var(--ink)}
.milestones h4{margin:14px 0 8px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.milestones .miles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.milestones .miles div{background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:11px 13px}
.milestones .miles b{display:block;font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.milestones .miles span{font-size:16px;font-weight:800}

.stepper{display:flex;align-items:center;gap:6px;margin-bottom:16px;padding:0 2px}
.stepper .step{display:flex;align-items:center;gap:8px;background:none;border:none;cursor:pointer;font-family:inherit;
  color:var(--muted);font-weight:700;font-size:13px;padding:8px 2px;border-radius:10px;transition:.15s;white-space:nowrap}
.stepper .step .dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12.5px;
  background:var(--soft);border:1px solid var(--line);color:var(--muted);font-weight:800;flex:0 0 26px}
.stepper .step.done .dot{background:var(--ok);border-color:var(--ok);color:#fff}
.stepper .step.active{color:var(--ink)}
.stepper .step.active .dot{background:linear-gradient(135deg,var(--accent),var(--accent2));border-color:transparent;color:#fff;box-shadow:0 4px 12px rgba(14,165,233,.45)}
.stepper .line{flex:1;height:2px;background:var(--line);border-radius:2px;min-width:6px}
.stepper .step .lbl{display:none}
@media(min-width:620px){ .stepper .step .lbl{display:inline} }
.stepintro{margin:2px 4px 16px}
.stepintro h2{font-size:20px;margin:0 0 5px}
.stepintro p{margin:0;font-size:13.5px;color:var(--muted);line-height:1.5}
.stepcta{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:22px 0 4px;flex-wrap:wrap}
.stepcta button{border:none;border-radius:14px;padding:14px 20px;font-size:14.5px;font-weight:800;cursor:pointer;
  font-family:inherit;transition:.15s;display:flex;align-items:center;gap:8px}
.stepcta .back{background:var(--soft);color:var(--ink);border:1px solid var(--line)}
.stepcta .next{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:var(--shadow)}
.stepcta .next:hover,.stepcta .back:hover{transform:translateY(-1px)}
.stepcta .grow{flex:1}
.iconbtn.lit{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-color:transparent}

@media print{
  nav.tabs,.stepper,.stepcta,.stepintro,.top-actions,#restbar,.chips,footer,#startRow,.ex .logbox,.ex .check,.hero .cta{display:none!important}
  body{background:#fff}
}

/* ===== V3 : configuration du programme (étape 1) ===== */
.cfgblock{padding:12px 0;border-bottom:1px solid var(--line)}
.cfgblock:first-of-type{padding-top:0}
.cfgblock:last-child{border-bottom:none;padding-bottom:0}
.cfglab{font-size:13.5px;font-weight:700;margin-bottom:8px}
.cfghint{font-weight:600;color:var(--muted);font-size:12px}
.cfgdesc{font-size:12px;color:var(--muted);margin-top:7px;line-height:1.45}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{border:1px solid var(--line);background:var(--soft);color:var(--muted);border-radius:99px;padding:8px 14px;
  font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;transition:.15s}
.opt.on{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-color:transparent}
.opt.fixed{cursor:default;opacity:.85}
.opt.day{min-width:52px;text-align:center}
.weekprev{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.weekprev .wp{border:1px solid var(--line);background:var(--soft);border-radius:11px;padding:8px 2px;text-align:center;
  display:flex;flex-direction:column;gap:3px;color:var(--muted)}
.weekprev .wp b{font-size:11px}
.weekprev .wp span{font-size:15px;font-weight:800}
.weekprev .wp.s{background:rgba(14,165,233,.12);border-color:#38bdf8;color:#0369a1}
body.dark .weekprev .wp.s{color:#7dd3fc}
.weekprev .wp.r{background:rgba(16,185,129,.10);border-color:#10b981;color:#047857}
body.dark .weekprev .wp.r{color:#6ee7b7}
.note{font-size:12px;color:var(--muted);line-height:1.55;margin:4px 4px 0}

/* ===== V4 : schémas, consignes, variantes ===== */
.fig{display:block;width:100%;height:100%}
.fg-limb{fill:none;stroke:var(--accent);stroke-width:4.2;stroke-linecap:round;stroke-linejoin:round}
.fg-back{stroke:var(--accent2);opacity:.45}
.fg-head{fill:var(--accent)}
.fg-floor{stroke:var(--line);stroke-width:1.6}
.fg-prop{fill:var(--ink);opacity:.75}
.ex .exfig{flex:0 0 64px;width:64px;height:64px;border-radius:14px;background:var(--soft);border:1px solid var(--line);
  padding:4px;cursor:zoom-in;display:grid;place-items:center;font-size:22px;margin-top:2px}
.ex .exfig:hover{border-color:var(--accent)}
details.cues{margin-top:8px;font-size:12.5px}
details.cues summary{cursor:pointer;font-weight:700;color:var(--accent);list-style:none}
details.cues summary::-webkit-details-marker{display:none}
details.cues summary::before{content:"▸ "}
details.cues[open] summary::before{content:"▾ "}
details.cues ul{margin:6px 0 4px;padding-left:18px;color:var(--ink);line-height:1.6}
.err{margin:4px 0 0;font-size:12px;color:#b45309}
body.dark .err{color:#fcd34d}
.swap{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.swapbtn{border:1px solid var(--line);background:var(--card);color:var(--muted);border-radius:99px;padding:5px 11px;
  font-size:11.5px;font-weight:700;cursor:pointer;font-family:inherit}
.swapbtn:hover{color:var(--ink);border-color:var(--accent)}
.swapbtn.reset{color:var(--accent)}
.lasttip{margin-top:7px;font-size:12px;color:var(--muted);font-weight:600;line-height:1.45}
.lasttip:empty{display:none}
.lasttip.up{color:var(--ok)}
.lasttip.down{color:#b45309}
body.dark .lasttip.down{color:#fcd34d}

/* mode séance */
#session .sessfig{width:min(200px,46vw);aspect-ratio:1;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:10px;margin:0 0 4px;box-shadow:var(--shadow)}
#session .sesscues ul{margin:12px 0 0;padding-left:20px;font-size:14px;line-height:1.6;max-width:640px}
#session .sesscues .err{font-size:13px}
#session .lasttip{font-size:13.5px}

/* fiche exercice */
#fiche{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:90;display:none;align-items:center;justify-content:center;padding:16px}
#fiche.show{display:flex;animation:pop .2s ease}
.fiche-card{background:var(--card);color:var(--ink);border-radius:20px;max-width:440px;width:100%;max-height:90vh;overflow:auto;padding:20px;position:relative;box-shadow:var(--shadow-lg)}
.fiche-x{position:absolute;top:12px;right:12px;padding:7px 11px}
.fiche-fig{width:180px;height:180px;margin:0 auto 8px;background:var(--soft);border-radius:18px;padding:10px}
.fiche-card h3{margin:6px 0 8px;font-size:18px;padding-right:30px}
.fiche-card .specs{display:flex;gap:7px;flex-wrap:wrap}
.fiche-card .tech{font-size:13.5px;color:var(--muted);line-height:1.5}
.fiche-card ul{padding-left:18px;font-size:13.5px;line-height:1.65}
.fiche-var{font-size:12.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:10px;line-height:1.6}

/* badges & records */
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-bottom:6px}
.badge{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:3px;opacity:.55;box-shadow:var(--shadow)}
.badge.on{opacity:1;border-color:var(--ok)}
.badge .bi{font-size:22px}
.badge b{font-size:12.5px}
.badge small{font-size:11px;color:var(--muted);line-height:1.35}
.recs{padding:4px 0}
.rec{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line)}
.rec:last-child{border-bottom:none}
.rec .rn{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rec .rn b{font-size:13.5px}
.rec .rn small{font-size:11px;color:var(--muted)}
.rec .rb{font-size:12.5px;font-weight:800;white-space:nowrap;min-width:84px;text-align:right}
.spark{width:120px;height:32px;flex:0 0 120px}
.spark polyline{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.spark circle{fill:var(--accent)}
.spark-empty{font-size:11px;color:var(--muted);flex:0 0 120px;text-align:center}
@media(max-width:480px){ .spark,.spark-empty{flex-basis:80px;width:80px} .rec{gap:8px;padding:10px 12px} }
@media print{ .swap,details.cues,.exfig{display:none!important} }
.fg-ring{stroke:var(--ink);opacity:.6}
.subopt{margin-top:10px;padding:10px 12px;background:var(--soft);border:1px solid var(--line);border-radius:12px}
.sublab{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:7px}
.opt.sm{padding:6px 11px;font-size:12px;background:var(--card)}
.opt.sm.on{background:linear-gradient(135deg,var(--accent),var(--accent2))}

/* ===== V5 : séance guidée ===== */
#session .stage{justify-content:flex-start;padding-bottom:8px}
#session .sessrow{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-top:10px}
#session .sessfig{flex:0 0 auto;width:min(170px,40vw);margin:0}
#session .sessmain{flex:1;min-width:220px}
#session .exname{margin:4px 0 12px}
#session .exspecs .pill{font-size:14px}
.sesslog{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.sesslog label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;font-weight:700;color:var(--muted)}
.sesslog input{width:110px;border:1px solid var(--line);border-radius:10px;padding:10px;font-size:15px;background:var(--card);color:var(--ink);font-family:inherit}
.steplist{list-style:none;padding:0;margin:10px 0;max-width:640px}
.steplist li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:8px;font-size:14.5px}
.steplist label{display:flex;gap:10px;align-items:center;cursor:pointer}
.steplist input{width:20px;height:20px;accent-color:var(--accent)}
.steplist li:has(input:checked){opacity:.55;text-decoration:line-through}
.worktimer{margin:14px 0 4px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.btn.big{font-size:16px;padding:14px 20px;border-radius:14px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}
.ring{position:relative;width:190px;height:190px}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.rg-bg{fill:none;stroke:var(--line);stroke-width:9}
.rg-fg{fill:none;stroke:var(--accent);stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset .95s linear}
.ring.work .rg-fg{stroke:var(--ok)}
.rg-txt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.rg-txt b{font-size:46px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}
.rg-txt small{font-size:13px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.12em;margin-top:6px}
.ringbtns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
#session .navbtn{position:sticky;bottom:0;padding-top:10px;background:linear-gradient(transparent,var(--bg2) 30%)}
#session .navbtn #bPrev{flex:0 0 64px;min-width:64px}
#session .navbtn .done{flex:2}
#sessRestOv{position:absolute;inset:0;background:var(--bg);z-index:5;display:none;align-items:center;justify-content:center;padding:20px}
body.dark #sessRestOv{background:var(--bg2)}
#sessRestOv.show{display:flex;animation:pop .2s ease}
.restinner{display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center}
#sessRestOv .ring{width:min(280px,70vw);height:min(280px,70vw)}
#sessRestOv .rg-txt b{font-size:clamp(56px,16vw,84px)}
.restnext{font-size:15px;font-weight:700;max-width:340px}
.resthint{font-size:12.5px;color:var(--muted)}
.endbox{text-align:center;max-width:520px;margin:20px auto 0}
.endico{font-size:64px}
.endstats{display:flex;gap:12px;justify-content:center;margin:10px 0 16px}
.endstats div{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 16px;min-width:90px;box-shadow:var(--shadow)}
.endstats b{display:block;font-size:22px}
.endstats small{font-size:11.5px;color:var(--muted)}
#session .stage{padding-bottom:110px}

.donetag{font-size:11px;font-weight:800;color:#fff;background:var(--ok);border-radius:99px;padding:2px 8px;white-space:nowrap}
.ex.done{background:rgba(16,185,129,.07)}
.exhead{display:flex;justify-content:space-between;align-items:center;gap:10px}
.exclock{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px 12px;box-shadow:var(--shadow)}
