:root{--fond: #f6f7fb;--fond-carte: #ffffff;--fond-doux: #eef1f7;--texte: #1a2233;--texte-doux: #5b6577;--bordure: #dfe4ee;--accent: #2563eb;--accent-texte: #ffffff;--accent-doux: #dbe7ff;--ok: #15803d;--ok-doux: #dcfce7;--attention: #b45309;--attention-doux: #fef3c7;--erreur: #b91c1c;--erreur-doux: #fee2e2;--ombre: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 16px rgba(15, 23, 42, .04);--rayon: 12px;--police: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--police-code: ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}:root[data-theme=sombre]{--fond: #0f172a;--fond-carte: #16213a;--fond-doux: #1e2a47;--texte: #e7ecf5;--texte-doux: #9aa7bd;--bordure: #2a3757;--accent: #60a5fa;--accent-texte: #0b1220;--accent-doux: #1d3260;--ok: #4ade80;--ok-doux: #14352a;--attention: #fbbf24;--attention-doux: #3b2f12;--erreur: #f87171;--erreur-doux: #3f1d1d;--ombre: 0 1px 2px rgba(0, 0, 0, .3);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--police);font-size:16px;line-height:1.55;color:var(--texte);background:var(--fond);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{line-height:1.25;margin:0 0 .5em;font-weight:650}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 .75em}a{color:var(--accent)}code,pre,kbd{font-family:var(--police-code);font-size:.92em}code{background:var(--fond-doux);padding:.1em .35em;border-radius:5px}pre{background:var(--fond-doux);padding:.85em 1em;border-radius:10px;overflow-x:auto}pre code{background:none;padding:0}table{border-collapse:collapse;width:100%;margin:.5em 0 1em}th,td{text-align:left;padding:.4em .6em;border-bottom:1px solid var(--bordure);vertical-align:top}hr{border:0;border-top:1px solid var(--bordure);margin:1em 0}blockquote{margin:.5em 0;padding:.4em 1em;border-left:3px solid var(--accent);background:var(--fond-doux);border-radius:0 8px 8px 0}button,.bouton{font:inherit;cursor:pointer;border:1px solid var(--bordure);background:var(--fond-carte);color:var(--texte);padding:.5em .95em;border-radius:10px;transition:background .15s,border-color .15s;text-decoration:none;display:inline-flex;align-items:center;gap:.4em}button:hover,.bouton:hover{background:var(--fond-doux)}button:disabled{opacity:.55;cursor:not-allowed}button.principal,.bouton.principal{background:var(--accent);color:var(--accent-texte);border-color:var(--accent);font-weight:600}button.principal:hover{filter:brightness(1.08)}button.discret{border-color:transparent;background:transparent;color:var(--texte-doux)}button.discret:hover{background:var(--fond-doux);color:var(--texte)}button.danger{color:var(--erreur);border-color:var(--erreur);background:transparent}button.petit{padding:.25em .6em;font-size:.9em}input,textarea,select{font:inherit;color:var(--texte);background:var(--fond-carte);border:1px solid var(--bordure);border-radius:10px;padding:.55em .75em;width:100%}input:focus,textarea:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}label{display:block;font-weight:600;margin-bottom:.3em}.champ{margin-bottom:1em}.aide-champ{color:var(--texte-doux);font-size:.9em;margin-top:.3em}input[type=checkbox],input[type=radio]{width:auto;margin-right:.5em;accent-color:var(--accent)}.carte{background:var(--fond-carte);border:1px solid var(--bordure);border-radius:var(--rayon);padding:1.1em 1.25em;box-shadow:var(--ombre)}.carte+.carte{margin-top:1em}.grille{display:grid;gap:1em;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.ligne{display:flex;gap:.75em;align-items:center;flex-wrap:wrap}.espace{flex:1}.doux{color:var(--texte-doux)}.petit-texte{font-size:.9em}.badge{display:inline-block;padding:.15em .6em;border-radius:999px;font-size:.8em;font-weight:600;background:var(--fond-doux);color:var(--texte-doux)}.badge.accent{background:var(--accent-doux);color:var(--accent)}.badge.ok{background:var(--ok-doux);color:var(--ok)}.badge.attention{background:var(--attention-doux);color:var(--attention)}.badge.erreur{background:var(--erreur-doux);color:var(--erreur)}.message{padding:.75em 1em;border-radius:10px;margin:.75em 0}.message.ok{background:var(--ok-doux);color:var(--ok)}.message.attention{background:var(--attention-doux);color:var(--attention)}.message.erreur{background:var(--erreur-doux);color:var(--erreur)}.message.info{background:var(--accent-doux);color:var(--accent)}.vide{color:var(--texte-doux);font-style:italic;padding:1em;text-align:center}.contenu-html img{max-width:100%}.contenu-html h1{font-size:1.3rem}.contenu-html h2{font-size:1.15rem;margin-top:1em}.contenu-html h3{font-size:1rem;margin-top:.8em}.progression{height:8px;background:var(--fond-doux);border-radius:999px;overflow:hidden}.progression>div{height:100%;background:var(--accent);border-radius:999px;transition:width .3s}details>summary{cursor:pointer;font-weight:600}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.shiki,.shiki span{color:var(--shiki-light);background-color:transparent}pre.shiki{background:#f6f8fa}:root[data-theme=sombre] .shiki,:root[data-theme=sombre] .shiki span{color:var(--shiki-dark)}:root[data-theme=sombre] pre.shiki{background:#0d1117}.disposition{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.laterale{background:var(--fond-carte);border-right:1px solid var(--bordure);padding:1.1em .9em;display:flex;flex-direction:column;gap:.2em;position:sticky;top:0;height:100vh;overflow-y:auto}.laterale .marque{font-weight:700;font-size:1.05rem;padding:.3em .6em .9em;display:flex;align-items:center;gap:.5em}.laterale .marque img{width:28px;height:28px;border-radius:7px}.laterale a{display:flex;align-items:center;gap:.6em;padding:.5em .7em;border-radius:9px;color:var(--texte);text-decoration:none}.laterale a:hover{background:var(--fond-doux)}.laterale a.actif{background:var(--accent-doux);color:var(--accent);font-weight:600}.laterale a .badge{margin-left:auto}.laterale .bas{margin-top:auto;padding-top:1em;border-top:1px solid var(--bordure)}.principal{min-width:0}.entete{display:flex;align-items:center;gap:.75em;padding:.7em 1.4em;border-bottom:1px solid var(--bordure);background:var(--fond-carte);position:sticky;top:0;z-index:5}.entete h1{margin:0;font-size:1.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.page{padding:1.4em;max-width:1080px}.indicateur-sync{display:inline-flex;align-items:center;gap:.4em;font-size:.9em;padding:.3em .7em;border-radius:999px;background:var(--fond-doux);color:var(--texte-doux);border:0;white-space:nowrap}.entete button{white-space:nowrap}.indicateur-sync .point{width:9px;height:9px;border-radius:50%;background:var(--texte-doux)}.indicateur-sync.a_jour .point{background:var(--ok)}.indicateur-sync.en_attente .point,.indicateur-sync.hors_ligne .point{background:var(--attention)}.indicateur-sync.synchronisation .point{background:var(--accent);animation:pulser 1s infinite}.indicateur-sync.reconnexion .point,.indicateur-sync.erreur .point{background:var(--erreur)}@keyframes pulser{50%{opacity:.3}}.menu-mobile{display:none}@media(max-width:860px){.disposition{grid-template-columns:1fr}.laterale{position:fixed;top:0;right:30%;bottom:0;left:0;z-index:20;transform:translate(-100%);transition:transform .2s;height:100vh;box-shadow:0 0 40px #0000004d}.laterale.ouverte{transform:none}.menu-mobile{display:inline-flex}.page{padding:1em}}.connexion-page{min-height:100vh;display:grid;place-items:center;padding:1.5em}.connexion-page .carte{width:100%;max-width:420px}.tuiles{display:grid;gap:1em;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:1em}.tuile{background:var(--fond-carte);border:1px solid var(--bordure);border-radius:var(--rayon);padding:1em 1.1em;box-shadow:var(--ombre)}.tuile .titre{color:var(--texte-doux);font-size:.85em;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4em}.tuile .valeur{font-size:1.5rem;font-weight:700}.session-suivante{border-left:4px solid var(--accent)}.session-suivante .objectif{font-size:1.05em;margin:.4em 0 .8em}.regularite{display:grid;grid-template-columns:repeat(13,1fr);gap:4px}.regularite .semaine{aspect-ratio:1;border-radius:6px;background:var(--fond-doux);display:grid;place-items:center;font-size:.7em;color:var(--texte-doux);position:relative}.regularite .semaine.complete{background:var(--ok);color:#fff}.regularite .semaine.partielle{background:var(--accent-doux);color:var(--accent)}.regularite .semaine.off{background:repeating-linear-gradient(45deg,var(--fond-doux),var(--fond-doux) 3px,var(--bordure) 3px,var(--bordure) 6px)}.regularite .semaine.future{opacity:.45}.regularite .semaine .etoile{position:absolute;top:-4px;right:-2px;font-size:.9em}.domaines{display:grid;gap:.5em}.domaine{display:grid;grid-template-columns:180px 1fr 60px;gap:.6em;align-items:center;font-size:.95em}.phases{display:grid;gap:1em}.phase{border-left:4px solid var(--bordure);padding-left:1em}.phase.active{border-left-color:var(--accent)}.phase.faite{border-left-color:var(--ok)}.phase h2{display:flex;align-items:center;gap:.6em}.etape{display:flex;gap:.7em;align-items:flex-start;padding:.6em .4em;border-radius:8px}.etape:hover{background:var(--fond-doux)}.etape input{margin-top:.35em}.etape.faite .titre-etape{text-decoration:line-through;color:var(--texte-doux)}.etape .resultat{font-size:.9em;color:var(--texte-doux)}.capsule{border:1px solid var(--bordure);border-radius:10px;padding:.6em .9em;margin:.5em 0;background:var(--fond-carte)}.capsule summary{display:flex;align-items:center;gap:.5em}.capsule .corps{margin-top:.6em}.chrono{font-variant-numeric:tabular-nums;color:var(--texte-doux);font-size:.9em}.bloque{border:1px solid var(--attention);border-radius:var(--rayon);padding:1em 1.2em;background:var(--attention-doux);margin:1em 0}.palier{margin:.8em 0;padding:.8em 1em;border-radius:10px;background:var(--fond-carte);border:1px solid var(--bordure)}.palier.verrouille{opacity:.7}.palier h3{display:flex;align-items:center;gap:.5em}.carte-revision{text-align:center;padding:2em 1.5em;min-height:220px;display:flex;flex-direction:column;justify-content:center;gap:1em}.carte-revision .recto{font-size:1.25em;font-weight:600}.carte-revision .verso{border-top:1px dashed var(--bordure);padding-top:1em;white-space:pre-wrap}.notes{display:flex;gap:.5em;justify-content:center;flex-wrap:wrap}.notes button{min-width:90px}.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:1em}.colonne{background:var(--fond-doux);border-radius:var(--rayon);padding:.8em;min-height:200px}.colonne h3{display:flex;justify-content:space-between}.element{background:var(--fond-carte);border:1px solid var(--bordure);border-radius:10px;padding:.6em .8em;margin-bottom:.6em;box-shadow:var(--ombre);cursor:grab}.element .actions{display:flex;gap:.3em;margin-top:.4em}.element.source-exercice{border-left:3px solid var(--accent)}.element.source-livrable{border-left:3px solid var(--ok)}.element.source-jalon{border-left:3px solid var(--attention)}@media(max-width:760px){.kanban,.domaine{grid-template-columns:1fr}}.journal-entree{padding:.8em 0;border-bottom:1px solid var(--bordure)}.journal-entree .meta{font-size:.85em;color:var(--texte-doux);display:flex;gap:.6em;flex-wrap:wrap}.journal-entree.note_mentor{background:var(--accent-doux);border-radius:10px;padding:.8em 1em;border:0;margin:.5em 0}.journal-entree .texte{white-space:pre-wrap}.planning-semaine{display:grid;grid-template-columns:60px 1fr auto;gap:.6em;align-items:center;padding:.5em 0;border-bottom:1px solid var(--bordure)}.points{display:flex;gap:4px}.points span{width:10px;height:10px;border-radius:50%;background:var(--ok);display:inline-block}.points span.faible{background:var(--accent)}.onglets{display:flex;gap:.3em;flex-wrap:wrap;border-bottom:1px solid var(--bordure);margin-bottom:1em}.onglets button{border:0;border-bottom:2px solid transparent;border-radius:0;background:none;padding:.5em .8em}.onglets button.actif{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.captures{display:flex;gap:.5em;flex-wrap:wrap}.captures img{width:120px;height:90px;object-fit:cover;border-radius:8px;border:1px solid var(--bordure)}.quiz .choix{display:block;padding:.4em .6em;border:1px solid var(--bordure);border-radius:8px;margin:.3em 0;cursor:pointer}.quiz .choix.bon{border-color:var(--ok);background:var(--ok-doux)}.quiz .choix.mauvais{border-color:var(--erreur);background:var(--erreur-doux)}
