/* Nouvelle interface élève : en-tête illustré, semaine, filtres, cartes, barre de navigation */
:root{--wall:#BFE0F5;--wall2:#9CCDEE;--floor:#E8B678;--sheet:#FFFFFF;--navink:#16201B;
  --t-crit:#C2362C;--t-crit-bg:#FDE4E1;--t-info:#2F5E9E;--t-info-bg:#E3ECF8;--t-warn:#A86A00;--t-warn-bg:#FFF1D6;--t-good:#1F8A4C;--t-good-bg:#E1F4E8;--t-mute:#6B6880;--t-mute-bg:#EFEDF3}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--sheet:#22212F;--navink:#F5F1E6;--t-crit-bg:#45231F;--t-info-bg:#1B2A40;--t-warn-bg:#3A2C10;--t-good-bg:#1F3B2A;--t-mute-bg:#2E2D3D;--t-crit:#FF8A7E;--t-info:#8DB6F0;--t-warn:#F2B44A;--t-good:#5FD08E;--t-mute:#B9B4CC}}
:root[data-theme="dark"]{--sheet:#22212F;--navink:#F5F1E6;--t-crit-bg:#45231F;--t-info-bg:#1B2A40;--t-warn-bg:#3A2C10;--t-good-bg:#1F3B2A;--t-mute-bg:#2E2D3D;--t-crit:#FF8A7E;--t-info:#8DB6F0;--t-warn:#F2B44A;--t-good:#5FD08E;--t-mute:#B9B4CC}

body.h-on .g-fab{display:none}
body.h-on .wrap{padding-bottom:130px}
.h-hero{position:relative;margin:-12px -16px 0;height:min(56vw,260px);min-height:210px;overflow:hidden;border-radius:0 0 4px 4px}
.h-hero svg.scene{position:absolute;inset:0;width:100%;height:100%}
.h-stars{position:absolute;right:14px;top:14px;background:var(--sun);color:#3A2A00;font-family:var(--display);font-weight:800;border-radius:999px;padding:4px 12px;box-shadow:0 3px 0 rgba(0,0,0,.15)}
.h-sheet{position:relative;margin:-26px -16px 0;background:var(--sheet);border-radius:28px 28px 0 0;padding:20px 16px 8px;min-height:60vh;box-shadow:0 -6px 20px rgba(0,0,0,.06)}
@media (min-width:640px){.h-hero{border-radius:0 0 28px 28px}.h-sheet{border-radius:28px;margin-top:-26px}}

/* semaine */
.h-month{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.h-month b{font-family:var(--display);font-size:1.15rem;text-transform:capitalize}
.h-arrows{display:flex;gap:6px}
.h-arrows button{width:38px;height:38px;border-radius:50%;border:0;background:color-mix(in srgb,var(--sky) 16%,var(--sheet));color:var(--sky);font-size:1.35rem;font-weight:800;line-height:1;display:grid;place-items:center;box-shadow:0 2px 0 color-mix(in srgb,var(--sky) 25%,transparent)}
.h-arrows button:active{transform:translateY(1px);box-shadow:none}
.h-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:18px}
.h-day{border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:.78rem;color:var(--soft)}
.h-day .n{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:1.05rem;color:var(--ink)}
.h-day.today .n{border-color:var(--ogre)}
.h-day[aria-pressed="true"] .n{background:var(--navink);color:var(--sheet);border-color:var(--navink)}
.h-day[aria-pressed="true"]{color:var(--ink);font-weight:800}
.h-dots{display:flex;gap:3px;height:6px}
.h-dots i{width:6px;height:6px;border-radius:50%;background:var(--sky)}
.h-dots i.c{background:var(--t-crit)}

/* filtres */
.h-q{font-family:var(--display);font-size:1.2rem;margin:0 0 10px}
.h-chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin:0 -16px 14px;padding-inline:16px;scrollbar-width:none}
.h-chip{flex:none;border:1.5px solid var(--line);background:var(--sheet);border-radius:999px;padding:8px 16px;font-weight:700;color:var(--ink)}
.h-chip[aria-pressed="true"]{background:var(--sky);border-color:var(--sky);color:#fff}
.h-chip .k{opacity:.7;font-weight:600;margin-left:4px}

/* cartes */
.h-list{display:grid;gap:12px}
.h-card{display:grid;grid-template-columns:58px 1fr auto;gap:12px;align-items:center;text-align:left;background:var(--sheet);border:1.5px solid var(--line);border-radius:20px;padding:12px;box-shadow:0 2px 0 rgba(0,0,0,.03)}
.h-ico{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;font-size:1.7rem}
.h-tag{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:800;letter-spacing:.04em;border-radius:999px;padding:3px 10px}
.h-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.h-tag.crit{background:var(--t-crit-bg);color:var(--t-crit)}.h-tag.info{background:var(--t-info-bg);color:var(--t-info)}.h-tag.warn{background:var(--t-warn-bg);color:var(--t-warn)}.h-tag.good{background:var(--t-good-bg);color:var(--t-good)}.h-tag.mute{background:var(--t-mute-bg);color:var(--t-mute)}
.h-card h3{font-family:var(--body);font-size:1rem;font-weight:700;margin:6px 0 2px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.h-card h3 .m{color:var(--soft);font-weight:700}
.h-card .due{font-size:.82rem;color:var(--soft)}
.h-card .stt{font-size:.82rem;font-weight:700;margin-top:3px}
.h-card .go{color:var(--soft);font-size:1.3rem}
.h-card.done{opacity:.6}
.h-mini{width:40px;height:40px}
.h-empty{text-align:center;padding:18px 8px;color:var(--soft)}
.h-empty b{display:block;font-family:var(--display);font-size:1.15rem;color:var(--ink);margin-bottom:4px}
.h-sub{font-family:var(--display);font-size:1rem;margin:20px 0 10px;color:var(--soft)}
.h-dayhead{font-weight:800;margin:18px 2px 8px;color:var(--soft);font-size:.9rem;text-transform:capitalize}

/* barre de navigation */
.h-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--sheet);border-top:1px solid var(--line);padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px))}
.h-nav-in{max-width:480px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);align-items:end}
.h-tab{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.75rem;font-weight:700;color:var(--soft);padding:4px 0;position:relative}
.h-tab svg{width:24px;height:24px}
.h-tab[aria-current="page"]{color:var(--sky)}
.h-tab[aria-current="page"]::before{content:"";position:absolute;top:-9px;width:28px;height:3px;border-radius:3px;background:var(--sky)}
.h-tab.mid .bub{width:62px;height:62px;border-radius:50%;background:var(--navink);display:grid;place-items:center;margin-top:-30px;box-shadow:0 6px 14px rgba(0,0,0,.25);border:4px solid var(--sheet)}
.h-tab.mid .bub .ogre{width:50px;height:50px}
body.g-open .h-nav{display:none}

