/* Kvan Coaching · style commun (coach et client), repris de la maquette (maquettes/kvancoaching/index.html).
   Mêmes noms de classes que la maquette. Plein écran sur téléphone, colonne centrée (480 px) sur grand écran.
   Structure attendue : <div class="app-area" id="app-area"><div class="scroller"><div id="app"></div></div>
   <nav class="tabbar"></nav><div id="dock-bottom"></div><div class="ov">…</div><div class="toast"></div></div> */

/* ===== 1. JETONS ===== */
:root{
  --accent:#5543BE;
  --accent-2:#66769F;
  --grad:linear-gradient(120deg,var(--accent-2) 0%,var(--accent) 100%);
  --accent-fg:#FFFFFF;
  --accent-ink:#ABA6EC;
  --accent-soft:rgba(110,100,210,.17);

  --bg:#0B0C14;--bg-0:rgba(11,12,20,0);--card:rgba(255,255,255,.045);--field:rgba(255,255,255,.06);--line:rgba(255,255,255,.085);
  --fg:#F3F4FA;--muted:rgba(243,244,250,.63);--ph:rgba(243,244,250,.44);--sheet:#13141F;--tabbg:rgba(22,23,36,.8);
  --ok:#6FD49A;--ok-bg:rgba(111,212,154,.14);--warn:#F3C06B;--warn-bg:rgba(243,192,107,.14);--bad:#FF9196;--bad-bg:rgba(255,145,150,.14);
  --t-bilan:#8FA3D6;--t-decouverte:#B3A6FF;--t-autre:#7FC8B8;
  --r-card:24px;--r-field:14px;--r-pill:999px;
  --sans:-apple-system,"SF Pro Text","Inter",system-ui,"Segoe UI",Roboto,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);
  --top-h:72px;--tab-h:64px;--app-h:100dvh;
  color-scheme:dark;
}
:root[data-mode="jour"]{
  --bg:#EFF0F5;--bg-0:rgba(239,240,245,0);--card:#FFFFFF;--field:rgba(20,22,45,.05);--line:rgba(20,22,45,.10);
  --fg:#15172A;--muted:rgba(21,23,42,.64);--ph:rgba(21,23,42,.46);--sheet:#FAFAFD;--tabbg:rgba(255,255,255,.88);
  --accent-ink:#4A3BA8;--accent-soft:rgba(85,67,190,.10);
  --ok:#1C7A44;--ok-bg:#E1F3E8;--warn:#9A5A00;--warn-bg:#FCEFD8;--bad:#B4232A;--bad-bg:#FBE4E5;
  --t-bilan:#55699E;--t-decouverte:#5543BE;--t-autre:#2E7D6E;
  color-scheme:light;
}

