/* 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}

/* Ogrelo 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)}

/* Ogrelo 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}

/* Ogrelo 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}
/* Ogrelo 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 d'Ogrelo : 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:"Ogrelo";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}}

/* Ogrelo é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}

.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 d'Ogrelo), 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-sync{text-align:center;font-size:.8rem;color:var(--soft);margin:4px 0 0;min-height:1em}.moi-sync i{font-size:.9em;vertical-align:-1px}
.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%}
#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}
.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}
.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)}
.sko-ecole{margin:0 0 12px;line-height:1.5}#pSko .ecoles button span{display:block}#pSko a.btn{display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;margin:4px 0 14px}
.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:26px}
/* 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 · Ogrelo · 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)}

/* 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 d'Ogrelo */
.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, Ogrelo 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 d'Ogrelo */
.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 qu'Ogrelo 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}}
/* Moi : bandeau fin pour installer l'appli (PWA) */
.pw-bandeau{display:flex;align-items:stretch;margin:0 0 12px;border-radius:14px;overflow:hidden;background:linear-gradient(100deg,var(--ogre-d,#3E7F31),var(--ogre,#5BA84A) 55%,#3B8FC9);color:#fff;box-shadow:0 4px 12px rgba(62,127,49,.25)}
.pw-b-go{flex:1;min-width:0;display:flex;align-items:center;gap:10px;border:0;background:none;color:inherit;font:inherit;text-align:left;padding:8px 6px 8px 10px;cursor:pointer}
.pw-b-ic{flex:none;width:28px;height:28px;border-radius:9px;background:rgba(255,255,255,.22);display:grid;place-items:center}.pw-b-ic i{width:16px;height:16px}
.pw-b-t{flex:1;min-width:0;font-size:.85rem;line-height:1.3;opacity:.95}.pw-b-t b{font-weight:800;opacity:1}
.pw-b-fl{flex:none;width:16px;height:16px;opacity:.9}
.pw-b-x{flex:none;width:38px;border:0;border-left:1px solid rgba(255,255,255,.25);background:none;color:#fff;display:grid;place-items:center;cursor:pointer}.pw-b-x i{width:16px;height:16px}
.pw-b-go:focus-visible,.pw-b-x:focus-visible{outline:2px solid #fff;outline-offset:-3px}
.pw-b-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width:480px){.pw-b-plus{display:none}}.pw-b-go{padding:6px 6px 6px 8px}.pw-b-ic{width:26px;height:26px}

/* lecture du QR code Pronote : la photo est balayée, puis validée (coche) ou refusée ; pendant la connexion, le cadre respire */
.qr-anim{display:flex;justify-content:center;margin:14px 0 6px}
.qr-cadre{position:relative;width:150px;height:150px;border-radius:18px;overflow:hidden;background:var(--sheet,#fff);box-shadow:0 2px 10px color-mix(in srgb,#000 12%,transparent)}
.qr-cadre img{width:100%;height:100%;object-fit:cover;display:block;transition:filter .4s,opacity .4s}
.qr-c{position:absolute;width:26px;height:26px;border:4px solid var(--ogre);transition:all .35s ease}
.qr-c.c1{top:10px;left:10px;border-right:0;border-bottom:0;border-top-left-radius:10px}.qr-c.c2{top:10px;right:10px;border-left:0;border-bottom:0;border-top-right-radius:10px}
.qr-c.c3{bottom:10px;left:10px;border-right:0;border-top:0;border-bottom-left-radius:10px}.qr-c.c4{bottom:10px;right:10px;border-left:0;border-top:0;border-bottom-right-radius:10px}
.qr-laser{position:absolute;left:12px;right:12px;top:14px;height:3px;border-radius:3px;background:var(--ogre);box-shadow:0 0 12px 3px color-mix(in srgb,var(--ogre) 70%,transparent);opacity:0}
.qr-ok{position:absolute;inset:0;display:grid;place-items:center;opacity:0;transform:scale(.6);transition:all .35s cubic-bezier(.2,1.4,.4,1)}
.qr-ok i{width:58px;height:58px;padding:12px;border-radius:50%;background:var(--ogre);color:#fff;box-sizing:border-box}
.qr-anim.lit .qr-laser{opacity:1;animation:qrBalai 1.1s ease-in-out infinite alternate}
.qr-anim.lit .qr-c{animation:qrViser 1.1s ease-in-out infinite alternate}
.qr-anim.lu img,.qr-anim.connecte img{filter:saturate(.4) brightness(1.08);opacity:.55}
.qr-anim.lu .qr-ok,.qr-anim.connecte .qr-ok{opacity:1;transform:scale(1)}
.qr-anim.connecte .qr-ok i{animation:qrRespire 1.2s ease-in-out infinite}
.qr-anim.connecte .qr-c{border-color:var(--ogre);animation:qrViser 1.2s ease-in-out infinite alternate}
.qr-anim.rate .qr-c{border-color:#D9534F}.qr-anim.rate img{opacity:.7}
.qr-anim.rate .qr-cadre{animation:qrNon .45s ease}
@keyframes qrBalai{from{top:14px}to{top:calc(100% - 17px)}}
@keyframes qrViser{from{margin:0}to{margin:6px}}
@keyframes qrRespire{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}
@keyframes qrNon{0%,100%{transform:translateX(0)}25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
@media (prefers-reduced-motion:reduce){.qr-anim *{animation:none!important;transition:none!important}.qr-anim.lit .qr-laser{top:50%}}

/* scanner du QR Pronote avec la caméra : plein écran, viseur au centre, trait qui balaie, vert quand c'est lu */
.qr-scan{position:fixed;inset:0;z-index:1000;background:#000;display:flex;align-items:center;justify-content:center}
.qr-scan video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.qr-scan-viseur{position:relative;width:min(70vw,300px);aspect-ratio:1;border-radius:24px;box-shadow:0 0 0 100vmax rgba(0,0,0,.5)}
.qr-scan-viseur .qr-c{width:44px;height:44px;border-width:5px;border-color:#fff}
.qr-scan-viseur .qr-laser{opacity:1;animation:qrBalai 1.4s ease-in-out infinite alternate;background:#fff;box-shadow:0 0 14px 4px rgba(255,255,255,.6)}
.qr-scan.ok .qr-c{border-color:var(--ogre)}.qr-scan.ok .qr-laser{opacity:0}
.qr-scan.ok .qr-scan-viseur{box-shadow:0 0 0 100vmax rgba(0,0,0,.5),inset 0 0 0 4px var(--ogre)}
.qr-scan-aide{position:absolute;left:16px;right:16px;bottom:calc(36px + env(safe-area-inset-bottom));margin:0;text-align:center;color:#fff;font-weight:700;line-height:1.4;text-shadow:0 1px 3px #000}
.qr-scan-x{position:absolute;top:calc(14px + env(safe-area-inset-top));right:14px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.18);color:#fff;display:grid;place-items:center;cursor:pointer}
@media (prefers-reduced-motion:reduce){.qr-scan-viseur .qr-laser{animation:none;top:50%}}


/* téléphones : bulles d'Ogrelo un peu plus compactes (toute l'appli) */
/* Ogrelo qui parle (écrans d'attente, ordre…) : tête plus petite, bulle compacte */
.hello .ogre{width:72px;height:72px}.hello .bubble{max-width:none;flex:1}
@media (max-width:430px){
  .hello .ogre{width:64px;height:64px}
  .bubble p,.g-say-b p{font-size:1.06rem;line-height:1.3}.bubble .big{font-size:1.18rem}
  .bubble,.g-say-b{padding:10px 13px 10px}
}

/* QR Pronote : Scanner et Importer côte à côte */
.qr-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 6px}.qr-btns .btn{margin:0;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;text-align:center}


/* ---------- Accueil : la liste du jour choisi (app-home.js, jourHTML) ---------- */
/* types : Devoir = orange / crayon, Contrôle = rouge / cible, Cours = bleu / livre (mêmes couleurs pour les points du calendrier) */
.k-dv{--k:var(--t-warn);--kb:var(--t-warn-bg)}.k-ct{--k:var(--t-crit);--kb:var(--t-crit-bg)}.k-co{--k:var(--t-info);--kb:var(--t-info-bg)}
.h-dots i.k-dv,.h-dots i.k-ct,.h-dots i.k-co{background:var(--k)}
.h-day.past{opacity:.75}
.h-day[aria-pressed="true"]{opacity:1}
.j-auj{border:0;border-radius:999px;padding:0 14px;height:38px;font:inherit;font-size:.85rem;font-weight:800;color:var(--sky);background:color-mix(in srgb,var(--sky) 12%,var(--sheet))}
.j-zone{display:flex;flex-direction:column;gap:18px;min-height:120px}
.j-titre{font-family:var(--display);font-size:1.05rem;margin:0 0 -6px;color:var(--soft)}
.j-titre::first-letter{text-transform:uppercase}
/* carte d'une chose à faire : la zone principale ouvre le devoir ; le pied porte l'action (« Fiche prête ») */
.j-card{padding:0;overflow:hidden}
.j-main{display:block;width:100%;border:0;background:none;font:inherit;color:inherit;text-align:left;padding:14px 16px 12px;cursor:pointer}
.j-k{flex:none;display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 10px 3px 8px;font-size:.74rem;font-weight:800;background:var(--kb);color:var(--k)}
.j-k i{font-size:.9em}
.j-card h3{margin:10px 0 2px}
.j-src{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;font-weight:700;color:var(--soft)}
.j-pied{display:flex;align-items:center;gap:8px;padding:0 16px 14px;min-height:0}
.j-pied:empty{display:none}
.j-pied .stt{margin:0}
.j-fiche{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:999px;padding:7px 12px;font:inherit;font-size:.84rem;font-weight:800;background:var(--t-good-bg);color:var(--t-good);cursor:pointer}
.j-fiche .gi-droite{font-size:.85em;opacity:.8}
.j-card.passe{opacity:.62;filter:saturate(.35)}
.j-card.passe.done{opacity:.7}
.j-card.done{opacity:.62}
.j-ri{flex:none;width:36px;height:36px;border-radius:12px;display:grid;place-items:center;font-size:1.05rem;background:var(--t-mute-bg);color:var(--t-mute)}
.j-ri.k-dv,.j-ri.k-ct,.j-ri.k-co{background:var(--kb);color:var(--k)}
.j-ri.gr{background:var(--t-good-bg);overflow:hidden}.j-ri.gr svg{width:30px;height:30px}
/* jour vide : calme et clair, puis UNE suggestion */
.j-vide{background:var(--card);border:2px dashed var(--line);border-radius:22px;padding:18px 16px}
.j-vide-h{display:flex;align-items:center;gap:12px}
.j-vide-h .f{flex:none;width:46px;height:46px}.j-vide-h .f svg{width:100%;height:100%}
.j-vide-h b{font-family:var(--display);font-size:1.1rem;line-height:1.3}
.j-sug{margin-top:16px;padding:14px;border-radius:18px;background:color-mix(in srgb,var(--sun,#FFC83D) 16%,var(--sheet));display:flex;flex-direction:column;align-items:stretch;gap:4px}
.j-eye{font-size:.74rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--soft)}
.j-sug b{font-size:1rem;line-height:1.35}
.j-sug p{margin:0 0 10px;font-size:.88rem;color:var(--soft);line-height:1.4}
.j-go{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;font-size:1rem;margin:0}
.j-rien{text-align:center;color:var(--soft);font-weight:700;margin:18px 0}
/* aujourd'hui : contrôles des 3 prochains jours, en lignes discrètes */
.j-prep{display:flex;flex-direction:column;gap:6px}
.j-pl{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:14px;background:color-mix(in srgb,var(--t-crit) 6%,transparent);font:inherit;font-size:.86rem;font-weight:600;color:var(--ink);text-align:left;padding:10px 12px;cursor:pointer}
.j-pl>i:first-child{color:var(--t-crit)}
.j-pl span{flex:1;min-width:0}
.j-pl .go{color:var(--soft)}
/* textes agrandis (Android 130 %) / petits écrans : rien ne se chevauche, la matière passe à la ligne plutôt que d'être coupée */
.h-month{gap:8px;flex-wrap:wrap}.h-month b{min-width:0}.h-arrows{margin-left:auto;align-items:center}
.h-arrows .j-auj{width:auto;white-space:nowrap;font-size:.85rem;padding:0 14px;box-shadow:none}
.j-main{position:relative}
.j-card .h-top{flex-wrap:wrap;row-gap:6px;padding-right:26px}
.j-card .h-mat{flex:1 1 7em}
.j-card .h-top .go{position:absolute;right:14px;top:24px}
.j-auj .c{display:none}
@media (max-width:400px){.j-auj .l{display:none}.j-auj .c{display:inline}}
/* jour vide : deux choix clairs (prendre de l'avance, réviser avec Ogrelo) */
.j-choix-l{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.j-choix{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;color:var(--ink);background:var(--sheet);border:2px solid var(--line);border-radius:18px;padding:12px 12px;cursor:pointer}
.j-choix .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.j-choix .tx b{font-size:1rem;line-height:1.3}
.j-choix .tx small{font-size:.82rem;color:var(--soft);line-height:1.35}
.j-choix .go{flex:none;color:var(--soft)}
.j-choix.fort{border-color:color-mix(in srgb,var(--ogre-d,#3E7F31) 55%,var(--line));background:color-mix(in srgb,var(--ogre-d,#3E7F31) 8%,var(--sheet))}
.j-choix:active{transform:translateY(1px)}
.j-sug .j-go{width:100%}
.j-eye i{margin-right:2px}
.j-vide{padding:16px 12px}
.j-choix{padding:12px 10px;gap:10px}
/* ---------- onglet Notes : résumé, nouvelles notes, par matière ---------- */
.n-resume{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 10px;padding:12px 16px;border-radius:18px;background:var(--card);border:2px solid var(--line);margin-bottom:6px}
.n-resume .l{font-weight:700;color:var(--soft)}
.n-resume .v{font-family:var(--display);font-size:1.4rem}.n-resume .v small{font-size:.8rem;color:var(--soft)}
.n-tend{display:inline-flex;align-items:center;gap:4px;font-weight:800;font-size:.9rem;border-radius:999px;padding:2px 9px}
.n-tend.up{color:var(--t-good);background:var(--t-good-bg)}.n-tend.down{color:var(--t-crit);background:var(--t-crit-bg)}.n-tend.down i{transform:scaleY(-1)}
.n-tend.eq{color:var(--t-mute);background:var(--t-mute-bg)}
.n-resume .per{color:var(--soft);font-size:.8rem}
.n-mats{display:flex;flex-direction:column;gap:8px}
.n-mat{border:2px solid var(--line);border-radius:16px;background:var(--card);overflow:hidden}
.n-mat summary{list-style:none;display:grid;grid-template-columns:34px minmax(0,1fr) 44px 2.6em 16px;gap:10px;align-items:center;padding:10px 12px;cursor:pointer}
.n-mat summary::-webkit-details-marker{display:none}
.n-mat summary .h-ico{width:34px;height:34px;border-radius:10px;font-size:1rem;background:color-mix(in srgb,var(--c,var(--ogre)) 25%,var(--card));color:color-mix(in srgb,var(--c,var(--ogre)) 75%,#000)}
.n-mat summary .nm{font-weight:700;overflow-wrap:anywhere;line-height:1.25}
.n-mat summary b{text-align:right;font-family:var(--display)}
.n-mat .chev{color:var(--soft);transition:transform .2s}.n-mat[open] .chev{transform:rotate(180deg)}
.n-ul{list-style:none;margin:0;padding:0 12px 10px;display:flex;flex-direction:column}
.n-li{display:flex;align-items:center;gap:10px;padding:9px 2px;border-top:1px solid var(--line);font-size:.9rem}
.n-li .d{flex:none;width:3.6em;color:var(--soft);font-size:.8rem}
.n-li .tx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.n-li b{flex:none;font-family:var(--display)}.n-li b small{font-size:.75em;color:var(--soft)}
.n-cp{flex:none;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-size:.8rem;background:var(--t-mute-bg);color:var(--t-mute)}
.n-cp.photo{background:var(--t-warn-bg);color:var(--t-warn)}.n-cp.analyse{background:var(--t-info-bg);color:var(--t-info)}.n-cp.analysee{background:var(--t-info-bg);color:var(--t-info)}
.n-cp.consolide{background:var(--t-good-bg);color:var(--t-good)}.n-cp.a_revoir{background:var(--t-warn-bg);color:var(--t-warn)}
.n-cp .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .n-mat summary .h-ico{color:color-mix(in srgb,var(--c,var(--ogre)) 55%,#fff)}}
:root[data-theme="dark"] .n-mat summary .h-ico{color:color-mix(in srgb,var(--c,var(--ogre)) 55%,#fff)}
/* ---------- écran d'un devoir, un pas à la fois (étape 0 « Donne-moi l'exercice », 1 deux actions, 2 « Aller plus loin ») ---------- */
.dv-head{padding:14px 16px}.dv-head h2{font-size:1.3rem}
.dv-enonce p{font-size:1.05rem;line-height:1.5}
.dv-pieces{display:flex;gap:10px;overflow-x:auto;margin:12px -2px 0;padding:2px 2px 4px;scrollbar-width:none}
.dv-pj{flex:none;width:76px;border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--soft);font-weight:700;cursor:pointer}
.dv-pj .im,.dv-pj .ic{width:76px;height:76px;border-radius:14px;border:1.5px solid var(--line);background:var(--sheet);display:grid;place-items:center;overflow:hidden;font-size:1.5rem;color:var(--soft)}
.dv-pj .im img{width:100%;height:100%;object-fit:cover}
.dv-pj small{font-size:.74rem;max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-pj.add .ic{border-style:dashed}
.dv-pj[aria-disabled="true"]{cursor:default}
.dv-pj.lien{text-decoration:none}
.dv-pj.lien.ko .ic{border-style:dashed;opacity:.7}
.dv-lien-ko{margin:10px 0 0;font-size:.86rem;color:var(--soft);display:flex;gap:6px;align-items:baseline}
.dv-donne{background:var(--card);border:2px solid var(--line);border-radius:22px;padding:16px 14px;margin-bottom:12px}
.dv-donne .g-say{margin-bottom:14px}
.dv-donne .g-say-b p b{font-family:var(--display);font-size:1.08rem}
.dv-deux{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.dv-act{min-width:0;box-sizing:border-box;border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:20px;padding:16px 12px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;text-align:left;cursor:pointer;min-height:132px;font:inherit}
.dv-act .i{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:1.35rem;background:color-mix(in srgb,var(--ogre) 16%,transparent);color:var(--ogre-d)}
.dv-act .tx{display:flex;flex-direction:column;gap:3px;min-width:0}
.dv-act b{font-family:var(--display);font-size:1.06rem;line-height:1.2}
.dv-act small{color:var(--soft);font-weight:600;font-size:.84rem;line-height:1.3}
.dv-act.chat .i{background:color-mix(in srgb,#1F78B8 16%,transparent);color:#1F78B8}
.dv-act.fini .i{background:color-mix(in srgb,#2F8A4A 16%,transparent);color:#2F8A4A}
.dv-act.plein{background:var(--ogre);border-color:var(--ogre);color:#fff}.dv-act.plein .i{background:rgba(255,255,255,.2);color:#fff}
.dv-donne .dv-act{min-height:0;flex-direction:row;align-items:center;justify-content:center;gap:8px;padding:14px 8px}
.dv-donne .dv-act b{font-size:1rem;white-space:nowrap}
.dv-donne .dv-deux{grid-template-columns:repeat(auto-fit,minmax(168px,1fr))}   /* côte à côte quand ça tient, l'un sous l'autre sinon */
.dv-donne .dv-act .i{width:auto;height:auto;background:none;color:inherit;font-size:1.25rem}
.dv-act.busy,.dv-pj.busy,.dv-relien.busy{opacity:.55;pointer-events:none}
.dv-fine{margin:0;color:var(--soft);font-size:.86rem;text-align:center}
.dv-quiz{width:100%;border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:16px;padding:13px;font-family:var(--display);font-weight:800;font-size:1rem;display:flex;align-items:center;justify-content:center;gap:8px;margin:-2px 0 12px;cursor:pointer}
.dv-st{color:#E3A008;white-space:nowrap}
.dv-prep{display:flex;align-items:center;gap:10px;color:var(--soft);font-weight:700;margin:-2px 4px 12px}
.dv-verif{border-radius:20px;padding:14px;margin-bottom:12px;border:2px solid var(--line);background:var(--card)}
.dv-verif.ok{border-color:color-mix(in srgb,var(--ok) 55%,var(--line));background:color-mix(in srgb,var(--ok) 9%,var(--card))}
.dv-verif .t{margin:0;font-size:.86rem;color:var(--soft);font-weight:700;display:flex;gap:6px;align-items:center}
.dv-verif.ok .t i{color:#E3A008}
.dv-verif .r{margin:6px 0 0;font-family:var(--display);font-size:1.08rem;color:var(--ink)}
.dv-verif ul{margin:8px 0 0;padding-left:20px;color:var(--ink)}.dv-verif li{margin:4px 0}
.dv-relien{display:block;text-align:center;color:var(--soft);font-weight:700;text-decoration:underline;margin:4px 0 14px;cursor:pointer}
.dv-plus{border:2px solid var(--line);border-radius:20px;background:var(--card);margin-bottom:12px;padding:0 14px}
.dv-plus>summary{list-style:none;cursor:pointer;padding:14px 0;font-family:var(--display);font-weight:800;color:var(--soft);display:flex;align-items:center;gap:8px}
.dv-plus>summary::-webkit-details-marker{display:none}
.dv-plus>summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2.5px solid currentColor;border-bottom:2.5px solid currentColor;transform:rotate(45deg);transition:transform .2s}
.dv-plus[open]>summary::after{transform:rotate(-135deg)}
.dv-plus.loin{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.dv-plus.loin>summary{color:var(--ok-t)}
.dv-plus-aide{margin:-6px 0 8px;color:var(--soft);font-size:.88rem}
.dv-plus-l{display:flex;flex-direction:column;gap:2px;padding-bottom:10px}
.dv-l{display:flex;align-items:center;gap:12px;border:0;background:none;padding:10px 0;text-align:left;color:var(--ink);font:inherit;cursor:pointer;border-top:1px solid var(--line)}
.dv-l:first-child{border-top:0}
.dv-li{width:38px;height:38px;flex:none;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--ogre) 13%,transparent);color:var(--ogre-d);font-size:1.1rem}
.dv-l .tx{flex:1;min-width:0;display:flex;flex-direction:column}.dv-l b{font-weight:800}.dv-l small{color:var(--soft);font-size:.84rem}
.dv-l .go{color:var(--soft)}
.dv-cartes{border-top:1px solid var(--line);padding:12px 0}.dv-cartes h3{font-size:1rem;margin:0 0 4px}
.dv-plus .bv-ctl:not([hidden]){border-top:1px solid var(--line);padding:12px 0}
.dv-done{opacity:.9}
@media (max-width:340px){.dv-deux{grid-template-columns:1fr}.dv-act{min-height:0}}
/* fiche : la leçon, puis « J'ai bien compris » → « Je m'entraîne » (grisé avant) / « J'ai une question » */
.f-fin{margin-top:18px;display:flex;flex-direction:column;gap:2px}
.f-fin .knowbtn{margin-bottom:8px}
.f-go.off{opacity:.42;filter:grayscale(.6);box-shadow:none}
.knowbtn.flash{animation:d-flash 1.2s ease}
.f-deux{display:grid;grid-template-columns:1fr 1fr;gap:10px}.f-deux .btn{margin:6px 0}
.recap-d{margin:10px 0}.recap-d>summary{cursor:pointer;font-family:var(--display);font-weight:800;padding:8px 2px;color:var(--soft)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .dv-act.chat .i{color:#8DB6F0}:root:not([data-theme="light"]) .dv-act.fini .i{color:#5FD08E}:root:not([data-theme="light"]) .dv-act:not(.plein) .i,:root:not([data-theme="light"]) .dv-li{color:var(--ogre)}}
:root[data-theme="dark"] .dv-act.chat .i{color:#8DB6F0}:root[data-theme="dark"] .dv-act.fini .i{color:#5FD08E}:root[data-theme="dark"] .dv-act:not(.plein) .i,:root[data-theme="dark"] .dv-li{color:var(--ogre)}

/* « J'ai terminé » verrouillé tant que le travail n'a pas été montré */
.dv-done.verrou{opacity:.55}
.attire{animation:dvAttire .5s ease 3}
@keyframes dvAttire{50%{transform:scale(1.04);box-shadow:0 0 0 4px color-mix(in srgb,var(--ogre) 35%,transparent)}}
@media (prefers-reduced-motion:reduce){.attire{animation:none;outline:3px solid var(--ogre)}}

/* Moi : profil et moyennes dans un seul bloc */
.moi-bloc .moi-prof{margin:0;padding:0;border:0;background:none;box-shadow:none}
.moi-bloc .mo-moy{margin:14px 0 0;padding:14px 0 0;border-top:1px solid var(--line)}

/* « Ajouter la photo » : un seul bouton net, centré */
.dv-photo1{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin:14px 0 0;font-size:1.05rem;padding:15px 12px;cursor:pointer}
.dv-photo1 i{width:22px;height:22px}

/* historique : miniatures d'images (démo / images publiques) */
.hs-mini{margin:0;display:inline-flex;flex-direction:column;align-items:center;gap:4px}.hs-mini .illus-c{padding:0;border:0;background:none;cursor:zoom-in}.hs-mini img{width:64px;height:84px;object-fit:cover;border-radius:10px;border:1px solid var(--line);display:block}
button.dv-relien{background:none;border:0;width:100%;font:inherit;font-weight:700;padding:10px;margin-top:26px}
/* menu Ogrelo : éventail de bulles au-dessus du bouton du milieu */
.om{position:fixed;inset:0;z-index:29;background:rgba(10,20,15,.0);backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);transition:background .22s,backdrop-filter .22s}
.om.ouvert{background:rgba(10,20,15,.42);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.om-t{position:absolute;left:0;right:0;top:calc(var(--cy) - 300px);text-align:center;margin:0;color:#fff;font-weight:800;font-size:1.15rem;opacity:0;transform:translateY(8px);transition:.25s .1s}
.om.ouvert .om-t{opacity:1;transform:none}
.om-i{position:absolute;left:var(--cx);top:var(--cy);display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:0;padding:0;cursor:pointer;color:#fff;font:inherit;
  transform:translate(-50%,-50%) scale(.2);opacity:0;transition:transform .32s cubic-bezier(.3,1.5,.5,1) var(--d),opacity .2s var(--d)}
.om.ouvert .om-i{transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) scale(1);opacity:1}
.om-r{position:relative;width:64px;height:64px;border-radius:50%;background:var(--c);display:grid;place-items:center;box-shadow:0 8px 20px rgba(0,0,0,.3);border:3px solid rgba(255,255,255,.9)}
.om-r i{font-size:1.6rem;color:#fff}
.om-r .gr-live-dot{position:absolute;top:2px;right:2px}
.om-l{font-weight:800;font-size:.86rem;line-height:1.2;background:rgba(0,0,0,.4);padding:4px 10px;border-radius:12px;max-width:112px;text-align:center}
.om-i:focus-visible .om-r{outline:3px solid #fff;outline-offset:3px}
.om-i:active .om-r{transform:scale(.94)}
body.om-on .h-tab.mid .bub{transform:rotate(-8deg) scale(1.06);transition:transform .2s}
@media (prefers-reduced-motion:reduce){.om,.om-i,.om-t{transition:none}}

/* ===== Quiz : la même allure partout (quiz des fiches = référence ; exercices, Langues) =====
   Options : cartes arrondies, pastille de lettre en couleur (A bleu, B orange, C framboise, D violet), texte un peu plus petit (≥ 15 px), cibles ≥ 52 px. */
.opt{font-size:.94rem;line-height:1.35;min-height:56px;transition:transform .1s,box-shadow .1s}
.opt:not(:disabled):active{transform:translateY(3px);box-shadow:none}
.exo-ch{counter-reset:opt;gap:12px}
.exo-ch button{counter-increment:opt;display:flex;align-items:center;gap:12px;border-width:3px!important;border-radius:18px!important;background:var(--card);box-shadow:var(--shadow);font-size:.94rem!important;line-height:1.35;min-height:56px;padding:10px 14px 10px 10px!important;transition:transform .1s,box-shadow .1s}
.exo-ch button:not([data-carte])::before{content:counter(opt,upper-alpha);flex:none;width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:1rem;color:#fff;background:#1F78B8}
.exo-ch button:not([data-carte]):nth-child(4n+2)::before{background:#D9631A}.exo-ch button:not([data-carte]):nth-child(4n+3)::before{background:#C42E63}.exo-ch button:not([data-carte]):nth-child(4n+4)::before{background:#6F3DB8}
.exo-ch button.good::before{background:var(--ok)}.exo-ch button.bad::before{background:var(--ko)}
.exo-ch button:not(:disabled):active{transform:translateY(3px);box-shadow:none}
.exo-ch button.good{color:var(--ink)}.exo-ch button.bad{color:var(--ink)}
.exo-bar{height:12px!important;border-radius:99px}.exo-bar i{background:linear-gradient(90deg,var(--ogre),var(--sun))!important;border-radius:99px;transition:width .3s}
.exo-fb{border-width:3px!important;border-radius:20px!important;align-items:center}
.exo-fb .exo-face,.exo-fb .exo-face .ogre{width:60px;height:60px}
.exo-fb.ok{animation:pop .4s ease both}.exo-fb.ko{animation:wig .4s ease both}
@media (prefers-reduced-motion:reduce){.exo-fb.ok,.exo-fb.ko{animation:none}}

/* ===== Bulles d'Ogrelo : texte écrit lettre par lettre (bubble.js · ecrireLettre) ===== */
.tw-lu{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.tw-on{cursor:pointer}
.tw-attente{opacity:0;pointer-events:none;transform:translateY(6px)}
.tw-vient{animation:twVient .35s ease both}
@keyframes twVient{from{opacity:0;transform:translateY(6px)}}
@media (prefers-reduced-motion: reduce){.tw-attente{opacity:1;pointer-events:auto;transform:none}.tw-vient{animation:none}}

/* bulles d'Ogrelo : composant commun dans bulles.css */
/* bonjour : un vrai panneau, contour franc comme l'avatar */
.h-hello{font-size:1.22rem!important;font-weight:900;letter-spacing:.01em;border:3px solid #16304A;border-top:0;padding:10px 16px 9px!important;box-shadow:0 0 0 3px #fff,0 8px 18px rgba(0,0,0,.25)!important;max-width:calc(100% - 92px)!important}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .h-hello{border-color:#fff;box-shadow:0 0 0 3px #16304A,0 8px 18px rgba(0,0,0,.45)!important}}
:root[data-theme="dark"] .h-hello{border-color:#fff;box-shadow:0 0 0 3px #16304A,0 8px 18px rgba(0,0,0,.45)!important}
#dVis .dv-c{display:none}@media (max-width:420px){#dVis .dv-l{display:none}#dVis .dv-c{display:inline}}
.j-ri.lg{background:#3557A8;color:#fff}

/* contrôle / leçon : « Envoie-moi ta leçon » (plusieurs pages d'un coup), actions visibles mais grisées tant que rien n'est reçu ;
   « 2 pages reçues » + « Ajouter des pages » ; leçon trop maigre : « Je complète avec le programme de ta classe ? » (tuiles à ombre pleine) */
.dv-lecon,.dv-recues{background:var(--card);border:2px solid color-mix(in srgb,var(--ogre) 40%,var(--line));border-radius:22px;padding:18px 16px;margin:0 0 22px;
  box-shadow:0 5px 0 color-mix(in srgb,var(--ogre) 45%,var(--line))}
.dv-lecon .g-say{margin-bottom:16px}
.dv-lecon .dv-photo1{margin:4px 0 0;box-shadow:0 5px 0 var(--ogre-d)}
.dv-lecon .dv-photo1:active{transform:translateY(4px);box-shadow:0 1px 0 var(--ogre-d)}
.dv-lecon-aide{margin:12px 2px 0;color:var(--soft);font-weight:700;font-size:.9rem;text-align:center}
.dv-donne .dv-lecon-aide{margin-top:10px}
.dv-act.gris{position:relative;opacity:.55;filter:grayscale(1);cursor:pointer;box-shadow:none}
.dv-act.gris .cad{position:absolute;top:12px;right:12px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--line);color:var(--soft);font-size:.85rem}
.dv-relien.gris{opacity:.55;text-decoration:none}
.dv-relien.gris i{margin-right:4px}
.dv-recues{padding:14px 16px;border-color:color-mix(in srgb,#2F8A4A 35%,var(--line));box-shadow:0 5px 0 color-mix(in srgb,#2F8A4A 40%,var(--line))}
.dv-recues-t{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.dv-recues .nb{display:inline-flex;align-items:center;gap:6px;font-family:var(--display);font-weight:800;color:#2F8A4A}
.dv-recues-minis{display:flex;gap:6px;flex-wrap:wrap}
.dv-recues-minis .dv-pj{width:46px;min-width:0;padding:0;border:0;background:none}
.dv-recues-minis .dv-pj small{display:none}
.dv-recues-minis .im{width:46px;height:58px;border-radius:9px;overflow:hidden;display:block;border:1px solid var(--line)}
.dv-recues-minis .im img{width:100%;height:100%;object-fit:cover}
.dv-recues p{margin:10px 0 12px;font-weight:700;line-height:1.4}
.dv-ajout{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;cursor:pointer;padding:12px}
.dv-ajout.busy,#dvCompleter.busy,.dv-ch.busy{opacity:.55;pointer-events:none}
.dv-maigre-acts{display:grid;gap:12px}
.dv-maigre-acts .btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:0;padding:14px 12px;font-size:1.02rem}
.dv-cp{display:block;margin-top:4px;color:#7B5A12;font-weight:800}
.dv-cp-bandeau{display:flex;gap:10px;align-items:flex-start;margin:0 0 18px;padding:12px 14px;border-radius:16px;background:color-mix(in srgb,#E3A82B 14%,var(--card));border:2px solid color-mix(in srgb,#E3A82B 45%,var(--line));color:var(--ink);font-weight:700;line-height:1.4}
.dv-cp-bandeau i{flex:none;margin-top:2px;color:#9A6A00}
.dv-chs{display:grid;gap:12px;margin:4px 0 6px}
.dv-ch{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;font:inherit;font-weight:800;color:var(--ink);background:var(--card);
  border:2px solid var(--line);border-radius:18px;padding:14px 16px;cursor:pointer;box-shadow:0 4px 0 var(--line)}
.dv-ch:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .dv-recues .nb{color:#5FD08E}:root:not([data-theme="light"]) .dv-cp{color:#F2C46B}:root:not([data-theme="light"]) .dv-cp-bandeau i{color:#F2C46B}}
:root[data-theme="dark"] .dv-recues .nb{color:#5FD08E}:root[data-theme="dark"] .dv-cp{color:#F2C46B}:root[data-theme="dark"] .dv-cp-bandeau i{color:#F2C46B}
/* version gratuite : « Oui, complète » grisé avec le badge « Complet » (abonnement.js) ; « J'envoie d'autres photos » reste actif */
#dvCompleter.abo-lock{filter:grayscale(1);opacity:.6;box-shadow:none}
#dvCompleter .abo-badge{margin-left:6px}
.dv-photo1.dv-pages{display:flex!important;align-items:center;justify-content:center;gap:12px;line-height:1.2;text-align:left}.dv-photo1.dv-pages>i{flex:none;font-size:1.4rem;display:grid;place-items:center}
.demo-x{width:36px;height:36px;padding:0!important;border-radius:50%!important;display:inline-grid!important;place-items:center;font-size:1rem}
/* fin d'exercice façon Duolingo : visage qui rebondit, anneau de score animé, tuiles de stats */
@property --pp{syntax:'<number>';inherits:false;initial-value:0}
.exo-fin{--fc:#46A302;--fd:#2F7A00;text-align:center;padding:8px 4px 4px;animation:finIn .45s cubic-bezier(.3,1.4,.5,1)}
.exo-fin.fin-bien{--fc:#1CB0F6;--fd:#1288C4}.exo-fin.fin-go{--fc:#FF9600;--fd:#C46F00}
.exo-fin .exo-face.big{animation:finSaut .7s .15s cubic-bezier(.3,1.6,.5,1) both}
.exo-fin>b{font-family:var(--display);font-size:1.45rem;margin:6px 0 14px;display:block;color:var(--fd)}
.fin-ring{--pp:var(--p);width:150px;height:150px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(closest-side,var(--card,#fff) 76%,transparent 77% 100%),conic-gradient(var(--fc) calc(var(--pp)*1%),color-mix(in srgb,var(--fc) 15%,var(--line,#e5e7eb)) 0);
  box-shadow:0 6px 0 color-mix(in srgb,var(--fd) 35%,transparent);animation:finRing 1s .1s ease-out both}
.fin-ring .pc{font-family:var(--display);font-weight:900;font-size:2.4rem;color:var(--fd)!important}
@keyframes finRing{from{--pp:0}}
.fin-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 10px}
.fin-s{border:2px solid var(--line);border-radius:18px;padding:12px 8px;box-shadow:0 4px 0 var(--line);background:var(--card,#fff);display:flex;flex-direction:column;align-items:center;gap:2px;animation:finIn .4s both}
.fin-s.ok{animation-delay:.35s}.fin-s.tot{animation-delay:.45s}
.fin-s i{font-size:1.1rem;color:var(--fc)}
.fin-s b{font-family:var(--display);font-size:1.6rem;line-height:1}
.fin-s small{font-weight:800;color:var(--soft);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}
.fin-l{color:var(--soft);font-size:.9rem;margin:4px 0 18px}
.exo-fin .exo-acts{display:grid;gap:12px}
@keyframes finIn{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
@keyframes finSaut{0%{transform:scale(.3) rotate(-10deg);opacity:0}100%{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.exo-fin,.exo-fin *{animation:none!important}}
/* questions d écoute / lecture : une carte par question, numéro en pastille (plus de double numéro) */
.eo-qs{list-style:none!important;padding:0!important;margin:16px 0 0!important;display:grid;gap:14px}
.eo-qs>li::marker{content:""}
.eo-q{background:var(--card,#fff);border:2px solid var(--line);border-radius:20px;padding:14px 14px 12px;box-shadow:0 4px 0 var(--line)}
.eo-q.ok{border-color:#8BC34A;box-shadow:0 4px 0 #8BC34A}
.eo-q.ko{border-color:#FFB74D;box-shadow:0 4px 0 #FFB74D}
.eo-qt{display:flex;gap:10px;align-items:flex-start;margin:0 0 12px;font-weight:700}
.eo-num{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--sky,#1CB0F6);color:#fff;font-family:var(--display);font-weight:900;font-size:.9rem;box-shadow:0 2px 0 rgba(0,0,0,.15)}
/* alternance légère : une carte sur deux et une réplique sur deux un peu teintées */
.eo-qs>.eo-q:nth-child(even):not(.ok):not(.ko){background:color-mix(in srgb,var(--sky,#1CB0F6) 7%,var(--card,#fff))}
.eo-lignes>.eo-l:nth-child(odd)>button{background:color-mix(in srgb,var(--sky,#1CB0F6) 8%,transparent);border-radius:14px}
.eo-lignes>.eo-l:nth-child(even)>button{background:color-mix(in srgb,#8E44EC 7%,transparent);border-radius:14px}