/* page d'un devoir */
.d-head{border-radius:24px;padding:16px;color:#fff;margin-bottom:14px}
.d-head .tagrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.d-head .h-tag{background:rgba(255,255,255,.22);color:#fff}
.d-head h2{font-size:1.5rem;margin:8px 0 2px}
.d-head p{margin:0;opacity:.92}
.d-box{background:var(--card);border:2px solid var(--line);border-radius:18px;padding:14px;margin-bottom:12px}
.d-box h3{font-size:1rem;margin:0 0 6px;font-family:var(--display)}
.d-box p{margin:0;white-space:pre-line}
.d-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.d-act{border:0;border-radius:18px;padding:14px 12px;text-align:left;color:#fff;font-weight:700;display:flex;flex-direction:column;gap:4px;box-shadow:0 4px 0 rgba(0,0,0,.15)}
.d-act .i{font-size:1.6rem}
.d-act b{font-family:var(--display);font-size:1.05rem}
.d-act small{opacity:.9;font-weight:600}
.d-act.wide{grid-column:1/-1;flex-direction:row;align-items:center;gap:12px}
.d-act:disabled{opacity:.5}

/* matières */
.m-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.m-card{border:1.5px solid var(--line);background:var(--sheet);border-radius:20px;padding:14px;text-align:left;display:flex;flex-direction:column;gap:6px}
.m-card .e{font-size:1.8rem}
.m-card b{font-family:var(--display);font-size:1.05rem}
.m-card small{color:var(--soft)}
.m-bar{height:6px;border-radius:9px;background:var(--line);overflow:hidden}.m-bar i{display:block;height:100%;background:var(--ogre)}

.d-act .tx{display:flex;flex-direction:column;gap:2px;min-width:0}
body.g-ctx .g-fab{display:none}
.m-card .tx{display:flex;flex-direction:column;gap:2px}

/* Grignon qui parle sur la page d'un devoir */
.g-say{display:flex;gap:10px;align-items:flex-end;margin:0 0 12px}
.g-say-face .ogre{width:64px;height:64px}
.g-say-b{position:relative;flex:1;min-width:0;background:var(--card);border:3px solid var(--ink);border-radius:20px;padding:10px 12px;box-shadow:var(--shadow)}
.g-say-b::before{content:"";position:absolute;left:-14px;bottom:16px;border:9px solid transparent;border-right-color:var(--ink)}
.g-say-b p{margin:0;font-size:1.02rem}
.g-say-play{margin-top:6px;border:0;background:color-mix(in srgb,var(--ogre) 18%,transparent);color:var(--ogre-d);border-radius:999px;padding:4px 12px;font-weight:800}
.need-list{display:grid;gap:12px}
.need{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center}
.need .ck{width:28px;height:28px;border-radius:50%;border:2.5px solid var(--line);display:grid;place-items:center;font-weight:800;color:#fff}
.need.ok .ck{background:var(--ok);border-color:var(--ok)}
.need .tx{display:flex;flex-direction:column;min-width:0}
.need .tx small{color:var(--soft)}
.need-btn{width:auto;margin:0;padding:8px 12px;font-size:.95rem;cursor:pointer;white-space:nowrap}
.h-prep{margin-top:18px}
.h-prep h3{font-family:var(--display);font-size:1rem;margin:0 0 8px;color:var(--soft)}
.need .tx b{font-family:var(--body);font-size:.98rem;line-height:1.3}
.h-hello{position:absolute;left:12px;bottom:30px;margin:0;max-width:62%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--display);font-size:1.05rem;line-height:1;color:#16304A;background:rgba(255,255,255,.8);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;padding:6px 12px;box-shadow:0 3px 10px rgba(22,48,74,.12)}

/* Grignon t'aide */
.a-box h3{margin-bottom:10px}
.a-grid{display:grid;gap:10px}
.a-btn{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:2px solid color-mix(in srgb,var(--c) 35%,transparent);background:color-mix(in srgb,var(--c) 9%,var(--card));border-radius:16px;padding:12px;cursor:pointer;color:var(--ink)}
.a-btn .i{width:44px;height:44px;border-radius:12px;background:var(--c);display:grid;place-items:center;font-size:1.4rem;flex:none}
.a-btn .tx{display:flex;flex-direction:column;min-width:0}
.a-btn b{font-family:var(--display);font-size:1.05rem}
.a-btn small{color:var(--soft)}
.a-chat{display:block;width:100%;margin-top:10px;border:0;background:none;color:var(--sky);font-weight:800;font-size:.95rem;text-align:left;padding:6px 0;cursor:pointer}

/* Interrogation orale */
.i-wrap{display:grid;gap:12px}
.i-say .g-say-b p{font-size:1.15rem;font-weight:700;line-height:1.4}
.i-go{font-size:1.2rem;padding:16px}
.i-mic{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0;text-align:center}
.i-mic .g-mic{width:88px;height:88px;font-size:2.2rem}
.i-mic p{margin:0;color:var(--soft)}.i-mic p b{display:block;color:var(--ink);font-family:var(--display)}
.i-said{font-style:italic;color:var(--ink2,var(--soft))}
.i-idk{display:block;margin:4px auto 0}
.i-verdict{border-radius:20px;padding:14px;border:3px solid}
.i-verdict b{font-family:var(--display);font-size:1.3rem;display:block}
.i-verdict p{margin:6px 0 0}
.i-verdict.good{background:var(--ok-bg);border-color:var(--ok)}.i-verdict.warn{background:var(--t-warn-bg);border-color:var(--t-warn)}.i-verdict.crit{background:var(--ko-bg);border-color:var(--ko)}
.i-model span{font-weight:800}
.i-rev{border-top:1px solid var(--line);padding:8px 0}.i-rev summary{cursor:pointer;font-weight:700}.i-rev p{margin:6px 0 0}

/* Grignon dit : humeur selon la situation */
.h-mood{display:flex;gap:12px;align-items:center;border-radius:20px;padding:12px;margin-bottom:16px;border:2px solid}
.h-mood .f .ogre{width:64px;height:64px}
.h-mood .t{flex:1;min-width:0}.h-mood p{margin:0;font-weight:700}
.h-mood .btn{margin:8px 0 0;padding:9px 14px;font-size:1rem;width:auto}
.m-cry,.m-angry{background:var(--t-crit-bg);border-color:var(--t-crit)}
.m-sad,.m-worried{background:var(--t-warn-bg);border-color:var(--t-warn)}
.m-sleepy{background:var(--t-info-bg);border-color:var(--t-info)}
.m-wow,.m-happy{background:var(--t-good-bg);border-color:var(--t-good)}
.m-cry .btn,.m-angry .btn{background:var(--t-crit)}
.ogre .tear{animation:tear 1.6s ease-in infinite}
@keyframes tear{0%{transform:translateY(0);opacity:1}100%{transform:translateY(6px);opacity:.2}}
@media (prefers-reduced-motion: reduce){.ogre .tear{animation:none}}

/* Notes */
.n-card{background:var(--sheet);border:1.5px solid var(--line);border-radius:20px;padding:12px}
.n-card.big{border-width:2px;border-color:color-mix(in srgb,var(--t-crit) 45%,var(--line))}
.n-top{display:grid;grid-template-columns:48px 1fr auto;gap:10px;align-items:center}
.n-top .h-ico{width:48px;height:48px;font-size:1.4rem}
.n-t{min-width:0;display:flex;flex-direction:column}.n-t b{font-family:var(--display);font-size:1.05rem}.n-t small{color:var(--soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.n-v{font-family:var(--display);font-weight:800;font-size:1.6rem;font-variant-numeric:tabular-nums}.n-v small{font-size:.9rem;color:var(--soft)}
.n-moy{font-size:.85rem;color:var(--soft);margin-top:6px}
.n-ask{margin:10px 0 0;font-weight:700}
.n-acts{display:grid;gap:8px;margin-top:10px}
.n-go{margin:10px 0 0;cursor:pointer;text-align:center;display:block}
.n-acts .n-go{margin:0}
.n-moys{display:grid;gap:8px}
.n-mrow{display:grid;grid-template-columns:minmax(80px,34%) 1fr 3em;gap:10px;align-items:center}
.n-mrow span:first-child{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.n-mrow b{font-family:var(--display);text-align:right;font-variant-numeric:tabular-nums}

/* Pronote pas connecté : une action, le reste verrouillé */
.h-conn{display:flex;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--sky) 10%,var(--sheet));border:2px solid var(--sky);border-radius:22px;padding:14px;margin-bottom:18px}
.h-conn .f .ogre{width:70px;height:70px}
.h-conn .t{flex:1;min-width:0}.h-conn b{font-family:var(--display);font-size:1.25rem;display:block}
.h-conn p{margin:4px 0 10px}.h-conn .btn{margin:0}
.h-locked{position:relative;opacity:.38;filter:grayscale(1);pointer-events:none;user-select:none}
.h-lock{position:absolute;z-index:2;left:50%;top:70px;transform:translateX(-50%);background:var(--ink);color:var(--paper);font-weight:800;font-size:.85rem;padding:6px 12px;border-radius:999px;white-space:nowrap;opacity:1}
.h-lockwrap{position:relative}

/* Mission du jour */
.mi{background:linear-gradient(160deg,color-mix(in srgb,var(--ogre) 16%,var(--sheet)),var(--sheet) 70%);border:2px solid var(--ogre);border-radius:24px;padding:14px;margin-bottom:18px;box-shadow:0 6px 18px rgba(62,127,49,.12)}
.mi.fin{border-color:var(--sun);background:linear-gradient(160deg,color-mix(in srgb,var(--sun) 22%,var(--sheet)),var(--sheet) 70%)}
.mi-h{display:flex;gap:12px;align-items:center}
.mi-h .f .ogre{width:62px;height:62px}
.mi-eye{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ogre-d)}
.mi h2{font-size:1.25rem;margin:2px 0 2px}
.mi small{color:var(--soft);font-weight:700}
.mi-bar{height:8px;border-radius:99px;background:color-mix(in srgb,var(--ogre) 18%,transparent);overflow:hidden;margin:12px 0 10px}
.mi-bar i{display:block;height:100%;background:var(--ogre-d);border-radius:99px;transition:width .4s}
.mi-steps{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px}
.mi-steps button{width:100%;display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;text-align:left;border:0;background:var(--sheet);border-radius:14px;padding:9px 10px;color:var(--ink)}
.mi-steps .ck{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-family:var(--display);border:2px solid var(--line);color:var(--soft)}
.mi-steps .lb{font-weight:700;font-size:.95rem;min-width:0}
.mi-steps .mn{font-size:.8rem;color:var(--soft);font-weight:700;white-space:nowrap}
.mi-steps li.cur button{outline:2px solid var(--ogre);background:color-mix(in srgb,var(--ogre) 8%,var(--sheet))}
.mi-steps li.ok .ck{background:var(--ok);border-color:var(--ok);color:#fff}
.mi-steps li.ok .lb{text-decoration:line-through;color:var(--soft)}
.mi-go{margin:0;font-size:1.15rem;padding:15px}
/* Grignon mange la photo */
.miam{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:rgba(22,32,27,.45);animation:miamIn .2s ease}
.miam.out{opacity:0;transition:opacity .35s}
.miam-in{background:var(--card);border-radius:28px;padding:24px 28px;text-align:center;position:relative;box-shadow:0 20px 40px rgba(0,0,0,.25)}
.miam-in .ogre{width:130px;height:130px;display:block;margin:0 auto}
.miam-in .ogre .mouth{animation:chomp .22s ease-in-out .5s 5 alternate;transform-origin:50px 72px}
.miam-in .doc{position:absolute;left:50%;top:-10px;font-size:2.4rem;animation:feed .6s ease-in forwards}
.miam-in b{display:block;font-family:var(--display);font-size:1.5rem;margin-top:6px}
.miam-in small{color:var(--soft)}
@keyframes feed{0%{transform:translate(-50%,-30px) rotate(-10deg);opacity:1}80%{transform:translate(-50%,95px) scale(.6);opacity:1}100%{transform:translate(-50%,110px) scale(.2);opacity:0}}
@keyframes chomp{from{transform:scaleY(1)}to{transform:scaleY(.25)}}
@keyframes miamIn{from{opacity:0}to{opacity:1}}

/* Écran de chargement */
#gLoad{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:24px;background:radial-gradient(120% 80% at 50% 0%,#CFE8FB 0%,#EAF5FF 45%,var(--paper) 100%);transition:opacity .45s}
#gLoad.out{opacity:0}
.gl-in{width:min(360px,100%);text-align:center}
.gl-stage{position:relative;width:180px;height:180px;margin:0 auto 10px}
.gl-stage .ogre{width:150px;height:150px;position:absolute;left:15px;top:20px;animation:glBob 1.8s ease-in-out infinite}
.gl-glow{position:absolute;inset:20px;border-radius:50%;background:radial-gradient(circle,rgba(255,200,61,.55),transparent 70%);animation:glPulse 1.8s ease-in-out infinite}
.gl-book{position:absolute;right:6px;bottom:8px;font-size:2.4rem;animation:glBook 1.8s ease-in-out infinite;transform-origin:50% 100%}
.gl-star{position:absolute;color:#FFC83D;font-size:1.2rem;animation:glTw 1.6s ease-in-out infinite}
.gl-star.s1{left:8px;top:18px}.gl-star.s2{right:20px;top:4px;animation-delay:.5s}.gl-star.s3{left:30px;bottom:14px;animation-delay:1s}
#gLoad h2{font-family:var(--display);font-size:1.6rem;margin:4px 0 14px;color:#16304A}
.gl-steps{list-style:none;padding:0;margin:0 auto;display:grid;gap:10px;text-align:left;width:fit-content}
.gl-steps li{display:flex;align-items:center;gap:10px;font-weight:700;color:#7A8A98;transition:color .3s}
.gl-steps li i{width:22px;height:22px;border-radius:50%;border:2.5px solid #C9D6E2;display:grid;place-items:center;flex:none;font-style:normal;transition:all .3s}
.gl-steps li.cur{color:#16304A}.gl-steps li.cur i{border-color:#3C9DE0;border-top-color:transparent;animation:glSpin .8s linear infinite}
.gl-steps li.ok{color:#2F8A4A}.gl-steps li.ok i{background:#2FA35A;border-color:#2FA35A}
.gl-steps li.ok i::after{content:"";width:.8rem;height:.8rem;background:#fff;-webkit-mask:var(--gi-check) center/contain no-repeat;mask:var(--gi-check) center/contain no-repeat}
.gl-tip{margin:18px auto 0;color:#4A6378;font-size:.95rem;min-height:2.6em;transition:opacity .3s}.gl-tip.fade{opacity:0}
@keyframes glBob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8px) rotate(2deg)}}
@keyframes glPulse{0%,100%{transform:scale(.92);opacity:.7}50%{transform:scale(1.05);opacity:1}}
@keyframes glBook{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg) translateY(-4px)}}
@keyframes glTw{0%,100%{opacity:.2;transform:scale(.7)}50%{opacity:1;transform:scale(1.15)}}
@keyframes glSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.gl-stage .ogre,.gl-glow,.gl-book,.gl-star,.gl-steps li.cur i{animation:none}}
/* Synchronisation en arrière-plan */
.h-sync{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;font-weight:800;color:var(--sky);background:color-mix(in srgb,var(--sky) 12%,var(--sheet));border-radius:999px;padding:5px 12px;margin:0 0 12px;animation:glPulse 2s ease-in-out infinite}
.h-toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:85;background:var(--ink);color:var(--paper);font-weight:800;padding:10px 16px;border-radius:999px;box-shadow:0 8px 20px rgba(0,0,0,.25);transition:opacity .4s;max-width:90vw;text-align:center}
.h-toast.out{opacity:0}
.mi-steps li.wait .ck{border-style:dashed}.mi-steps li.wait .lb{color:var(--soft)}
.mi-wait{margin:0;font-weight:700;color:var(--soft);text-align:center}

/* Petite fenêtre (popin) */
.h-pop{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:20px;background:rgba(22,32,58,.5);animation:miamIn .25s ease}
.h-pop.out{opacity:0;transition:opacity .3s}
.pop-in{width:min(360px,100%);background:var(--card);border-radius:28px;padding:22px 20px 18px;text-align:center;box-shadow:0 24px 50px rgba(0,0,0,.3);animation:pop .35s ease}
.pop-f .ogre{width:110px;height:110px}
.pop-in h3{font-family:var(--display);font-size:1.45rem;margin:4px 0 6px}
.pop-in p{margin:0 0 16px;color:var(--soft);font-size:1.02rem}
.pop-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pop-acts .btn{margin:0;font-size:1rem;padding:12px 10px}
.pop-acts:has(#nPromis){grid-template-columns:1fr}
.gh{display:inline-block;width:1.5em;height:1.5em;vertical-align:-.4em;flex:none}.gh .ogre{width:100%;height:100%;display:block}
.a-btn .i .gh{width:38px;height:38px;vertical-align:0}
.pop-acts .btn{white-space:nowrap;font-size:.95rem;display:flex;align-items:center;justify-content:center;gap:6px}

/* Réciter / converser */
.r-lines p{margin:4px 0}.r-roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:6px}.r-roles .btn{margin:0}
.r-run{display:grid;gap:6px;margin-bottom:10px}.r-past{margin:0;color:var(--soft);font-size:.95rem}.r-past.me{color:var(--ink)}.r-past b{color:var(--sky)}
.r-sc{font-size:.8rem;font-weight:800;color:var(--ok)}
.r-me{background:var(--card);border:3px solid var(--sky);border-radius:22px;padding:14px}
.r-who{display:block;font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--sky)}
.r-hint{font-size:1.25rem;font-weight:700;line-height:1.5;margin:6px 0;letter-spacing:.02em}
.w-ok{color:var(--ok)}.w-ko{color:var(--ko);text-decoration:underline wavy}
.r-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px}.r-acts .btn{margin:0}.r-acts .btn:last-child:nth-child(odd){grid-column:1/-1}
.r-him{display:flex;gap:10px;align-items:flex-end;margin-bottom:12px}.r-him .ogre{width:56px;height:56px}.r-him .g-say-b{position:relative;flex:1;background:var(--card);border:3px solid var(--ink);border-radius:20px;padding:10px 12px}.r-him p{margin:2px 0 0;font-size:1.15rem;font-weight:700}
.c-list{display:grid;gap:10px;margin-bottom:12px}
.c-me{justify-self:end;max-width:85%;background:var(--sky);color:#fff;border-radius:18px 18px 4px 18px;padding:9px 13px;font-weight:700}
.c-him{display:flex;gap:8px;align-items:flex-end;max-width:94%}.c-him .ogre{width:44px;height:44px}.c-him .g-say-b{flex:1;min-width:0;background:var(--card);border:2px solid var(--line);border-radius:18px 18px 18px 4px;padding:9px 12px}.c-him p{margin:0;font-size:1.08rem;font-weight:700}
.c-him details{margin-top:4px;color:var(--soft);font-size:.9rem}.c-him summary{cursor:pointer;font-weight:700}
.c-corr{background:var(--t-warn-bg);border:2px solid var(--t-warn);border-radius:16px;padding:9px 12px;font-size:.95rem}
.c-aide{margin-top:6px;background:color-mix(in srgb,var(--ogre) 12%,var(--card));border-radius:12px;padding:6px 10px;font-size:.95rem}
.c-play{border:0;background:none;color:var(--sky);font-weight:800;padding:2px 4px;cursor:pointer}
.c-bar{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:10px;background:var(--card);border:2px solid var(--line);border-radius:24px;padding:10px;box-shadow:0 8px 20px rgba(0,0,0,.12)}
.c-bar p{flex:1;margin:0;color:var(--soft);font-size:.92rem}.c-bar p b{display:block;color:var(--ink);font-family:var(--display)}.c-bar .btn{margin:0;width:auto;padding:10px 14px}

/* Bulle de Grignon : plus douce, avec son nom, une queue arrondie vers sa bouche, et un texte tapé */
.bubble,.g-say-b{position:relative;background:var(--card);border:0!important;border-radius:22px;padding:24px 15px 12px;box-shadow:none;
  filter:drop-shadow(0 0 1.5px color-mix(in srgb,var(--ogre-d) 75%,transparent)) drop-shadow(0 7px 14px rgba(20,50,30,.14));
  animation:bIn .4s cubic-bezier(.2,1.4,.4,1) both;transform-origin:0 100%}
.bubble::before,.g-say-b::before{content:"";position:absolute;left:-13px;bottom:16px;width:18px;height:20px;border:0!important;background:var(--card);clip-path:polygon(100% 0,0 75%,100% 100%)}
.bubble::after,.g-say-b::after{content:"Grignon";position:absolute;top:8px;left:15px;font:800 .66rem/1 var(--display);letter-spacing:.09em;text-transform:uppercase;color:var(--ogre-d)}
.c-him .g-say-b,.r-him .g-say-b{padding-top:10px}.c-him .g-say-b::after,.r-him .g-say-b::after{content:none}
.bubble p,.g-say-b p{line-height:1.45}
.hello{align-items:flex-end;gap:12px}.hello .ogre{width:104px;height:104px;flex:none}
.tw-caret{display:inline-block;width:2px;height:1.05em;background:var(--ogre-d);margin-left:2px;vertical-align:-.15em;animation:twBlink .75s steps(1) infinite}
@keyframes twBlink{50%{opacity:0}}
@keyframes bIn{from{opacity:0;transform:scale(.86) translateY(8px)}}
@media (prefers-reduced-motion: reduce){.bubble,.g-say-b{animation:none}.tw-caret{display:none}}

/* Grignon écrit à la main */
.bubble p,.bubble .big,.g-say-b p,.g-say-b h3,.pop-in h3,.pop-in p,.h-conn p,.h-mood p,.g-msg.him,.c-him p,.r-him p,.mi-wait{font-family:"Patrick Hand","Comic Sans MS",cursive;letter-spacing:.01em}
.bubble p,.g-say-b p,.g-msg.him,.c-him p,.r-him p{font-size:1.18rem;line-height:1.35}
.bubble .big{font-size:1.35rem}.i-say .g-say-b p{font-size:1.3rem}
.bubble::after,.g-say-b::after{content:none!important}.bubble,.g-say-b{padding-top:12px}

/* Lecteur d'exercices */
.exo{background:var(--card);border:2px solid var(--line);border-radius:20px;padding:12px}
.exo-top{display:flex;justify-content:space-between;font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--ogre-d)}
.exo-bar{height:6px;border-radius:9px;background:var(--line);overflow:hidden;margin:6px 0 10px}.exo-bar i{display:block;height:100%;background:var(--ogre)}
.exo-q{font-weight:800;font-size:1.05rem;margin-bottom:10px}
.exo-ch{display:grid;gap:8px}.exo-ch.two{grid-template-columns:1fr 1fr}
.exo-ch button,.exo-bank button,.exo-pool button,.exo-ord button{border:2px solid var(--line);background:var(--card);border-radius:14px;padding:10px 12px;text-align:left;font-weight:700;color:var(--ink);cursor:pointer}
.exo-ch button.good,.exo-ord button.ok{border-color:var(--ok);background:var(--ok-bg)}.exo-ch button.bad,.exo-ord button.ko{border-color:var(--ko);background:var(--ko-bg)}.exo-ch button.dim{opacity:.5}
.exo-trous{font-size:1.1rem;line-height:2.2;margin:0 0 8px}
.tr-in{font:inherit;font-weight:700;border:0;border-bottom:2.5px dashed var(--sky);background:color-mix(in srgb,var(--sky) 8%,transparent);border-radius:6px 6px 0 0;padding:0 6px;color:var(--ink);text-align:center;max-width:100%}
.tr{font-weight:800;border-radius:6px;padding:0 5px}.tr.ok{background:var(--ok-bg);color:var(--ok)}.tr.ko{background:var(--ko-bg);color:var(--ko)}.tr.mid{background:var(--t-warn-bg);color:#8a5a00}.tr small{color:var(--ok);font-weight:800}
.exo-bank,.exo-pool{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}.exo-bank button:disabled{opacity:.35}
.exo-rel{display:grid;gap:8px;margin-bottom:10px}.rel-row{display:grid;grid-template-columns:minmax(80px,40%) 1fr;gap:8px;align-items:center}
.rel-g{font-weight:800}.rel-row select{font:inherit;padding:9px;border-radius:12px;border:2px solid var(--line);background:var(--card);color:var(--ink);min-width:0;width:100%}
.rel-d{border-radius:10px;padding:6px 8px;font-weight:700}.rel-d.ok{background:var(--ok-bg)}.rel-d.ko{background:var(--ko-bg)}.rel-d small{display:block;color:var(--ok)}
.exo-ord{list-style:none;padding:0;margin:0 0 8px;display:grid;gap:6px;counter-reset:o}.exo-ord li{counter-increment:o;display:grid;grid-template-columns:24px 1fr;gap:8px;align-items:center}
.exo-ord li::before{content:counter(o);font-weight:800;color:var(--sky);text-align:center}.exo-ord li.vide{display:block;color:var(--soft);text-align:center}.exo-ord li.vide::before{content:none}.exo-ord small{display:block;color:var(--ko)}
.exo-in{width:100%;font:inherit;font-size:1.05rem;padding:11px;border:2px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);margin-bottom:8px}
.exo-rep{margin:4px 0}
.exo-fb{border-radius:16px;padding:12px 14px;margin:16px 0 14px;border:2px solid;display:flex;gap:12px;align-items:flex-start}.exo-fb b{font-family:var(--display);font-size:1.1rem}.exo-fb p{margin:4px 0 0}
.exo-fb.ok{background:var(--ok-bg);border-color:var(--ok)}.exo-fb.mid{background:var(--t-warn-bg);border-color:var(--t-warn)}.exo-fb.ko{background:var(--ko-bg);border-color:var(--ko)}
.exo .btn{margin:6px 0 0}
.exo-carte{border:2px dashed var(--sky);border-radius:18px;padding:22px 14px;text-align:center;margin-bottom:8px}.exo-carte .rc{font-family:var(--display);font-size:1.3rem}.exo-carte .vs{margin-top:10px;padding-top:10px;border-top:2px dashed var(--line);font-weight:700}
.exo-fin{text-align:center}.exo-fin b{font-family:var(--display);font-size:1.3rem;display:block}.exo-fin .pc{font-family:var(--display);font-weight:800;font-size:2.2rem;color:var(--ogre-d)}.exo-fin p{margin:0 0 8px;color:var(--soft)}
.exo-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px}.exo-acts .btn{margin:0}
.exo-full{position:fixed;inset:0;z-index:75;background:var(--paper);overflow:auto;padding:12px 16px calc(24px + env(safe-area-inset-bottom,0px))}
.exo-full-in{max-width:620px;margin:0 auto}.exo-full-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.exo-full-top b{font-family:var(--display);font-size:1.25rem}
.exo-full .exo{padding:18px}.exo-full .exo-q{font-size:1.2rem}
.g-exo{margin:4px 0}
.g-audio{display:flex;gap:10px;align-items:flex-start;background:var(--card);border:2px solid var(--sky);border-radius:16px;padding:10px}
.g-audio-play{width:44px;height:44px;border-radius:50%;border:0;background:var(--sky);color:#fff;font-size:1.1rem;flex:none;cursor:pointer}
.g-audio b{display:block}.g-audio details{color:var(--soft);font-size:.9rem}.g-audio summary{cursor:pointer}

/* En-tête de la page de connexion */
.l-head{margin:-12px -16px 14px;padding:18px 16px 14px;background:linear-gradient(160deg,var(--ogre),var(--ogre-d));color:#fff;border-radius:0 0 24px 24px;box-shadow:0 6px 18px rgba(62,127,49,.25)}
.l-brand{display:flex;align-items:center;gap:12px}
.l-logo{width:52px;height:52px;flex:none;background:#fff;border-radius:16px;display:grid;place-items:center;overflow:hidden;box-shadow:0 3px 0 rgba(0,0,0,.15)}
.l-logo svg{width:46px;height:46px}
.l-brand b{display:block;font-family:var(--display);font-size:1.7rem;line-height:1}
.l-brand small{display:block;opacity:.9;font-weight:600;margin-top:4px}
.l-pts{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0}
.l-pts li{background:rgba(255,255,255,.18);border-radius:999px;padding:4px 10px;font-size:.85rem;font-weight:700}
.dz-txt{font-weight:700}.dz{background:var(--ko-bg);color:var(--ko);border-radius:5px;padding:0 3px;text-decoration:underline wavy}

/* mission repliée : une ligne sous le calendrier */
.mi-mini{position:relative;width:100%;display:grid;grid-template-columns:44px 1fr 18px;gap:10px;align-items:center;text-align:left;border:2px solid var(--ogre);background:color-mix(in srgb,var(--ogre) 10%,var(--sheet));border-radius:18px;padding:8px 12px 12px;margin:12px 0 16px;color:var(--ink);cursor:pointer;overflow:hidden}
.mi-mini .f .ogre{width:44px;height:44px}
.mi-mini .tx{display:flex;flex-direction:column;min-width:0}
.mi-mini b{font-family:var(--display);font-size:1.02rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mi-mini small{color:var(--soft);font-weight:700;font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mi-mini .chev{font-size:1.6rem;color:var(--ogre-d);font-weight:800}
.mi-mini .mi-bar{position:absolute;left:0;right:0;bottom:0;height:4px;margin:0;border-radius:0}
.mi-mini.m-angry,.mi-mini.m-cry,.mi-mini.m-sad{border-color:var(--ko);background:color-mix(in srgb,var(--ko) 7%,var(--sheet))}
.mi-mini.m-angry small,.mi-mini.m-cry small,.mi-mini.m-sad small{color:var(--ko)}
.mi{position:relative;margin-top:12px}
.mi-close{position:absolute;right:10px;top:10px;border:0;background:var(--sheet);border-radius:50%;width:32px;height:32px;font-weight:800;color:var(--ogre-d)}
/* formules (KaTeX) : même taille que le texte, jamais de débordement sur téléphone */
.katex{font-size:1.08em;line-height:1.2}
.katex-display{margin:.5em 0;overflow-x:auto;overflow-y:hidden;padding:2px 0}
.exo-ch button .katex,.tr .katex{font-size:1.2em}
.exo-ch button{min-height:52px}

.exo-face{flex:none;width:52px;height:52px;display:block}
.exo-face .ogre{width:52px;height:52px}
.exo-face.big{width:96px;height:96px;margin:0 auto 8px}.exo-face.big .ogre{width:96px;height:96px}
.exo-fbt{min-width:0;flex:1}.exo-fbt p{line-height:1.45}
/* notes sous la moyenne : fond rosé */
.n-card.bad{background:color-mix(in srgb,var(--t-crit) 7%,var(--sheet));border-color:color-mix(in srgb,var(--t-crit) 35%,var(--line))}
.n-card.bad.big{border-color:color-mix(in srgb,var(--t-crit) 55%,var(--line))}
/* onglet Moi : une seule couleur (le vert de Grignon), le rouge seulement pour ce qui est faible */
.moi-load{display:flex;gap:12px;align-items:center;color:var(--soft);padding:24px 4px}.moi-load .gh{width:48px;height:48px}
.moi-card{background:var(--sheet);border:1px solid var(--line);border-radius:22px;padding:18px;margin:0 0 18px}
.moi-card h3{font-family:var(--display);font-size:1.12rem;margin:0 0 4px}
.moi-lead{margin:0 0 18px;color:var(--soft);line-height:1.5;font-size:.95rem}.moi-lead b{color:var(--ink)}
.moi-prof{display:flex;gap:16px;align-items:center}.moi-prof .gh{width:64px;height:64px}
.moi-prof .tx{min-width:0}.moi-prof b{display:block;font-family:var(--display);font-size:1.4rem;line-height:1.1}
.moi-prof small{display:block;color:var(--soft);font-weight:700;margin-top:4px;line-height:1.35}
.moi-prof .pr{display:inline-flex;gap:6px;align-items:center;margin-top:10px;font-size:.82rem;font-weight:800;padding:5px 10px;border-radius:999px;background:var(--t-warn-bg);color:var(--t-warn)}
.moi-prof .pr.ok{background:var(--ok-bg);color:var(--ok)}
.moi-kpis{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 18px}
.moi-kpi{background:var(--sheet);border:1px solid var(--line);border-radius:20px;padding:16px;display:flex;flex-direction:column;gap:6px}
.moi-kpi .ki{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--ogre) 14%,transparent);color:var(--ogre-d);margin-bottom:4px}
.moi-kpi b{font-family:var(--display);font-size:1.5rem;line-height:1}.moi-kpi small{color:var(--soft);font-weight:700;font-size:.8rem;line-height:1.35}
.moi-tips{background:color-mix(in srgb,var(--ogre) 7%,var(--sheet));border-color:color-mix(in srgb,var(--ogre) 30%,var(--line))}
.moi-tips .th{display:flex;gap:12px;align-items:center;margin-bottom:12px}.moi-tips .th .gh{width:46px;height:46px}.moi-tips .th b{font-family:var(--display);font-size:1.1rem}
.moi-tips ul{margin:0;padding:0;list-style:none;display:grid;gap:12px}
.moi-tips li{position:relative;padding-left:18px;line-height:1.5}.moi-tips li::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--ogre)}
.moi-hours{display:flex;align-items:flex-end;gap:4px;height:110px;padding-bottom:22px}
.moi-hb{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;position:relative}
.moi-hb i{display:block;background:color-mix(in srgb,var(--ogre) 45%,transparent);border-radius:5px 5px 2px 2px}.moi-hb.best i{background:var(--ogre-d)}
.moi-hb small{position:absolute;bottom:-22px;left:50%;transform:translateX(-50%);font-size:.7rem;color:var(--soft);white-space:nowrap;font-weight:700}
.moi-row{display:grid;grid-template-columns:118px 1fr 46px;gap:12px;align-items:center;padding:9px 0}
.moi-row.mat{grid-template-columns:108px 1fr 42px 50px}
.moi-row .nm{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.moi-row b{text-align:right;font-family:var(--display);font-size:.98rem}.moi-row.best .nm,.moi-row.best b{color:var(--ogre-d)}
.mb{display:block;height:8px;border-radius:9px;background:color-mix(in srgb,var(--line) 70%,transparent);overflow:hidden}
.mb i{display:block;height:100%;border-radius:9px;background:var(--ogre)}.mb i.low{background:color-mix(in srgb,var(--t-crit) 75%,#fff)}
.moi-row .moy{font-weight:800;color:var(--soft);text-align:right;font-size:.85rem}.moi-row .moy.bad{color:var(--t-crit)}
.moi-sems{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.moi-sem{display:grid;grid-template-rows:20px 100px auto auto;justify-items:center;gap:6px;text-align:center}
.moi-sem .v{font-family:var(--display);font-weight:800;font-size:.92rem;color:var(--soft)}.moi-sem.now .v{color:var(--ink)}
.moi-sem .col{height:100px;width:100%;max-width:42px;display:flex;align-items:flex-end;background:color-mix(in srgb,var(--line) 45%,transparent);border-radius:10px;overflow:hidden}
.moi-sem .col i{display:block;width:100%;background:color-mix(in srgb,var(--ogre) 50%,transparent);border-radius:10px 10px 0 0}.moi-sem.now .col i{background:var(--ogre-d)}
.moi-sem small{font-size:.72rem;color:var(--soft);font-weight:700;line-height:1.25}.moi-sem small.m{color:var(--ink)}
.moi-sait{list-style:none;margin:10px 0 16px;padding:0;display:grid;gap:12px}
.moi-sait li{display:grid;grid-template-columns:22px 1fr;gap:8px;line-height:1.45}.moi-sait i{color:var(--ogre-d);margin-top:2px}
.moi-priv{margin:0;font-size:.84rem;color:var(--soft);line-height:1.5;padding-top:12px;border-top:1px dashed var(--line)}
.moi-out{margin:28px 0 8px;display:flex;flex-direction:column;gap:12px;align-items:stretch}
.moi-logout{background:var(--sheet)!important;color:var(--ko)!important;border:2px solid var(--ko)!important;box-shadow:none!important;font-size:1.05rem}
.d-astuce{display:grid;grid-template-columns:22px 1fr;gap:8px;margin:14px 0 0;padding:12px;border-radius:14px;background:color-mix(in srgb,var(--sun) 16%,var(--sheet));line-height:1.45;font-size:.92rem}.d-astuce i{color:#9a6a00;margin-top:2px}
/* ---------- jeux du lecteur d'exercices ---------- */
.exo-aide{color:var(--soft);font-weight:700;margin:6px 0 12px;line-height:1.45}.exo-aide.c{text-align:center}
.exo-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.exo-grid button,.exo-phrase button,.exo-lettres button,.exo-clavier button,.chip{border:2px solid var(--line);background:var(--sheet);border-radius:14px;font-weight:800;color:var(--ink);cursor:pointer;transition:transform .08s}
.exo-grid button{min-height:58px;padding:10px;font-size:1.05rem}
.exo-grid button:active,.exo-phrase button:active,.exo-lettres button:active,.exo-clavier button:active,.chip:active{transform:scale(.96)}
.exo-grid .good,.chip.ok,.exo-phrase .ok,.exo-clavier .ok{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.exo-grid .bad,.chip.ko,.exo-phrase .ko,.exo-clavier .ko{background:var(--ko-bg);border-color:var(--ko);color:var(--ko)}
.exo-grid .dim{opacity:.5}
.exo-phrase{line-height:2.6;margin:6px 0 14px}.exo-phrase button{padding:6px 10px;font-size:1.05rem}
.exo-phrase .sel{background:color-mix(in srgb,var(--sky) 18%,var(--sheet));border-color:var(--sky)}
.exo-phrase .rate{border-style:dashed;border-color:var(--t-warn);background:var(--t-warn-bg)}
.exo-legende{display:flex;gap:12px;font-size:.8rem;font-weight:800;margin:0 0 8px}.exo-legende span{padding:2px 8px;border-radius:8px}
.exo-legende .ok{background:var(--ok-bg);color:var(--ok)}.exo-legende .rate{background:var(--t-warn-bg);color:#8a5a00}.exo-legende .ko{background:var(--ko-bg);color:var(--ko)}
.exo-pool{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;min-height:44px}.exo-pool .vide{color:var(--soft);font-weight:700;padding:10px 0}
.chip{padding:8px 14px;font-size:1rem}.chip.sel{border-color:var(--sky);background:color-mix(in srgb,var(--sky) 18%,var(--sheet));transform:translateY(-2px)}
.exo-boites{display:grid;gap:12px;margin-bottom:14px}
.boite{border:2px dashed var(--line);border-radius:16px;padding:12px;min-height:70px;transition:border-color .15s,background .15s}
.boite.cible{border-color:var(--sky);background:color-mix(in srgb,var(--sky) 7%,transparent)}
.boite b{display:block;font-family:var(--display);margin-bottom:8px}.boite div{display:flex;flex-wrap:wrap;gap:8px}
.exo-mot{display:flex;flex-wrap:nowrap;gap:5px;justify-content:center;margin:10px 0 16px}
.exo-mot .case{flex:1 1 0;max-width:38px;min-width:0;height:46px;border-bottom:3px solid var(--ink);display:grid;place-items:center;font-family:var(--display);font-size:1.5rem;font-weight:800}
.exo-mot .case.ok{color:var(--ok);border-color:var(--ok)}.exo-mot .case.ko{color:var(--ko);border-color:var(--ko)}.exo-mot .esp{width:16px}
.exo-lettres{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:12px}
.exo-lettres button{width:50px;height:54px;font-family:var(--display);font-size:1.4rem}.exo-lettres button:disabled{opacity:.25}
.exo-clavier{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;margin-bottom:8px}
.exo-clavier button{height:44px;padding:0;font-size:1rem}.exo-clavier button:disabled{opacity:.8}
.exo-vies{text-align:center;color:var(--sun);font-size:1.2rem;margin:0 0 12px}.exo-vies .perdu{color:var(--line)}.exo-vies small{display:block;color:var(--soft);font-size:.82rem;font-weight:700;margin-top:4px}
.exo-droite{padding:34px 14px 8px;margin-bottom:12px}
.exo-droite .ligne{position:relative;height:4px;background:var(--ink);border-radius:2px;margin-bottom:22px}
.exo-droite .tick{position:absolute;top:-8px;width:2px;height:20px;background:var(--ink);transform:translateX(-1px)}.exo-droite .tick.fort{height:26px;top:-11px;width:3px}
.exo-droite .lab{position:absolute;top:20px;transform:translateX(-50%);font-family:var(--display);font-weight:800}
.exo-droite .curseur{position:absolute;top:-30px;width:24px;height:24px;transform:translateX(-50%);background:var(--sky);border-radius:50% 50% 50% 0;rotate:-45deg;box-shadow:0 2px 6px rgba(0,0,0,.25);transition:left .05s}
.exo-droite .curseur.ok{background:var(--ok)}.exo-droite .curseur.ko{background:var(--ko)}
.exo-droite .vrai{position:absolute;top:-14px;width:6px;height:32px;background:var(--ok);border-radius:3px;transform:translateX(-50%)}
.exo-droite input{width:100%;height:44px;margin-top:4px;accent-color:var(--sky)}
.exo-memory{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:8px}
.mcard{aspect-ratio:3/4;border:0;border-radius:14px;background:linear-gradient(150deg,var(--ogre),var(--ogre-d));color:#fff;font-size:1.6rem;display:grid;place-items:center;box-shadow:0 3px 0 rgba(0,0,0,.15);cursor:pointer;padding:6px}
.mcard.vis{background:var(--sheet);color:var(--ink);border:2px solid var(--line);font-size:.98rem;font-weight:800;line-height:1.25}
.mcard.ok{border-color:var(--ok);background:var(--ok-bg);color:var(--ok)}
.exo-dire{background:color-mix(in srgb,var(--sky) 8%,var(--sheet));border-radius:16px;padding:16px;margin-bottom:14px;text-align:center}
.exo-dire .phrase{font-family:var(--display);font-size:1.25rem;margin:0 0 12px;line-height:1.35}
.exo-micro{display:block;margin:4px auto 4px;width:76px;height:76px;border-radius:50%;border:0;background:var(--berry,#C42E63);color:#fff;font-size:2rem;box-shadow:0 5px 0 rgba(0,0,0,.18)}
.exo-micro.rec{animation:pulse 1s infinite;background:var(--ko)}.exo-micro.busy{opacity:.6}
@keyframes pulse{50%{transform:scale(1.07)}}
/* notification : en haut, sur une ligne si possible, jamais par-dessus les boutons */
.h-toast{bottom:auto!important;top:calc(14px + env(safe-area-inset-top,0px));width:max-content;max-width:calc(100vw - 32px);text-align:center;line-height:1.35;border-radius:16px!important;z-index:200!important}
/* ---------- respiration : plus d'air entre les blocs, cartes moins tassées (passe UX du 20/10) ---------- */
body{line-height:1.5}
.h-sheet{padding:24px 18px 16px}
.h-month{margin-bottom:14px}.h-week{gap:6px;margin-bottom:26px}
.h-q{font-size:1.25rem;margin:0 0 14px}
.h-chips{gap:10px;margin-bottom:20px}
.h-list{gap:16px}
.h-card{padding:16px;gap:14px;border-radius:22px}
.h-card h3{margin:8px 0 4px}
.h-sub{margin:30px 0 14px}
.h-prep{margin-top:28px}
.d-box{padding:18px;margin-bottom:18px;border-radius:20px}.d-box h3{margin:0 0 10px}
.d-acts{gap:12px;margin-bottom:18px}.d-act{padding:16px 14px;gap:6px}
.need-list{gap:16px}
.n-card{padding:16px;border-radius:22px}.n-moy{margin-top:6px}.n-ask{margin:12px 0 0;font-weight:600;font-size:.95rem;line-height:1.45}.n-acts{margin-top:12px}
.a-btn{padding:14px 16px;margin-bottom:12px}
.blk{padding:18px;margin-bottom:18px}.top{margin-bottom:20px}.fhero{padding:22px;margin-bottom:20px}.qcard{padding:22px;margin-bottom:20px}
.btn{margin-bottom:12px}
.exo{padding-bottom:18px}.exo-q{margin:4px 0 16px;line-height:1.4}.exo-ch{gap:12px}.exo-top{margin-bottom:8px}.exo-bar{margin-bottom:16px}
.g-msg{padding:10px 14px;line-height:1.45}
/* réponse choisie mais pas encore validée : l'élève peut encore changer d'avis */
.exo-ch button.sel,.exo-grid button.sel,.opt.sel{border-color:var(--sky)!important;background:color-mix(in srgb,var(--sky) 14%,var(--sheet))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--sky) 25%,transparent)}
.exo-valide,#qVal{margin-top:16px}
.exo-valide:disabled,#qVal:disabled,.exo-ok2:disabled{opacity:.45;box-shadow:none}
.moi-row .nm{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25;overflow-wrap:anywhere}
.moi-try{display:grid;grid-template-columns:22px 1fr;gap:8px;margin:16px 0 0;padding:12px 14px;border-radius:14px;background:color-mix(in srgb,var(--sun) 14%,var(--sheet));line-height:1.45;font-size:.92rem}.moi-try i{color:#9a6a00;margin-top:2px}
/* ---------- lecteur d'exercices : de l'air partout (passe UX) ---------- */
.exo-ch{gap:12px}
.exo-ch button,.exo-bank button,.exo-pool button,.exo-ord button{padding:14px 16px;min-height:52px;line-height:1.35;border-radius:16px}
.exo-ord{gap:12px;margin:0 0 20px}
.exo-ord li{gap:12px;grid-template-columns:28px 1fr}
.exo-ord li::before{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--sky) 14%,transparent)}
.exo-ord li.vide{padding:18px;border:2px dashed var(--line);border-radius:16px}
.exo-bank,.exo-pool{gap:10px;margin:12px 0 20px}
.exo-rel{gap:14px;margin-bottom:20px}
.rel-row{gap:12px!important}
.exo-trous{line-height:2.5;margin:0 0 18px}
.exo-in{padding:14px;margin-bottom:16px}
.exo-rep{margin:10px 0}
.exo-carte{padding:28px 18px;margin-bottom:20px}
.exo-grid{gap:12px;margin-bottom:4px}
.exo-boites{gap:16px;margin-bottom:20px}
.exo-phrase{margin:10px 0 20px}
.exo-lettres{gap:10px;margin-bottom:20px}
.exo-clavier{gap:6px;margin-bottom:16px}
.exo-memory{gap:12px;margin-bottom:16px}
/* chaque bouton d'action est séparé de ce qui précède */
.exo .btn,.exo-host .btn{margin-top:20px;margin-bottom:0}
.exo .btn+.btn,.exo-host .btn+.btn{margin-top:12px}
.exo-fb{margin:20px 0 0}
.exo-fb+.btn{margin-top:16px}
.exo-bon{margin:8px 0 4px;padding-left:22px;display:grid;gap:6px;line-height:1.4}.exo-fbt p:empty{display:none}
.n-mrow{gap:12px!important;padding:6px 0;align-items:center}.n-mrow span:first-child{white-space:normal!important;overflow:visible!important;line-height:1.25;font-weight:700}
.n-moys .m-bar{height:8px}
/* ---------- écran « accord d'un parent » ---------- */
.acc{max-width:520px;margin:0 auto;padding:28px 18px 40px}
.acc-h{display:flex;gap:16px;align-items:center;margin-bottom:22px}.acc-h .ogre{width:84px;height:84px;flex:none}
.acc-h h1{font-family:var(--display);font-size:1.5rem;margin:0 0 6px}.acc-h p{margin:0;line-height:1.5;color:var(--soft)}.acc-h p b{color:var(--ink)}
.acc-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:color-mix(in srgb,var(--line) 50%,transparent);padding:5px;border-radius:16px;margin-bottom:16px}
.acc-tabs button{border:0;background:transparent;border-radius:12px;padding:12px 8px;font-weight:800;color:var(--soft);font:inherit;font-weight:800;cursor:pointer}
.acc-tabs button[aria-selected="true"]{background:var(--sheet);color:var(--ink);box-shadow:0 2px 6px rgba(0,0,0,.08)}
.acc-card{background:var(--sheet);border:1.5px solid var(--line);border-radius:22px;padding:20px;margin-bottom:18px}
.acc-l{font-weight:700;line-height:1.5;margin:0 0 14px;display:block}.acc-s{color:var(--soft);font-size:.9rem;margin:12px 0 0;line-height:1.45}.acc-s:empty{display:none}
.acc-qr{background:#fff;border-radius:16px;padding:12px;width:min(260px,100%);margin:0 auto;aspect-ratio:1/1;display:grid;place-items:center;color:#333}.acc-qr svg{width:100%;height:auto;display:block}
.acc-wait{display:flex;gap:10px;align-items:center;justify-content:center;color:var(--soft);font-weight:700;margin:6px 0 22px}
.dotw{display:inline-flex;gap:4px}.dotw i{width:7px;height:7px;border-radius:50%;background:var(--ogre);animation:g-wave 1.2s ease-in-out infinite}.dotw i:nth-child(2){animation-delay:.15s}.dotw i:nth-child(3){animation-delay:.3s}
@keyframes g-wave{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-5px);opacity:1}}
.acc-plus{background:color-mix(in srgb,var(--ogre) 7%,var(--sheet));border-radius:18px;padding:14px 16px}
.acc-plus summary{font-weight:800;cursor:pointer}.acc-plus ul{margin:12px 0;padding-left:20px;display:grid;gap:8px;line-height:1.45}.acc-plus a{font-weight:700;color:var(--ogre-d)}

.acc-t{font-family:var(--display);font-size:1.15rem;margin:0 0 12px}
.acc-li{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:10px}.acc-li li{display:grid;grid-template-columns:22px 1fr;gap:10px;line-height:1.45}
.acc-li.oui i{color:var(--ogre-d);margin-top:3px}.acc-li.non i{color:var(--ko);margin-top:3px}
.acc-c{display:grid;grid-template-columns:26px 1fr;gap:10px;align-items:start;padding:12px 0;font-weight:700;cursor:pointer;border-top:1px solid var(--line)}
.acc-c input{width:22px;height:22px;margin:2px 0 0;accent-color:var(--ogre-d)}
.acc-card a{color:var(--ogre-d);font-weight:700}
.moi-legal{text-align:center;font-size:.85rem;color:var(--soft);margin:18px 0 0}.moi-legal a{color:var(--soft);font-weight:700}

.ecoles{display:grid;gap:8px;margin-top:14px;max-height:340px;overflow:auto}
.ecoles button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1.5px solid var(--line);background:var(--sheet);border-radius:14px;padding:12px 14px;color:var(--ink);cursor:pointer}
.ecoles button small{color:var(--soft)}
#pTel label{display:block;margin:10px 0 6px}
.pin-in{font-family:var(--display);letter-spacing:4px;font-size:1.15em;background:var(--paper);border:2px dashed var(--line);border-radius:8px;padding:0 6px}
#tOuv{text-align:center;text-decoration:none}
/* lecteur du tuto en images (écran de connexion) */
.tuto{margin:14px 0 4px}
.tuto-vue{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;touch-action:pan-y;aspect-ratio:16/10;display:grid;place-items:center}
.tuto-vue img{display:block;width:100%;height:100%;object-fit:contain}
.tuto-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.tuto-nav button{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--sheet);color:var(--ink);display:grid;place-items:center;font-size:1.1rem;cursor:pointer}
#pTutoN{display:flex;align-items:center;gap:6px}#pTutoN i{width:8px;height:8px;border-radius:50%;background:var(--line)}#pTutoN i.on{background:var(--ogre-d);width:20px;border-radius:6px}
#pTutoN b{margin-left:6px;font-size:.85rem;color:var(--soft)}
.tuto-svg{width:100%;height:100%}.tuto-svg svg{display:block;width:100%;height:100%}
.plat-t{font-weight:800;margin:0 0 12px}.plat-b{display:grid;grid-template-columns:1fr 1fr;gap:12px}.plat-b .btn{margin:0}
.plat-chg{text-align:center;margin:0 0 12px}
#pEd label{display:block;margin:10px 0 6px}
.ecoles{display:grid;gap:8px;margin-top:4px}.ecoles button{display:block;text-align:left;border:1.5px solid var(--line);background:var(--sheet);border-radius:14px;padding:12px 14px;color:var(--ink);font-weight:700;cursor:pointer}
.plat-c{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:112px;border:2px solid var(--line);background:#fff;border-radius:18px;padding:14px 10px;cursor:pointer;color:var(--ink)}
.plat-c:active{transform:scale(.97)}.plat-c:focus-visible{outline:3px solid var(--sky);outline-offset:2px}
.plat-logo{height:52px;width:auto;max-width:100%;object-fit:contain}.plat-logo.large{height:36px}
.plat-c small{font-size:.8rem;font-weight:700;color:var(--soft)}
.acc-mail{border-top:1px solid var(--line);padding:12px 0 4px;margin-top:4px}.acc-mail summary{font-weight:700;cursor:pointer;line-height:1.4}.acc-mail summary small{color:var(--soft);font-weight:600}
.acc-mail .exo-in{margin:12px 0 10px}.acc-freq{display:flex;gap:16px;flex-wrap:wrap;font-weight:600}.acc-freq input{accent-color:var(--ogre-d);width:18px;height:18px;vertical-align:-3px;margin-right:6px}
.demo-z{text-align:center;margin:18px 0 6px}.demo-z .btn{margin:0 0 6px}.demo-z .fine{color:var(--soft);margin:0}
.ed-t{display:flex;align-items:center;gap:10px;margin:0 0 10px}.ed-logo{width:34px;height:34px;object-fit:contain}
.ed-l{font-weight:600;color:var(--soft)}
.moi-rap{display:flex;align-items:center;justify-content:space-between;gap:12px}.moi-rap .btn{width:auto;margin:0;flex:none}

/* boutons de validation : jamais collés au bord de la carte */
.exo-ok,.exo-ok2,.exo-valide,.exo-next{display:block;width:100%;margin-top:18px}
/* relier : pastilles à la place des menus déroulants */
.rel-row{align-items:start}
.rel-row .rel-g{padding-top:11px}
.rel-pick{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:0;min-height:46px;padding:10px 14px;border-radius:999px;border:2px dashed color-mix(in srgb,var(--ogre) 45%,var(--line));background:color-mix(in srgb,var(--ogre) 5%,var(--card));color:var(--soft);font:inherit;font-weight:700;text-align:left;cursor:pointer;transition:background .15s,border-color .15s,transform .1s}
.rel-pick span{min-width:0;overflow-wrap:anywhere}
.rel-pick i{flex:none;transition:transform .2s;opacity:.7}
.rel-pick:active{transform:scale(.98)}
.rel-pick.pris{border-style:solid;border-color:var(--ogre);background:color-mix(in srgb,var(--ogre) 13%,var(--card));color:var(--ink)}
.rel-pick.ouv{border-style:solid;border-color:var(--ogre-d,var(--ogre));box-shadow:0 0 0 4px color-mix(in srgb,var(--ogre) 18%,transparent)}
.rel-pick.ouv i{transform:rotate(180deg)}
.rel-opts{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;padding:12px;margin-top:2px;border-radius:18px;background:color-mix(in srgb,var(--ogre) 7%,var(--paper));animation:relIn .18s ease}
.rel-opts button{border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:9px 14px;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 2px 0 var(--line)}
.rel-opts button:active{transform:translateY(1px);box-shadow:none}
.rel-opts button.sel{background:var(--ogre);border-color:var(--ogre);color:#fff;box-shadow:none}
.rel-opts button.deja{opacity:.5}
@keyframes relIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){.rel-opts{animation:none}.rel-pick i{transition:none}}

/* glisser-déposer (classer) */
.exo-pool [data-ch],.boite [data-ch]{touch-action:none;cursor:grab}
.chip.tire{opacity:.3}
.chip.fantome{position:fixed;left:0;top:0;z-index:500;pointer-events:none;margin:0;box-shadow:0 10px 24px rgba(0,0,0,.22);opacity:.95}
.boite.survol,.exo-pool.survol{border-color:var(--ogre);border-style:solid;background:color-mix(in srgb,var(--ogre) 12%,transparent);transform:scale(1.02)}
.boite{transition:border-color .15s,background .15s,transform .15s}
.exo-pool{border-radius:16px;transition:background .15s}
/* relier : la réponse choisie tient sur une ligne (début + « … ») ; le texte complet reste lisible dans la liste */
.rel-pick span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.exo-rel .rel-row{grid-template-columns:fit-content(38%) minmax(0,1fr)}

/* glisser-déposer (ordre) : trait d'insertion */
.exo-pool [data-k],.exo-ord [data-p]{touch-action:none;cursor:grab}
.exo-ord li{position:relative}
.exo-ord li.survol::after{content:"";position:absolute;left:36px;right:0;top:-8px;height:4px;border-radius:4px;background:var(--ogre)}
.exo-ord li.survol.apres::after{top:auto;bottom:-8px}
.exo-ord.survol{outline:2px dashed var(--ogre);outline-offset:6px;border-radius:12px}
button.fantome{position:fixed;left:0;top:0;z-index:500;pointer-events:none;margin:0;box-shadow:0 10px 24px rgba(0,0,0,.22);opacity:.95}
.exo-ord button.tire,.exo-pool button.tire{opacity:.3}
/* semaine : défile à l'horizontale si l'écran est trop étroit (le dimanche ne sort plus), sans faire bouger la page */
.h-week{display:flex;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;padding:2px 2px 4px;margin-left:-2px;margin-right:-2px}
.h-week::-webkit-scrollbar{display:none}
.h-week .h-day{flex:1 0 44px;scroll-snap-align:center}

/* lisibilité (clair et sombre) : texte blanc seulement sur des fonds assez foncés */
.h-chip[aria-pressed="true"]{background:#2471AE;border-color:#2471AE}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .exo-top{color:var(--ogre)}
  :root:not([data-theme="light"]) .moi-prof .pr.ok{color:#8FD9A8}}
:root[data-theme="dark"] .exo-top{color:var(--ogre)}
:root[data-theme="dark"] .moi-prof .pr.ok{color:#8FD9A8}
/* memory : cartes plus compactes, bien espacées, jamais collées au bord */
.exo-memory{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:12px;margin:6px 0 16px}
.mcard{aspect-ratio:auto;min-height:78px;font-size:1.3rem;padding:10px 8px}
.mcard.vis{font-size:.9rem;overflow-wrap:anywhere;hyphens:auto}
/* barre du bas : 5 onglets (Accueil · Notes · Grignon · Réviser · Moi) */
.h-nav-in{grid-template-columns:repeat(5,1fr)}
.h-tab{font-size:.72rem}
.mcard .mdos{display:grid;place-items:center;width:100%;height:100%}.mcard .mdos svg{width:46px;height:46px;filter:drop-shadow(0 2px 0 rgba(0,0,0,.15))}

/* exercice sur la feuille */
.fe-consigne{white-space:pre-line;font-size:1.08rem;font-weight:700;line-height:1.5;background:var(--paper);border:2px dashed var(--line);border-radius:16px;padding:14px;margin-bottom:14px}
.fe-flash{display:flex;align-items:center;gap:12px;border-radius:16px;padding:12px 14px;margin-bottom:14px;background:#FFE14D;color:#2A2300;border:3px solid #F2B705;animation:feFlash 1.4s ease-in-out infinite}
.fe-flash .i{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:#2A2300;color:#FFE14D;font-size:1.3rem}
.fe-flash b{display:block;font-family:var(--display);font-size:1.1rem;text-transform:uppercase;letter-spacing:.02em}.fe-flash small{display:block;font-weight:700;margin-top:2px}
@keyframes feFlash{0%,100%{box-shadow:0 0 0 0 rgba(242,183,5,.7)}50%{box-shadow:0 0 0 8px rgba(242,183,5,0);transform:scale(1.015)}}
@media (prefers-reduced-motion: reduce){.fe-flash{animation:none}}
.fe-photo{display:flex!important;align-items:center;justify-content:center;gap:8px;width:100%;margin:6px 0 10px;cursor:pointer}
.fe-passer{display:block;margin:0 auto;color:var(--soft)}
.fe-err{background:var(--ko-bg);color:var(--ink);border-radius:14px;padding:10px 12px;margin:0 0 12px;line-height:1.4;font-weight:700}
.fe-wait{text-align:center;color:var(--soft);font-weight:700;margin:14px 0}
.fe-etapes{list-style:none;padding:0;margin:0 0 10px;display:grid;gap:6px}.fe-etapes li{display:flex;gap:8px;align-items:flex-start;line-height:1.4}
.fe-etapes li.ok i{color:var(--ok)}.fe-etapes li.ko i{color:var(--ko)}
.fe-indice{background:color-mix(in srgb,var(--sun,#FFC83D) 22%,var(--card));border-radius:12px;padding:10px 12px}
.fe-sol summary{cursor:pointer;font-weight:800;color:var(--soft)}
/* accueil de connexion : tête de Grignon plus petite, bulle compacte */
.hello .ogre{width:72px;height:72px}.hello .bubble{max-width:none;flex:1}

/* cartes de l'accueil : le texte prend toute la largeur, icône sur fond coloré de la matière */
.h-card{display:block;width:100%;padding:14px 16px 14px 18px;border-left:6px solid var(--c,var(--ogre));background:color-mix(in srgb,var(--c,var(--ogre)) 5%,var(--sheet))}
.h-top{display:flex;align-items:center;gap:10px;min-width:0}
.h-card .h-ico{flex:none;width:40px;height:40px;border-radius:12px;font-size:1.25rem;background:color-mix(in srgb,var(--c,var(--ogre)) 28%,var(--sheet));color:color-mix(in srgb,var(--c,var(--ogre)) 75%,#000)}
.h-mat{flex:1;min-width:0;font-size:.82rem;font-weight:800;color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.h-card .go{flex:none;margin-left:auto}
.h-card h3{display:block;-webkit-line-clamp:unset;overflow:visible;margin:10px 0 4px;font-size:1.02rem;line-height:1.35}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .h-card .h-ico{color:color-mix(in srgb,var(--c,var(--ogre)) 55%,#fff)}}
/* cartes de l'accueil façon tuiles (comme Réviser) : bordure fine tout autour, fond teinté, ombre « bouton » en bas, pas de liseré sur le côté */
.h-card{border:2px solid color-mix(in srgb,var(--c,var(--ogre)) 40%,var(--line));border-left-width:2px;border-radius:22px;background:color-mix(in srgb,var(--c,var(--ogre)) 10%,var(--card));box-shadow:0 4px 0 color-mix(in srgb,var(--c,var(--ogre)) 28%,var(--line));padding:14px 16px;margin-bottom:4px;transition:transform .08s,box-shadow .08s}
.h-card:active{transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,var(--c,var(--ogre)) 28%,var(--line))}
.h-card.done{opacity:.6}

/* cartes de l'onglet Notes : même style de tuile que l'accueil (bordure fine, fond teinté, ombre bouton) ; notes à retravailler en rose */
.n-card{--cc:var(--c,var(--ogre));border:2px solid color-mix(in srgb,var(--cc) 38%,var(--line));border-radius:22px;background:color-mix(in srgb,var(--cc) 9%,var(--card));box-shadow:0 4px 0 color-mix(in srgb,var(--cc) 26%,var(--line));margin-bottom:6px}
.n-card.bad,.n-card.bad.big{--cc:var(--t-crit)}
.n-card .h-ico{border-radius:14px;background:color-mix(in srgb,var(--c,var(--ogre)) 28%,var(--card));color:color-mix(in srgb,var(--c,var(--ogre)) 75%,#000)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .n-card .h-ico{color:#fff}}
/* Notes : intitulé de l'évaluation en entier (jusqu'à 2 lignes) */
.n-t small{white-space:normal;overflow:visible;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}
/* Notes : la note en haut à droite, l'intitulé sur toute la largeur dessous */
.n-top{grid-template-columns:44px 1fr auto}.n-top .h-ico{width:44px;height:44px;font-size:1.25rem}
.n-sous{margin-top:8px;font-weight:700;color:var(--ink);line-height:1.35}
/* exercices : jamais deux éléments collés (bouton écouter, zone de saisie, aide, boutons d'action) */
.exo .exo-play,.exo .exo-play2{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:6px 0 16px}
.exo .exo-in{margin-top:4px}
.exo .exo-aide{margin:0 0 14px}
.exo .exo-micro{margin-bottom:16px}
.exo .fe-photo{margin-bottom:16px!important}
.exo .exo-phrase{display:flex;flex-wrap:wrap;gap:8px 6px;line-height:1.3}

/* réglage de la vitesse de lecture */
.exo-vitesse{display:inline-flex;align-items:center;gap:6px;margin:-6px auto 14px;border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:7px 14px;font:inherit;font-size:.88rem;font-weight:700;cursor:pointer}
.exo-dire .exo-vitesse,.exo .exo-vitesse{display:flex;width:max-content}
.cm-vit{display:block;margin-top:10px}.cm-vit .exo-vitesse{margin:0 auto}

/* vitesse : 3 choix côte à côte */
.exo-vitesse{display:flex!important;width:max-content;max-width:100%;margin:-6px auto 16px;padding:3px;gap:3px;border:2px solid var(--line);border-radius:999px;background:var(--card)}
.exo-vitesse button{border:0;background:none;color:var(--soft);font:inherit;font-size:.86rem;font-weight:800;padding:6px 14px;border-radius:999px;cursor:pointer}
.exo-vitesse button[aria-pressed="true"]{background:var(--ogre);color:#fff}

/* Moi : le bilan de Grignon */
.moi-bilan{background:color-mix(in srgb,var(--ogre) 8%,var(--card));border:2px solid color-mix(in srgb,var(--ogre) 35%,var(--line));border-radius:24px;padding:16px;margin:0 0 20px;box-shadow:0 4px 0 color-mix(in srgb,var(--ogre) 22%,var(--line))}
.moi-bilan.vide{display:flex;gap:12px;align-items:center}.moi-bilan.vide p{margin:0;color:var(--soft);line-height:1.45}.moi-bilan .f svg{width:64px;height:64px}
.mb-head{display:flex;gap:12px;align-items:flex-start}.mb-head small{color:var(--soft);font-weight:700;font-size:.78rem}.mb-head h3{margin:2px 0 4px;font-family:var(--display);font-size:1.25rem;color:var(--ink)}.mb-head p{margin:0;line-height:1.45;color:var(--ink)}
.moi-bilan h4{margin:18px 2px 8px;font-family:var(--display);font-size:1rem;color:var(--soft)}
.mb-obj{margin-top:14px;background:var(--card);border:2px solid var(--line);border-radius:18px;padding:12px 14px}.mb-obj.ok{border-color:var(--ogre)}
.mb-obj-t{display:flex;justify-content:space-between;align-items:center}.mb-obj-t b{display:flex;gap:6px;align-items:center}.mb-obj-t span{font-weight:800;color:var(--ogre-d)}
.mb-obj p{margin:6px 0 8px;line-height:1.4}.mb-bar{height:10px;border-radius:10px;background:var(--line);overflow:hidden}.mb-bar i{display:block;height:100%;border-radius:10px;background:var(--ogre);transition:width .4s}
.mb-bravo{color:var(--ogre-d);font-weight:800;margin:8px 0 0!important}
.mb-trav{display:grid;gap:10px}
.mb-t{background:color-mix(in srgb,var(--c) 10%,var(--card));border:2px solid color-mix(in srgb,var(--c) 38%,var(--line));border-radius:18px;padding:12px 14px;box-shadow:0 3px 0 color-mix(in srgb,var(--c) 25%,var(--line))}
.mb-t-h{display:flex;gap:10px;align-items:center}.mb-t .h-ico{width:36px;height:36px;border-radius:12px;font-size:1.1rem;background:color-mix(in srgb,var(--c) 28%,var(--card));color:color-mix(in srgb,var(--c) 75%,#000)}
.mb-t .n{margin:8px 0 2px;font-weight:800;line-height:1.35}.mb-t .p{margin:0 0 10px;color:var(--soft);line-height:1.4;font-size:.92rem}.mb-t .btn{margin:0;width:100%;display:flex;align-items:center;justify-content:center;gap:8px}
.mb-forces{display:grid;gap:8px}.mb-f{display:flex;gap:10px;align-items:flex-start;background:var(--card);border-radius:14px;padding:10px 12px}.mb-f i{color:var(--sun,#E8A300);margin-top:2px}.mb-f b{display:block}.mb-f small{color:var(--soft)}
.mb-tend{display:grid;gap:6px}.mb-tn{display:grid;grid-template-columns:22px auto 1fr;gap:8px;align-items:center;background:var(--card);border-radius:12px;padding:8px 12px}.mb-tn small{color:var(--soft);text-align:right}
.mb-tn.monte i{color:var(--ogre-d)}.mb-tn.baisse i{color:var(--t-crit,#C8413B)}.mb-tn.stable i{color:var(--soft)}
.mb-hab{display:flex;gap:10px;align-items:flex-start;margin-top:14px;background:var(--card);border-radius:14px;padding:10px 12px}.mb-hab p{margin:0;line-height:1.4}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .mb-t .h-ico{color:#fff}:root:not([data-theme="light"]) .mb-obj-t span,:root:not([data-theme="light"]) .mb-bravo{color:var(--ogre)}}

/* Moi : blocs en tuiles, comme Accueil, Notes et Réviser */
.moi-card{background:color-mix(in srgb,var(--ogre) 6%,var(--card));border:2px solid color-mix(in srgb,var(--ogre) 28%,var(--line));border-radius:22px;box-shadow:0 4px 0 color-mix(in srgb,var(--ogre) 18%,var(--line))}
.moi-kpi{background:color-mix(in srgb,var(--sky,#3C9DE0) 8%,var(--card));border:2px solid color-mix(in srgb,var(--sky,#3C9DE0) 28%,var(--line));border-radius:20px;box-shadow:0 4px 0 color-mix(in srgb,var(--sky,#3C9DE0) 18%,var(--line))}
.moi-kpi .ki{background:color-mix(in srgb,var(--sky,#3C9DE0) 25%,var(--card));color:color-mix(in srgb,var(--sky,#3C9DE0) 75%,#000);border-radius:12px}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .moi-kpi .ki{color:#fff}}

/* correction visuelle : barré en rouge, juste en vert */
.exo-corr{font-size:1.08rem;line-height:1.9;margin:4px 0 10px;font-weight:700}
.dm{display:inline}.dm.faux{border-radius:6px;padding:1px 3px;background:color-mix(in srgb,var(--ko) 8%,transparent)}
del.dm,del.dl{color:var(--ko);text-decoration:line-through 2px;text-decoration-color:var(--ko);background:var(--ko-bg);border-radius:4px;padding:0 2px}
ins.dm,ins.dl{color:var(--ok);text-decoration:none;background:var(--ok-bg);border-radius:4px;padding:0 2px;font-weight:800}
.exo-bonne{display:flex;gap:8px;align-items:center;margin:0 0 12px;font-weight:800;color:var(--ok)}
/* quiz solo façon jeu : points, série, chrono */
.q-jeu{display:flex;gap:10px;justify-content:space-between;align-items:center;margin:4px 2px 8px;font-weight:800}
.q-pts{color:#7B3FD1;display:flex;gap:6px;align-items:center}.q-serie{color:#E07020;display:flex;gap:6px;align-items:center;animation:dfPulse .6s ease}
.q-chrono{position:relative;height:22px;border-radius:999px;background:var(--line);overflow:hidden;margin:0 0 14px}.q-chrono i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#7B3FD1,#C2389E);border-radius:999px;transition:width .25s linear}
.q-chrono b{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-family:var(--display);font-size:.9rem;text-shadow:0 1px 2px rgba(0,0,0,.3)}
.q-chrono.urgent i{background:linear-gradient(90deg,#E0384C,#FF7A00)}.q-chrono.urgent{animation:dfTremble .5s ease infinite}
.q-total{font-weight:800;color:#7B3FD1;margin:6px 0 0}
@media (prefers-reduced-motion: reduce){.q-chrono.urgent,.q-serie{animation:none}}
/* texte à trous : chaque trou est une petite case à bordure, bien séparée du texte et des autres (jamais collée) */
.exo-trous{line-height:2.9!important;margin:4px 0 18px!important;word-spacing:.04em}
.tr-in{display:inline-block;box-sizing:content-box;height:1.75em;line-height:1.75em;vertical-align:middle;margin:3px 7px;padding:0 10px;border:2px solid color-mix(in srgb,var(--sky) 55%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--sky) 9%,var(--card));box-shadow:0 2px 0 color-mix(in srgb,var(--sky) 30%,var(--line));font-weight:800;color:var(--ink);text-align:center;max-width:calc(100% - 20px)}
.tr-in:focus{outline:none;border-color:var(--sky);background:var(--card);box-shadow:0 0 0 3px color-mix(in srgb,var(--sky) 25%,transparent)}
.tr-in:not(:placeholder-shown){border-color:var(--ogre);background:color-mix(in srgb,var(--ogre) 10%,var(--card))}
.tr{display:inline-block;line-height:1.75em;vertical-align:middle;margin:3px 7px;padding:0 10px;border:2px solid transparent;border-radius:10px}
.tr.ok{border-color:var(--ok)}.tr.ko{border-color:var(--ko)}.tr.mid{border-color:#E8A300}
.exo-bank{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 18px}
.exo-bank button{margin:0!important}
.tr-corr{display:inline-flex;align-items:center;gap:2px;vertical-align:middle}.tr-corr s.tr{text-decoration-thickness:2px;opacity:.85;margin-right:0}.tr-corr .tr.ok{margin-left:4px}
/* trou faux : case rosée à bordure rouge, mot faux barré en rouge, bonne réponse en vert juste en dessous */
.tr-corr{display:inline-flex!important;flex-direction:column;align-items:center;gap:2px;vertical-align:middle;margin:4px 7px;padding:3px 10px 4px;border:2px solid var(--ko);border-radius:10px;background:var(--ko-bg);line-height:1.25}
.tr-corr .faux{color:var(--ko);font-weight:800;text-decoration:line-through;text-decoration-thickness:2px}
.tr-corr .faux.vide{text-decoration:none;opacity:.6}
.tr-corr .bon{color:var(--ok);font-weight:800;font-size:.95em}
/* relier : étiquettes et menus alignés en deux colonnes */
.exo-rel .rel-row{display:grid!important;grid-template-columns:minmax(64px,38%) minmax(0,1fr);align-items:center;gap:10px}
.exo-rel .rel-g{font-weight:800;line-height:1.25;word-break:break-word}
.exo-rel .rel-row>.rel-opts{grid-column:1/-1}
.exo-rel .rel-pick{width:100%;min-width:0}
/* illustration de la classe (image) : remplit le bandeau, Grignon reste visible à droite */
.h-hero img.scene-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 38%;display:block}
/* le bonjour en haut à gauche, sur la zone calme (mur/plafond) de l'illustration : il ne cache plus les élèves */
.h-hello{top:12px;bottom:auto!important;box-shadow:0 4px 12px rgba(0,0,0,.12)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .h-hello{background:rgba(20,26,52,.78);color:#fff}}
:root[data-theme="dark"] .h-hello{background:rgba(20,26,52,.78);color:#fff}
.h-hello{top:5px;padding-top:6px!important;padding-bottom:6px!important}
/* bonjour collé tout en haut, comme un onglet : fond plein, très lisible */
.h-hello{top:0!important;left:12px;border-radius:0 0 14px 14px!important;background:#fff!important;color:#16304A!important;padding:9px 14px 8px!important;box-shadow:0 4px 10px rgba(0,0,0,.14)!important;-webkit-backdrop-filter:none;backdrop-filter:none}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .h-hello{background:#1B2242!important;color:#fff!important}}
:root[data-theme="dark"] .h-hello{background:#1B2242!important;color:#fff!important}
body.h-on{margin-top:0}   /* l'illustration de la classe colle au bandeau du haut */
body:not(:has(.demo-bar)) .h-hello{top:env(safe-area-inset-top,0px)!important}
/* Moi : le rapport de la semaine en tête (ce que les parents attendent) */
.moi-rap-top{display:flex;align-items:center;gap:14px;width:100%;text-align:left;border:0;border-radius:20px;padding:16px;margin:0 0 16px;cursor:pointer;color:#fff;font:inherit;
  background:linear-gradient(135deg,#1F78B8,#7B3FD1);box-shadow:0 5px 0 #1A4F8A}
.moi-rap-top:active{transform:translateY(3px);box-shadow:0 2px 0 #1A4F8A}
.moi-rap-top .i{flex:none;width:48px;height:48px;border-radius:14px;background:rgba(255,255,255,.2);display:grid;place-items:center;font-size:1.5rem}
.moi-rap-top .tx{flex:1;min-width:0}.moi-rap-top b{display:block;font-family:var(--display);font-size:1.1rem}.moi-rap-top small{display:block;opacity:.92;line-height:1.35;margin-top:2px}
.moi-rap-top .go{flex:none;font-weight:800;background:#fff;color:#1F78B8;border-radius:999px;padding:6px 12px;display:inline-flex;align-items:center;gap:4px}
/* Moi : carte « Mon rapport de la semaine » (sous le profil), dans le style des tuiles */
.moi-rap-top{display:none}
.moi-rap2{display:flex;align-items:center;gap:14px;width:100%;text-align:left;font:inherit;color:var(--ink);cursor:pointer;margin:0 0 16px;padding:14px 14px 14px 12px;
  background:linear-gradient(135deg,color-mix(in srgb,#1F78B8 9%,var(--card)),var(--card) 70%);border:2px solid color-mix(in srgb,#1F78B8 35%,var(--line));border-radius:20px;box-shadow:0 4px 0 color-mix(in srgb,#1F78B8 30%,var(--line));transition:transform .1s}
.moi-rap2:active{transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,#1F78B8 30%,var(--line))}
.moi-rap2 .doc{flex:none;width:46px;height:54px;filter:drop-shadow(0 3px 4px rgba(31,120,184,.18));transform:rotate(-4deg)}
.moi-rap2 .tx{flex:1;min-width:0}.moi-rap2 b{display:block;font-family:var(--display);font-size:1.05rem;line-height:1.2}.moi-rap2 small{display:block;color:var(--soft);font-weight:700;line-height:1.35;margin-top:3px}
.moi-rap2 .go{flex:none;display:inline-flex;align-items:center;gap:6px;background:#1F78B8;color:#fff;font-weight:800;font-size:.88rem;border-radius:999px;padding:8px 14px;box-shadow:0 3px 0 #155A8C;white-space:nowrap}
.moi-rap2 .go{width:42px;height:42px;padding:0;border-radius:50%;justify-content:center;font-size:1.1rem}
.moi-rap2 .go:not(:has(i)){width:auto;padding:0 12px;border-radius:999px;font-size:.8rem}   /* pendant la préparation du PDF */
.moi-rap2.charge .go i{opacity:0}
.moi-rap2.charge .go{position:relative}
.moi-rap2.charge .go::after{content:"";position:absolute;inset:11px;border-radius:50%;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;animation:rapTourne .8s linear infinite}
@keyframes rapTourne{to{transform:rotate(360deg)}}
/* Moi : le suivi de Grignon */
.moi-suivi .ms-l{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line);font-weight:600;line-height:1.4}
.moi-suivi .ms-l:first-of-type{border-top:0}
.moi-suivi .ms-l i{flex:none;margin-top:3px;color:var(--soft)}
.moi-suivi .ms-l.ok i{color:var(--ogre-d)}.moi-suivi .ms-l.ko i{color:#E8665A}.moi-suivi .ms-l.att i{color:#E8A300}
/* accueil : listes filtrées regroupées par jour */
.h-jour{font-family:var(--display);font-size:.95rem;color:var(--soft);margin:14px 2px 8px}
.h-jour::first-letter{text-transform:uppercase}
.h-list>.h-jour:first-child{margin-top:4px}
.h-plus{display:block;width:100%;margin:6px 0 4px;padding:12px;border:2px dashed var(--line);border-radius:16px;background:none;color:var(--ink);font:inherit;font-weight:800;cursor:pointer}

/* ---------- exercices : contraste du texte coloré (AA) et mots longs, dans le chat comme dans Réviser ---------- */
/* --ok/--ko sur leurs fonds pâles = 2.9:1 et 3.5:1 : le texte passe sur --ok-t/--ko-t (4.5:1 et plus, clair et sombre) */
.exo{overflow-wrap:anywhere}
.exo-q,.exo-fbt,.fe-consigne,.exo-carte,.exo-ch button{overflow-x:auto;overflow-y:hidden}   /* formule trop large : défile dans son cadre */
.exo-grid .good,.chip.ok,.exo-phrase .ok,.exo-clavier .ok,.exo-legende .ok,.tr.ok,.tr small,.tr-corr .bon,ins.dm,ins.dl,.exo-bonne,.rel-d small,.mcard.ok{color:var(--ok-t)}
.exo-grid .bad,.chip.ko,.exo-phrase .ko,.exo-clavier .ko,.exo-legende .ko,.tr.ko,.tr-corr .faux,del.dm,del.dl,.exo-ord small,.dz{color:var(--ko-t)}
del.dm,del.dl{text-decoration-color:var(--ko-t)}
.tr.mid,.exo-legende .rate{color:var(--warn-t)}
.exo-ord li::before{color:var(--info-t)}   /* numéros : --sky sur fond pâle = 2.8:1 */
.exo-acts .btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 10px;font-size:1rem;line-height:1.25}   /* icône à côté du mot, pas au-dessus */
.exo-legende{font-size:.9rem;flex-wrap:wrap;gap:8px}
.g-audio details{font-size:1rem;line-height:1.45}.g-audio summary{font-weight:700}
.g-audio-play{background:var(--info-t);color:#fff}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .g-audio-play{background:#2471AE}}
:root[data-theme="dark"] .g-audio-play{background:#2471AE}
/* aide sur un devoir : grisée tant que Grignon n'a pas la consigne */
.a-btn.off{filter:grayscale(1);opacity:.55;border-style:dashed}
.a-btn.off .i{background:var(--soft)}
.d-box.flash{animation:d-flash 1.2s ease}
@keyframes d-flash{0%,100%{box-shadow:none}30%{box-shadow:0 0 0 4px color-mix(in srgb,var(--ogre) 45%,transparent)}}
.a-wait{display:flex;gap:12px;align-items:center;width:100%;text-align:left;font:inherit;color:var(--ink);cursor:pointer;margin:0 0 12px;padding:12px 14px;border:2px solid color-mix(in srgb,var(--ogre) 45%,var(--line));border-radius:16px;background:color-mix(in srgb,var(--ogre) 12%,var(--card))}
.a-wait .i{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--ogre);color:#fff;font-size:1.3rem}
.a-wait .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.a-wait b{font-family:var(--display);font-size:1rem}.a-wait small{color:var(--soft);line-height:1.35}
.a-wait .go{flex:none;color:var(--ogre-d,var(--ogre))}
.exo-dire-act{display:flex;gap:10px;margin-top:12px}.exo-dire-act .btn{flex:1;margin:0}
.exo-dire-act .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}
/* Moi > Réglages : langue et thème */
.moi-regl h3{display:flex;align-items:center;gap:8px}
.rg-l{margin:12px 0 6px;font-weight:800;font-size:.9rem;color:var(--soft)}
.rg-seg{display:flex;flex-wrap:wrap;gap:8px}   /* pastilles qui passent à la ligne : rien ne déborde, même à 320 px */
.rg-seg button{flex:0 1 auto;max-width:100%;border:2px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);font:inherit;font-weight:700;font-size:.9rem;padding:8px 14px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.rg-seg button[aria-checked="true"]{border-color:var(--ogre);background:color-mix(in srgb,var(--ogre) 22%,var(--card));color:var(--ink);font-weight:800}
.rg-seg button:disabled{opacity:.55;cursor:default}.rg-seg small{font-size:.7rem;font-weight:700;color:var(--soft);background:var(--paper);border-radius:999px;padding:1px 6px}
/* image d'accueil : pleine largeur sur mobile (annule la marge du navigateur et celle de la colonne) */
@media (max-width:640px){.h-hero{width:100vw;margin-left:calc(50% - 50vw);margin-right:0;border-radius:0}}
/* verts du mode sombre : plus lumineux, pour rester lisibles sur fond sombre (texte, bordures, pastilles) ; les boutons gardent du texte blanc lisible */
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--ogre:#6DBF59;--ogre-d:#4C9A3B;--ok:#3DBE6C}}
:root[data-theme="dark"]{--ogre:#6DBF59;--ogre-d:#4C9A3B;--ok:#3DBE6C}
/* Mon année : tuile dans Réviser, puis le programme trimestre par trimestre */
.rv-annee{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;color:var(--ink);cursor:pointer;margin:0 0 12px;padding:12px 14px;border-radius:18px;border:2px solid color-mix(in srgb,var(--sky) 45%,var(--line));background:color-mix(in srgb,var(--sky) 12%,var(--card));box-shadow:0 3px 0 color-mix(in srgb,var(--sky) 30%,var(--line))}
.rv-annee .i{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--sky);color:#fff;font-size:1.3rem}
.rv-annee .tx{flex:1;min-width:0;display:flex;flex-direction:column}.rv-annee b{font-family:var(--display);font-size:1.02rem}.rv-annee small{color:var(--soft);font-weight:700;font-size:.82rem}
.rv-annee .go{flex:none;color:var(--sky)}
.an-tete .moi-lead{margin:4px 0 12px}
.an-mats{margin:0 0 14px}
.an-tri{margin:0 0 10px;border:2px solid var(--line);border-radius:18px;background:var(--card);overflow:hidden}
.an-tri.cur{border-color:color-mix(in srgb,var(--ogre) 55%,var(--line))}
.an-th{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:0;background:none;color:var(--ink);font:inherit;cursor:pointer;text-align:left}
.an-th span{flex:1;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.an-th b{font-family:var(--display);font-size:1.02rem}
.an-th em{font-style:normal;font-size:.72rem;font-weight:800;color:var(--ink);background:color-mix(in srgb,var(--ogre) 24%,var(--card));border-radius:999px;padding:2px 8px}
.an-th small{color:var(--soft);font-weight:700;font-size:.8rem;white-space:nowrap}
.an-liste{padding:0 10px 10px;display:flex;flex-direction:column;gap:8px}
.an-ch{display:flex;align-items:center;gap:10px;padding:10px;border-radius:14px;background:var(--paper)}
.an-ico{flex:none;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--card);color:var(--soft)}
.an-ch.maitrise .an-ico{background:color-mix(in srgb,var(--sun) 30%,var(--card));color:#B07A00}
.an-ch.vu .an-ico{background:color-mix(in srgb,var(--ok) 20%,var(--card));color:var(--ok)}
.an-ch.en_cours .an-ico{background:color-mix(in srgb,var(--ogre) 22%,var(--card));color:var(--ogre-d)}
.an-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.an-tx b{font-size:.95rem;line-height:1.25}
.an-tx small{color:var(--soft);font-size:.78rem;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.an-et{font-size:.72rem;font-weight:800;color:var(--soft);text-transform:uppercase;letter-spacing:.02em}
.an-go{flex:none;border:0;border-radius:999px;background:var(--ogre-d);color:#fff;font:inherit;font-weight:800;font-size:.82rem;padding:8px 12px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.an-go:disabled{opacity:.6}.an-prep{flex:none;font-size:.75rem;font-weight:700;color:var(--soft);display:inline-flex;align-items:center;gap:4px;max-width:96px}
@media (max-width:520px){.an-ch{flex-wrap:wrap;align-items:flex-start}.an-tx{flex-basis:calc(100% - 42px)}.an-go,.an-prep{margin-left:42px}}   /* mobile : le titre prend toute la largeur, le bouton passe dessous */
/* Réviser : deux onglets « Mes cours » / « Programme » */
.rv-onglets{display:flex;gap:4px;padding:4px;margin:0 0 14px;border-radius:16px;background:var(--paper);border:2px solid var(--line)}
.rv-onglets button{flex:1;min-width:0;border:0;border-radius:12px;background:none;color:var(--soft);font:inherit;font-family:var(--display);font-weight:800;font-size:.95rem;padding:10px 8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-onglets button[aria-selected="true"]{background:var(--card);color:var(--ink);box-shadow:0 2px 0 var(--line)}

/* Compréhension orale (exercice « ecoute ») : carte d'écoute, questions sur le même écran, puis transcription */
.eo-carte{background:color-mix(in srgb,var(--sky) 9%,var(--card));border:2px solid color-mix(in srgb,var(--sky) 32%,var(--line));border-radius:22px;padding:16px;margin:0 0 24px;min-width:0}
.eo-tete{display:flex;gap:12px;align-items:center;margin:0 0 16px;min-width:0}
.eo-ico{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:#1F78B8;color:#fff;font-size:22px}
.eo-tt{min-width:0}.eo-tt small{display:block;color:var(--soft);font-weight:800;font-size:.76rem;letter-spacing:.03em;text-transform:uppercase}
.eo-tt b{display:block;font-family:var(--display);font-size:1.15rem;line-height:1.25;color:var(--ink);overflow-wrap:anywhere}
.eo-lecteur{display:flex;align-items:center;gap:14px;min-width:0}
.eo-play{flex:none;width:64px;height:64px;border-radius:50%;border:0;padding:0;background:var(--ogre-d);color:#fff;display:grid;place-items:center;font-size:28px;cursor:pointer;box-shadow:0 4px 0 color-mix(in srgb,var(--ogre-d) 60%,#000);transition:transform .1s,box-shadow .1s}
.eo-play:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,var(--ogre-d) 60%,#000)}
.eo-play:disabled{background:var(--line);color:var(--soft);box-shadow:none;cursor:default}
.eo-play:focus-visible{outline:3px solid var(--sky);outline-offset:3px}
.eo-play.joue{box-shadow:0 0 0 6px color-mix(in srgb,var(--ogre) 25%,transparent),0 4px 0 color-mix(in srgb,var(--ogre-d) 60%,#000)}
.eo-spin{width:26px;height:26px;border-radius:50%;border:3px solid color-mix(in srgb,currentColor 30%,transparent);border-top-color:currentColor;animation:eo-tourne .8s linear infinite}
@keyframes eo-tourne{to{transform:rotate(360deg)}}
.eo-piste{flex:1;min-width:0}
.eo-barre{position:relative;height:10px;border-radius:10px;background:color-mix(in srgb,var(--soft) 22%,var(--card));overflow:hidden}
.eo-barre i{display:block;height:100%;width:0;border-radius:10px;background:var(--ogre);transition:width .25s linear}
.eo-barre.seek{cursor:pointer;height:12px}
.eo-temps{display:flex;justify-content:space-between;margin-top:8px;font-size:.8rem;font-weight:800;color:var(--soft);font-variant-numeric:tabular-nums}
.eo-bas{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.eo-carte .exo-vitesse{margin:0!important}
.eo-compte{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:.88rem;color:var(--ink);min-width:0}
.eo-pips{display:inline-flex;gap:5px}.eo-pips i{width:11px;height:11px;border-radius:50%;border:2px solid var(--ogre-d);box-sizing:border-box}.eo-pips i.pris{background:var(--ogre-d)}
.eo-etat{margin:14px 0 0;color:var(--soft);font-weight:700;font-size:.88rem;line-height:1.45}.eo-etat:empty{display:none}
.eo-qs{list-style:none;margin:0;padding:0;display:grid;gap:26px}
.eo-q{min-width:0}
.eo-qt{display:flex;gap:10px;align-items:flex-start;margin:0 0 12px;font-weight:700;line-height:1.4;color:var(--ink)}
.eo-qt>span:last-child{min-width:0;overflow-wrap:anywhere}
.eo-num{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:.85rem;font-weight:800;background:color-mix(in srgb,var(--ogre) 16%,var(--card));color:var(--ink)}
.eo-q.ok .eo-num{background:var(--ok);color:#fff}.eo-q.ko .eo-num{background:var(--ko);color:#fff}
.eo-q .exo-ch button{overflow-wrap:anywhere}
.eo-res{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0;padding:10px 12px;border-radius:14px;line-height:1.45;font-size:.92rem;color:var(--ink);border:2px solid}
.eo-res>i{margin-top:.1em}.eo-res>span{min-width:0;overflow-wrap:anywhere}
.eo-q.ok .eo-res{background:var(--ok-bg);border-color:color-mix(in srgb,var(--ok) 45%,transparent)}.eo-q.ok .eo-res>i{color:var(--ok-t)}
.eo-q.ko .eo-res{background:var(--ko-bg);border-color:color-mix(in srgb,var(--ko) 45%,transparent)}.eo-q.ko .eo-res>i{color:var(--ko-t)}
.eo-valide{margin:28px 0 0!important}
.eo-reste{margin:12px 0 0!important}.eo-reste:empty{display:none}
.eo-trans{margin:26px 0 8px;padding:16px;border-radius:20px;background:var(--card);border:2px solid var(--line)}
.eo-trans h4{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-family:var(--display);font-size:1.1rem;color:var(--ink)}
.eo-astuce{margin:0 0 14px;color:var(--soft);font-size:.86rem;font-weight:700;line-height:1.4}
.eo-lignes{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.eo-l{animation:eo-entre .4s ease-out both;animation-delay:var(--d,0ms)}
@keyframes eo-entre{from{opacity:0;transform:translateY(8px)}}
.eo-l button{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;font:inherit;color:var(--ink);background:var(--card);border:2px solid var(--line);border-radius:16px;padding:10px 12px;cursor:pointer;transition:border-color .2s,box-shadow .2s}
.eo-qui{flex:none;min-width:28px;height:28px;padding:0 8px;box-sizing:border-box;border-radius:999px;display:grid;place-items:center;font-weight:800;font-size:.78rem;color:#fff;background:var(--c)}
.eo-tx{min-width:0;line-height:1.5;overflow-wrap:anywhere;padding-top:2px}
.v-A{--c:#3E7F31}.v-B{--c:#1F78B8}.v-C{--c:#6F3DB8}.v-N{--c:#6B6880}
.eo-l.dit button{border-color:var(--c);box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 22%,transparent)}
.eo-cle{background:color-mix(in srgb,var(--sun) 40%,transparent);color:inherit;border-radius:5px;padding:0 3px;font-weight:700;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.eo-gist{display:flex;gap:8px;align-items:flex-start;margin:16px 0 0;padding:12px 14px;border-radius:14px;background:color-mix(in srgb,var(--ogre) 9%,var(--card));line-height:1.45;color:var(--ink)}
.eo-gist>i{color:var(--ogre-d);margin-top:.15em}.eo-gist>span{min-width:0}
.eo-trans+.exo-fb,.exo-fb+.eo-trans{margin-top:22px}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .eo-gist>i,:root:not([data-theme="light"]) .eo-pips i{color:var(--ogre);border-color:var(--ogre)}:root:not([data-theme="light"]) .eo-pips i.pris{background:var(--ogre)}:root:not([data-theme="light"]) .v-N{--c:#8C88A6}}
:root[data-theme="dark"] .eo-gist>i,:root[data-theme="dark"] .eo-pips i{color:var(--ogre);border-color:var(--ogre)}:root[data-theme="dark"] .eo-pips i.pris{background:var(--ogre)}:root[data-theme="dark"] .v-N{--c:#8C88A6}
@media (prefers-reduced-motion:reduce){.eo-l{animation:none}.eo-spin{animation-duration:2s}}
@media (max-width:360px){.eo-carte{padding:14px}.eo-lecteur{gap:12px}.eo-play{width:56px;height:56px;font-size:24px}.eo-trans{padding:14px 12px}}

/* Compréhension écrite (exercice « lecture ») : carte de lecture confortable, questions d'affilée, preuves surlignées */
.lu-carte{background:var(--card);border:2px solid var(--line);border-radius:22px;padding:18px 18px 14px;margin:0 0 14px;min-width:0}
.lu-ico{background:var(--ogre-d)}
.lu-texte{max-width:68ch;font-size:1.04rem;line-height:1.65;color:var(--ink);overflow-wrap:break-word;hyphens:auto}
.lu-texte p{margin:0 0 1em}.lu-texte p:last-child{margin-bottom:0}
.lu-carte.ferme .lu-texte{max-height:9.9em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 45%,transparent);mask-image:linear-gradient(#000 45%,transparent)}
.lu-src{margin:12px 0 0;color:var(--soft);font-size:.86rem;font-style:italic}
.lu-plier{display:inline-flex;align-items:center;gap:6px;margin:12px 0 0;padding:8px 2px;border:0;background:none;color:var(--ogre-d);font:inherit;font-weight:800;font-size:.92rem;cursor:pointer}
.lu-colle{position:sticky;top:6px;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 22px;padding:6px 6px 6px 6px;border-radius:999px;background:color-mix(in srgb,var(--card) 92%,transparent);border:2px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.lu-colle span{color:var(--soft);font-weight:800;font-size:.84rem;padding-right:10px;white-space:nowrap}
.lu-relire{display:inline-flex;align-items:center;gap:6px;min-width:0;border:0;border-radius:999px;background:var(--ogre-d);color:#fff;font:inherit;font-weight:800;font-size:.9rem;padding:8px 14px;cursor:pointer}
.lu-multi{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-4px 0 10px;font-weight:800;font-size:.86rem;color:var(--ink)}
.lu-multi>i{color:var(--ogre-d)}.lu-multi small{flex-basis:100%;color:var(--soft);font-weight:700;font-size:.8rem}
.exo-ch.multi button{position:relative;padding-left:46px}
.exo-ch.multi button::before{content:"";position:absolute;left:14px;top:50%;width:20px;height:20px;margin-top:-10px;border-radius:6px;border:2px solid var(--line);background:var(--card);box-sizing:border-box}
.exo-ch.multi button.sel::before,.exo-ch.multi button.good::before{background:var(--ogre-d);border-color:var(--ogre-d);box-shadow:inset 0 0 0 3px var(--card)}
.exo-ch.multi button.bad::before{background:var(--ko);border-color:var(--ko);box-shadow:inset 0 0 0 3px var(--card)}
.exo-ch button.rate{border-color:var(--ok);border-style:dashed;background:var(--card)}
.eo-q.mid .eo-num{background:var(--t-warn,#A86A00);color:#fff}
.eo-q.mid .eo-res{background:var(--t-warn-bg,#FFF1D6);border-color:color-mix(in srgb,var(--t-warn,#A86A00) 45%,transparent)}.eo-q.mid .eo-res>i{color:var(--warn-t)}
.lu-in{display:block;width:100%;box-sizing:border-box;margin:0}
.lu-ta{margin:0;color:var(--ink);overflow-wrap:anywhere}
.lu-voir{display:inline-flex;align-items:center;gap:6px;margin:10px 0 0;padding:6px 2px;border:0;background:none;color:var(--ogre-d);font:inherit;font-weight:800;font-size:.88rem;cursor:pointer}
.lu-preuve{background:color-mix(in srgb,var(--sun) 40%,transparent);color:inherit;border-radius:5px;padding:0 2px;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.lu-preuve sup{font-size:.68em;font-weight:800;margin-left:2px;color:var(--soft)}
.lu-preuve.flash{animation:lu-flash 1.6s ease-out 2}
@keyframes lu-flash{0%,60%{box-shadow:0 0 0 3px color-mix(in srgb,var(--sun) 80%,transparent)}100%{box-shadow:0 0 0 0 transparent}}
.lu-feuille{position:fixed;inset:0;z-index:90;background:rgba(10,12,20,.45);display:flex;align-items:flex-end;justify-content:center}
.lu-feuille-in{width:100%;max-width:720px;max-height:88vh;overflow:auto;background:var(--card);border-radius:24px 24px 0 0;padding:0 20px calc(24px + env(safe-area-inset-bottom,0px));box-sizing:border-box;box-shadow:0 -10px 30px rgba(0,0,0,.25);animation:lu-monte .25s ease-out}
@keyframes lu-monte{from{transform:translateY(40px);opacity:0}}
.lu-feuille-top{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0 12px;background:var(--card);font-family:var(--display);font-size:1.1rem;color:var(--ink);z-index:1}
.lu-feuille-top b{min-width:0;overflow-wrap:anywhere}
.lu-feuille .lu-texte{margin:0 auto}
:root[data-theme="dark"] .lu-plier,:root[data-theme="dark"] .lu-voir,:root[data-theme="dark"] .lu-multi>i{color:var(--ogre)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .lu-plier,:root:not([data-theme="light"]) .lu-voir,:root:not([data-theme="light"]) .lu-multi>i{color:var(--ogre)}}
@media (prefers-reduced-motion:reduce){.lu-preuve.flash,.lu-feuille-in{animation:none}}
@media (max-width:360px){.lu-carte{padding:16px 14px 12px}.lu-texte{font-size:1rem}.lu-colle span{display:none}}

/* Expression orale / écrite (« oral_prod », « ecrit_prod ») : sujet d'examen, enregistrement ou écriture, correction /20 */
.pr-sujet{background:color-mix(in srgb,var(--ogre) 8%,var(--card));border:2px solid color-mix(in srgb,var(--ogre) 28%,var(--line));border-radius:22px;padding:16px;margin:0 0 22px;min-width:0}
.pr-sujet.compact{margin-bottom:18px}.pr-sujet .eo-tt b{font-size:1.1rem}
.pr-ico{background:var(--ogre-d)}
.pr-meta{margin:0}.pr-chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 12px;background:var(--card);border:2px solid var(--line);font-weight:800;font-size:.86rem;color:var(--ink)}
.pr-aide{margin:14px 0 0;padding:12px 14px;border-radius:16px;background:var(--card)}
.pr-aide h5,.pr-bloc h5,.pr-modele h5,.pr-texte h5{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-family:var(--display);font-size:1rem;color:var(--ink)}
.pr-aide ul,.pr-bloc ul{margin:0;padding-left:20px;line-height:1.5;color:var(--ink)}.pr-aide li+li,.pr-bloc li+li{margin-top:4px}
.pr-grille{margin:12px 0 0;font-size:.86rem;line-height:1.45;color:var(--soft)}.pr-grille b{color:var(--ink)}
.pr-actions{display:grid;gap:12px;margin-top:6px}.pr-actions .btn{margin:0;display:flex;align-items:center;justify-content:center;gap:8px}
.pr-msg{display:flex;gap:8px;align-items:flex-start;margin:0 0 16px;padding:10px 12px;border-radius:14px;background:var(--t-warn-bg);color:var(--ink);font-weight:700;line-height:1.4}.pr-msg i{color:var(--warn-t);margin-top:.1em}
.pr-chrono{display:flex;flex-direction:column;align-items:center;gap:12px;margin:4px 0 18px;text-align:center}.pr-chrono p{margin:0;font-weight:800;color:var(--ink)}
.pr-rond{--p:0;--c:var(--ogre-d);width:132px;height:132px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--c) calc(var(--p)*360deg),color-mix(in srgb,var(--soft) 20%,var(--card)) 0)}
.pr-rond::before{content:"";grid-area:1/1;width:108px;height:108px;border-radius:50%;background:var(--card)}
.pr-temps{grid-area:1/1;position:relative;font-family:var(--display);font-weight:800;font-size:2rem;color:var(--ink);font-variant-numeric:tabular-nums}
.pr-chrono.rec .pr-rond{--c:var(--ko)}
.pr-point{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--ko);margin-right:4px;animation:pr-bat 1s ease-in-out infinite}
@keyframes pr-bat{50%{opacity:.25}}
.pr-stop{display:flex!important;align-items:center;justify-content:center;gap:8px;background:var(--ko)!important}
.pr-fait{display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:12px 14px;border-radius:18px;background:var(--card);border:2px solid var(--line);font-weight:800;color:var(--ink)}
.pr-reecoute{flex:none;width:48px;height:48px;border-radius:50%;border:0;background:var(--ogre-d);color:#fff;display:grid;place-items:center;font-size:20px;cursor:pointer}
.pr-wait{justify-content:center;margin:8px 0 16px}
.pr-ta{display:block;width:100%;box-sizing:border-box;min-height:14em;resize:vertical;font:inherit;font-size:1.04rem;line-height:1.6;padding:14px 16px;border-radius:18px;margin:0}
.pr-compteur{margin:10px 0 18px}.pr-compteur p{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:8px 0 0;font-size:.88rem;color:var(--soft);font-weight:700}
.pr-compteur .pr-nb{color:var(--ink)}.pr-compteur.ok .pr-nb{color:var(--ok-t)}.pr-compteur.trop .pr-nb{color:var(--warn-t)}
.pr-jauge{height:8px;border-radius:8px;background:color-mix(in srgb,var(--soft) 20%,var(--card));overflow:hidden}.pr-jauge i{display:block;height:100%;width:0;background:var(--soft);border-radius:8px;transition:width .2s}
.pr-compteur.ok .pr-jauge i{background:var(--ok)}.pr-compteur.trop .pr-jauge i{background:var(--t-warn)}
.pr-sauve{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:.78rem;color:var(--soft);opacity:.55;transition:opacity .3s}.pr-sauve.vu{opacity:1}
.pr-envoi-e{display:flex!important;align-items:center;justify-content:center;gap:8px}
.pr-min:empty{display:none}
.pr-res{display:grid;gap:18px;min-width:0}
.pr-note{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:16px;border-radius:20px;background:var(--card);border:2px solid var(--line)}
.pr-chiffre{font-family:var(--display);font-weight:800;font-size:2.6rem;line-height:1;color:var(--ogre-d)}.pr-chiffre small{font-size:1.1rem;color:var(--soft);margin-left:2px}
.pr-cecrl{border-radius:999px;padding:5px 12px;background:color-mix(in srgb,var(--sky) 16%,var(--card));color:var(--ink);font-weight:800;font-size:.86rem}
.pr-bravo{flex-basis:100%;margin:0;line-height:1.45;color:var(--ink)}
.pr-crit{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.pr-crit li{padding:12px 14px;border-radius:16px;background:var(--card);border:2px solid var(--line)}
.pr-ct{display:flex;justify-content:space-between;align-items:center;gap:10px}.pr-ct b{min-width:0;color:var(--ink);overflow-wrap:anywhere}
.pr-pts{flex:none;display:inline-flex;align-items:center;gap:8px}.pr-pts>span{display:inline-flex;gap:3px}.pr-pts i{width:12px;height:12px;border-radius:4px;background:color-mix(in srgb,var(--soft) 22%,var(--card))}.pr-pts i.on{background:var(--ogre-d)}.pr-pts small{font-weight:800;color:var(--soft)}
.pr-crit p{margin:6px 0 0;line-height:1.45;color:var(--ink);font-size:.93rem}
.pr-deux{display:grid;gap:12px}
.pr-bloc{padding:12px 14px;border-radius:16px}.pr-bloc.ok{background:var(--ok-bg)}.pr-bloc.ok h5 i{color:var(--ok-t)}.pr-bloc.idee{background:color-mix(in srgb,var(--sun) 16%,var(--card))}.pr-bloc.idee h5 i{color:var(--warn-t)}
.pr-modele{display:grid;gap:10px}.pr-paire{border-radius:16px;border:2px solid var(--line);overflow:hidden;background:var(--card)}
.pr-paire p{margin:0;padding:10px 14px;line-height:1.45;color:var(--ink);overflow-wrap:anywhere}.pr-paire small{display:block;font-weight:800;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--soft);margin-bottom:2px}
.pr-paire .mieux{background:var(--ok-bg)}
.pr-entendu{border-radius:16px;border:2px solid var(--line);background:var(--card);padding:10px 14px}.pr-entendu summary{cursor:pointer;font-weight:800;color:var(--ink)}.pr-entendu p{margin:10px 0 0;line-height:1.55;color:var(--ink);overflow-wrap:anywhere}
.pr-texte{padding:14px 16px;border-radius:18px;background:var(--card);border:2px solid var(--line)}.pr-texte p{margin:0;line-height:1.7;color:var(--ink);overflow-wrap:anywhere}
.pr-err{background:var(--ko-bg);color:inherit;border-bottom:2px solid var(--ko);border-radius:4px 4px 0 0;padding:0 2px;-webkit-box-decoration-break:clone;box-decoration-break:clone}.pr-err sup{font-size:.68em;font-weight:800;color:var(--ko-t);margin-left:2px}
.pr-errs{margin:0;padding-left:26px;display:grid;gap:10px}.pr-errs li{line-height:1.45;color:var(--ink)}.pr-errs li::marker{font-weight:800;color:var(--ko-t)}
.pr-errs p{margin:0;overflow-wrap:anywhere}.pr-errs s{color:var(--ko-t)}.pr-errs b{color:var(--ok-t)}.pr-errs i{color:var(--soft);font-size:.9em}.pr-errs small{display:block;margin-top:2px;color:var(--soft);font-size:.88rem}
.pr-aucune{display:flex;gap:8px;align-items:center;margin:0;font-weight:800;color:var(--ok-t)}
.pr-deux{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.pr-actions{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}   /* deux colonnes seulement si la place le permet (chat étroit compris) */
@media (prefers-reduced-motion:reduce){.pr-point{animation:none}}
@media (max-width:360px){.pr-sujet{padding:14px}.pr-rond{width:116px;height:116px}.pr-rond::before{width:94px;height:94px}.pr-chiffre{font-size:2.2rem}}
:root[data-theme="dark"] .pr-chiffre,:root[data-theme="dark"] .pr-pts i.on{color:var(--ogre)}:root[data-theme="dark"] .pr-pts i.on{background:var(--ogre)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pr-chiffre{color:var(--ogre)}:root:not([data-theme="light"]) .pr-pts i.on{background:var(--ogre)}}
/* « S'entraîner » (Mon année, annee.js) : banque d'exercices du chapitre en 3 niveaux, jouée sans IA */
.an-acts{flex:none;display:flex;flex-direction:column;gap:8px;align-items:stretch}
.an-go.alt{background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--ogre) 50%,var(--line))}
.an-exp{font-size:.74rem;font-weight:800;color:var(--ink);margin-top:2px}
@media (max-width:520px){.an-acts{flex-direction:row;flex-wrap:wrap;margin-left:42px}.an-acts .an-go,.an-acts .an-prep{margin-left:0}}
.ex-retour{border:0;background:none;color:var(--ink);font:inherit;font-weight:800;display:inline-flex;align-items:center;gap:6px;padding:8px 4px 8px 0;margin:0 0 6px;cursor:pointer}
.ex-tete small{display:block;color:var(--soft);font-weight:800;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em}
.ex-tete .rv-h3{margin:2px 0 8px;line-height:1.25}
.ex-lead{margin:0 0 18px}
.ex-nivs{display:flex;flex-direction:column;gap:14px;margin:0 0 18px}
.ex-niv{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:16px;border:2px solid var(--line);border-radius:18px;background:var(--card);color:var(--ink);font:inherit;cursor:pointer}
.ex-niv:active{transform:scale(.99)}
.ex-niv.conseil{border-color:color-mix(in srgb,var(--ogre) 65%,var(--line));box-shadow:0 0 0 3px color-mix(in srgb,var(--ogre) 16%,transparent)}
.ex-pastille{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:1.2rem;background:color-mix(in srgb,var(--ogre) 20%,var(--card));color:var(--ink)}
.ex-niv.fait .ex-pastille{background:color-mix(in srgb,var(--ok) 22%,var(--card))}
.ex-niv-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.ex-niv-tx em{align-self:flex-start;font-style:normal;font-size:.7rem;font-weight:800;color:var(--ink);background:color-mix(in srgb,var(--ogre) 26%,var(--card));border-radius:999px;padding:2px 9px;margin-bottom:3px}
.ex-niv-tx b{font-family:var(--display);font-size:1.06rem;line-height:1.25}
.ex-niv-tx small{color:var(--soft);font-size:.84rem;line-height:1.35}
.ex-barre{display:block;height:8px;border-radius:999px;background:var(--paper);overflow:hidden;margin-top:9px}
.ex-barre i{display:block;height:100%;border-radius:inherit;background:var(--ogre);transition:width .4s}
.ex-compte{font-size:.8rem;font-weight:800;color:var(--soft);margin-top:2px}
.ex-fl{flex:none;color:var(--soft)}
.ex-jeu-tete{display:flex;align-items:center;gap:10px;margin:2px 0 14px}.ex-jeu-tete .ex-pastille{width:36px;height:36px;border-radius:12px;font-size:1rem}.ex-jeu-tete b{font-family:var(--display);font-size:1.06rem}
.ex-jeu{background:var(--card);border:2px solid var(--line);border-radius:18px;padding:16px 14px}
.ex-suite{margin:16px 0 8px}
.ex-bilan{border-radius:18px;padding:16px;background:var(--paper);display:flex;flex-direction:column;gap:14px;line-height:1.4}
.ex-bilan.bon{background:color-mix(in srgb,var(--ok) 14%,var(--card))}
.ex-bilan-acts{display:flex;flex-direction:column;gap:10px}.ex-bilan-acts .btn{width:100%;margin:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:normal}
.ex-calme{display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 12px;line-height:1.45}.ex-calme b{margin:0}.ex-calme .btn{margin:6px 0 0;width:auto}
.ex-calme-ico{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:1.4rem;background:color-mix(in srgb,var(--ogre) 16%,var(--card));color:var(--ink);margin-bottom:4px}
.exo-grid.une{grid-template-columns:1fr}
.ex-jeu .exo-acts{grid-template-columns:1fr;gap:10px}.ex-jeu .exo-acts .btn,.ex-jeu .exo-cartes{white-space:normal;overflow-wrap:normal;word-break:normal}
.ex-bilan-acts .btn{flex-direction:row}
@media (max-width:360px){.ex-jeu{padding:14px 10px}.ex-niv{padding:14px 12px;gap:12px}}
/* mobile : les deux boutons du chapitre (Fiche, Exos) se partagent toute la largeur, texte plus grand */
@media (max-width:520px){.an-acts{flex-basis:100%;margin-left:0;flex-wrap:nowrap;gap:10px}
  .an-acts .an-go,.an-acts .an-prep{flex:1 1 0;min-width:0;justify-content:center;font-size:.98rem;padding:11px 12px;gap:7px;max-width:none}
  .an-acts .an-go i{width:18px;height:18px}}
