
:root{--ink:#293344;--nav:#252e40;--bg:#f6f5f2;--line:#dededb;--muted:#68707d;--green:#278269;--amber:#d87932;--blue:#456f99}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 'Segoe UI',Arial,sans-serif}button,input{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #53657f;outline-offset:4px}a{color:inherit;text-decoration:none}button{border:1px solid var(--line);background:white;color:var(--ink);border-radius:5px;padding:10px 16px}button:hover{border-color:#8995a7}aside{position:fixed;inset:0 auto 0 0;width:230px;background:var(--nav);color:#f4f3f0;padding:34px 24px;display:flex;flex-direction:column;z-index:5}.brand{font:24px Georgia,serif;white-space:nowrap}.brand small{display:block;font:9px 'Segoe UI',sans-serif;letter-spacing:3px;color:#c3c8d6;margin-top:8px}aside .nav-label{font-size:10px;letter-spacing:2px;color:#a9b1c3;margin:54px 12px 14px}aside nav a{display:block;padding:12px;margin:4px 0;border-radius:5px;color:#c9cfdb}aside nav a.active{background:#374157;color:white}aside nav a i{display:inline-block;width:26px;font-style:normal;color:#c3c8d6}.account{margin-top:auto;border-top:1px solid #465064;padding-top:20px;display:flex;gap:12px;font-size:12px}.avatar{width:36px;height:36px;border-radius:50%;background:#424d64;display:grid;place-items:center;color:#f0ece5}.account small{color:#a9b1c3;display:block}main{margin-left:230px;min-height:100vh;padding:25px 44px 0}.topline{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);padding-bottom:20px;border-bottom:1px solid var(--line)}.demo{font-size:10px;letter-spacing:.5px;padding:5px 9px;background:#eae9e5;border-radius:3px}.content{max-width:1120px;margin:0 auto}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:32px 0 24px}.eyebrow{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#68707d;font-weight:600}h1{font:42px/1.12 Georgia,serif;margin:9px 0 12px;letter-spacing:-1px}h2{font:26px/1.2 Georgia,serif;margin:0}h3{font:22px/1.25 Georgia,serif;margin:0}p{margin:8px 0;color:var(--muted)}.sub{font-size:13px}.switch{display:flex;flex-shrink:0;background:#e9e8e4;padding:4px;border-radius:6px}.switch a{padding:9px 14px;border-radius:4px;font-size:12px}.switch a.selected{background:white;box-shadow:0 1px 5px #252e400c}.crumbs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0 24px;font-size:12px;color:var(--muted)}.crumbs a:hover{text-decoration:underline}.legend{display:flex;gap:20px;font-size:11px;align-items:center;flex-wrap:wrap}.dot{display:inline-block;width:7px;height:7px;background:var(--green);border-radius:50%;margin-right:6px}.dot.amber{background:var(--amber)}.dot.gray{background:#c5c8ce}.sectionbar{display:flex;align-items:center;justify-content:space-between;margin:24px 0 16px;gap:20px}.sectionbar>span{font-size:12px;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;max-width:960px}.tile{position:relative;background:white;border:1px solid var(--line);border-radius:6px;display:flex;flex-direction:column;aspect-ratio:1;padding:22px;transition:transform .15s,box-shadow .15s;overflow:hidden}.tile:hover{transform:translateY(-3px);box-shadow:0 10px 25px #252e4012}.tile .index{font-size:11px;color:#79818d;letter-spacing:1px}.tile h3{margin:18px 0 6px}.tile .arrow{position:absolute;right:21px;top:17px;color:#68788e;font-size:24px}.tile .bottom{margin-top:auto}.tile small{font-size:11px;color:var(--muted)}.tile.photo{padding:0}.tile.photo .picture{height:46%;background-size:cover;background-position:center}.tile.photo .inner{display:flex;flex-direction:column;flex:1;padding:17px 21px}.tile.photo h3{margin:0 0 3px}.tile.photo .arrow{top:49%;right:20px}.bar{height:6px;border-radius:5px;background:#c5c8ce;display:flex;overflow:hidden;margin:15px 0 8px}.bar .ok{background:var(--green)}.bar .work{background:var(--amber)}.stats{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.intro{display:flex;gap:30px;align-items:center;padding:21px 24px;background:#efeeeb;border:1px solid #dededb;border-radius:5px;margin:24px 0}.intro .text{flex:1}.intro p{max-width:640px;font-size:13px}.ring{width:64px;height:64px;flex-shrink:0;border-radius:50%;background:conic-gradient(var(--green) 0deg var(--angle),#c5c8ce var(--angle) 360deg);display:grid;place-items:center}.ring span{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:#fff;font-size:14px;font-weight:600}.primary{background:var(--nav);color:#fff;border-color:var(--nav)}.lesson{max-width:960px}.lessonhead{border-left:3px solid var(--blue);padding:0 0 0 18px;margin:0 0 24px}.lessonhead p{font-size:14px;max-width:750px}.unlock{display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px;padding:17px 21px;background:#f0f5f3;border:1px solid #d3dfda;border-radius:6px;margin:20px 0}.unlock h3{font-size:23px;margin:4px 0}.badge{font-size:10px;font-weight:600;display:inline-block;padding:4px 8px;border-radius:3px;background:#e5f2ec;color:#206b55}.badge.blue{background:#e9edf4;color:#456f99}.badge.gray{background:#e9eaed;color:#616975}.badge.gold{background:#fbe9d9;color:#a24d16}.attempts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:13px}.note{padding:3px 8px;font-size:12px;border-bottom:1px solid #92bba9;border-radius:3px;background:white;color:#206b55}.note.low{color:#a24d16;border-color:#dca478}.quizrow{display:grid;grid-template-columns:45px 1fr auto;gap:16px;padding:14px 20px;background:white;border:1px solid var(--line);border-radius:6px;margin:12px 0;align-items:center}.quizrow.target{border:1.5px solid #d87932;box-shadow:0 0 0 3px #d879320c}.num{font:25px Georgia;color:#8d94a0}.quizrow h3{font-size:21px;margin:3px 0 6px}.quizrow p{font-size:12px;margin:3px 0}.quizrow button:disabled{background:#eeeef0;color:#787f8a;border-color:#d9dce1;cursor:default}.foot{margin-top:45px;border-top:1px solid var(--line);padding:20px 0;display:flex;justify-content:space-between;font-size:10px;color:#7b8290}.mapframe{position:relative;background:#faf9f6;border:1px solid #dededb;border-radius:7px;overflow:hidden;height:calc(100vh - 295px);min-height:460px;touch-action:none}.mapframe svg{width:100%;height:100%;display:block;cursor:grab}.mapframe svg:active{cursor:grabbing}.maptools{position:absolute;left:16px;top:15px;display:flex;gap:5px;z-index:2}.maptools button{padding:7px 12px;box-shadow:0 2px 8px #252e4008}.maphint{position:absolute;bottom:12px;left:16px;font-size:11px;color:#68707d;background:#fffffff0;padding:5px 10px;border-radius:4px;pointer-events:none}.mapnode{cursor:pointer}.mapnode:hover rect{stroke:#53657f;stroke-width:3}.mapnode:focus{outline:none}.mapnode:focus rect{stroke:#53657f;stroke-width:4}.mapsearch{display:flex;gap:8px;align-items:center;margin-bottom:14px}.mapsearch input{background:white;border:1px solid var(--line);border-radius:4px;padding:10px 12px;max-width:380px;width:100%;font-size:13px}.mapsearch span{margin-left:auto;font-size:11px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:8px;padding:28px;max-width:530px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 24px 80px #252e4040}dialog::backdrop{background:#252e4075}dialog p{font-size:14px;margin:18px 0}.dialogactions{display:flex;justify-content:flex-end;margin-top:24px}.notice{padding:18px 22px;background:white;border:1px solid var(--line);border-radius:6px;font-size:13px;margin:20px 0}details{background:#fff;border:1px solid var(--line);border-radius:5px;padding:14px 18px;font-size:12px}summary{cursor:pointer;color:var(--muted)}details p{line-height:1.8}.mobilebrand{display:none}.photos-control{font-size:11px;color:var(--muted);margin-top:15px}.photos-control label{cursor:pointer;text-decoration:underline}.photos-control input{display:none}.photos-control select{font:inherit;color:var(--ink);border:1px solid var(--line);padding:4px 8px;background:white;border-radius:4px;margin-left:10px}
@media(min-width:1500px){main{padding-left:65px;padding-right:65px}}@media(max-width:1100px){aside{width:190px;padding:30px 17px}.brand{font-size:21px}main{margin-left:190px;padding:22px 25px 0}.tile{padding:18px}.tile h3{font-size:21px}.grid{gap:15px}h1{font-size:37px}}@media(max-width:760px){aside{position:static;width:auto;padding:15px 18px;display:block}.brand{font-size:21px}.brand small{display:none}aside .nav-label,.account{display:none}aside nav{display:flex;gap:5px;margin-top:10px}aside nav a{padding:7px 11px;font-size:11px;margin:0}aside nav a i{display:none}main{margin:0;padding:17px 18px 0}.topline{padding-bottom:13px;font-size:10px}.heading{margin:25px 0 20px;align-items:flex-start;flex-direction:column;gap:10px}h1{font-size:35px}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tile{padding:16px}.tile h3{font-size:20px}.tile.photo .inner{padding:13px}.tile.photo{min-height:220px}.tile.photo .picture{min-height:90px}.tile small,.stats{font-size:9px}.sectionbar{align-items:flex-start;flex-direction:column;gap:10px}.legend{gap:13px}.intro{padding:18px;gap:18px}.quizrow{grid-template-columns:28px 1fr;padding:17px 14px;gap:9px}.quizrow>button{grid-column:2;justify-self:start}.unlock{grid-template-columns:1fr}.unlock>button{justify-self:start}.mapframe{height:65vh;min-height:400px}.mapsearch span{display:none}.foot{margin-top:30px}.tile .arrow{right:12px}.lessonhead{padding-left:13px}}@media(max-width:380px){.grid{grid-template-columns:1fr}.tile{aspect-ratio:auto;min-height:210px}.tile.photo{height:300px}}@media print{aside,.switch,.maptools,.photos-control,.demo{display:none}main{margin:0;padding:0}.tile{break-inside:avoid}.mapframe{height:700px}button{display:none}}

/* Domaine : contours et titres. Progression : fonds, badges et jauges. */
:root{--success:#278269;--success-ink:#206b55;--success-soft:#edf6f1;--available:#d87932;--available-ink:#a24d16;--available-soft:#fff3e8;--locked:#c5c8ce;--locked-soft:#eeeef0}
.tile{background:var(--locked-soft);border-top:3px solid var(--domain,#9da4af)}
.tile.is-accessible{background:var(--available-soft)}
.tile.is-validated{background:var(--success-soft)}
.tile .arrow,.tile h3{color:var(--domain,var(--ink))}
.bar .ok,.tile .bar .ok,.dot{background:var(--success)}
.bar .work,.dot.amber{background:var(--available)}
.bar,.dot.gray{background:var(--locked)}
.ring{background:conic-gradient(var(--success) 0deg var(--angle),var(--locked) var(--angle) 360deg)}
body[data-course-domain] .eyebrow,body[data-course-domain] .crumbs a{color:var(--domain)}
body[data-course-domain] .primary{background:var(--domain);border-color:var(--domain)}
body[data-course-domain] aside nav a.active{box-shadow:inset 3px 0 var(--domain);background:#ffffff15}
body[data-course-domain] .switch a.selected{color:var(--domain)}
body[data-course-domain] .quizrow,body[data-course-domain] .unlock{border-left:3px solid var(--domain)}
body[data-course-domain] .quizrow{background:var(--locked-soft)}
body[data-course-domain] .quizrow.target{background:var(--available-soft);border-color:var(--line);border-left-color:var(--domain);box-shadow:0 0 0 3px #d879320c}
body[data-course-domain] .quizrow.is-validated,.unlock{background:var(--success-soft)}
body[data-course-domain] .lessonhead{border-color:var(--domain)}
.badge.blue{color:var(--domain,var(--ink));background:var(--domain-soft,#eeeff2)}
.note:not(.low){color:var(--success-ink);border-color:var(--success)}
.note.low{color:var(--available-ink);border-color:var(--available)}
.mapnode:hover rect{stroke:var(--domain);stroke-width:3}
.mapnode:focus rect{stroke:var(--domain);stroke-width:4}

/* Version allégée : la progression reste localisée dans les jauges et badges. */
.tile,.tile.is-accessible,.tile.is-validated{background:#fff}
body[data-course-domain] .quizrow,body[data-course-domain] .quizrow.target,body[data-course-domain] .quizrow.is-validated,.unlock{background:#fff}
body[data-course-domain] .quizrow.target{box-shadow:none}
.note,.note.low,.note:not(.low){background:transparent;border-color:transparent;border-radius:0;box-shadow:none}
.note:hover{background:transparent;text-decoration:underline}

/* Actions de reprise discrètes, conservant le repère du domaine. */
.retry,body[data-course-domain] .primary.retry{background:var(--domain-soft,#eeeff2);color:var(--domain,#53657f);border-color:transparent}
.retry:hover,body[data-course-domain] .primary.retry:hover{background:var(--domain-soft,#eeeff2);border-color:var(--domain,#53657f)}

body[data-course-domain] .quizrow.is-assigned{transform:translateX(-8px);box-shadow:0 5px 18px #252e4026;border-color:var(--domain);background:#fff}
@media(max-width:760px){body[data-course-domain] .quizrow.is-assigned{transform:translateX(-4px)}}

.quizrow{grid-template-columns:82px 1fr auto}
.quizrow .num .badge{display:block;width:max-content;margin-top:6px;font:600 10px/1.5 'Segoe UI',Arial,sans-serif}
@media(max-width:760px){.quizrow{grid-template-columns:76px 1fr}}

@media(max-width:760px){.quizrow>a{grid-column:2;justify-self:start}.unlock>a{justify-self:start}}
