:root{color-scheme:dark;--bg:#0a1220;--nav:#0d1928;--panel:#13233a;--panel2:#1a2d47;--stroke:#30445b;--text:#edf3f9;--muted:#a8b9ca;--gold:#f2c675;--aqua:#77d8d2;--red:#fd8c89;--green:#95e0b5;--radius:18px;--shadow:0 18px 70px rgba(0,0,0,.22)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font:15.5px/1.65 system-ui,-apple-system,"Segoe UI",Arial,sans-serif}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.57}button:focus-visible,input:focus-visible{outline:3px solid var(--aqua);outline-offset:3px}a{color:var(--aqua)}.ambient{position:fixed;z-index:-1;pointer-events:none;filter:blur(5px)}.ambient-a{width:760px;height:700px;top:-440px;left:-190px;background:radial-gradient(circle,#23617b35,transparent 68%)}.ambient-b{width:750px;height:730px;bottom:-430px;right:-200px;background:radial-gradient(circle,#875c3530,transparent 70%)}.site-shell{max-width:1340px;padding:0 28px;margin:auto}.topbar{min-height:100px;display:flex;align-items:center;gap:35px;border-bottom:1px solid #2c3c507a;justify-content:space-between}.brand{display:flex;align-items:center;gap:11px;color:var(--text);border:none;background:none;text-align:left;line-height:1.1;flex-shrink:0}.brand-mark{width:45px;height:45px;display:grid;place-items:center;border:1px solid #f2c6757d;border-radius:14px;color:var(--gold);font-size:30px;background:#af813a18;box-shadow:inset 0 0 18px #eabb6a14}.brand strong{font-family:Georgia,serif;font-size:24px;font-weight:700;letter-spacing:-.5px}.brand small{display:block;color:var(--gold);font-size:9px;font-weight:800;letter-spacing:2.8px;padding-top:7px}.topnav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.nav-link{border:1px solid transparent;color:var(--muted);background:none;padding:10px 13px;border-radius:11px;font-size:13px;font-weight:700}.nav-link:hover,.nav-link.active{color:var(--text);background:#21374b;border-color:#314d5b}.top-stats{display:flex;align-items:center;gap:10px;flex-shrink:0}.stat{border:1px solid var(--stroke);border-radius:12px;padding:6px 10px;display:flex;align-items:center;gap:6px;background:#17273a;white-space:nowrap;font-size:13px}.stat b{font-size:14px}.stat small{color:var(--muted);font-size:10px}.hearts{color:#f08d88;letter-spacing:3px;font-size:19px;min-width:92px;justify-content:center}.footer{border-top:1px solid #2b3d50;margin:74px 0 0;padding:22px 2px 30px;display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted)}.muted{color:var(--muted)}.eyebrow{display:inline-flex;align-items:center;gap:7px;text-transform:uppercase;color:var(--gold);font-size:11px;letter-spacing:2.2px;font-weight:850}.page-title{font:700 clamp(35px,4vw,57px)/1.1 Georgia,"Times New Roman",serif;letter-spacing:-1.4px;margin:13px 0 17px}.lead{max-width:750px;color:#b9c8d8;font-size:17px;line-height:1.85;margin:0}.highlight{color:var(--gold)}.muted-caption{font-size:12px;color:#96adbe}.hero{margin-top:35px;display:grid;grid-template-columns:minmax(0,1.13fr) minmax(340px,.87fr);gap:22px}.hero-content{position:relative;border:1px solid #56644c;background:linear-gradient(128deg,#253649 0%,#18293d 70%,#142036);padding:clamp(25px,4vw,52px);border-radius:23px;overflow:hidden;box-shadow:var(--shadow)}.hero-content:before{content:"✦";position:absolute;font-size:270px;line-height:1;opacity:.047;right:0;bottom:-70px;color:var(--gold)}.hero-content>*{position:relative}.hero-content p{max-width:560px;color:#c6d4e0}.hero-title{font:700 clamp(36px,4.1vw,60px)/1.12 Georgia,serif;margin:14px 0 22px;letter-spacing:-1px}.hero-actions{display:flex;gap:11px;flex-wrap:wrap;margin:26px 0 24px}.primary,.secondary,.quiet,.danger{display:inline-flex;justify-content:center;align-items:center;gap:9px;padding:12px 18px;border-radius:12px;font-size:14px;font-weight:800;text-decoration:none;transition:transform .14s,background .14s}.primary{border:1px solid #ffdb92;color:#271d14;background:linear-gradient(120deg,#ffe6a4,#e6b45e);box-shadow:0 5px 15px #0002}.secondary{border:1px solid #537184;background:#25425a;color:#eaf6fc}.quiet{border:1px solid var(--stroke);background:#13253c;color:#dbe8f2}.danger{border:1px solid #934e50;color:#ffbbbb;background:#44252e}.primary:hover:not(:disabled),.secondary:hover:not(:disabled),.quiet:hover:not(:disabled),.danger:hover:not(:disabled){transform:translateY(-2px)}.hero-illustration{position:relative;overflow:hidden;min-height:410px;border-radius:23px;border:1px solid #5b6a74;background:radial-gradient(circle at 50% 35%,#536b78 0,#26384e 29%,#142033 75%);box-shadow:var(--shadow)}.stars{position:absolute;inset:0;background-image:radial-gradient(#f8d694b9 1px,transparent 1.5px),radial-gradient(#91c8de70 1px,transparent 1.5px);background-size:57px 74px,105px 86px;background-position:10px 20px,40px 32px;opacity:.5}.moon{position:absolute;left:50%;top:56px;transform:translateX(-50%);width:155px;height:155px;border:2px solid #e6ce97a3;border-radius:50%;background:radial-gradient(circle,#d9e7ea2f,#bdc6aa0f 65%);box-shadow:0 0 70px #dfd2a23a,0 0 0 24px #d9c68e09}.castle{position:absolute;width:270px;height:220px;left:50%;bottom:66px;transform:translateX(-50%);display:flex;justify-content:center;align-items:end;filter:drop-shadow(0 12px 15px #02070b90)}.tower{width:58px;height:156px;background:linear-gradient(90deg,#273244,#47566b,#29374d);border:2px solid #67758a;position:absolute;bottom:0}.tower:first-child{left:14px}.tower:last-child{right:14px;height:177px}.tower:before{content:"";position:absolute;top:-31px;left:-6px;border-left:33px solid transparent;border-right:33px solid transparent;border-bottom:34px solid #25344e}.tower:after{content:"✧";position:absolute;top:51px;left:17px;color:#ffdd88;font-size:25px;text-shadow:0 0 12px #f6d171}.keep{position:absolute;width:147px;height:187px;bottom:0;background:linear-gradient(90deg,#2b3d50,#596879 49%,#2a3b4f);border:2px solid #6c7d8a;clip-path:polygon(0 14%,50% 0,100% 14%,100% 100%,0 100%)}.door{position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);width:62px;height:101px;border-radius:38px 38px 0 0;background:linear-gradient(90deg,#100f1c,#0c1a25);border:4px solid #caa867;box-shadow:0 0 29px #e5b45c9e,inset 0 0 25px #dfba5b3f}.ground{position:absolute;bottom:0;left:-10%;width:120%;height:95px;background:linear-gradient(#1c3540,#0f1d2b);border-radius:50% 50% 0 0}.illustration-label{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:#d6cfbd;font-size:12px;letter-spacing:2px;text-transform:uppercase;font-weight:800}.section{margin-top:50px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:19px}.section-head h2{font:700 30px Georgia,serif;margin:0}.section-head p{margin:6px 0 0;color:var(--muted)}.grid{display:grid;gap:16px}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:linear-gradient(147deg,#182b42,#112137);border:1px solid var(--stroke);border-radius:var(--radius);padding:24px;box-shadow:0 10px 28px #030a1530}.card h3{font:700 22px Georgia,serif;margin:12px 0 10px}.card p{color:#b5c5d3;margin:0 0 18px}.card-icon{font-size:28px;width:54px;height:54px;background:#2b4253;border:1px solid #4d6171;border-radius:14px;display:grid;place-items:center}.meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;color:#a3bac9}.pill{display:inline-flex;align-items:center;gap:5px;border-radius:99px;background:#304151;border:1px solid #587080;padding:4px 10px;font-size:11px;font-weight:750;color:#dbe9ec}.pill-gold{color:#f4d39b;background:#65502d55;border-color:#c1985278}.pill-green{color:#a3ecc7;background:#28654d55;border-color:#55b38e78}.pill-locked{color:#a6b6c5;background:#24384a;border-color:#41566c}.card-action{margin-top:19px}.card-action button{width:100%}.chapter-panel{margin-top:24px;border:1px solid #6573566d;border-radius:20px;padding:29px;background:linear-gradient(120deg,#233548,#172a3b)}.chapter-panel h2{font:700 31px Georgia,serif;margin:9px 0}.chapter-panel .progress-track{margin:16px 0 10px}.chapter-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.progress-track{height:9px;background:#2a4054;border-radius:50px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#7bc9c1,#f1cd83);border-radius:50px;transition:width .4s}.chapter-roadmap{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.roadmap-item{border:1px solid #354d63;background:#132538;padding:12px;border-radius:13px;font-size:12px;color:#9aafbf;min-height:77px}.roadmap-item strong{display:block;color:#d7e4ed;font-size:14px}.roadmap-item.active{background:#32463d;border-color:#b3a464}.roadmap-item.active strong{color:var(--gold)}.page-head{margin:37px 0 30px}.body-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:21px}.side-panel{align-self:start;background:#15283c;border:1px solid var(--stroke);border-radius:18px;padding:17px;position:sticky;top:15px}.side-panel h3{margin:7px 10px 16px;font-size:12px;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted)}.side-link{display:flex;width:100%;text-align:left;gap:11px;align-items:center;padding:13px 11px;background:transparent;color:#b4c7d8;border:none;border-radius:10px;font-size:13px;font-weight:680}.side-link:hover,.side-link.selected{background:#294557;color:#fff}.side-link.selected .side-index{color:#f4d089}.side-index{font-size:12px;color:#85a0b4;min-width:17px}.lesson-body{padding:30px 35px;background:#172a40;border:1px solid #3a526a;border-radius:18px;min-height:490px}.lesson-body h2{font:700 33px Georgia,serif;margin:9px 0 16px}.lesson-body h3{font-size:16px;margin:26px 0 12px;color:#f1d7a0}.lesson-body p{color:#c9d7e4}.lesson-body ul{padding-left:24px;color:#d2dce6}.lesson-body li{margin:10px 0}.formula{display:inline-block;color:#f0ddae;font-family:Cambria,Georgia,serif;font-size:1.22em;letter-spacing:.1px}.example-box,.hint-box,.warning-box,.success-box,.error-box{padding:18px 20px;border-radius:13px;margin:18px 0;border:1px solid #607365;background:#253a48}.example-box{border-color:#658772;background:#253f42}.warning-box{border-color:#b57f4d;background:#4e3c303d}.hint-box{border-color:#5ba9b8;background:#21414b}.success-box{border-color:#48a285;background:#214538}.error-box{border-color:#b15b62;background:#4d2a37}.example-box > strong,.warning-box > strong,.hint-box > strong{display:block;margin-bottom:8px;color:#f8db9f}.lesson-body .example-box p,.lesson-body .warning-box p{margin:4px 0}.lesson-actions{margin-top:27px;display:flex;gap:10px;flex-wrap:wrap}.quiz-container{max-width:900px;margin:0 auto}.quiz-card{padding:34px;border:1px solid #506882;background:linear-gradient(135deg,#1c3047,#132339);border-radius:21px}.question-title{font:700 27px/1.3 Georgia,serif;margin:20px 0}.question-label{font-size:12px;color:var(--gold);letter-spacing:1.5px;text-transform:uppercase;font-weight:800}.answer-row{display:flex;gap:9px;align-items:stretch;flex-wrap:wrap;margin:24px 0 12px}.answer-input{width:100%;max-width:280px;padding:13px 15px;border:1px solid #668396;background:#0d1b2b;color:#fff;border-radius:11px;appearance:textfield}.answer-input::placeholder{color:#7e95a9}.answer-input.sci{width:135px}.times{color:#e6d1a5;align-self:center;font-weight:800;font-family:Georgia,serif;font-size:22px}.answer-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.option{padding:12px 14px;background:#233a4c;border:1px solid #506778;color:#e6f0f7;border-radius:12px;text-align:left}.option.selected{border-color:var(--gold);background:#504a37;color:#fff}.feedback{margin-top:17px}.quiz-progress{display:flex;justify-content:space-between;align-items:center;gap:10px;color:#b4c3d0;font-size:13px;margin-bottom:8px}.line-note{font-size:13px;color:#b8c9d4}.quiz-finish{text-align:center;padding:18px}.quiz-finish .trophy{font-size:61px}.room-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:24px 0}.room-card{background:#182c40;border:1px solid #435d73;padding:15px;min-height:152px;border-radius:15px;text-align:left;color:#dce8f1}.room-card .room-number{font-size:10px;letter-spacing:1.4px;text-transform:uppercase;color:#c0ad8d}.room-card strong{display:block;font:700 19px/1.2 Georgia,serif;margin:13px 0 8px}.room-card small{font-size:12px;color:#a9bdca}.room-card.completed{border-color:#598870;background:#213e3e}.room-card.ready{border-color:#b99660;background:#34413b}.room-card:disabled{opacity:.52}.story-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px}.story-scene{border:1px solid #55697b;border-radius:19px;background:linear-gradient(#23364d,#142338);padding:30px;position:relative;overflow:hidden}.story-scene:before{content:"✧";position:absolute;top:-85px;right:10px;font-size:280px;opacity:.045}.story-scene>*{position:relative}.story-scene h2{font:700 34px Georgia,serif;margin:12px 0}.story-scene p{color:#c1d1de;max-width:780px}.scene-emoji{font-size:68px;line-height:1.2}.sidebar-card{background:#15293d;border:1px solid var(--stroke);border-radius:18px;padding:21px;align-self:start}.sidebar-card h3{margin:0 0 10px;font:700 23px Georgia,serif}.sidebar-card p,.sidebar-card li{font-size:13px;color:#b5c7d3}.sidebar-card ul{padding-left:21px}.reward{color:#f7d795;font-weight:800}.final-boss{background:radial-gradient(circle at 80% 0,#68445155,transparent 43%),linear-gradient(160deg,#2f263c,#192639);border-color:#996c72}.final-boss .question-title{color:#ffdebe}.boss-timeline{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}.boss-dot{width:34px;height:8px;border-radius:50px;background:#36526a}.boss-dot.on{background:#f1c07c}.boss-dot.done{background:#76d8b6}.inventory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:25px 0}.inventory-item{border:1px solid #465c70;background:#1b3045;border-radius:15px;padding:21px}.inventory-item .item-emoji{font-size:46px}.inventory-item h3{font:700 23px Georgia,serif;margin:8px 0}.inventory-item p{font-size:13px;color:#b7c6d1;min-height:63px}.owned-note{color:#9adfbd;font-weight:750;font-size:13px}.class-selection{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.class-selection button{border-radius:13px;padding:10px 6px;background:#1b3249;color:#dceaf5;border:1px solid #486079}.class-selection button.chosen{border:2px solid #e4bb77;background:#4b4239}.class-selection span{display:block;font-size:26px}.class-selection small{font-size:11px}.mini-head{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap}.new-badge{background:#355647;color:#ace9c2;font-size:10px;border-radius:4px;padding:3px 6px}.toast{position:fixed;bottom:18px;right:20px;max-width:355px;background:#f5dba6;color:#30251a;padding:12px 16px;border-radius:12px;box-shadow:0 15px 30px #0008;opacity:0;transform:translateY(12px);transition:opacity .3s,transform .3s;pointer-events:none;font-size:14px;font-weight:750;z-index:20}.toast.show{opacity:1;transform:none}.empty{padding:30px;text-align:center;border:1px dashed #52677a;border-radius:15px;color:#afc1ce}.spacer{height:12px}.boss-solutions{padding-left:24px}.boss-solutions li{margin:10px 0}@media(max-width:1130px){.topbar{gap:17px;flex-wrap:wrap;padding:18px 0}.topnav{order:3;width:100%;justify-content:center}.top-stats{margin-left:auto}.hero{grid-template-columns:1fr 330px}.room-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:830px){.site-shell{padding:0 15px}.hero{grid-template-columns:1fr}.hero-illustration{min-height:300px}.grid-3,.grid-2{grid-template-columns:1fr}.body-layout,.story-layout{grid-template-columns:1fr}.side-panel{position:static}.chapter-roadmap{grid-template-columns:repeat(3,1fr)}.inventory-grid{grid-template-columns:1fr 1fr}.lesson-body{padding:24px}.footer{flex-wrap:wrap}.room-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:530px){.brand strong{font-size:19px}.brand-mark{width:37px;height:37px}.top-stats{gap:5px}.stat{padding:5px 6px}.topnav{justify-content:start;flex-wrap:nowrap;overflow-x:auto}.nav-link{padding:7px 9px;font-size:12px}.hero-content{padding:25px}.page-title{font-size:35px}.chapter-roadmap{grid-template-columns:repeat(2,1fr)}.inventory-grid,.class-selection{grid-template-columns:1fr}.quiz-card{padding:22px}.answer-options{grid-template-columns:1fr}.lesson-body{padding:19px}.room-grid{grid-template-columns:1fr 1fr}.hearts{min-width:75px}.story-scene{padding:21px}}

/* V2 : choix de matières, profils locaux et véritable arène animée. */
.profile-chip{background:#1c324b;border:1px solid #637b91;color:#f4d8a0;border-radius:12px;padding:7px 12px;font-size:13px;max-width:135px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.profile-chip:hover{background:#294158}
.program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.program-card{background:linear-gradient(140deg,#19304a,#142338);border:1px solid #456078;border-radius:20px;padding:26px}
.program-card.chosen-program{border:1px solid #cfb27f;box-shadow:inset 0 0 25px #c9a66815}
.program-card h2{font:700 26px Georgia,serif;margin:12px 0 8px}
.program-card p{color:#b6c5d3}.program-emblem{font-size:42px}
.program-card button{margin-top:12px}
.adventure-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.adventure-chapter,.chapter-roadmap button{cursor:pointer;color:#ebf2fa;text-align:left}
.adventure-chapter{border:1px solid #3f5870;border-radius:17px;background:linear-gradient(145deg,#203951,#142538);padding:17px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:172px}
.adventure-chapter:hover,.chapter-roadmap button:hover{border-color:#e7c68b;background:#29445b;transform:translateY(-2px)}
.adventure-chapter.featured{border-color:#bfa16c;background:linear-gradient(145deg,#3c4539,#1c3642)}
.adventure-chapter strong{font:700 18px/1.24 Georgia,serif}
.adventure-chapter small{font-size:12px;color:#aac1d0}.adventure-icon{font-size:27px}
.adventure-chapter .pill{margin-top:auto}
.chapter-roadmap .roadmap-item{font-family:inherit}
.profile-form{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:15px}
.profile-form input{width:min(100%,360px);background:#0e2032;color:#fff;border:1px solid #617d91;border-radius:10px;padding:12px}
.profile-list{display:flex;flex-direction:column;gap:8px}.profile-option{text-align:left;border-radius:9px;border:1px solid #425d73;background:#1d364d;color:white;padding:11px}.profile-option.active-profile{border-color:#d5b782;background:#394639}
.combat-arena{position:relative;isolation:isolate;overflow:hidden;min-height:290px;margin:21px 0 26px;border:1px solid #627b8d;border-radius:17px;background:radial-gradient(ellipse at 50% 85%,#557d7460,transparent 54%),radial-gradient(ellipse at 50% 5%,#495b83a8,transparent 65%),linear-gradient(180deg,#0d192e,#1a3147 64%,#17242d);box-shadow:inset 0 0 60px #0006}
.combat-arena:before{content:"";position:absolute;z-index:-1;top:17%;left:6%;right:6%;height:61%;opacity:.58;background:repeating-linear-gradient(90deg,transparent 0,transparent 110px,#4e718054 112px,#2e505c 120px,transparent 124px),linear-gradient(transparent 53%,#122735 54%);clip-path:polygon(0 100%,0 12%,9% 12%,9% 0,16% 0,16% 15%,84% 15%,84% 0,91% 0,91% 12%,100% 12%,100% 100%)}
.combat-arena:after{content:"";position:absolute;bottom:34px;left:0;right:0;height:13px;background:linear-gradient(90deg,transparent,#65807b77,transparent);filter:blur(7px)}
.arena-stars{position:absolute;top:19px;left:45%;color:#f3d9a3;opacity:.65;font-size:22px;letter-spacing:35px}
.combat-fighters{display:grid;grid-template-columns:minmax(0,1fr) 70px minmax(0,1fr);gap:0;min-height:235px;padding:20px 12px 6px;align-items:end}
.fighter{display:flex;flex-direction:column;align-items:center;position:relative;min-width:0}
.fighter-name{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:800;color:#f7ecd7;text-shadow:0 2px 5px #0009}
.life-meter{width:clamp(60px,75%,170px);height:9px;background:#1f2a36;border:1px solid #7a9196;border-radius:12px;overflow:hidden;margin:7px 0}
.life-meter span{display:block;background:linear-gradient(90deg,#58bd91,#b2e2a0);height:100%;transition:width .4s}.beast-meter span{background:linear-gradient(90deg,#df6a64,#ffa47c)}
.sprite{height:126px;display:grid;place-items:center;position:relative;filter:drop-shadow(0 10px 8px #0007)}
.sprite>span:last-child{font-size:91px;display:block;line-height:1.2;transform-origin:center bottom;animation:idle 2.2s ease-in-out infinite}
.hero-sprite{filter:drop-shadow(0 0 23px #87e4ec88) drop-shadow(0 10px 6px #0007)}
.beast-sprite{filter:drop-shadow(0 0 20px #ee786a55) drop-shadow(0 10px 7px #0009)}
.beast-sprite>span:last-child{font-size:100px;animation-duration:1.8s}
.hero-weapon{position:absolute;top:9px;right:-16px;color:#fff3b2;font-size:35px;text-shadow:0 0 12px #a1f4fa}
.fighter-floor{display:block;width:105px;height:11px;border-radius:50%;background:#07172588;box-shadow:0 0 14px #020a1180;filter:blur(2px);margin-top:-8px}
.combat-center{position:relative;height:100%;display:grid;place-items:center}
.versus{font:italic 800 26px Georgia,serif;color:#ecd09a;text-shadow:0 2px 9px #0008}
.magic-shot,.claw-shot{opacity:0;position:absolute;z-index:5;top:43%;left:12%;font-size:73px;color:#7fe9ff;filter:drop-shadow(0 0 22px #71eaff);pointer-events:none}
.claw-shot{color:#ff917b;filter:drop-shadow(0 0 22px #ff7d73);left:70%}
.combat-announcement{position:relative;z-index:4;min-height:39px;text-align:center;padding:8px 12px;color:#f7e3b4;background:#0a1a2bc2;font-weight:800;letter-spacing:.3px}
.combat-arena.hero-attacking .hero-sprite{animation:hero-lunge .65s ease-out 1}
.combat-arena.hero-attacking .magic-shot{animation:magic-flight 1.0s ease-out forwards}
.combat-arena.hero-attacking .beast-sprite{animation:beast-hit .65s ease-in-out .53s 1}
.combat-arena.beast-attacking .beast-sprite{animation:beast-lunge .7s ease-out 1}
.combat-arena.beast-attacking .claw-shot{animation:claw-flight 1s ease-out forwards}
.combat-arena.beast-attacking .hero-sprite{animation:hero-hit .65s ease-in-out .52s 1}
.combat-arena.enemy-defeated .beast-sprite{opacity:0;transform:scale(.2) rotate(40deg);filter:blur(20px);transition:opacity .8s,transform .8s,filter .8s}
.combat-arena.enemy-defeated .beast-meter span{width:0!important}
@keyframes idle{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes hero-lunge{0%{transform:translateX(0)}35%{transform:translateX(36px) scale(1.1)}100%{transform:translateX(0)}}
@keyframes beast-lunge{0%{transform:translateX(0)}35%{transform:translateX(-36px) scale(1.1)}100%{transform:translateX(0)}}
@keyframes magic-flight{0%{opacity:0;transform:translateX(-100px) scale(.2)}35%{opacity:1}80%{opacity:1;transform:translateX(210px) scale(1.4)}100%{opacity:0;transform:translateX(270px) scale(2.6)}}
@keyframes claw-flight{0%{opacity:0;transform:translateX(100px) scale(.2)}35%{opacity:1}80%{opacity:1;transform:translateX(-210px) scale(1.4)}100%{opacity:0;transform:translateX(-270px) scale(2.6)}}
@keyframes beast-hit{0%,100%{transform:translateX(0)}35%{transform:translateX(17px) rotate(14deg);filter:brightness(2)}67%{transform:translateX(-10px) rotate(-10deg)}}
@keyframes hero-hit{0%,100%{transform:translateX(0)}35%{transform:translateX(-16px) rotate(-13deg);filter:brightness(2)}67%{transform:translateX(10px) rotate(9deg)}}
@media(max-width:900px){.adventure-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.program-grid{grid-template-columns:1fr}}
@media(max-width:560px){.adventure-picker{grid-template-columns:1fr}.combat-arena{min-height:244px}.combat-fighters{grid-template-columns:minmax(0,1fr) 45px minmax(0,1fr);padding:18px 3px 0}.sprite{height:115px}.sprite>span:last-child{font-size:67px}.beast-sprite>span:last-child{font-size:70px}.fighter-name{font-size:10px}.versus{font-size:16px}.magic-shot,.claw-shot{font-size:51px}.profile-chip{max-width:94px;padding:6px}.top-stats{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.sprite>span:last-child{animation:none}.combat-arena.hero-attacking .hero-sprite,.combat-arena.beast-attacking .beast-sprite,.combat-arena.hero-attacking .beast-sprite,.combat-arena.beast-attacking .hero-sprite,.combat-arena.hero-attacking .magic-shot,.combat-arena.beast-attacking .claw-shot{animation:none}}

/* V3 — arène illustrée et combats rejouables. Tous les graphismes sont originaux,
   enregistrés dans assets/ et disponibles sans connexion internet. */
.combat-arena{height:clamp(350px,36vw,445px);min-height:350px;margin:16px 0 22px;border:2px solid #937955;border-radius:20px;background-color:#162138;background-position:center;background-size:cover;box-shadow:0 22px 45px #04061180,inset 0 0 50px #040715;overflow:hidden}
.combat-arena.dungeon-arena{background-image:linear-gradient(180deg,#09132630 0%,transparent 55%,#03081935 100%),url("assets/dungeon.svg")}
.combat-arena.forest-arena{background-image:linear-gradient(180deg,#071a2233 0%,transparent 55%,#04150b30 100%),url("assets/forest.svg")}
.combat-arena::before{display:none}
.combat-arena::after{z-index:1;bottom:46px;height:45px;background:linear-gradient(0deg,#091323ac,transparent);filter:none}
.arena-vignette{position:absolute;inset:0;pointer-events:none;z-index:0;background:linear-gradient(90deg,#07101d6e,transparent 22%,transparent 78%,#07101d67),radial-gradient(ellipse at center,transparent 20%,#03071165 100%)}
.arena-hud{display:flex;justify-content:space-between;align-items:center;gap:9px;position:relative;z-index:3;padding:9px 16px 0;font-size:10px;font-weight:800;letter-spacing:1.1px;color:#ffde9f;text-shadow:0 2px 4px #000b}
.arena-hud span:first-child{border-radius:7px;border:1px solid #fff6;padding:5px 9px;background:#0b1b2a9c}
.combat-fighters{position:absolute;z-index:2;inset:35px 0 40px;grid-template-columns:minmax(0,1fr) minmax(85px,.55fr) minmax(0,1fr);align-items:end;padding:4px 9px 1px;min-height:0}
.fighter{height:100%;justify-content:end;min-height:0}
.fighter-name{font-size:clamp(11px,1.2vw,15px);line-height:1.3;text-shadow:0 3px 8px #000,0 0 7px #000;font-weight:950;color:#fff5db;letter-spacing:.2px}
.life-meter{width:min(78%,220px);margin:4px 0 0;height:11px;border:1px solid #c6c1ac;background:#1c253b;box-shadow:0 1px 8px #06101e}
.life-meter span{background:linear-gradient(90deg,#2ebf7f,#c9efa3)}
.beast-meter span{background:linear-gradient(90deg,#ec423e,#ffb86b)}
.sprite{height:min(69%,265px);width:min(100%,275px);min-height:0;display:flex;align-items:end;justify-content:center;margin:auto auto 0;filter:drop-shadow(0 18px 6px #020615b0)}
.sprite .fighter-art{display:block;max-height:100%;max-width:100%;height:100%;width:100%;object-fit:contain;animation:v3-idle 2.7s ease-in-out infinite;transform-origin:center bottom;user-select:none;pointer-events:none}
.hero-sprite{filter:drop-shadow(0 2px 14px #71cce43b) drop-shadow(0 13px 6px #020615ae)}
.beast-sprite{filter:drop-shadow(0 0 16px #fb774b50) drop-shadow(0 13px 8px #020615aa)}
.fighter-floor{width:min(75%,180px);margin:-7px 0 0;height:13px;position:relative;background:#07101faa;filter:blur(4px)}
.combat-center{height:100%;z-index:5;position:relative;display:flex;align-items:center;justify-content:center}
.versus{font:900 italic clamp(23px,3vw,36px) Georgia,serif;color:#ffe5ac;filter:drop-shadow(0 0 8px #f0b46275);text-shadow:0 3px 12px #000b}
.combat-announcement{position:absolute;z-index:10;bottom:0;left:0;right:0;border-top:1px solid #edd5ac83;background:#0d172ce0;min-height:42px;padding:9px 14px;font-size:14px}
.magic-shot,.claw-shot{position:absolute;display:block;z-index:7;opacity:0;top:45%;left:-70px;width:205px;height:145px;max-width:none;object-fit:contain;pointer-events:none;filter:drop-shadow(0 0 18px #ffb242b7)}
.claw-shot{left:auto;right:-70px;filter:drop-shadow(0 0 14px #f44a4b)}
.battle-burst{position:absolute;z-index:6;top:50%;right:-90px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,#fffcc9 2%,#ffb35788 20%,#ec442f1f 56%,transparent 70%);opacity:0;pointer-events:none}
.combat-arena.hero-attacking .hero-sprite{animation:hero-lunge .62s ease-out 1}
.combat-arena.hero-attacking .magic-shot{animation:v3-power 1.05s cubic-bezier(.12,.66,.2,1) forwards}
.combat-arena.hero-attacking .beast-sprite{animation:beast-hit .6s ease-in-out .46s 1}
.combat-arena.hero-attacking .battle-burst{animation:v3-burst .65s .5s 1 ease-out}
.combat-arena.beast-attacking .beast-sprite{animation:beast-lunge .64s ease-out 1}
.combat-arena.beast-attacking .claw-shot{animation:v3-claw 1.05s cubic-bezier(.13,.66,.25,1) forwards}
.combat-arena.beast-attacking .hero-sprite{animation:hero-hit .6s ease-in-out .44s 1}
.combat-arena.beast-attacking{animation:v3-shake .6s .42s 1}
.combat-arena.enemy-defeated .beast-sprite{opacity:.07;transform:translateY(60px) scale(.35);filter:blur(18px) drop-shadow(0 0 50px #ffdc6b);transition:opacity .8s,transform .8s,filter .8s}
.combat-arena.enemy-defeated .beast-meter span{width:0!important}
.portrait-art{height:118px;width:100%;max-width:130px;object-fit:contain;filter:drop-shadow(0 9px 5px #020615a8);transition:transform .2s}
.class-selection button:hover .portrait-art{transform:translateY(-5px) scale(1.035)}
.class-selection button.chosen{border-color:#f3ce85;background:linear-gradient(#45523c,#1d3447)}
.class-selection span{display:none}
.castle-guardian{position:absolute;bottom:27px;right:-5px;width:140px;height:210px;filter:drop-shadow(2px 4px 14px #020713b9);z-index:2}
.adventure-chapter.featured{background:linear-gradient(145deg,#435044,#193d47);box-shadow:inset 0 0 22px #e6d3940e}
.room-card.completed{border-color:#b3a45c}
.room-card.completed:hover,.room-card.ready:hover{border-color:#ffe6a5}
@keyframes v3-idle{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes v3-power{0%{opacity:0;transform:translateX(-140px) translateY(22px) scale(.4) rotate(-6deg)}18%{opacity:1}64%{opacity:1;transform:translateX(70px) translateY(4px) scale(1.1)}90%{opacity:1;transform:translateX(155px) translateY(0) scale(1.5)}100%{opacity:0;transform:translateX(185px) scale(1.85)}}
@keyframes v3-claw{0%{opacity:0;transform:translateX(150px) scale(.35)}25%{opacity:1}80%{opacity:1;transform:translateX(-160px) scale(1.4)}100%{opacity:0;transform:translateX(-200px) scale(1.7)}}
@keyframes v3-burst{0%{opacity:0;transform:scale(.1)}35%{opacity:1}100%{opacity:0;transform:scale(1.9)}}
@keyframes v3-shake{0%,100%{transform:translateX(0)}30%{transform:translateX(-5px)}48%{transform:translateX(7px)}68%{transform:translateX(-4px)}}
@media(max-width:720px){.combat-arena{height:315px;min-height:315px}.combat-fighters{inset:38px 0 40px;grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);padding:2px 3px}.sprite{height:min(66%,185px)}.fighter-name{font-size:11px;white-space:normal;min-height:28px;text-align:center}.magic-shot,.claw-shot{width:145px;height:99px;left:-58px}.claw-shot{left:auto;right:-58px}.arena-hud span{font-size:9px}.arena-hud span:last-child{display:none}.battle-burst{right:-55px;width:120px;height:120px}.castle-guardian{width:95px;height:150px}.portrait-art{height:105px}}
@media(prefers-reduced-motion:reduce){.sprite .fighter-art{animation:none}.combat-arena.hero-attacking .magic-shot,.combat-arena.beast-attacking .claw-shot{animation:none;opacity:.7}.combat-arena.hero-attacking .battle-burst,.combat-arena.hero-attacking .hero-sprite,.combat-arena.beast-attacking .beast-sprite,.combat-arena.beast-attacking,.combat-arena.hero-attacking .beast-sprite,.combat-arena.beast-attacking .hero-sprite{animation:none}}

/* V5 : véritable bibliothèque de cours et parcours de 20 questions */
.course-catalog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin:22px 0 30px}
.course-tile{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;min-height:125px;padding:16px;border-radius:16px;border:1px solid rgba(194,206,235,.2);background:rgba(22,33,53,.68);color:var(--text,#e9effe);cursor:pointer;transition:transform .16s,border .16s;line-height:1.3}
.course-tile:hover{transform:translateY(-2px);border-color:rgba(208,176,94,.8)}.course-tile.selected-course{border:2px solid #ebc66c;background:rgba(68,58,40,.57)}
.course-tile>span{color:#e8c878;font-size:.76rem;font-weight:700;letter-spacing:.1em}.course-tile strong{font-size:.95rem}.course-tile small{opacity:.72;margin-top:auto}
.course-current{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 26px;padding:22px;border:1px solid rgba(226,185,99,.4);border-radius:18px;background:linear-gradient(110deg,rgba(57,53,64,.72),rgba(23,37,53,.8))}
.course-current h2{margin:5px 0 7px;font-size:1.44rem}.course-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.pdf-action{display:inline-flex;align-items:center;justify-content:center;text-align:center;text-decoration:none;border-radius:11px;padding:13px 16px;font-weight:800}
.pdf-inline{display:block;margin:18px 0 3px;color:#ebc66c;text-decoration:none;font-weight:700}.pdf-inline:hover{text-decoration:underline}
.course-article{line-height:1.72;font-size:1.045rem}.course-article p{margin:12px 0}.course-article h3{margin:22px 0 8px;font-size:1.2rem}.course-article li{margin:9px 0}.course-article .worked-examples>li{padding:11px 12px;border-bottom:1px solid rgba(209,224,247,.12)}.course-article .worked-examples>li p{margin:4px 0 0}
.room-progress{padding:13px 15px;border-radius:12px;background:rgba(25,35,52,.66);margin:13px 0 18px}.room-progress .progress-track{margin:9px 0}.room-progress small{opacity:.8}
@media (max-width:950px){.course-catalog{grid-template-columns:repeat(2,minmax(0,1fr))}.course-current{flex-direction:column;align-items:flex-start}.course-actions{justify-content:flex-start}}
@media (max-width:560px){.course-catalog{grid-template-columns:1fr}.course-tile{min-height:95px}.course-current{padding:16px}}

.course-all-pdf{margin:-10px 0 25px;text-align:right}.course-all-pdf a{color:#f0ce83;font-weight:700;text-decoration:underline;text-underline-offset:3px}

/* V6 · Atelier de code et aventures SNT */
.combat-arena.cyber-arena{background-image:linear-gradient(180deg,#08243925,#060f1f44),url("assets/cyber.svg")}
.snt-hero-art{background:radial-gradient(circle at 50% 42%,#1d728287,#14253f 64%,#111d30);display:grid;place-items:center}
.snt-hero-glyph{font:900 clamp(84px,13vw,155px) / 1.2 ui-monospace,monospace;color:#a2ece6;text-shadow:0 0 40px #2aa1af88;transform:rotate(-7deg);letter-spacing:-.14em;margin-right:.14em}
.snt-hero-caption{position:absolute;bottom:25px;left:20px;right:20px;text-align:center;font-size:12px;color:#efdaaf;font-weight:850;letter-spacing:2px}
.code-task{width:100%;border:1px solid #466d80;background:#091827;border-radius:14px;overflow:hidden;margin:10px 0 18px}
.code-topline{display:flex;gap:9px;align-items:center;background:#192f41;padding:11px 15px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;color:#bfe8e7}
.code-topline small{margin-left:auto;color:#9db2c6;font-size:11px}.code-led{width:9px;height:9px;background:#8de3c4;border-radius:50%;box-shadow:0 0 11px #74e3bd}
.code-snippet{margin:0;padding:22px 18px;font:15px/1.75 ui-monospace,SFMono-Regular,Consolas,monospace;color:#b9e8f6;white-space:pre-wrap;overflow-wrap:anywhere;tab-size:4}
.code-label{display:block;margin:6px 15px 5px;color:#dbe3f5;font-size:13px;font-weight:750}
.code-answer{display:block;min-height:67px;width:calc(100% - 30px);margin:6px 15px;background:#101f32;border:1px solid #7292a9;border-radius:8px;padding:11px;color:#e2f8ff;font:15px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;resize:vertical}
.code-answer:focus-visible{outline:2px solid #8ed9c7;outline-offset:2px}.code-help{font-size:12px;color:#9cbbcc;margin:8px 16px 14px}
@media(max-width:720px){.snt-hero-glyph{font-size:98px}.code-topline small{display:none}.code-snippet{font-size:13px;padding:15px 12px}.code-answer{font-size:14px}}
