:root{--paper:#f5f5f1;--ink:#111;--lime:#dfff57;--lilac:#cbbcff;--gray:#deded9;--muted:#73736e;--radius:26px;--space:16px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #8663d7;outline-offset:3px}#app,.modal-inner{max-width:470px;margin:auto;padding:26px 20px 125px}h1{font-size:46px;line-height:.98;letter-spacing:-2.5px;margin:32px 0 12px;font-weight:900}h2{font-size:22px;letter-spacing:-.7px;margin:28px 0 14px}h3{font-size:16px}p{line-height:1.5}.muted,small{color:var(--muted);font-size:12px}small{display:block;line-height:1.5}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.top,.hero-row,.section-row,.weeknav,.performance,.weight-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.logo{font-size:29px;letter-spacing:-2px;font-weight:900}.logo span{font-size:11px;vertical-align:top;letter-spacing:0}.avatar{border:0;border-radius:50%;width:38px;height:38px;background:#111;color:white;font-weight:800}.hero{background:var(--ink);color:white;border-radius:30px;padding:24px;margin:24px 0}.kicker{font-size:12px;letter-spacing:1px;font-weight:700}.big{font-size:58px;letter-spacing:-3px;line-height:1.25}.big span{font-size:22px;letter-spacing:-1px}.hero-row>span{background:#292929;padding:10px 14px;border-radius:24px;font-size:12px}.track{height:8px;background:#333;border-radius:8px;margin-top:18px;overflow:hidden}.track i{display:block;height:100%;background:var(--lime);border-radius:8px}.card{display:block;background:white;border:0;border-radius:var(--radius);padding:20px;width:100%;text-align:left}.card h2:first-child{margin-top:0}.stack{display:grid;gap:10px}.session{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:17px}.glyph{width:44px;height:44px;border-radius:15px;display:grid;place-items:center}.done{background:var(--lime)}.todo{background:var(--lilac)}.missed{background:var(--gray)}.status{font-size:10px;border:1px solid #e5e5df;border-radius:24px;padding:7px;white-space:nowrap}.session strong{font-size:16px}.session small{margin-top:4px}.back{width:42px;height:42px;flex-shrink:0;border:0;border-radius:50%;background:white;display:grid;place-items:center;padding:0}.weeknav{margin:20px 0 12px}.weeknav>b{text-align:center;font-size:14px}.weeknav small{font-weight:400;margin-top:4px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:12px}.calday{border:0;border-radius:14px;background:transparent;padding:9px 0}.calday.done{background:var(--lime)}.calday.todo{background:var(--lilac)}.calday.missed{background:var(--gray)}.calday b{display:block;margin-top:5px;font-size:18px}.calday small{font-size:10px}.calday:disabled{opacity:1}.legend{display:flex;gap:14px;margin:12px 4px;font-size:10px}.legend span{background:none;display:flex;align-items:center;gap:5px}.legend span:before{content:'';width:7px;height:7px;border-radius:50%}.legend .done:before{background:var(--lime)}.legend .todo:before{background:var(--lilac)}.legend .missed:before{background:var(--gray)}h2 small{display:inline;font-size:10px;margin-left:10px;font-weight:400;letter-spacing:0}.mobility-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.mobility{padding:14px;min-width:0}.mobility svg{display:block;margin-bottom:12px}.mobility b,.mobility strong{display:block;font-size:12px}.mobility small{font-size:10px;margin:7px 0;min-height:30px}#nav{position:fixed;bottom:calc(18px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(330px,calc(100% - 48px));height:68px;padding:8px 10px;border-radius:40px;background:#111;display:flex;justify-content:space-around;align-items:center;z-index:10;box-shadow:0 8px 24px #1112}#nav button{border:0;border-radius:50%;width:50px;height:50px;background:none;color:#999;display:grid;place-items:center}#nav .active{background:var(--lime);color:#111}.pills{display:flex;gap:7px;overflow:auto;padding:4px 0;margin:18px 0}.pill{border:1px solid #e7e7e0;border-radius:99px;padding:10px 14px;background:white;font-size:12px;white-space:nowrap}.pill.active{background:#111;color:white;border-color:#111}.month{text-transform:uppercase;font-size:11px;letter-spacing:1px;color:var(--muted);margin:18px 3px 0}.performance{display:flex}.badge{background:var(--lime);color:#111;border-radius:20px;padding:5px 8px;font-size:9px;letter-spacing:.5px;display:inline-block}.hero h2{font-size:30px}.primary,.secondary{width:100%;border:0;border-radius:18px;padding:16px;font-weight:800;font-size:14px;margin-top:12px}.primary{background:var(--lime)}.secondary{background:#eaeae5}.chart{width:100%;height:auto;stroke:#111;margin-top:15px}.chart .axis{stroke:#e2e2dd}.chart polyline{stroke:#111;stroke-width:2.5}.chart circle{fill:var(--lilac)}.weight-row{border:0;background:transparent;padding:12px 0;font-size:12px;border-bottom:1px solid #eee}.regularity{display:flex;gap:24px;overflow:auto;padding:8px 0}.regularity>div{text-align:center;font-size:12px}.capsule{display:flex;flex-direction:column;width:38px;height:116px;border-radius:22px;overflow:hidden;margin-bottom:10px}.segment{flex:1;min-height:0}.lilac{background:var(--lilac)}#app>section.card{margin-top:16px}#modal{position:fixed;inset:0;background:var(--paper);overflow:auto;z-index:20}#modal[hidden]{display:none}.editing{overflow:hidden}.secondary-head{display:grid;grid-template-columns:42px 1fr 42px;align-items:center}.secondary-head strong{text-align:center;font-size:14px}.secondary-head:after{content:''}.modal-inner{padding-bottom:40px}form>label,fieldset>label{display:block;font-size:12px;font-weight:700;margin:20px 0 8px}input:not([type=checkbox]):not([type=radio]):not([type=file]),select{display:block;width:100%;border:1px solid #e2e2dc;border-radius:16px;padding:14px;background:white;margin-top:8px;min-width:0}fieldset{border:0;padding:0;margin:0}.chips{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 22px}.chip input{position:absolute;opacity:0}.chip span{display:block;border-radius:99px;border:1px solid #deded8;background:white;padding:10px 13px;font-size:12px}.chip input:checked+span{background:#111;color:white;border-color:#111}.chip input:focus-visible+span{outline:3px solid #8663d7}.check{display:flex;align-items:center;gap:8px}.notice{background:var(--lilac);border-radius:18px;padding:16px;font-size:13px}#formError{color:#a52222}.import-label{display:block;font-size:12px;margin-top:20px}.import-label input{display:block;margin-top:10px;max-width:100%}@media(max-width:360px){#app,.modal-inner{padding-left:14px;padding-right:14px}.session{gap:8px;padding:13px}.status{font-size:9px}h1{font-size:40px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s ease}}

/* Mobile Android et installation */
html{min-width:0}body{min-height:100dvh;padding-top:env(safe-area-inset-top)}button,a,input,select{-webkit-tap-highlight-color:transparent}button,input,select{touch-action:manipulation}input:not([type=checkbox]):not([type=radio]),select{font-size:16px}#modal{height:100dvh;overscroll-behavior:contain}.pill{min-height:44px}.weight-row{min-height:48px}.chip span{min-height:44px;display:flex;align-items:center}.import-label{padding:12px;border-radius:16px;background:#eaeae5}#notice{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(100px + env(safe-area-inset-bottom));z-index:30;width:min(430px,calc(100% - 32px));padding:16px;background:#111;color:white;border-radius:18px;font-size:13px;box-shadow:0 8px 24px #1113}#notice[hidden]{display:none}@media(max-width:360px){.session{grid-template-columns:40px minmax(0,1fr)}.session .status{grid-column:2;justify-self:start}.glyph{width:40px;height:40px}}
#app>h1:first-child,#editor>h1:first-child{font-size:clamp(30px,10vw,46px);letter-spacing:-1.8px}

.movement-group{margin:20px 0 0}.movement-group legend{font-size:11px;font-weight:850;letter-spacing:1.2px;padding:0;color:var(--muted)}.movement-group .chips{margin:12px 0 18px}

/* Composants communs : lisibilité, mobilité et confort Android */
:root{--muted:#62625c;--radius:24px;--focus:#6143a8}
body{line-height:1.45}button{line-height:1.35}button:focus-visible,input:focus-visible,select:focus-visible,.chip input:focus-visible+span{outline-color:var(--focus)}
.muted,small{font-size:14px}.hero small,.hero .muted{color:#c9c9c3}
.primary,.secondary{min-height:48px;font-size:16px;border-radius:18px;padding:16px;color:var(--ink)}
.primary{background:var(--lime)}.secondary{background:#eaeae5}.primary:active{background:#cbea42}.secondary:active{background:#deded9}
button:disabled{opacity:1;color:#62625c;background:#e3e3dd;box-shadow:none}
.destructive{background:transparent;border:1px solid #73736e;margin-top:24px;font-weight:600}
.avatar,.back{width:48px;height:48px}.secondary-head{grid-template-columns:48px minmax(0,1fr) 48px}.secondary-head strong{font-size:16px}
.hero{border-radius:var(--radius)}.hero h2{overflow-wrap:anywhere}.kicker{font-size:14px}.hero-row>span{font-size:14px}
.session{grid-template-columns:48px minmax(0,1fr) auto}.glyph{width:48px;height:48px;border-radius:16px}.session small{overflow-wrap:anywhere}.status{font-size:12px;padding:8px;color:#454540;border-color:#a4a49c}
.calendar{gap:4px;padding:12px 8px}.calday{min-height:88px;padding:8px 0 4px;border-radius:14px;position:relative;color:#111}
.calday small{font-size:12px;color:#454540}.calday b{font-size:18px;margin-top:2px}.calday:disabled{color:#111;background:transparent}
.calday.has-mobility{box-shadow:inset 0 0 0 3px var(--lime),inset 0 0 0 4px #62625c}.cal-marker{display:flex;justify-content:center;align-items:center;height:22px;font-size:18px;line-height:1;color:#111}.cal-marker svg{width:18px;height:18px;stroke-width:2}
.legend{flex-wrap:wrap;gap:8px 14px;font-size:12px;line-height:1.5}.legend span:before{width:9px;height:9px;border:1px solid #62625c}.legend .mobility-key:before{display:none}.legend .mobility-key svg{width:18px;height:18px}
h2 small{font-size:12px;display:block;margin:5px 0 0;letter-spacing:.5px}
.mobility-grid{grid-template-columns:minmax(0,1fr);gap:10px}.mobility{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px}.mobility svg{margin:0}.mobility b{font-size:16px;text-transform:capitalize}.mobility small{font-size:14px;min-height:0;margin:4px 0 0;overflow-wrap:anywhere}.mobility strong{font-size:14px;white-space:nowrap}.mobility-ready{background:#ecece6}.mobility.recorded{box-shadow:inset 0 0 0 2px var(--lime)}
.pill,.chip span{font-size:14px;min-height:48px}.badge{font-size:12px;letter-spacing:.2px}.month{font-size:13px}.movement-group legend{font-size:14px;color:#454540}
form>label,fieldset>label,.import-label{font-size:14px}.check{min-height:48px}.check input{width:22px;height:22px;accent-color:#111}.weight-row{font-size:14px}
.performance{gap:16px;min-height:64px}.performance>span{min-width:0;overflow-wrap:anywhere}.performance>strong{flex-shrink:0;max-width:40%;text-align:right;overflow-wrap:anywhere}
#nav button{color:#bdbdb7}#nav button.active{color:#111}#notice{font-size:14px}#formError{font-size:14px}
.import-label input::file-selector-button{min-height:44px;border:0;border-radius:12px;padding:10px;background:#111;color:white;font:inherit;margin-right:8px}
@media(max-width:360px){#app,.modal-inner{padding-left:12px;padding-right:12px}.hero{padding:20px}.session{grid-template-columns:48px minmax(0,1fr)}.session .status{grid-column:2;justify-self:start;font-size:12px}.mobility{padding:14px;gap:10px;grid-template-columns:44px minmax(0,1fr)}.mobility .glyph{width:44px;height:44px}.mobility-value{grid-column:2;justify-self:start}.calendar{gap:3px;padding:10px 5px}.calday small{font-size:12px}.calday{min-height:84px}.primary,.secondary{padding:14px}.hero .big{font-size:50px}}
@media(prefers-reduced-motion:no-preference){button{transition:background .15s ease,box-shadow .15s ease}}
