@charset "utf-8";
/* Couche commune : accessibilité + finitions visuelles (chargée après le CSS de chaque page) */
:root{
  /* contrastes AA : texte coloré sur fond clair ou blanc sur couleur */
  --pos:#1a5fb8; --vit:#126b33; --acc:#9a4609;
  --shadow:0 1px 2px rgba(20,28,50,.06),0 8px 24px -12px rgba(20,28,50,.18);
  --ring:#0b57d0;
}
:root[data-theme="dark"]{--ring:#ffd166;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--ring:#ffd166;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6)}}
:root[data-theme="light"]{color-scheme:light}

html{scroll-behavior:smooth;scroll-padding-top:76px;-webkit-text-size-adjust:100%;font-size:calc(100% * var(--fs,1))}
body{font-size:1.0625rem;line-height:1.65;font-family:var(--f-body,system-ui,sans-serif);text-rendering:optimizeLegibility}
:root.dys{--f-body:"Atkinson Hyperlegible","Verdana",sans-serif;--f-display:"Atkinson Hyperlegible","Verdana",sans-serif}
:root.dys body{letter-spacing:.02em;word-spacing:.08em;line-height:1.8}
.wrap{gap:32px}
.wrap>*{min-width:0}

/* lien d'évitement */
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--fg);color:var(--bg);padding:12px 18px;border-radius:0 0 12px 12px;font-weight:700;text-decoration:none;transition:top .15s}
.skip:focus{top:0}

/* focus visible partout */
:focus-visible{outline:3px solid var(--ring);outline-offset:3px;border-radius:6px}
a{text-underline-offset:.18em}
.wrap p a,.wrap li a,.wrap td a,.rule a{text-decoration:underline;text-decoration-thickness:.08em}

/* navigation : barre collante lisible */
.sitenav,.dnav{position:sticky;top:8px;z-index:20;display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 6px;padding:8px;border-radius:18px;
  background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);box-shadow:var(--shadow);font:700 .95rem var(--f-body,system-ui,sans-serif)}