/* ===== 2. BASE ===== */
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;overflow:hidden;margin:0}
body{background:var(--bg);color:var(--fg);font:15px/1.45 var(--sans);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
h1,h2,h3,p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
fieldset{border:0;margin:0;padding:0;min-width:0}
[hidden]{display:none !important}
:focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}
a{color:var(--accent-ink)}
.sr{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.ic{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.muted{color:var(--muted)}.small{font-size:13px}.grow{flex:1;min-width:0}
.num{font-variant-numeric:tabular-nums}

/* ===== 3. CADRE : plein écran sur téléphone, colonne centrée sur grand écran ===== */
.app-area{position:fixed;top:0;bottom:0;left:0;right:0;width:100%;max-width:480px;margin:0 auto;overflow:hidden;background:var(--bg)}
.app-area::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 34% at 50% -6%,rgba(102,118,159,.30),rgba(85,67,190,.10) 45%,transparent 72%)}
:root[data-mode="jour"] .app-area::before{background:radial-gradient(120% 34% at 50% -6%,rgba(85,67,190,.10),transparent 72%)}
.scroller{position:absolute;inset:0;z-index:1;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}
.scroller::-webkit-scrollbar{display:none}
@media screen and (min-width:481px){
  body{background:radial-gradient(60% 55% at 50% 40%,#171A2C 0%,#030308 80%)}
  :root[data-mode="jour"] body{background:radial-gradient(60% 55% at 50% 40%,#FFFFFF 0%,#D9DBE6 80%)}
  .app-area{border-left:1px solid var(--line);border-right:1px solid var(--line);box-shadow:0 0 60px rgba(0,0,0,.35)}
}

/* ===== 4. COMPOSANTS ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:10px 16px;border:1px solid var(--line);border-radius:12px;background:var(--field);color:var(--fg);font-weight:600;text-decoration:none}
.btn:hover{filter:brightness(1.12)}
.btn-primary{border:0;background:var(--grad);color:#fff;font-size:16px}
.btn-main{min-height:52px;width:100%}
.btn-ghost{background:transparent;border-color:transparent;color:var(--accent-ink)}
.btn-danger{background:transparent;color:var(--bad)}
.btn-sm{min-height:44px;padding:6px 12px;font-size:13.5px;border-radius:10px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btns{display:flex;flex-wrap:wrap;gap:8px}.btns>.btn{flex:1 1 auto}
:root[data-mode="jour"] .btn:not(.btn-primary):not(.btn-ghost):not(.btn-danger){background:#fff}
.card{position:relative;margin:0 0 14px;padding:20px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--card)}
:root[data-mode="jour"] .card,:root[data-mode="jour"] .acc{box-shadow:0 1px 2px rgba(20,22,60,.04),0 10px 24px -18px rgba(20,22,60,.28)}
/* Tuile sport : liseré d'accent à gauche */
.tile::before{content:"";position:absolute;left:-1px;top:16px;bottom:16px;width:3px;border-radius:0 3px 3px 0;background:var(--grad)}
.input{display:block;width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-field);background:rgba(0,0,0,.25);color:var(--fg)}
:root[data-mode="jour"] .input{background:#fff}
.input:focus{outline:none;border-color:var(--accent-ink);box-shadow:0 0 0 3px var(--accent-soft)}
.input::placeholder{color:var(--ph)}
select.input option{background:var(--sheet);color:var(--fg)}
textarea.input{min-height:90px;resize:vertical}
.input.miss{border-color:var(--warn);border-style:dashed}
.input.bad{border-color:var(--bad)}
.field{display:block;margin:0 0 14px}
.field>span:first-child{display:block;margin:0 0 6px;font-size:13.5px;font-weight:600;color:var(--muted)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.check{display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:10px 0;cursor:pointer}
.check input{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--accent)}
.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:var(--r-pill);background:var(--field);color:var(--muted);font-size:12px;font-weight:650;white-space:nowrap}
.pill-new{background:var(--grad);color:#fff;transform:skewX(-8deg)}
.pill-ok{background:var(--ok-bg);color:var(--ok)}.pill-warn{background:var(--warn-bg);color:var(--warn)}.pill-bad{background:var(--bad-bg);color:var(--bad)}
.pill-accent{background:var(--accent-soft);color:var(--accent-ink)}
.pill-ia{background:var(--grad);color:#fff;font-size:10px;padding:1px 7px;vertical-align:2px}
.av{display:grid;place-items:center;width:40px;height:40px;flex:none;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);font-size:14px;font-weight:700}
.empty{padding:20px 16px;border:1px dashed var(--line);border-radius:18px;color:var(--muted);text-align:center}
.empty b{display:block;margin:0 0 4px;color:var(--fg)}
.empty .btn{margin-top:12px}
.exemple{margin:22px 0 0;font-size:12px;color:var(--ph);text-align:center}
.hint{display:block;margin:6px 0 0;font-size:13px;color:var(--muted)}

/* Typo sport : titres en capitales italiques grasses */
.page-title{margin:2px 0 14px;font-size:27px;font-weight:850;font-style:italic;text-transform:uppercase;letter-spacing:-.005em;line-height:1.1}
.page-title:focus{outline:none}
.page-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sec{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:22px 4px 10px;font-size:13px;font-weight:800;font-style:italic;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.back{display:inline-flex;align-items:center;gap:4px;min-height:44px;margin-left:-6px;padding-right:8px;color:var(--muted);font-weight:600;text-decoration:none}

/* En-tête posé sur le fond */
.hd{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;height:calc(var(--top-h) + var(--safe-t));padding:var(--safe-t) 16px 0;background:linear-gradient(var(--bg) 84%,var(--bg-0))}
.hd-brand{display:flex;align-items:center;gap:10px;min-height:44px;min-width:0;color:var(--fg);font-size:19px;font-weight:700;text-decoration:none;font-style:italic;text-transform:uppercase;letter-spacing:.01em}
.hd-brand>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lg{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:9px;background:var(--grad);color:#fff;font-size:12px;font-weight:900;font-style:italic;letter-spacing:.02em}
.hd-r{display:flex;align-items:center;gap:8px;flex:none}
.rbtn{display:grid;place-items:center;width:44px;height:44px;flex:none;border:1px solid var(--line);border-radius:50%;background:var(--field);color:var(--fg)}
:root[data-mode="jour"] .rbtn{background:#fff}
.main{position:relative;padding:4px 16px calc(var(--tab-h) + var(--safe-b) + 40px)}
.main.no-tab{padding-bottom:calc(var(--safe-b) + 28px)}

/* Menu du bas flottant */
.tabbar{position:absolute;left:12px;right:12px;bottom:calc(10px + var(--safe-b));z-index:30;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;height:var(--tab-h);padding:6px;border:1px solid var(--line);border-radius:32px;background:var(--tabbg);box-shadow:0 18px 40px -16px rgba(0,0,0,.7);-webkit-backdrop-filter:blur(22px) saturate(1.4);backdrop-filter:blur(22px) saturate(1.4)}
.tabbar.t3{left:50%;right:auto;width:min(300px,calc(100% - 24px));grid-template-columns:repeat(3,minmax(0,1fr));transform:translateX(-50%)}
.tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:26px;color:var(--muted);font-size:11.5px;font-weight:650;text-decoration:none}
.tab .ic{width:22px;height:22px}
.tab[aria-current="page"]{background:var(--field);color:var(--accent-ink)}
:root[data-mode="jour"] .tab[aria-current="page"]{background:#E8E8F2}
.count{position:absolute;top:3px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--grad);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center;transform:skewX(-8deg)}

/* Feuille depuis le bas */
.ov{position:absolute;inset:0;z-index:60;display:flex;flex-direction:column;justify-content:flex-end}
.ov-bg{position:absolute;inset:0;background:rgba(0,0,0,.6)}
:root[data-mode="jour"] .ov-bg{background:rgba(20,22,42,.38)}
.sheet{position:relative;max-height:calc(var(--app-h) * .9);overflow-y:auto;padding:0 18px calc(22px + var(--safe-b));border:1px solid var(--line);border-bottom:0;border-radius:28px 28px 0 0;background:var(--sheet);box-shadow:0 -10px 40px rgba(0,0,0,.45);scrollbar-width:none;animation:up .22s ease-out}
.sheet-h{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:62px;margin:0 -4px;background:var(--sheet)}
.sheet-h h2{font-size:18px;font-weight:850;font-style:italic;text-transform:uppercase}
@keyframes up{from{transform:translateY(30px);opacity:.4}to{transform:none;opacity:1}}
.toast{position:absolute;left:50%;bottom:calc(var(--tab-h) + var(--safe-b) + 24px);z-index:80;max-width:calc(100% - 32px);padding:11px 16px;border-radius:14px;background:#E9E8F6;color:#15172A;font-size:14px;font-weight:600;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:.2s}
:root[data-mode="jour"] .toast{background:#15172A;color:#fff}
.toast.on{transform:translate(-50%,0);opacity:1}
.toast.bad{background:var(--bad);color:#fff}

/* Carte liste (sur-titre + titre gras, valeur + chevron) */
.cl{padding:4px 20px}
.li{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:11px 0;color:var(--fg);text-align:left;text-decoration:none}
.cl .li + .li,.cl .cl-sub + .li,.cl .li + .cl-sub{border-top:1px solid var(--line)}
.ia-wait{display:flex;align-items:center;gap:10px;padding:14px 0;color:var(--muted);font-size:14px}
.ia-wait i{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--fg);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ia-wait i{animation:none}}
.pl-row{display:flex;align-items:center;gap:10px;padding:8px 0}.pl-row + .pl-row{border-top:1px solid var(--line)}
.pl-row b{display:block;font-size:14px;font-weight:650}.pl-row small{display:block;font-size:12px;color:var(--muted)}
.lt{flex:1;min-width:0}
.lt b{display:block;font-size:16.5px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lt small{display:block;font-size:13.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lt.wrap b,.lt.wrap small{white-space:normal;overflow-wrap:anywhere}
.lv{flex:none;font-size:16px;font-weight:750;font-variant-numeric:tabular-nums}
.li>.ic:last-child{width:18px;height:18px;color:var(--muted)}
.cl-sub{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:2px 10px;min-height:48px;padding:10px 0 4px;font-size:14px;color:var(--muted)}
.cl-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--accent-ink);font-weight:650;text-decoration:none}
.meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}

/* Chiffre clé posé sur le fond */
.kfig{margin:18px 4px 20px}
.kf-l{font-size:15px;color:var(--muted)}
.kf-v{font-size:58px;font-weight:800;font-style:italic;line-height:1.05;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.kf-s{margin:6px 0 0;font-size:14px;color:var(--muted)}

/* Bande de statuts à compteur */
.band{display:flex;gap:8px;margin:0 -16px 14px;padding:2px 16px 6px;overflow-x:auto;scrollbar-width:none}
.band::-webkit-scrollbar{display:none}
.band button{flex:none;display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--field);color:var(--muted);font-size:14px;font-weight:650;white-space:nowrap}
.band button[aria-pressed="true"]{border-color:transparent;background:var(--accent-soft);color:var(--fg)}
.band .n{min-width:22px;padding:0 6px;border-radius:9px;background:var(--field);color:var(--fg);font-size:12px;line-height:20px;text-align:center}
.band button[aria-pressed="true"] .n{background:var(--grad);color:#fff;transform:skewX(-8deg)}
:root[data-mode="jour"] .band button{background:#fff}
:root[data-mode="jour"] .band button[aria-pressed="true"]{background:#E6E4F4}

/* Segmenté */
.seg{display:flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--field)}
.seg button{flex:1;min-height:42px;padding:0 10px;border-radius:9px;color:var(--muted);font-size:14px;font-weight:650}
.seg button[aria-pressed="true"]{background:rgba(255,255,255,.13);color:var(--fg)}
:root[data-mode="jour"] .seg{background:#fff}
:root[data-mode="jour"] .seg button[aria-pressed="true"]{background:#E6E4F4}

/* Combo (ajout rapide) */
.combo{display:flex;align-items:center;min-height:54px;border:1px solid var(--line);border-radius:14px;background:rgba(0,0,0,.25)}
:root[data-mode="jour"] .combo{background:#fff}
.combo-sel{position:relative;display:flex;align-items:center;flex:none;max-width:52%}
.combo-sel select{appearance:none;-webkit-appearance:none;max-width:100%;min-height:52px;padding:0 28px 0 14px;border:0;background:transparent;color:var(--fg);font-size:15px;font-weight:650;cursor:pointer;text-overflow:ellipsis}
.combo-sel .ic{position:absolute;right:8px;width:16px;height:16px;color:var(--muted);pointer-events:none}
.combo-sep{flex:none;width:1px;height:26px;background:var(--line)}
.combo input{flex:1;min-width:0;min-height:52px;padding:0 14px;border:0;background:transparent;color:var(--fg);font-size:16px}
.combo input::placeholder{color:var(--ph)}
.combo:focus-within{border-color:var(--accent-ink)}
.combo select:focus,.combo input:focus{outline:none}
.qa{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.qa-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.qa-top h2{font-size:17px;font-weight:850;font-style:italic;text-transform:uppercase}
.qa-top .seg{flex:none}

/* Accordéons */
.acc{position:relative;margin:0 0 10px;border:1px solid var(--line);border-radius:20px;background:var(--card)}
.acc>summary{display:flex;align-items:center;gap:12px;min-height:58px;padding:10px 16px;list-style:none;cursor:pointer}
.acc>summary::-webkit-details-marker{display:none}
.acc>summary::after{content:"";flex:none;width:9px;height:9px;margin-left:auto;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translate(-2px,-2px);transition:transform .2s}
.acc[open]>summary::after{transform:rotate(-135deg) translate(-2px,-2px)}
.acc>summary .lt b{font-size:15.5px}
.acc-b{padding:0 16px 16px}
.acc.tile::before{top:14px;bottom:auto;height:30px}

/* Puces (choix, exclusions, muscles) */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 13px;border:1px solid var(--line);border-radius:999px;background:var(--field);color:var(--fg);font-size:14px;font-weight:600}
:root[data-mode="jour"] .chip{background:#fff}
.chip[aria-pressed="true"]{border-color:transparent;background:var(--grad);color:#fff}
.chip .ic{width:15px;height:15px}
span.chip{min-height:36px}
.mu[data-st="work"]{border-color:transparent;background:var(--grad);color:#fff}
.mu[data-st="avoid"]{border-color:var(--bad);background:var(--bad-bg);color:var(--bad);text-decoration:line-through}
.leg{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 0 0;font-size:12.5px;color:var(--muted)}
.leg i{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px;vertical-align:-1px}

/* Onglets internes (fiche client) */
.itabs{display:flex;gap:4px;margin:0 -16px 14px;padding:0 16px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line)}
.itabs::-webkit-scrollbar{display:none}
.itabs a{flex:none;position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 10px;color:var(--muted);font-size:14.5px;font-weight:700;text-decoration:none}
.itabs a[aria-current="page"]{color:var(--fg)}
.itabs a[aria-current="page"]::after{content:"";position:absolute;left:8px;right:8px;bottom:-1px;height:3px;border-radius:2px;background:var(--grad);transform:skewX(-20deg)}
.k3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 14px}
.k3>div{padding:12px 12px 10px;border:1px solid var(--line);border-radius:18px;background:var(--card)}
.k3 b{display:block;font-size:20px;font-weight:850;font-style:italic;font-variant-numeric:tabular-nums}
.k3 small{display:block;font-size:12px;color:var(--muted)}
.who{display:flex;align-items:center;gap:12px;margin:2px 0 14px}
.who .av{width:52px;height:52px;font-size:18px}
.who h1{font-size:24px;font-weight:850;font-style:italic;text-transform:uppercase;overflow-wrap:anywhere}
.who h1:focus{outline:none}

/* Programme */
.ex{display:flex;align-items:flex-start;gap:10px;padding:12px 0}
.ex + .ex{border-top:1px solid var(--line)}
.ex-n{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:8px;background:var(--accent-soft);color:var(--accent-ink);font-size:12.5px;font-weight:800;transform:skewX(-8deg)}
.ex-b{flex:1;min-width:0}
.ex-b b{display:block;font-size:15px;font-weight:650}
.ex-b small{display:block;font-size:13px;color:var(--muted)}
.ex-a{display:flex;flex-direction:column;gap:4px;flex:none}
.ex-a button{min-height:44px;padding:0 10px;border-radius:9px;background:var(--field);color:var(--accent-ink);font-size:12.5px;font-weight:700}
.ex.done .ex-b b{text-decoration:line-through;color:var(--muted)}
.ex-c{flex:none;width:26px;height:26px;margin-top:2px;accent-color:var(--accent)}
.warnbox{margin:0 0 12px;padding:10px 14px;border-radius:14px;background:var(--warn-bg);color:var(--warn);font-size:13.5px}
.okbox{margin:0 0 12px;padding:10px 14px;border-radius:14px;background:var(--ok-bg);color:var(--ok);font-size:13.5px}
.badbox{margin:0 0 12px;padding:10px 14px;border-radius:14px;background:var(--bad-bg);color:var(--bad);font-size:13.5px}
.bar{display:block;height:8px;border-radius:4px;background:var(--field);overflow:hidden}
.bar i{display:block;height:100%;border-radius:inherit;background:var(--grad);transform-origin:left;transition:width .3s}
.chart{display:block;width:100%;height:130px;margin:6px 0 0}
.chart .gl{stroke:var(--line);stroke-width:1}
.chart .ln{fill:none;stroke:var(--accent-ink);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.chart .pt{fill:var(--accent-ink)}
.chart text{fill:var(--muted);font-size:10px;font-family:var(--sans)}
.wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:6px 0 0}
.wk div{display:grid;place-items:center;gap:2px;padding:8px 0;border-radius:12px;background:var(--field);font-size:12px;color:var(--muted)}
.wk div.on{background:var(--grad);color:#fff}
.wk div.rest{background:transparent;border:1px dashed var(--line)}
.wk b{font-size:13px}
.hbars{display:grid;gap:10px}
.hbars>div{display:grid;grid-template-columns:72px minmax(0,1fr) 44px;align-items:center;gap:10px;font-size:13px}
.weeknav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:18px 0 10px}
.weeknav b{flex:1;text-align:center;font-size:14px;font-weight:800;font-style:italic;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}

/* Messages */
.thread{display:flex;flex-direction:column;gap:8px;padding:4px 0 150px}
.day-sep{align-self:center;margin:8px 0 2px;font-size:12px;color:var(--ph)}
.bub{max-width:80%;padding:9px 13px;border-radius:18px;background:var(--field);font-size:15px;line-height:1.4;align-self:flex-start;border-bottom-left-radius:6px;white-space:pre-wrap;overflow-wrap:anywhere}
:root[data-mode="jour"] .bub{background:#fff;border:1px solid var(--line)}
.bub.me{align-self:flex-end;background:var(--grad);color:#fff;border:0;border-bottom-left-radius:18px;border-bottom-right-radius:6px}
.bub small{display:block;margin-top:3px;font-size:11px;opacity:.65;text-align:right}
.composer{position:absolute;left:0;right:0;bottom:0;z-index:25;padding:10px 12px calc(10px + var(--safe-b));background:linear-gradient(var(--bg-0),var(--bg) 22%)}
.composer.above-tab{bottom:calc(var(--tab-h) + var(--safe-b) + 14px);padding-bottom:6px}
.quick{display:flex;gap:6px;margin:0 0 8px;overflow-x:auto;scrollbar-width:none}
.quick::-webkit-scrollbar{display:none}
.quick button{flex:none;min-height:38px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--sheet);color:var(--fg);font-size:13px;font-weight:600}
.cbar{display:flex;align-items:center;gap:8px}
.cbar .input{flex:1;min-height:46px;border-radius:23px}
.mic{display:grid;place-items:center;flex:none;width:46px;height:46px;border-radius:50%;background:var(--grad);color:#fff}
.mic:disabled{opacity:.5}

/* Agenda */
.mhead{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0 0 4px;font-size:11px;color:var(--ph);text-align:center}
.mgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.md{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;min-height:48px;padding:6px 0;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--fg);font-size:13.5px;font-weight:650}
.md.is-other{opacity:.35}
.md.is-today{border-color:var(--accent-ink)}
.md.is-sel{background:var(--grad);color:#fff;border-color:transparent}
.md.is-off{background:repeating-linear-gradient(135deg,transparent 0 5px,var(--field) 5px 7px)}
.md.is-sel.is-off{background:var(--grad)}
.dots{display:flex;gap:3px}
.dots i{width:6px;height:6px;border-radius:50%}
.slot{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 0;color:var(--fg);text-align:left}
.slot + .slot{border-top:1px solid var(--line)}
.slot .h{flex:none;width:52px;font-weight:750;font-variant-numeric:tabular-nums}
.slot .tb{flex:none;width:4px;align-self:stretch;border-radius:2px}
.slot.free{color:var(--muted)}
.slot.free .tb{background:transparent;border:1px dashed var(--line)}
.t-bilan{background:var(--t-bilan)}.t-decouverte{background:var(--t-decouverte)}.t-autre{background:var(--t-autre)}

/* Formulaire client (inscription) */
.cf{display:flex;flex-direction:column;min-height:calc(var(--app-h) - var(--top-h));padding:0 16px}
.cf-top{display:flex;align-items:center;gap:8px;min-height:44px;margin-left:-8px}
.progress{flex:1;height:7px;overflow:hidden;border-radius:4px;background:var(--field);transform:skewX(-20deg)}
.progress>i{display:block;height:100%;background:var(--grad);transition:width .3s ease}
.cf-body{flex:1;padding:10px 0 18px}
.cf-body h1{margin:6px 0 6px;font-size:25px;font-weight:850;font-style:italic;text-transform:uppercase;line-height:1.12}
.cf-body h1:focus{outline:none}
.lead{margin:0 0 18px;color:var(--muted)}
.opt{position:relative;display:flex;align-items:center;gap:12px;min-height:60px;margin:0 0 10px;padding:12px 16px;border:1px solid var(--line);border-radius:18px;background:var(--card);cursor:pointer}
:root[data-mode="jour"] .opt{background:#fff}
.opt input{position:absolute;opacity:0;width:1px;height:1px}
.opt .tick{display:grid;place-items:center;flex:none;width:24px;height:24px;border:1.5px solid var(--ph);border-radius:50%}
.opt input[type="checkbox"] + .tick{border-radius:7px}
.opt .tick .ic{width:15px;height:15px;stroke-width:2.6;opacity:0;color:#fff}
.opt input:checked + .tick{background:var(--grad);border-color:transparent}
.opt input:checked + .tick .ic{opacity:1}
.opt:has(input:checked){border-color:var(--accent-ink);background:var(--accent-soft)}
.opt:has(input:focus-visible){outline:2px solid var(--accent-ink);outline-offset:2px}
.opt-t{display:block;font-weight:650}
.opt-s{display:block;font-size:13px;color:var(--muted)}
.opt-p{font-weight:750;white-space:nowrap}
.cf-cta{position:sticky;bottom:0;z-index:5;padding:12px 0 calc(12px + var(--safe-b));background:linear-gradient(var(--bg-0),var(--bg) 30%)}
.cf-foot{padding:0 4px calc(18px + var(--safe-b));font-size:12px;line-height:1.4;color:var(--ph);text-align:center}
.days{display:flex;gap:8px;margin:0 -16px 16px;padding:0 16px 4px;overflow-x:auto;scrollbar-width:none}
.days button{flex:none;display:grid;place-items:center;width:58px;min-height:66px;border:1px solid var(--line);border-radius:16px;background:var(--card);font-size:12px;color:var(--muted)}
.days button b{font-size:19px;color:var(--fg)}
.days button[aria-pressed="true"]{background:var(--grad);border-color:transparent;color:#fff}
.days button[aria-pressed="true"] b{color:#fff}
.hours{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.hours button{min-height:46px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-weight:700;font-variant-numeric:tabular-nums}
.hours button[aria-pressed="true"]{background:var(--grad);border-color:transparent;color:#fff}
.rules{display:grid;gap:8px;margin:0 0 14px;padding:0;list-style:none}
.rules li{padding:11px 14px;border-radius:14px;background:var(--field);font-size:14.5px}
.recap{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 14px;margin:0;font-size:14.5px}
.recap dt{color:var(--muted)}.recap dd{margin:0;font-weight:650;overflow-wrap:anywhere;white-space:pre-wrap}
.stepper{display:flex;align-items:center;gap:14px}
.stepper button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--field);font-size:20px;font-weight:700}
.stepper b{min-width:40px;font-size:26px;font-style:italic;text-align:center}
.scale{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.scale button{min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:13px;font-weight:650}
.scale button[aria-pressed="true"]{background:var(--grad);border-color:transparent;color:#fff}
.vt .kf-v{font-size:52px}
.cred{display:flex;align-items:center;gap:10px;margin:0 4px 16px;color:var(--muted);font-size:13.5px}
.cred .ic{color:var(--accent-ink)}
.menu-list{display:grid;gap:2px;padding-bottom:4px}
.menu-list button,.menu-list a{display:flex;align-items:center;gap:14px;width:100%;min-height:52px;padding:0 10px;border-radius:12px;color:var(--fg);font-weight:650;text-align:left;text-decoration:none}
.menu-list button:hover,.menu-list a:hover{background:var(--field)}
.menu-list .ic:first-child{color:var(--accent-ink)}
.menu-list .chev{margin-left:auto;width:18px;height:18px;color:var(--ph)}
.share-url{display:flex;align-items:center;gap:12px;padding:16px 18px;border:1px solid var(--line);border-radius:18px;background:var(--field)}
.share-url b{display:block;font-size:17px;overflow-wrap:anywhere}
.share-url b span{color:var(--accent-ink)}

/* Connexion / installation */
.auth{display:flex;flex-direction:column;justify-content:center;min-height:calc(var(--app-h) - var(--top-h) - var(--safe-t));padding:8px 16px calc(28px + var(--safe-b))}
.auth .page-title{margin-bottom:6px}
.auth .lead{margin-bottom:20px}
.erreur{margin:0 0 12px;padding:10px 14px;border-radius:14px;background:var(--bad-bg);color:var(--bad);font-size:14px;font-weight:600}
.chargement{display:flex;align-items:center;justify-content:center;gap:10px;min-height:120px;color:var(--muted)}
.chargement i{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--fg);border-radius:50%;animation:spin .8s linear infinite}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none !important;transition:none !important}}

/* ----- Mes aliments (trois états) ----- */
.al-row{display:flex;align-items:center;gap:10px;min-height:48px;padding:4px 0}
.al-row + .al-row{border-top:1px solid var(--line)}
.al-nom{flex:1;min-width:0;font-size:14.5px;overflow-wrap:anywhere}
.al3{display:flex;gap:4px;flex:none}
.al3 button{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:var(--field);color:var(--muted);font-size:16px;font-weight:800}
.al3 button[aria-pressed="true"][data-st="mange"],.al-legende i[data-st="mange"]{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.al3 button[aria-pressed="true"][data-st="refuse"],.al-legende i[data-st="refuse"]{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}
.al3 button[aria-pressed="true"][data-st="neutre"]{background:var(--card);color:var(--fg);border-color:var(--muted)}
.al-legende{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 4px 10px;font-size:12.5px;color:var(--muted)}
.al-legende i{display:inline-grid;place-items:center;width:20px;height:20px;margin-right:4px;border-radius:6px;border:1px solid var(--line);font-style:normal;font-weight:800}

/* ----- Suivi de performance ----- */
.pf-ev{font-weight:800}.pf-ev.plus{color:var(--ok)}.pf-ev.moins{color:var(--bad)}.pf-ev.egal{color:var(--muted)}
.pf-t{width:100%;border-collapse:collapse;font-size:13.5px}
.pf-t th{text-align:left;font-size:12px;color:var(--muted);font-weight:650;padding:4px 6px 6px 0}
.pf-t td{padding:8px 6px 8px 0;border-top:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}
.pf-t td.plus{color:var(--ok);font-weight:700}.pf-t td.moins{color:var(--bad);font-weight:700}
.pf-t .prevu{display:block;font-size:12px;color:var(--muted);font-weight:500}
.perf-reps{display:flex;flex-wrap:wrap;gap:6px}
.perf-reps input{width:56px;text-align:center}
