:root{color-scheme:dark;--bg:#101827;--surface:#182338;--surface2:#202e44;--stroke:#344259;--txt:#f1f6fc;--muted:#afc1d2;--accent:#93ecc0;--blue:#91caff;--orange:#ffd18f;--red:#ffb0b0;--shadow:0 16px 50px #030a1560;--rad:18px;--font:16px}*{box-sizing:border-box}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:var(--font);scroll-behavior:smooth}body{background:var(--bg);color:var(--txt);margin:0;min-height:100vh}body.large-text{--font:19px}button,input,select,textarea{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{opacity:.48;cursor:not-allowed}a{color:var(--blue)}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}button,input,select,textarea{min-height:46px}h1,h2,h3,p{margin:0}h1{font-size:clamp(1.5rem,5vw,2rem);line-height:1.17;letter-spacing:-.035em}h2{font-size:1.25rem;letter-spacing:-.02em}h3{font-size:1.06rem}p{line-height:1.55}small,.muted{color:var(--muted)}strong{font-weight:720}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:11px max(18px,calc((100vw - 840px)/2 + 20px));background:#101827ee;border-bottom:1px solid #3442596e;backdrop-filter:blur(16px);min-height:66px}.brand{display:flex;align-items:center;gap:9px;border:0;background:none;color:var(--txt);font-weight:850;font-size:1.24rem;padding:0}.brand-mark{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;color:#081d19;background:var(--accent);font-weight:900}.brand-accent{color:var(--accent)}.header-right{display:flex;align-items:center;gap:9px}.icon-btn{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--stroke);border-radius:14px;color:var(--txt);background:var(--surface)}.icon-btn svg{width:23px;height:23px}.offline-indicator{font-size:.73rem;padding:7px 9px;background:#573f20;border-radius:8px;color:#ffe0a3}main{max-width:840px;margin:0 auto;padding:25px 18px calc(115px + env(safe-area-inset-bottom));min-height:calc(100vh - 100px)}.bottom-nav{position:fixed;z-index:35;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:2px;background:#142036f5;backdrop-filter:blur(16px);border-top:1px solid var(--stroke);padding:7px max(10px,calc((100vw - 760px)/2)) calc(8px + env(safe-area-inset-bottom))}.bottom-nav button{border:0;flex:1;max-width:170px;background:none;color:#b8c7d7;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 3px;font-size:.73rem;border-radius:12px;min-height:57px}.bottom-nav button[aria-current=page]{color:var(--accent);background:#93ecc016}.bottom-nav svg{height:23px;width:23px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.page-head{margin-bottom:20px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.eyebrow{text-transform:uppercase;letter-spacing:.11em;font-size:.71rem;font-weight:800;color:var(--accent);margin-bottom:6px}.subtitle{margin-top:8px;color:var(--muted)}.stack{display:flex;flex-direction:column;gap:15px}.space-top{margin-top:17px}.card{border:1px solid var(--stroke);background:var(--surface);border-radius:var(--rad);padding:20px;box-shadow:0 5px 24px #050b1424}.card-soft{background:var(--surface2)}.hero{background:linear-gradient(145deg,#233850,#182338 70%);border-color:#3b5163;padding:23px}.hero h2{font-size:1.62rem;margin:7px 0}.flex{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.align-top{align-items:flex-start}.grow{flex:1;min-width:0}.wrap{flex-wrap:wrap}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.btn{border:none;border-radius:13px;padding:12px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:750;text-align:center;line-height:1.25;background:var(--accent);color:#08251b}.btn:active{transform:translateY(1px)}.btn-secondary{background:var(--surface2);color:var(--txt);border:1px solid var(--stroke)}.btn-outline{background:transparent;color:var(--txt);border:1px solid var(--stroke)}.btn-danger{background:#5b2b35;color:#fff;border:1px solid #9d5666}.btn-small{font-size:.86rem;min-height:40px;padding:8px 12px}.btn-block{width:100%}.btn-quiet{border:0;background:none;color:var(--blue);padding:9px;min-height:44px}.tiny{font-size:.81rem}.pill{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:.73rem;font-weight:760;background:#244a3e;color:var(--accent)}.pill.info{background:#243e55;color:var(--blue)}.pill.pending{background:#51402c;color:var(--orange)}.pill.neutral{background:var(--surface2);color:var(--muted)}.pill.error{background:#56343d;color:var(--red)}.stat{padding:15px;border:1px solid var(--stroke);border-radius:14px;background:var(--surface2)}.stat-num{font-size:1.45rem;font-weight:850;margin-top:6px;letter-spacing:-.03em}.stat-label{font-size:.78rem;color:var(--muted)}.section-heading{margin:22px 0 12px}.section-heading:first-child{margin-top:0}.list-card{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid var(--stroke);border-radius:14px;background:var(--surface)}.list-card+.list-card{margin-top:8px}.list-card .list-text{flex:1;min-width:0}.list-card p{font-size:.86rem;color:var(--muted);margin-top:4px}.list-number{border-radius:10px;background:#2c4059;display:grid;place-items:center;min-width:40px;height:40px;font-weight:800;color:var(--blue)}.form-field{display:flex;flex-direction:column;gap:7px}.form-field>label{font-size:.87rem;font-weight:730}.form-control{width:100%;color:var(--txt);background:#101c2c;border:1px solid #526179;border-radius:12px;padding:11px 12px;outline:none}.form-control:focus{border-color:var(--blue);box-shadow:0 0 0 2px #91caff26}textarea.form-control{resize:vertical;min-height:105px}select.form-control{appearance:auto}.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.hint{font-size:.8rem;color:var(--muted);line-height:1.5}.segmented{display:flex;gap:4px;border:1px solid var(--stroke);background:#101b2d;border-radius:14px;padding:5px}.segmented button{flex:1;background:none;border:0;color:var(--muted);border-radius:10px;padding:9px 5px;font-weight:720;min-height:42px}.segmented button.active{background:#305276;color:#fff}.week-grid{display:flex;flex-direction:column;gap:9px}.day-row{display:flex;align-items:center;gap:10px;border:1px solid var(--stroke);border-radius:13px;background:var(--surface);padding:12px}.day-date{width:56px;text-align:center;flex-shrink:0;color:var(--muted);font-size:.77rem}.day-date strong{display:block;font-size:1.15rem;color:var(--txt)}.day-row.today{border-color:var(--accent)}.day-detail{flex:1;min-width:0}.day-detail p{font-size:.8rem;color:var(--muted);margin-top:4px}.row-actions{display:flex;gap:7px;flex-wrap:wrap}.exercise-sub{font-size:.79rem;color:var(--muted);margin-top:5px;line-height:1.5}.ex-count{height:38px;min-width:38px;display:grid;place-items:center;border-radius:11px;background:#2e445c;color:var(--blue);font-weight:800}.exercise-row{padding:14px 0;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--stroke)}.exercise-row:last-child{border-bottom:0}.metric-control{display:flex;flex-direction:column;align-items:center;gap:10px;border:1px solid var(--stroke);background:var(--surface2);padding:17px 12px;border-radius:16px}.metric-value{font-size:clamp(1.75rem,7vw,2.55rem);font-weight:850;letter-spacing:-.04em;white-space:nowrap}.metric-actions{display:flex;gap:9px;align-items:center}.metric-actions button{width:45px;height:45px;border-radius:13px;background:#32435b;color:var(--txt);border:1px solid #52637a;font-weight:850;font-size:1.4rem}.metric-edit{font-size:.86rem;color:var(--blue);background:transparent;border:0;min-height:35px;text-decoration:underline}.rest-display{font-weight:900;letter-spacing:-.055em;font-size:clamp(2.5rem,10vw,4.5rem);text-align:center;font-variant-numeric:tabular-nums}.timer-bar{height:8px;border-radius:99px;background:#39495e;overflow:hidden}.timer-fill{height:100%;background:var(--accent);width:100%;transition:width .2s}.timer-small{font-size:1.45rem;font-weight:850;font-variant-numeric:tabular-nums}.floating-timer{position:fixed;right:17px;bottom:calc(88px + env(safe-area-inset-bottom));z-index:31}.floating-timer button{min-height:48px;border-radius:999px;padding:10px 18px;border:1px solid #4e766e;background:#225043;color:#dfffea;font-weight:800;box-shadow:var(--shadow)}#toast{position:fixed;z-index:60;top:77px;left:50%;transform:translateX(-50%);padding:11px 15px;border-radius:12px;background:#d0fbe5;color:#10352a;font-size:.89rem;font-weight:750;opacity:0;pointer-events:none;transition:opacity .15s;max-width:92vw;box-shadow:var(--shadow)}#toast.visible{opacity:1}.divider{height:1px;background:var(--stroke);margin:16px 0}details{border:1px solid var(--stroke);border-radius:13px;background:var(--surface);padding:14px}details+details{margin-top:10px}summary{font-weight:730;cursor:pointer;min-height:28px}details[open] summary{margin-bottom:12px}.option{display:flex;align-items:center;gap:10px;min-height:46px}.option input{width:19px;height:19px;accent-color:#85deb0;min-height:auto}.wizard-steps{display:flex;gap:6px;margin-bottom:17px}.wizard-steps span{height:6px;border-radius:30px;flex:1;background:#324056}.wizard-steps .done{background:var(--accent)}.weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.weekdays label{min-width:0}.weekdays input{position:absolute;opacity:0;pointer-events:none}.weekdays span{display:grid;place-items:center;min-height:43px;border:1px solid var(--stroke);background:var(--surface2);border-radius:10px;font-size:.8rem}.weekdays input:checked+span{background:#295b4c;border-color:var(--accent);color:#e4fff0}.weekdays input:focus-visible+span{outline:3px solid var(--blue)}.empty{text-align:center;padding:26px 18px;border:1px dashed var(--stroke);border-radius:16px;background:#1a2637}.empty .symbol{font-size:2rem;margin-bottom:10px}.empty p{color:var(--muted);margin:9px 0 15px}.chart{background:var(--surface2);border:1px solid var(--stroke);border-radius:14px;padding:10px 8px}.chart svg{width:100%;height:180px;display:block}.chat-log{display:flex;flex-direction:column;gap:10px;max-height:360px;overflow:auto;padding:12px;border:1px solid var(--stroke);border-radius:15px;background:#111d30}.chat-msg{padding:11px 13px;border-radius:14px;max-width:93%;white-space:pre-wrap;line-height:1.5;font-size:.9rem}.chat-msg.user{align-self:flex-end;background:#2d5d52;color:#f6fff9}.chat-msg.bot{align-self:flex-start;background:#23354d}.radio-choices{display:flex;gap:8px;flex-wrap:wrap}.radio-choices label{padding:9px 12px;border-radius:11px;border:1px solid var(--stroke);background:var(--surface2);cursor:pointer}.radio-choices input{accent-color:var(--accent)}.save-status{color:var(--muted);font-size:.75rem}.light-mode{color-scheme:light;--bg:#f4f7fb;--surface:#fff;--surface2:#ebf1f7;--stroke:#c9d4e1;--txt:#17273b;--muted:#43586c;--accent:#12734f;--blue:#135c9b;--orange:#8b5d13;--red:#b52e39;--shadow:0 10px 30px #14243f24}.light-mode .topbar,.light-mode .bottom-nav{background:#f3f8fbea}.light-mode .hero{background:linear-gradient(140deg,#d8ece6,#edf6f4)}.light-mode .btn{color:white}.light-mode .form-control{background:#fff;color:var(--txt)}.light-mode .weekdays input:checked+span{color:#fff}.light-mode .metric-actions button{background:#e4eef9;color:#17273b}.light-mode .chat-msg.bot{background:#e5edf7}.light-mode .chat-msg.user{background:#d2eadf;color:#153729}.light-mode .stat{background:var(--surface2)}@media(max-width:440px){main{padding:20px 14px calc(108px + env(safe-area-inset-bottom))}.card{padding:16px}.grid3{gap:7px}.stat{padding:10px}.stat-num{font-size:1.24rem}.stat-label{font-size:.71rem}.field-row{gap:9px}.btn{padding:11px 12px}.topbar{padding:9px 15px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media(min-width:900px){.bottom-nav{max-width:540px;left:50%;transform:translateX(-50%);border:1px solid var(--stroke);border-radius:22px 22px 0 0}.floating-timer{right:max(25px,calc((100vw - 900px)/2))}}[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ForgeFit 2 — paramètres, ergonomie iPhone, RPE et routines */
:root { --accent-ink:#08251b; --active-soft:rgba(147,236,192,.13); }
body[data-palette="blue"] { --accent:#91caff; --accent-ink:#0c233b; --active-soft:rgba(145,202,255,.14) }
body[data-palette="violet"] { --accent:#bcb2ff; --accent-ink:#242044; --active-soft:rgba(188,178,255,.13) }
body[data-palette="orange"] { --accent:#ffbe84; --accent-ink:#3b2310; --active-soft:rgba(255,190,132,.14) }
body[data-palette="pink"] { --accent:#f4a3ce; --accent-ink:#3c1930; --active-soft:rgba(244,163,206,.14) }
body[data-palette="mint"] { --accent:#93ecc0; --accent-ink:#08251b; --active-soft:rgba(147,236,192,.14) }
body.light-mode[data-palette="mint"] { --accent:#12734f; --accent-ink:#fff; --active-soft:rgba(18,115,79,.12) }
body.light-mode[data-palette="blue"] { --accent:#185fb2; --accent-ink:#fff; --active-soft:rgba(24,95,178,.11) }
body.light-mode[data-palette="violet"] { --accent:#6540b5; --accent-ink:#fff; --active-soft:rgba(101,64,181,.11) }
body.light-mode[data-palette="orange"] { --accent:#a24c13; --accent-ink:#fff; --active-soft:rgba(162,76,19,.11) }
body.light-mode[data-palette="pink"] { --accent:#a42c6f; --accent-ink:#fff; --active-soft:rgba(164,44,111,.11) }
.btn:not(.btn-secondary):not(.btn-outline):not(.btn-danger),.brand-mark {background:var(--accent);color:var(--accent-ink)}
.eyebrow,.brand-accent{color:var(--accent)}
.bottom-nav button[aria-current=page]{color:var(--accent);background:var(--active-soft)}
.pill:not(.neutral):not(.pending):not(.info):not(.error){color:var(--accent)}
.option input{accent-color:var(--accent)}
.option-details{align-items:flex-start;gap:12px;margin-block:3px}
.option-details span{display:flex;flex-direction:column;gap:3px;flex:1}
.option-details small{font-size:.77rem;color:var(--muted);line-height:1.4}
.palette-choices{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
.palette-swatch{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:var(--surface2);border:2px solid transparent;border-radius:12px;padding:9px 2px;min-height:77px;color:var(--txt);font-size:.69rem;white-space:nowrap}
.palette-swatch span{height:25px;width:25px;background:var(--swatch);border-radius:50%;box-shadow:0 0 0 2px #ffffff1e}
.palette-swatch[aria-pressed="true"]{border-color:var(--accent)}
.alt-choice{width:100%;min-height:56px;background:var(--surface2);color:var(--txt);border:1px solid var(--stroke);border-radius:12px;margin-top:8px;padding:9px 12px;display:flex;justify-content:space-between;align-items:center;text-align:left;gap:12px}
.alt-choice strong,.alt-choice small{display:block}
.alt-choice small{font-size:.77rem;color:var(--muted);margin-top:2px}
.metric-input{max-width:132px;text-align:center;font-size:clamp(1.3rem,5vw,1.6rem);font-weight:850;font-variant-numeric:tabular-nums}
.metric-control{min-width:0}.metric-control .hint{text-align:center}
.hero .form-control {background:var(--bg);color:var(--txt);border-color:var(--stroke)}
.hero .metric-actions button{background:var(--surface2);color:var(--txt)}
.hero details{background:var(--bg)}
.hero h2{overflow-wrap:anywhere}
main{width:100%;overflow-wrap:anywhere}
input,textarea,select{font-size:16px;min-width:0}
:where(button,a,input,select,textarea,summary):focus-visible{outline:3px solid var(--accent);outline-offset:2px}
button{min-height:44px}
.form-control{min-height:44px}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-bottom:calc(130px + env(safe-area-inset-bottom));}
body{min-width:320px;min-height:100dvh;overscroll-behavior-y:contain;}
#app-shell{min-height:100dvh;isolation:isolate}
#main{padding-bottom:calc(120px + env(safe-area-inset-bottom))}
.topbar{padding-top:max(9px,env(safe-area-inset-top));}
.bottom-nav{padding-bottom:max(8px,env(safe-area-inset-bottom));}
@media(max-width:375px){.palette-swatch{font-size:.62rem}.grid3{grid-template-columns:repeat(3,minmax(0,1fr))}.stat-num{font-size:1.15rem}}
@media(max-width:340px){.metric-control{padding:12px 6px}.metric-actions{gap:5px}.metric-actions button{width:40px;height:44px}.btn-small{font-size:.8rem}.palette-swatch{font-size:.58rem}}
@media(min-width:600px) and (max-width:899px){main{max-width:700px;margin-inline:auto}}
@supports (height:100dvh){body,#app-shell{min-height:100dvh}}
@media(hover:hover){.alt-choice:hover{border-color:var(--accent)}.palette-swatch:hover{filter:brightness(1.05)}}
/* Harmoniser les surfaces du thème clair dans les champs et états interactifs. */
.light-mode .segmented,.light-mode .hero details,.light-mode .chat-log{background:var(--surface2)}
.light-mode .segmented button.active{background:var(--accent);color:#fff}
.light-mode .option input{accent-color:var(--accent)}
.light-mode .hero .form-control{background:#fff;color:var(--txt)}
.light-mode .hero .metric-actions button{background:var(--surface2);color:var(--txt)}
.light-mode .palette-swatch{background:var(--surface2)}
/* Contraste lisible des boutons secondaires dans le thème clair */
.light-mode .btn-secondary,.light-mode .btn-outline{color:var(--txt);background:var(--surface2)}
.light-mode .btn-danger{color:#fff}
.light-mode button:disabled{opacity:.58}
.alt-panel{border-top:1px solid var(--stroke);padding-top:13px}
.alt-panel>.hint{margin-bottom:4px}
.prep-timer{font-size:clamp(2rem,8vw,3.2rem);font-weight:850;font-variant-numeric:tabular-nums;text-align:center}
/* ForgeFit Push / raccourcis iPhone : cibles tactiles et mise en page compacte */
.quick-shortcuts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
.quick-shortcuts .btn{min-height:50px;font-size:12px;padding:10px 5px;white-space:normal;overflow-wrap:anywhere}
.push-control .grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.push-control .btn{min-height:46px;white-space:normal;overflow-wrap:anywhere}
@media(max-width:340px){.quick-shortcuts{grid-template-columns:1fr}.quick-shortcuts .btn{font-size:14px}}

/* Gestion des séances et programmes : commandes tactiles sans débordement iPhone. */
.day-controls{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;max-width:92px}
.day-controls .btn{min-height:44px}
.history-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.history-actions .btn{min-height:44px}
@media(max-width:390px){.list-card{flex-wrap:wrap}.history-actions{flex-basis:100%;justify-content:flex-end}.day-controls{max-width:80px}.day-date{width:45px}}

/* Accessibility: readable inactive navigation in light mode. */
.light-mode .bottom-nav button:not([aria-current="page"]){color:var(--muted)}