.sitenav a,.dnav a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid transparent;text-decoration:none;color:var(--fg);transition:background .15s,border-color .15s}
.sitenav a:hover,.dnav a:hover{background:var(--bg);border-color:var(--line)}
.sitenav a.on,.dnav a.on,.sitenav a[aria-current],.dnav a[aria-current]{background:var(--new);color:#fff;border-color:var(--new)}
:root[data-theme="dark"] .sitenav a.on,:root[data-theme="dark"] .dnav a.on{color:#10131b}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .sitenav a.on,:root:not([data-theme="light"]) .dnav a.on{color:#10131b}}

/* en-tête */
.core{background:linear-gradient(135deg,var(--fg),color-mix(in srgb,var(--fg) 78%,var(--new)));box-shadow:var(--shadow);margin:0;line-height:1.2}
.core small{opacity:.92;font-size:.9rem;line-height:1.4}

/* cartes */
section{box-shadow:var(--shadow);border-radius:20px}
.badge{box-shadow:0 2px 6px rgba(0,0,0,.18)}
.chip{min-height:44px;display:inline-flex;align-items:center}
.rule,.bubble,.step,.data{line-height:1.55}
.rule b.t{font-size:.85rem}
.eq{overflow-x:auto;max-width:100%}

/* tableaux lisibles */
tbody tr:nth-child(even) td:not(.v):not(.a):not(.p){background:color-mix(in srgb,var(--bg) 55%,transparent)}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tw:focus-visible{outline-offset:-3px}
table td a{display:inline-block;padding:6px 2px;font-weight:700}

/* quiz et détails : grandes zones de clic */
summary{min-height:48px;line-height:1.4}
summary:hover{background:color-mix(in srgb,var(--new-bg) 60%,transparent);border-radius:14px}
details[open]>summary{border-bottom:1px solid var(--line);border-radius:14px 14px 0 0}
details .ans{padding-top:12px}

/* champs et boutons */
.btn,button,select,.sbox{min-height:44px}
.btn{font-weight:700}
select{max-width:100%;text-overflow:ellipsis}
img,svg,video{max-width:100%}
.sbox:focus,select:focus{outline:3px solid var(--ring);outline-offset:2px}
.btn.pri,.res{color:#fff}
:root[data-theme="dark"] .btn.pri{color:#10131b}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn.pri{color:#10131b}}
.dc,.card{box-shadow:var(--shadow)}
/* le conteneur des résultats de recherche réutilisait la classe .res (pastille verte) : on l'annule */
div#res.res{background:none;color:inherit;border-radius:0;padding:0;font-weight:400;text-align:left}

footer{padding:12px 0 4px;font-size:.9rem}

/* bouton et panneau d'accessibilité */
.a11y-fab{position:fixed;right:14px;bottom:14px;z-index:60;width:52px;height:52px;border-radius:50%;border:2px solid var(--card);background:var(--new);color:#fff;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.3);display:grid;place-items:center;padding:0}
:root[data-theme="dark"] .a11y-fab{color:#10131b}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .a11y-fab{color:#10131b}}
.a11y-panel{position:fixed;right:14px;bottom:76px;z-index:60;width:min(320px,calc(100vw - 28px));background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow),0 18px 40px rgba(0,0,0,.25);padding:16px;display:flex;flex-direction:column;gap:14px;font:500 .95rem var(--f-body,system-ui,sans-serif)}
.a11y-panel[hidden]{display:none}
.a11y-panel h2{font:800 1.05rem var(--f-display,system-ui,sans-serif);margin:0}
.a11y-panel fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;min-width:0}
.a11y-panel legend{font-weight:700;margin-bottom:6px;padding:0}
.a11y-row{display:flex;gap:6px;flex-wrap:wrap}
.a11y-row button{flex:1 1 auto;font:inherit;font-weight:700;cursor:pointer;border:1.5px solid var(--line);background:var(--bg);color:var(--fg);border-radius:10px;padding:8px 12px}
.a11y-row button[aria-pressed="true"]{background:var(--new);color:#fff;border-color:var(--new)}
:root[data-theme="dark"] .a11y-row button[aria-pressed="true"]{color:#10131b}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .a11y-row button[aria-pressed="true"]{color:#10131b}}

/* mouvement réduit */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}
:root.calm *,:root.calm *::before,:root.calm *::after{animation:none!important;transition:none!important}
:root.calm{scroll-behavior:auto}

/* contraste renforcé à la demande du système */
@media(prefers-contrast:more){:root{--line:#7a8196;--muted:#3b4254}section,.rule,.bubble,details{border-width:2px}}
@media(forced-colors:active){.core,.badge,.formula,.res{border:2px solid CanvasText}}

/* mobile */
@media(max-width:600px){.sitenav a,.dnav a{padding:0 12px;font-size:.9rem}section{padding:18px;border-radius:16px}.sitenav,.dnav{top:4px}}

/* impression : fiches propres */
@media print{
  .sitenav,.dnav,.a11y-fab,.a11y-panel,.skip{display:none!important}
  body{background:#fff;color:#000;padding:0;font-size:11pt}
  section,.rule,.bubble,.step,details{box-shadow:none;break-inside:avoid;border-color:#999}
  a{color:#000;text-decoration:none}
}

/* ---------- comptes élèves ---------- */
.acct-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);color:var(--fg);font:700 .95rem var(--f-body,system-ui,sans-serif);cursor:pointer}
.acct-btn:hover{background:var(--bg)}
.acct-float{position:fixed;top:12px;right:12px;z-index:30;margin:0}
.acct-dlg{border:0;padding:0;background:transparent;max-width:none;width:min(440px,calc(100vw - 24px));color:var(--fg)}
.acct-dlg::backdrop{background:rgba(10,14,28,.55)}
.acct-box{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:var(--shadow),0 24px 60px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:14px;font:500 1rem var(--f-body,system-ui,sans-serif)}
.acct-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.acct-head h2{margin:0;font:800 1.35rem var(--f-display,system-ui,sans-serif)}
.acct-x{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--bg);color:var(--fg);font-size:1.4rem;line-height:1;cursor:pointer}
.acct-form{display:flex;flex-direction:column;gap:10px}
.acct-form label{display:flex;flex-direction:column;gap:4px;font-weight:700}
.acct-form input{font:inherit;font-weight:500;padding:11px 12px;border:1.5px solid var(--line);border-radius:12px;background:var(--bg);color:var(--fg);min-height:44px}
.acct-hint{font-size:.85rem;color:var(--muted);margin-top:-6px}
.acct-msg{margin:0;min-height:1.2em;font-weight:700;color:var(--warn)}
.acct-msg.ok{color:var(--vit)}
.acct-primary,.acct-btn2,.acct-warn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border-radius:12px;border:1.5px solid var(--new);background:var(--new);color:#fff;font:700 1rem var(--f-body,system-ui,sans-serif);cursor:pointer;text-decoration:none}
:root[data-theme="dark"] .acct-primary{color:#10131b}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .acct-primary{color:#10131b}}
.acct-btn2{background:var(--bg);color:var(--fg);border-color:var(--line)}
.acct-warn{background:var(--warn);border-color:var(--warn)}
.acct-actions{display:flex;flex-direction:column;gap:8px}
.acct-alt,.acct-small,.acct-who{margin:0}
.acct-small{font-size:.85rem;color:var(--muted)}
.acct-link{font:inherit;font-weight:700;color:var(--pos);background:none;border:0;padding:6px 2px;cursor:pointer;text-decoration:underline;min-height:44px}
.acct-danger{border:1px solid var(--line);border-radius:12px;padding:0 14px 12px}
.acct-danger summary{padding:12px 0;color:var(--warn)}
.acct-danger p{margin:0 0 8px}
@media(max-width:600px){.acct-btn{padding:0 12px;font-size:.9rem}}
@media print{.acct-btn,.acct-dlg{display:none!important}}

/* connexion : libelle + deux entrees (eleve / professeur) */
.acct-lbl{margin-left:auto;align-self:center;font:700 .9rem var(--f-body,system-ui,sans-serif);color:var(--muted)}
.acct-lbl[hidden],.acct-btn[hidden]{display:none!important}
.megabar .acct-btn{margin-left:0}
.acct-teacher{border-color:var(--new);color:var(--new)}
@media(max-width:820px){.acct-lbl{margin-left:0}}
.acct-group{display:flex;align-items:center;gap:6px;margin-left:auto;flex-wrap:nowrap}
.acct-group .acct-lbl{margin-left:0}
@media(max-width:560px){.acct-group{width:100%;margin-left:0}}

/* pages d'exercices : la ligne du chapitre passe au-dessus du titre */
.core-top{font-size:clamp(1.25rem,4vw,1.85rem)}
.core-top small{margin:0 0 6px;font-size:clamp(1.05rem,3.2vw,1.4rem);font-weight:700;opacity:1;letter-spacing:.01em}
