 :root{--ink:#20213d;--muted:#8989a4;--purple:#7048e8;--deep:#5938d7;--lilac:#ede5ff;--coral:#ff8d79;--mint:#76dfc0;--pink:#ffcede;--yellow:#ffdc87;--paper:#f8f7fc;--border:#e9e8f1;--white:#fff;--shadow:0 18px 48px rgba(54,47,102,.07)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:'Nunito','DM Sans',system-ui,sans-serif;color:var(--ink);background:var(--paper)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #bda9ff;outline-offset:2px}a{text-decoration:none;color:inherit}.shell{display:grid;grid-template-columns:252px minmax(0,1fr) 318px;min-height:100vh;max-width:1920px;margin:auto}.sidebar{background:#fff;border-right:1px solid var(--border);padding:31px 17px 18px 24px;display:flex;flex-direction:column;position:sticky;height:100vh;top:0}.brand{display:flex;gap:12px;align-items:center;padding-left:4px;font-size:30px;line-height:1;font-weight:900;letter-spacing:-1.6px}.brand small{display:block;font-size:10px;letter-spacing:.3px;font-weight:800;color:#a7a3bf;margin-top:8px}.brand-dot{color:var(--coral)}.brand-mark{width:41px;height:41px;border-radius:15px;display:grid;place-items:center;background:var(--purple);color:white;font-size:31px;position:relative;box-shadow:0 7px 12px #7048e82b}.brand-mark i{position:absolute;width:11px;height:11px;border-radius:50%;background:var(--coral);top:-4px;right:-3px}.sidebar-divider{height:1px;background:var(--border);margin:36px 7px 31px 0}.sidebar-label{font:800 10px 'DM Sans',sans-serif;letter-spacing:1.6px;color:#aaa9c1;margin:0 13px 13px}.nav-list{display:flex;flex-direction:column;gap:9px}.nav-item{display:flex;align-items:center;text-align:left;gap:13px;padding:15px 16px;background:transparent;border:0;border-radius:14px;color:#777895;font-weight:800;font-size:13px;width:100%;min-height:50px}.nav-item:hover{background:#f5f1ff;color:var(--purple)}.nav-item.active{background:#f0eaff;color:var(--purple)}.nav-emoji{font-size:20px;width:27px;text-align:center}.nav-active-dot{width:6px;height:6px;border-radius:50%;background:var(--purple);margin-left:auto}.sidebar-bottom{margin-top:auto}.sidebar-tip{background:#f4efff;border-radius:18px;padding:17px 16px 14px;margin-bottom:19px}.sidebar-tip .tip-icon{font-size:20px;display:block;margin-bottom:10px}.sidebar-tip b{font-size:12px;display:block}.sidebar-tip p{font-size:11px;line-height:1.6;color:#7c799a;margin:5px 0 0}.profile{width:100%;display:flex;align-items:center;gap:10px;background:#fff;border:0;border-top:1px solid var(--border);padding:17px 0 0;text-align:left}.profile-avatar,.top-avatar{width:35px;height:35px;border-radius:12px;display:grid;place-items:center;background:#ffe0d6;font-weight:900;color:#9e5c4c}.profile b{font-size:12px}.profile small{display:block;font-size:10px;color:#9694ae;margin-top:2px}.profile-chevron{margin-left:auto;color:#aba9be}.main{min-width:0;padding:0 34px 22px}.topbar{height:87px;display:flex;align-items:center;justify-content:space-between;gap:12px}.breadcrumb{font-size:12px;color:#a2a1b6;font-weight:800}.breadcrumb span{padding:0 9px;color:#cecada}.breadcrumb b{color:#55516b}.top-actions{display:flex;align-items:center;gap:13px}.language-pill{display:flex;align-items:center;gap:8px;background:white;border:1px solid var(--border);padding:9px 13px;border-radius:13px;font-size:12px;font-weight:900}.language-picker{position:relative}.language-trigger{display:flex;align-items:center;gap:12px;background:#f0eaff;border:1px solid #ddd0ff;border-radius:16px;padding:10px 14px;min-height:58px;box-shadow:0 4px 14px rgba(112,72,232,.10);text-align:left}.language-trigger-copy{display:flex;flex-direction:column;gap:1px;align-items:flex-start}.language-kicker{font-size:12px;font-weight:800;color:#7c799a}.language-current{display:flex;align-items:center;gap:8px}.language-current #language-icon{font-size:20px;line-height:1}.language-current #language-current-name{font-size:20px;line-height:1.1;font-weight:900;color:#342b54}.language-chevron{font-size:22px;color:var(--coral);margin-left:6px}.language-options{position:absolute;top:calc(100% + 8px);left:0;min-width:260px;max-width:min(320px,80vw);background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:0 16px 32px rgba(52,43,84,.16);padding:10px;z-index:60}.language-options[hidden]{display:none}.language-context{font-size:12px;font-weight:800;color:#77718b;padding:4px 10px 8px}.language-options-grid{display:grid;gap:4px}.language-option{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;border-radius:12px;padding:12px 10px;font-size:15px;font-weight:800;color:#55516b}.language-option:hover,.language-option:focus-visible{background:#f5f1ff;color:var(--purple)}.language-option.selected{background:#f0eaff;color:var(--purple)}.language-option-mark{font-size:18px}.flag{font-size:16px}.language-arrow{color:#aaa6c5}.circle-action{border:1px solid var(--border);background:#fff;border-radius:13px;width:37px;height:37px;font-size:16px}.top-avatar{width:36px;height:36px}.page-heading{display:flex;align-items:end;justify-content:space-between;margin:10px 0 24px}.eyebrow{font-weight:900;color:var(--purple);font-size:11px;letter-spacing:1.7px;text-transform:uppercase}.page-heading h1{font-size:clamp(26px,3vw,36px);letter-spacing:-1.3px;line-height:1.25;margin:5px 0 7px;font-weight:900}.muted{color:var(--muted);font-size:13px;line-height:1.55}.pill-notice{background:#fff;border:1px solid var(--border);border-radius:100px;padding:9px 15px;font-size:12px;font-weight:800;color:#696780}.pill-notice b{color:#ff846d}.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:23px}.stat{background:#fff;border:1px solid #efedf7;min-height:103px;border-radius:18px;padding:17px 19px;display:flex;align-items:center;gap:13px}.stat-icon{width:49px;height:49px;border-radius:14px;display:grid;place-items:center;font-size:24px;flex-shrink:0}.stat-icon.purple{background:#f0eafe}.stat-icon.orange{background:#fff0e8}.stat-icon.green{background:#e7faf4}.stat .stat-number{font-weight:900;font-size:24px;letter-spacing:-1px}.stat-label{font-size:11px;color:#9291a7;font-weight:800}.hero{min-height:288px;border-radius:25px;position:relative;overflow:hidden;background:linear-gradient(111deg,#7050e9 0%,#7853e3 55%,#9972f4 100%);box-shadow:0 16px 35px #674ad12c;margin-bottom:28px;padding:33px 32px;display:flex;align-items:center;justify-content:space-between}.hero::after{content:"";position:absolute;width:340px;height:340px;right:-76px;top:-105px;border:2px solid #ffffff25;border-radius:50%}.hero::before{content:"";position:absolute;width:270px;height:270px;right:60px;bottom:-170px;background:#b69dff34;border-radius:50%}.hero-copy{position:relative;z-index:2;max-width:390px}.hero-tag{display:inline-flex;align-items:center;gap:8px;background:#ffffff2a;border:1px solid #ffffff40;color:white;border-radius:30px;padding:7px 12px;font-size:10px;letter-spacing:.8px;font-weight:900}.hero h2{color:white;font-size:clamp(24px,3vw,34px);letter-spacing:-1px;line-height:1.16;margin:17px 0 11px;font-weight:900}.hero p{color:#eee6ff;font-size:12px;line-height:1.65;margin:0 0 20px;max-width:310px}.btn{border:0;border-radius:13px;padding:12px 19px;font-size:12px;font-weight:900;display:inline-flex;align-items:center;gap:12px;justify-content:center;min-height:43px;transition:transform .16s,box-shadow .16s}.btn:hover{transform:translateY(-2px)}.btn-white{background:white;color:#6740da;box-shadow:0 6px 18px #3b168631}.btn-primary{background:var(--purple);color:#fff;box-shadow:0 8px 18px #633ed42f}.btn-secondary{background:#f2edff;color:#653ed7}.btn-soft{background:#fff;color:var(--ink);border:1px solid var(--border)}.hero-art{height:248px;width:295px;position:relative;margin-right:-5px;flex-shrink:0;z-index:1}.hero-disc{position:absolute;border-radius:50%;width:218px;height:218px;background:#ffffff24;left:55px;top:25px}.hero-bubble{position:absolute;z-index:4;background:white;padding:9px 14px;font-weight:900;box-shadow:0 9px 22px #3221731f;color:#4c2fbb;border-radius:14px;font-size:13px;transform:rotate(5deg);right:-1px;top:15px}.hero-bubble::after{content:"";position:absolute;bottom:-8px;left:20px;border-width:8px 8px 0 0;border-style:solid;border-color:white transparent transparent transparent}.art-person{position:absolute;bottom:0;width:134px;height:208px;filter:drop-shadow(0 9px 3px #4c25b927)}.art-person.one{left:28px;transform:rotate(-5deg)}.art-person.two{right:29px;height:191px;width:140px;transform:rotate(5deg)}.art-head{width:96px;height:107px;border-radius:45% 45% 46% 46%;position:absolute;left:20px;top:25px;background:#ba7551;z-index:2;box-shadow:inset -11px 0 #00000012}.art-person.two .art-head{background:#8b543a;left:21px;top:20px}.art-hair{position:absolute;z-index:3;left:17px;top:10px;width:100px;height:59px;background:#262039;border-radius:60px 60px 20px 20px}.art-person.two .art-hair{background:#201b34;left:18px;top:5px;height:77px;border-radius:60px 60px 28px 28px}.art-eyes{position:absolute;left:23px;top:60px;z-index:5;font-size:24px;color:#231c26;letter-spacing:16px}.art-smile{position:absolute;top:95px;left:57px;width:21px;height:12px;border-bottom:4px solid #5e2c30;border-radius:50%;z-index:5}.art-body{position:absolute;bottom:0;left:2px;width:134px;height:106px;border-radius:65px 65px 5px 5px;background:#f5b594}.art-person.two .art-body{background:#f5d463}.art-spark{position:absolute;color:#ffc989;font-size:24px;font-weight:900}.art-spark.a{top:36px;left:8px}.art-spark.b{bottom:14px;right:0}.section-title{display:flex;align-items:center;justify-content:space-between;margin:2px 0 14px}.section-title h3{font-size:17px;letter-spacing:-.3px;margin:0;font-weight:900}.section-link{border:0;background:transparent;color:var(--purple);font-size:11px;font-weight:900}.adventure-grid{display:grid;grid-template-columns:1.26fr .74fr;gap:16px;margin-bottom:24px}.adventure-card,.culture-card,.content-card{border:1px solid var(--border);border-radius:20px;background:white;box-shadow:0 3px 12px #5d4e9610}.adventure-card{padding:23px;display:flex;gap:16px;align-items:center}.adventure-visual{display:grid;place-items:center;font-size:56px;min-width:110px;height:134px;background:#fff2e9;border-radius:18px;position:relative}.adventure-visual::after{content:"01";font-size:11px;font-weight:900;color:#d9937e;position:absolute;right:11px;top:10px}.adventure-copy h4{margin:4px 0;font-size:18px;letter-spacing:-.3px}.adventure-copy p{margin:2px 0 12px;font-size:11px;color:#8d8ba6;line-height:1.65}.small-purple{color:var(--purple);font-size:10px;letter-spacing:1px;font-weight:900}.tiny-progress{display:flex;align-items:center;gap:8px;margin-bottom:13px}.progress-track{height:7px;background:#efeaf9;border-radius:20px;flex:1;overflow:hidden}.progress-fill{height:100%;width:0%;border-radius:20px;background:var(--purple);transition:width .3s}.tiny-progress span{font-size:10px;color:#88859e;font-weight:900}.culture-card{padding:22px;background:#e9fbf5;border:0;position:relative;overflow:hidden}.culture-card::after{content:"✳";position:absolute;right:-10px;top:-18px;font-size:99px;color:#d6f4e9}.culture-top{display:flex;align-items:center;gap:7px;color:#26906c;font-weight:900;letter-spacing:.8px;font-size:10px;position:relative;z-index:1}.culture-card h4{font-size:23px;margin:13px 0 8px;letter-spacing:-.5px}.culture-card p{font-size:11px;color:#688b82;line-height:1.75;max-width:240px;position:relative;z-index:1}.culture-card button{border:0;background:white;color:#227c61;border-radius:11px;padding:10px 12px;font-size:11px;font-weight:900;position:relative;z-index:1}.viva-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:24px}.viva-card{background:white;border:1px solid var(--border);border-radius:18px;padding:17px 14px 15px;min-height:142px;position:relative;overflow:hidden}.viva-card .phase-num{position:absolute;right:12px;top:11px;color:#cfcbdd;font-size:10px;font-weight:900}.viva-icon{font-size:21px;width:43px;height:43px;display:grid;place-items:center;border-radius:13px;margin-bottom:12px}.viva-card h4{font-size:12px;margin:0 0 5px;font-weight:900}.viva-card p{font-size:10px;color:#9a98ad;line-height:1.55;margin:0}.viva-card:nth-child(1) .viva-icon{background:#ffefec}.viva-card:nth-child(2) .viva-icon{background:#fff3d8}.viva-card:nth-child(3) .viva-icon{background:#e7f8f3}.viva-card:nth-child(4) .viva-icon{background:#eee8ff}.right-panel{background:#fff;border-left:1px solid var(--border);height:100vh;position:sticky;top:0;padding:35px 22px 22px;display:flex;flex-direction:column;min-height:0}.right-panel-top{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.6px;font-weight:900;color:#9b98b2}.sparkle{color:var(--purple);font-size:20px;line-height:1}.buddy-card{background:linear-gradient(160deg,#eee5ff,#f8f4ff);border-radius:21px;padding:14px 17px 18px;margin-top:19px;position:relative;text-align:center}.buddy-stars{font-size:15px;color:#ffb36b;display:flex;justify-content:space-between;padding:0 18px}.buddy-stars span{font-size:22px;color:#9d82ef}.mascot-wrap{height:142px;display:grid;place-items:center}.mascot-svg{width:140px;max-height:152px;filter:drop-shadow(0 11px 10px #6045c526);animation:floaty 3.4s ease-in-out infinite}@keyframes floaty{0%,100%{transform:translateY(2px) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}.buddy-intro h3{margin:9px 0 7px;font-size:17px;letter-spacing:-.3px}.buddy-intro h3 span{font-size:14px}.buddy-intro p{margin:0 auto;color:#8a80a5;font-size:11px;line-height:1.5;max-width:220px}.tiny-badge{font-size:9px;font-weight:900;letter-spacing:1.3px;color:#8f6adb}.coach-status{margin:20px 0 14px;border-radius:12px;border:1px solid var(--border);padding:11px 13px;display:flex;align-items:center;gap:9px;font-size:11px;font-weight:800;color:#716f86}.status-dot{width:9px;height:9px;border-radius:50%;background:#ffad72;box-shadow:0 0 0 3px #ffecdc}.status-dot.live{background:#49bb8d;box-shadow:0 0 0 3px #d6f5e7}.coach-status button{margin-left:auto;border:0;background:transparent;color:#a8a4c2}.mini-chat{overflow:auto;min-height:95px;flex:1;display:flex;flex-direction:column;gap:12px;padding:3px 2px 13px}.chat-row{display:flex;gap:8px;align-items:end}.chat-row.user{justify-content:flex-end}.bubble{padding:10px 12px;font-size:11px;line-height:1.6;max-width:90%;border-radius:15px 15px 15px 4px;color:#66627e;background:#f5f2fd;overflow-wrap:anywhere}.chat-row.user .bubble{background:var(--purple);border-radius:15px 15px 4px 15px;color:white}.chat-avatar{width:22px;height:22px;border-radius:9px;display:grid;place-items:center;background:#e5d9ff;color:#6346cc;font-weight:900;font-size:13px;flex-shrink:0}.mini-chat-form{border:1px solid var(--border);border-radius:13px;padding:4px;display:flex;align-items:center;gap:5px;flex-shrink:0}.mini-chat-form input{border:0;padding:8px 6px 8px 9px;min-width:0;width:100%;font-size:11px;outline:none}.mini-chat-form button{border:0;background:var(--purple);color:#fff;border-radius:9px;width:33px;height:33px;flex-shrink:0;font-size:17px}.right-footnote{font-size:9px;color:#b5b2c5;text-align:center;line-height:1.5;margin-top:12px}.footer{padding:18px 0 4px;display:flex;justify-content:space-between;font-weight:900;font-size:11px;color:#494263;gap:14px}.footer .footer-beta,.footer>span:last-child{color:#aaa5bb;font-weight:600;font-size:10px}.content-card{padding:27px;margin-bottom:18px}.content-card h2,.content-card h3{margin:0 0 11px}.view-intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:20px}.view-intro h1{font-size:30px;margin:6px 0 5px;letter-spacing:-1px}.view-intro p{font-size:12px;color:var(--muted);margin:0}.journey-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:23px}.journey-card{border-radius:20px;background:white;border:1px solid var(--border);padding:23px;text-align:left;position:relative;min-height:217px;transition:transform .2s}.journey-card:not(:disabled):hover{transform:translateY(-3px);box-shadow:var(--shadow)}.journey-card .journey-symbol{font-size:38px;display:block;margin-bottom:15px}.journey-card h3{margin:0 0 7px;font-size:17px}.journey-card p{font-size:12px;color:var(--muted);line-height:1.55;margin:0 0 20px}.journey-card .journey-badge{position:absolute;right:20px;top:20px;border-radius:30px;background:#f2eeff;color:var(--purple);padding:6px 10px;font-size:10px;font-weight:900}.journey-card .journey-bottom{font-size:11px;font-weight:900;color:var(--purple)}.journey-card.locked{background:#faf9fc;opacity:.68}.journey-card.locked .journey-bottom{color:#9d9bac}.lesson{max-width:800px;margin:0 auto}.lesson-banner{background:linear-gradient(115deg,#7048e8,#9b7df5);padding:21px 25px;color:white;border-radius:18px;margin-bottom:19px;display:flex;justify-content:space-between;gap:14px;align-items:center}.lesson-banner h2{font-size:22px;margin:3px 0 0;letter-spacing:-.5px}.lesson-banner .eyebrow{color:#e8ddff}.lesson-progress{display:flex;gap:7px}.lesson-progress span{width:28px;height:7px;border-radius:5px;background:#ffffff54}.lesson-progress span.done{background:#fff}.lesson-card{border-radius:22px;background:white;border:1px solid var(--border);padding:34px;min-height:410px;box-shadow:var(--shadow)}.lesson-phase{font-size:11px;font-weight:900;letter-spacing:1px;color:var(--purple);text-transform:uppercase;margin-bottom:12px}.lesson-card h2{font-size:27px;line-height:1.24;letter-spacing:-.7px;margin:0 0 9px}.lesson-card p{font-size:13px;line-height:1.65;color:#7d7a94}.scene-box{display:flex;gap:20px;align-items:center;background:#fff3ec;border-radius:17px;padding:19px;margin:26px 0}.scene-emoji{font-size:57px}.scene-phrase{font-weight:900;font-size:26px;color:#6a42d8;margin:6px 0}.scene-translation{font-size:11px;color:#a79aa1}.lesson-choice{display:grid;grid-template-columns:1fr;gap:10px;margin:23px 0}.answer{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:15px 16px;border:2px solid #eeedf5;background:#fff;border-radius:14px;font-weight:900;font-size:13px;color:#53516e}.answer:hover{border-color:#c3b0fb}.answer.selected{border-color:var(--purple);background:#f4efff;color:var(--purple)}.answer.correct{background:#e8fbf3;border-color:#68d4ab;color:#20765a}.answer.wrong{background:#fff1f0;border-color:#ffaaa2;color:#bd5b51}.answer-index{width:25px;height:25px;border-radius:8px;display:grid;place-items:center;background:#f2f0f9;flex-shrink:0}.lesson-feedback{background:#eefcf6;border-left:4px solid #70d6b4;border-radius:12px;padding:13px;font-size:12px;margin:11px 0;line-height:1.55}.lesson-feedback.error{background:#fff3f1;border-color:#ff9a8b}.lesson-actions{display:flex;justify-content:space-between;gap:10px;margin-top:25px;flex-wrap:wrap}.practice-phrase{padding:18px;background:#f4efff;color:#6645ce;border-radius:15px;text-align:center;font-size:26px;font-weight:900;margin:19px 0 15px}.practice-input{width:100%;padding:15px 16px;border:2px solid #e9e5f5;border-radius:14px;outline:0;font-size:14px;color:var(--ink)}.practice-input:focus{border-color:var(--purple)}.record-wrap{display:flex;align-items:center;gap:12px;background:#f5faf9;border-radius:15px;padding:14px 17px;margin:18px 0}.record-wrap p{font-size:11px;margin:2px 0 0}.record-btn{background:#f85f82;color:#fff;border:0;border-radius:50%;width:40px;height:40px;flex-shrink:0}.record-btn.recording{animation:pulse 1s infinite}@keyframes pulse{50%{box-shadow:0 0 0 9px #ffadbd68}}.record-wrap audio{width:100%;max-width:215px;height:34px}.challenge{background:#e9fbf4;border-radius:16px;padding:20px 23px;margin:20px 0}.challenge .challenge-icon{font-size:35px}.challenge h3{font-size:19px;margin:8px 0}.challenge p{margin:0;color:#60867b}.completion{text-align:center;padding:28px}.completion .complete-emoji{font-size:80px}.completion h2{font-size:31px}.completion p{max-width:350px;margin:0 auto 25px}.reward-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.reward-card{text-align:center;background:white;border:1px solid var(--border);border-radius:18px;padding:23px 13px}.reward-card .medal{font-size:40px;display:block;margin-bottom:11px}.reward-card b{font-size:12px;display:block}.reward-card p{font-size:10px;color:var(--muted);line-height:1.5}.reward-card.locked{filter:grayscale(.9);opacity:.55}.family-box{background:linear-gradient(120deg,#ffeee7,#fff8f4);border-radius:18px;padding:23px;display:flex;align-items:center;gap:20px}.family-box .family-big{font-size:66px}.family-box h3{margin:0 0 8px}.family-box p{font-size:12px;color:#936f63;line-height:1.6}.coach-main-chat{height:360px;overflow:auto;display:flex;flex-direction:column;gap:11px;padding:8px 3px 21px}.coach-large-form{display:flex;gap:8px;margin-top:16px}.coach-large-form input{border:1px solid var(--border);border-radius:13px;padding:13px;flex:1;min-width:0}.prompt-grid{display:flex;gap:8px;flex-wrap:wrap}.prompt-chip{background:#f4f0ff;border:1px solid #e4dafa;color:#6844cc;border-radius:35px;padding:9px 12px;font-size:11px;font-weight:900}.notice{padding:14px 18px;background:#fff8ec;border:1px solid #f8e7d3;border-radius:14px;color:#9b7862;font-size:11px;line-height:1.6;margin:15px 0}.toasts{position:fixed;bottom:24px;right:24px;z-index:50;display:flex;flex-direction:column;gap:8px}.toast{background:#28223d;color:#fff;border-radius:13px;box-shadow:0 12px 24px #21183733;padding:13px 17px;max-width:320px;font-size:12px;font-weight:800;animation:fadein .25s ease}@keyframes fadein{from{transform:translateY(10px);opacity:0}}dialog{border:0;border-radius:22px;padding:0;max-width:430px;width:calc(100% - 35px);box-shadow:0 24px 80px #251b5450}dialog::backdrop{background:#242039a8}.modal-content{padding:27px}.modal-content h2{margin:4px 0 10px;font-size:23px}.modal-content p{color:#817c97;font-size:12px;line-height:1.65}.modal-content input{width:100%;border:1px solid var(--border);border-radius:12px;padding:13px;margin:8px 0 17px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.mobile-nav{display:none} .interstitial{background:#f4efff;border-radius:17px;padding:22px;margin-bottom:18px}.interstitial h3{margin:0 0 6px}.interstitial p{color:#9286ae;font-size:12px;line-height:1.55;margin:0}.inline-check{background:#f2fcf6;border-radius:15px;padding:17px;margin:20px 0;display:flex;gap:12px}.inline-check input{width:21px;height:21px;accent-color:var(--purple)}
@media(max-width:1350px){.shell{grid-template-columns:224px minmax(0,1fr) 285px}.sidebar{padding-left:17px}.main{padding:0 23px 22px}.right-panel{padding:35px 15px 18px}.hero-art{transform:scale(.88);transform-origin:center right;margin-right:-28px}.hero-copy{max-width:360px}.adventure-card{padding:16px}.adventure-visual{min-width:88px}}
@media(max-width:1120px){.shell{grid-template-columns:214px minmax(0,1fr)}.right-panel{display:none}.main{padding:0 25px 22px}.hero-art{margin-right:0}.mini-chat{min-height:80px}}
@media(max-width:720px){.shell{display:block;padding-bottom:70px}.sidebar{display:none}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:20;background:#fff;border-top:1px solid var(--border);justify-content:space-around;padding:9px 8px calc(9px + env(safe-area-inset-bottom))}.mobile-nav button{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:20px;color:#665c84}.mobile-nav span{font-size:9px;font-weight:900}.main{padding:0 17px 12px}.topbar{height:65px}.language-pill{font-size:11px}.circle-action{display:none}.page-heading{display:block;margin:13px 0 19px}.page-heading h1{font-size:25px}.pill-notice{display:inline-block;margin-top:5px}.stat-grid{gap:8px}.stat{min-height:83px;padding:11px;gap:7px;flex-direction:column;align-items:flex-start}.stat-icon{width:32px;height:32px;font-size:18px;border-radius:9px}.stat .stat-number{font-size:18px}.stat-label{font-size:9px}.hero{min-height:255px;padding:23px 20px}.hero h2{font-size:27px;max-width:250px}.hero p{font-size:11px;max-width:230px}.hero-art{position:absolute;right:-82px;bottom:-50px;opacity:.65;transform:scale(.75)}.hero-copy{z-index:3}.adventure-grid{grid-template-columns:1fr}.viva-grid{grid-template-columns:repeat(2,1fr)}.footer{flex-direction:column;gap:6px}.journey-grid{grid-template-columns:1fr}.view-intro h1{font-size:25px}.lesson-card{padding:22px 17px;min-height:400px}.lesson-card h2{font-size:23px}.scene-phrase,.practice-phrase{font-size:21px}.scene-emoji{font-size:46px}.reward-grid{grid-template-columns:repeat(2,1fr)}.family-box{align-items:start}.family-box .family-big{font-size:36px}.coach-main-chat{height:330px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Complete pilot: accessible accounts, curriculum and feedback. */
.skip-link{position:fixed;left:16px;top:-70px;z-index:100;background:#20213d;color:white;padding:14px;border-radius:12px}.skip-link:focus{top:12px}
:focus-visible{outline:3px solid #7048e8;outline-offset:4px}button,input,select,textarea{font:inherit}button:disabled{cursor:not-allowed;opacity:.6}h1,h2,h3,p{overflow-wrap:anywhere}.account-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#eeebfb;padding:14px 16px;border-radius:16px;margin-bottom:22px;font-size:13px;line-height:1.6}.account-strip>div{display:flex;gap:14px;align-items:center}.btn-small{padding:9px 12px!important;font-size:12px!important}.toolbar{display:flex;gap:16px;flex-wrap:wrap;margin:18px 0}.home-nio{display:grid;place-items:center;min-width:180px;width:32%;position:relative}.home-nio svg{max-width:220px;width:100%;filter:drop-shadow(0 16px 0 #5034a833)}.module-section{margin:32px 0 44px}.module-section .section-title h2{font-size:20px}.module-section .journey-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.journey-card.locked{opacity:.78}.journey-card.locked .journey-bottom{font-size:11px;line-height:1.6;display:block}.journey-card{min-width:0}.journey-card h3{line-height:1.4}.journey-card p{line-height:1.6}.choice-list{display:grid;gap:12px;margin:22px 0}.choice{display:flex;align-items:center;gap:16px;width:100%;text-align:left;padding:16px;border:2px solid #e5dff7;background:white;border-radius:16px;color:#20213d;cursor:pointer}.choice span{background:#efe8ff;border-radius:8px;padding:5px 10px}.choice.selected{border-color:#7048e8;background:#f3efff}.choice.correct{border-color:#359c7e;background:#eafbf5}.feedback{padding:18px;border-radius:16px;margin:18px 0}.feedback.good{background:#eafbf5}.feedback.retry{background:#fff0ec}.lesson-card label,.modal-content label:not(.inline-check),.review-form label{display:block;font-weight:800;font-size:13px;margin:16px 0 8px}.modal-content input:not([type=checkbox]),.modal-content select,.review-form input{box-sizing:border-box;display:block;width:100%;border:1.5px solid #cfc6e7;border-radius:12px;padding:12px;background:#fff;color:#20213d;font-size:16px}.modal-content select{height:48px}.modal-content>form>.btn,.review-form>.btn{margin-top:16px}.modal-content p{font-size:13px;line-height:1.7}.modal-content .section-link{display:block;margin-top:18px;text-align:left}.modal-content .inline-check{display:flex;gap:10px;align-items:flex-start;line-height:1.7;font-size:13px;margin:18px 0}.inline-check input{flex:0 0 auto;width:18px;height:18px;accent-color:#7048e8}.form-error{color:#9f2142;min-height:20px}.account-tools{border-top:1px solid #e5dff7;margin-top:22px;padding-top:16px}.account-tools .btn{margin:10px 0;width:100%}.btn-danger{background:#b62d4b;color:white}.dialog-close{position:absolute;right:12px;top:12px}dialog{max-height:90dvh;overflow-y:auto;max-width:min(560px,94vw);border:0;border-radius:24px}dialog::backdrop{background:#20213d77;backdrop-filter:blur(4px)}.audio-area{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:22px 0}.audio-area audio{max-width:100%;width:270px}.audio-area small{font-size:11px;line-height:1.6;color:#65627d;flex-basis:100%}.xp-gain{font-weight:900;font-size:36px;color:#7048e8;margin:22px 0}.trophy-unlock{background:#e5f9f0;padding:16px;border-radius:16px;margin:20px 0}.review-grid{display:grid;gap:20px}.review-result{line-height:1.7;font-weight:700}.family-row{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #eee;padding:16px 0}.nio-heading{display:flex;align-items:center;gap:22px}.nio-heading svg{width:94px}.top-avatar{border:0;cursor:pointer}.content-card p{line-height:1.7}.notice{line-height:1.7}.error{background:#fff0ec;color:#9f2142}.section-link{cursor:pointer}.footer{gap:12px;flex-wrap:wrap}.mobile-nav{overflow-x:auto}.main{min-width:0}
@keyframes view-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes gain{0%{opacity:0;transform:scale(.7) translateY(20px)}65%{transform:scale(1.15)}100%{opacity:1;transform:scale(1)}}@keyframes trophy{from{transform:rotate(-8deg) scale(.8)}to{transform:rotate(0) scale(1)}}@keyframes nio-breathe{50%{transform:translateY(-5px) rotate(2deg)}}@keyframes dots{50%{opacity:.25}}.view-enter{animation:view-in .24s ease-out}.xp-gain{animation:gain .65s cubic-bezier(.2,.8,.3,1)}.trophy-unlock{animation:trophy .65s ease-out}.thinking svg{animation:nio-breathe 1.4s ease-in-out infinite}.nio-thinking .bubble span{animation:dots 1s infinite}.btn,.journey-card,.prompt-chip{transition:transform .17s ease,box-shadow .17s ease,background .17s ease}.btn:hover,.prompt-chip:hover{transform:translateY(-2px)}.btn:active,.journey-card:active{transform:scale(.98)}.reward-card.earned .medal{animation:trophy .5s ease-out}.progress-fill{transition:width .45s ease}.recording{animation:dots 1s infinite}
@media(max-width:700px){.account-strip{align-items:flex-start;flex-direction:column}.home-nio{min-width:90px;width:28%}.hero-copy{min-width:0}.hero h2{font-size:27px}.module-section .journey-grid{grid-template-columns:1fr}.module-section .section-title{align-items:flex-start}.module-section .section-title h2{font-size:18px}.modal-content{padding:20px 12px!important}.account-strip>div{flex-wrap:wrap}.footer{padding-bottom:32px}dialog{width:92vw}.lesson-card{padding:24px 18px!important}.nio-heading{gap:12px}.choice{padding:13px}.lesson-actions{flex-wrap:wrap}.hero{overflow:hidden}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.view-enter,.thinking svg,.xp-gain{transform:none!important}}
/* Voix de Nio : contrôles compacts, lisibles sur ordinateur et mobile. */
.voice-controls{display:flex;flex-wrap:wrap;gap:9px;margin:14px 0 0}.voice-controls .btn{min-height:38px;padding:9px 13px}.voice-controls .is-active{background:#ede6ff;border-color:#9b7cf1;color:#5030bd;box-shadow:0 0 0 3px #a98dff2b}.voice-mic.is-active{animation:voice-pulse 1.1s ease-in-out infinite}.voice-unavailable{font-size:11px;font-weight:800;color:#868198;background:#f6f4fa;border-radius:11px;padding:10px 12px}.chat-row{position:relative}.chat-listen{align-self:center;width:30px;height:30px;border:1px solid #ddd2f7;background:#fff;color:#6947d8;border-radius:10px;flex:0 0 auto;font-size:13px}.chat-listen:hover,.chat-listen.is-speaking{background:#f0eaff;border-color:#9e80ed}.chat-listen.is-speaking{animation:voice-pulse 1s ease-in-out infinite}@keyframes voice-pulse{50%{box-shadow:0 0 0 6px #a98dff2e}}
@media(max-width:700px){.coach-main-chat{height:210px}.voice-controls{display:grid;grid-template-columns:1fr 1fr}.voice-controls .btn{width:100%;font-size:11px;padding:10px 7px}.chat-listen{width:29px;height:29px}.coach-large-form{flex-wrap:wrap}.coach-large-form input{min-height:44px}.coach-large-form .btn{width:100%}}
.daily-series{display:flex;align-items:center;justify-content:space-between;gap:24px;background:#f7f3ff}.daily-series h2{font-size:19px;margin:5px 0}.daily-series p{margin:0;color:#69627d;font-size:12px}.daily-meter{width:min(300px,45%);display:grid;gap:8px}.daily-meter small{font-size:10px;color:#77718b}.ordered-course{background:#fff;border:1px solid var(--border);border-radius:20px;padding:22px;margin:0 0 22px}.ordered-course h2{font-size:19px;margin:7px 0 17px}.mission-path{display:flex;align-items:stretch;gap:9px}.mission-path>i{align-self:center;font-style:normal;color:#8f6adb;font-size:21px}.path-step{border:1px solid #e7dff8;background:#faf8ff;color:#342b54;border-radius:14px;padding:13px;display:grid;gap:3px;text-align:left;flex:1;min-width:0}.path-step>span{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#7048e8;color:#fff;font-size:10px;font-weight:900}.path-step b{font-size:13px}.path-step small{font-size:10px;color:#77718b}.journey-register{color:#77718b;font-size:12px;margin:-9px 0 17px}.listen-button{border:1px solid #d9cef9;background:#f4efff;color:#5935b7;border-radius:10px;padding:8px 10px;font-size:11px;font-weight:900;margin:5px 0}.audio-pending{display:inline-block;color:#837d93;background:#f4f2f7;border-radius:9px;padding:7px 9px;font-size:11px;font-weight:800;margin:5px 0}.scene-response{border-top:1px solid #f0dfd9;margin-top:13px;padding-top:12px;display:grid;gap:4px}.scene-response b{color:#52358e;font-size:16px}.culture-note{margin:18px 0;padding:14px 17px;border-left:4px solid #51b992;background:#edfbf5;border-radius:0 13px 13px 0}.culture-note span{font-size:10px;letter-spacing:1px;font-weight:900;color:#237b60}.culture-note p{margin:5px 0 0!important;color:#44766a!important}.listening-prompt{display:flex;align-items:center;justify-content:space-between;gap:13px;background:#f6f2ff;border-radius:14px;padding:13px 15px;margin:18px 0}.listening-prompt b{font-size:12px;color:#564c75}.model-voice{display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:#faf7ff;border:1px solid #e6dcfa;border-radius:14px;padding:13px 15px;margin:15px 0}.model-voice small{font-size:10px;color:#77718b;flex-basis:100%}
@media(max-width:700px){.daily-series{align-items:stretch;flex-direction:column}.daily-meter{width:100%}.mission-path{flex-direction:column}.mission-path>i{align-self:center;transform:rotate(90deg)}.listening-prompt{align-items:flex-start;flex-direction:column}}
.audio-comparison{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}.audio-comparison .model-voice,.audio-comparison .audio-area{display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:#faf7ff;border:1px solid #e6dcfa;border-radius:14px;padding:13px 15px;margin:0}.audio-comparison .audio-area{background:#f5faf9;border-color:#dcefe8}.audio-comparison .audio-area .btn{width:100%}
@media(max-width:700px){.audio-comparison{grid-template-columns:1fr}}
@keyframes feedback-halo{0%{box-shadow:0 0 0 0 #4fbf942f}55%{box-shadow:0 0 0 11px #4fbf9400}100%{box-shadow:0 8px 22px #2e9d741c}}@keyframes feedback-sparks{0%{opacity:0;transform:translateY(8px) scale(.7)}45%{opacity:1}100%{opacity:0;transform:translate(8px,-18px) scale(1.05)}}@keyframes feedback-bounce{0%,100%{transform:translateY(0) scale(1)}45%{transform:translateY(-7px) scale(1.08)}}@keyframes feedback-xp{0%{opacity:0;transform:translateY(14px) scale(.82)}60%{opacity:1;transform:translateY(-3px) scale(1.12)}100%{transform:translateY(0) scale(1)}}@keyframes feedback-nudge{0%,100%{transform:translateX(0)}30%{transform:translateX(-4px)}65%{transform:translateX(3px)}}.feedback-success,.feedback-error{position:relative;isolation:isolate}.feedback-success::after{content:'✦  ·  ✦';position:absolute;right:14px;top:9px;color:#3caa83;font-weight:900;letter-spacing:3px;pointer-events:none;animation:feedback-sparks .65s ease-out both}.feedback.feedback-success,.practice-confirmation{border:1px solid #a7e4cf;box-shadow:0 8px 22px #2e9d741c;animation:feedback-halo .6s ease-out both}.feedback-error{box-shadow:0 6px 18px #d86a5320;animation:feedback-nudge .38s ease-out both}.feedback.retry.feedback-error,.practice-message.feedback-error,.review-result.feedback-error{background:#fff5ef;color:#9f5144}.feedback-card-success{box-shadow:0 0 0 3px #5ec79b29,var(--shadow)}.feedback-card-error{box-shadow:0 0 0 3px #f2ad8b29,var(--shadow);animation:feedback-nudge .38s ease-out both}.completion.feedback-success .complete-emoji{animation:feedback-bounce .58s cubic-bezier(.2,.85,.35,1) both}.completion.feedback-success .xp-gain{animation:feedback-xp .6s cubic-bezier(.2,.85,.35,1) both}.review-result.feedback-success{color:#237b60;background:#eafbf5;border-radius:12px;padding:10px 12px}.review-result.feedback-error{border-radius:12px;padding:10px 12px}
/* Nio répond par une expression lisible, sans ajouter de nouvelle illustration. */
.mascot-svg .nio-face{display:none;transform-box:fill-box;transform-origin:center}.mascot-svg.nio--rest .nio-face--rest,.mascot-svg.nio--blink .nio-face--rest,.mascot-svg.nio--listening .nio-face--listening,.mascot-svg.nio--thinking .nio-face--thinking,.mascot-svg.nio--joy .nio-face--joy,.mascot-svg.nio--encouragement .nio-face--encouragement{display:block}.nio-face--rest .nio-eye-closed{opacity:0}.nio--rest .nio-eye-open{animation:nio-blink-open 5.2s step-end infinite}.nio--rest .nio-eye-closed{animation:nio-blink-closed 5.2s step-end infinite}.nio--blink .nio-eye-open{opacity:0}.nio--blink .nio-eye-closed{opacity:1}.nio--listening .nio-face--listening{animation:nio-listen 1.5s ease-in-out infinite}.nio--thinking .nio-face--thinking{animation:nio-think 1.7s ease-in-out infinite}.nio--joy .nio-face--joy{animation:nio-joy .75s ease-out both}.nio--encouragement .nio-face--encouragement{animation:nio-encourage .9s ease-out both}@keyframes nio-blink-open{0%,91%,100%{opacity:1}94%,97%{opacity:0}}@keyframes nio-blink-closed{0%,91%,100%{opacity:0}94%,97%{opacity:1}}@keyframes nio-listen{50%{transform:translateY(-2px)}}@keyframes nio-think{50%{transform:translateY(-3px) rotate(-2deg)}}@keyframes nio-joy{0%{opacity:.45;transform:scale(.94)}55%{opacity:1;transform:scale(1.08)}100%{transform:scale(1)}}@keyframes nio-encourage{0%{opacity:.7;transform:translateX(-2px)}50%{opacity:1;transform:translateX(2px)}100%{transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.mascot-svg{animation:none!important;transform:none!important}.mascot-svg .nio-face{display:none!important;animation:none!important;opacity:1!important}.mascot-svg .nio-face--rest{display:block!important}.mascot-svg .nio-eye-open{animation:none!important;opacity:1!important}.mascot-svg .nio-eye-closed{animation:none!important;opacity:0!important}}

/* Le compagnon reste dans la scène de la leçon sur petit écran. */
.lesson-banner-copy{min-width:0}.lesson-nio{display:none}
@media(max-width:700px){.lesson-banner{padding:16px 17px;gap:10px}.lesson-banner-copy{flex:1}.lesson-banner .lesson-nio{display:grid;place-items:center;width:40px;height:40px;flex:0 0 40px}.lesson-banner .lesson-nio .mascot-svg{width:40px;height:40px;max-height:none;filter:drop-shadow(0 5px 4px #5034a833)}.lesson-banner .lesson-progress{gap:4px;flex-shrink:0}.lesson-banner .lesson-progress span{width:18px;height:6px}}
/* Voyage + scènes — extensions phases 2/3, palette et motion existants conservés. */
.mission-path{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:10px 0 2px}.mission-route{position:absolute;z-index:0;inset:8px 0 auto;width:100%;height:132px;overflow:visible;pointer-events:none}.mission-route-base{fill:none;stroke:#e7def8;stroke-width:9;stroke-linecap:round}.mission-route-progress{fill:none;stroke:#7048e8;stroke-width:3;stroke-linecap:round;stroke-dasharray:1000;stroke-dashoffset:1000;opacity:.8}.mission-route--progress .mission-route-progress{animation:route-trace 1.1s ease-out forwards}.mission-route-mobile{display:none}.path-step{position:relative;z-index:1;align-content:start;min-height:128px;background:#fff;border-color:#e5dcf7;box-shadow:0 4px 12px #56389610}.path-step:hover{border-color:#bca8f3}.path-step .path-node{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#7048e8;color:#fff;font-size:12px;font-weight:900;box-shadow:0 0 0 5px #fff}.path-step .path-place{color:#7048e8;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.4px}.path-step .path-objective{display:block;line-height:1.35}.path-step .path-state{font-style:normal;color:#9b95ae;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.7px}.path-step.is-done{border-color:#9cdec7;background:#f7fffb}.path-step.is-done .path-node{background:#51b992}.path-step.is-done .path-state{color:#237b60}.path-step.is-current{border-color:#ffb09e;box-shadow:0 0 0 3px #ff8d7930,0 7px 16px #56389615}.path-step.is-current .path-node{background:#ff8d79}.path-step.is-current .path-state{color:#bd594a}.path-step.is-locked{background:#faf9fc;opacity:.72}.path-step.is-locked .path-node{background:#a8a2b6}.path-step.is-locked .path-place{color:#8f899f}@keyframes route-trace{to{stroke-dashoffset:0}}
.scene-box{position:relative;overflow:hidden}.scene-svg{width:160px;min-width:160px;height:auto;overflow:visible}.scene-svg .scene-ambient{transform-box:fill-box;transform-origin:center;animation:scene-drift 2.8s ease-in-out infinite}.scene-svg--market .scene-ambient{animation-delay:-.5s}.scene-svg--station .scene-ambient{animation-delay:-1.1s}.scene-svg--greeting .scene-ambient{animation:scene-spark 2.4s ease-in-out infinite}@keyframes scene-drift{0%,100%{transform:translateY(0);opacity:.8}50%{transform:translateY(-4px);opacity:1}}@keyframes scene-spark{0%,100%{transform:scale(.82);opacity:.55}50%{transform:scale(1.08);opacity:1}}
.listen-button{display:inline-flex;align-items:center;gap:8px}.audio-wave{display:inline-flex;align-items:end;justify-content:center;gap:3px;width:28px;height:20px}.audio-wave i{display:block;width:3px;height:18px;border-radius:3px;background:currentColor;transform:scaleY(.28);transform-origin:bottom;opacity:.5}.listen-button.is-playing .audio-wave i{animation:audio-bar .72s ease-in-out infinite}.listen-button.is-playing .audio-wave i:nth-child(2){animation-delay:-.19s}.listen-button.is-playing .audio-wave i:nth-child(3){animation-delay:-.38s}.listen-button.is-playing .audio-wave i:nth-child(4){animation-delay:-.12s}.listen-button.is-playing .audio-wave i:nth-child(5){animation-delay:-.29s}@keyframes audio-bar{0%,100%{transform:scaleY(.28);opacity:.55}50%{transform:scaleY(1);opacity:1}}
.practice-phrase{overflow:hidden}.practice-word{display:inline-block;opacity:0;transform:translateY(8px);animation:word-reveal .38s ease-out forwards;animation-delay:calc(var(--word-index)*70ms)}@keyframes word-reveal{to{opacity:1;transform:translateY(0)}}
.completion-nio{height:126px;display:grid;place-items:center}.completion-nio .mascot-svg{width:122px;animation:completion-nio 1.1s ease-out both}.completion-nio .mascot-svg .nio-face--rest,.completion-nio .mascot-svg .nio-face--listening,.completion-nio .mascot-svg .nio-face--thinking,.completion-nio .mascot-svg .nio-face--encouragement{display:none}.completion-nio .mascot-svg .nio-face--joy{display:block;animation:nio-joy .75s ease-out both}.wax-burst{display:block;width:min(220px,80%);height:72px;margin:-7px auto 2px;overflow:visible}.wax-motif{transform-origin:center;transform-box:fill-box;opacity:0}.wax-motif path{fill:#7048e8}.wax-motif circle{fill:#ff8d79}.wax-motif--two path{fill:#51b992}.wax-motif--two circle{fill:#ffb36c}.wax-motif--three path{fill:#ffb36c}.wax-motif--three circle{fill:#7048e8}.completion.feedback-success .wax-motif{animation:wax-burst .7s ease-out forwards}.completion.feedback-success .wax-motif--two{animation-delay:.12s}.completion.feedback-success .wax-motif--three{animation-delay:.24s}@keyframes wax-burst{0%{opacity:0;transform:scale(.55) rotate(-16deg)}55%{opacity:1;transform:scale(1.1) rotate(5deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
@media(max-width:700px){.mission-path{grid-template-columns:1fr;gap:13px;padding:7px 0}.mission-route{inset:0 0 0 0;width:100%;height:100%;min-height:100%}.mission-route-desktop{display:none}.mission-route-mobile{display:block}.path-step{min-height:142px;padding:17px 16px}.path-step .path-node{width:38px;height:38px;font-size:14px}.scene-box{align-items:flex-start;gap:13px}.scene-svg{width:140px;min-width:140px}.completion-nio{height:112px}}
@media(prefers-reduced-motion:reduce){.mission-route--progress .mission-route-progress,.scene-svg .scene-ambient,.audio-wave i,.practice-word,.completion-nio .mascot-svg,.completion.feedback-success .wax-motif{animation:none!important}.mission-route-progress{stroke-dashoffset:0}.audio-wave i{transform:scaleY(.65);opacity:.8}.practice-word{opacity:1;transform:none}.wax-motif{opacity:1;transform:none}}
@keyframes completion-nio{0%{opacity:0;transform:scale(.82)}70%{opacity:1;transform:scale(1.06)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.completion-nio .mascot-svg .nio-face--rest{display:none!important}.completion-nio .mascot-svg .nio-face--joy{display:block!important;animation:none!important}}

/* v9b: the route is the layout spine; cards follow its nodes. */
.ordered-course .mission-path{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:150px;column-gap:12px;row-gap:20px;align-items:stretch;min-height:var(--path-desktop-height);padding:10px 0 2px}
.ordered-course .mission-route{position:absolute;z-index:2;inset:0;width:100%;height:var(--path-desktop-height);overflow:visible;pointer-events:none}
.ordered-course .mission-route-mobile{display:none}
.ordered-course .mission-route-base{fill:none;stroke:#e7def8;stroke-width:9;stroke-linecap:round;stroke-linejoin:round}
.ordered-course .mission-route-progress{fill:none;stroke:#7048e8;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:.8}
.ordered-course .mission-route--progress .mission-route-progress{animation:route-trace 1.1s ease-out forwards}
.ordered-course .path-step{position:relative;z-index:1;min-height:150px;align-content:start;background:#fff;border-color:#e5dcf7;box-shadow:0 4px 12px #56389610}
.ordered-course .path-step .path-node{position:relative;z-index:3;justify-self:center;width:30px;height:30px;box-shadow:0 0 0 5px #fff}
.ordered-course .path-step.is-done .path-node{background:#51b992}
.ordered-course .path-step.is-current .path-node{background:#ff8d79}
.ordered-course .path-step.is-locked .path-node{background:#a8a2b6}
.audio-wave i{transform:scaleY(.7);opacity:.8}
.audio-wave i:nth-child(1){height:18px}.audio-wave i:nth-child(2){height:26px}.audio-wave i:nth-child(3){height:16px}.audio-wave i:nth-child(4){height:24px}.audio-wave i:nth-child(5){height:20px}
.practice-phrase .practice-word{animation:none;opacity:0;transform:translateY(8px);transition:opacity .25s ease,transform .25s ease}
.practice-phrase .practice-word.is-revealed{opacity:1;transform:none}
@media(max-width:700px){
 .ordered-course .mission-path{grid-template-columns:1fr;grid-auto-rows:142px;row-gap:13px;min-height:var(--path-mobile-height);padding:7px 0}
 .ordered-course .mission-route{height:var(--path-mobile-height)}
 .ordered-course .mission-route-desktop{display:none}
 .ordered-course .mission-route-mobile{display:block}
 .ordered-course .path-step{min-height:142px;padding:17px 16px;grid-template-columns:38px minmax(0,1fr);column-gap:12px}
 .ordered-course .path-step .path-node{grid-column:1;grid-row:1;width:38px;height:38px;font-size:14px;justify-self:start}
 .ordered-course .path-step>b,.ordered-course .path-step>small,.ordered-course .path-step>em{grid-column:2}
}

/* Journey companion: Nio stays on the current lesson and walks to the next one. */
.ordered-course .path-step{grid-column:var(--path-grid-column);grid-row:var(--path-grid-row)}
.path-nio{position:absolute;z-index:4;left:var(--nio-desktop-x);top:var(--nio-desktop-y);width:58px;pointer-events:none;transform:translate(-50%,-78%);filter:drop-shadow(0 6px 5px #30255335)}
.path-nio-figure{width:100%;height:100%;transform-origin:center bottom;animation:nio-path-idle 2.15s ease-in-out infinite}
.path-nio .mascot-svg{display:block;width:100%;height:auto;animation:none}
.path-nio.is-walking{animation:nio-walk-route 1.25s cubic-bezier(.45,.03,.25,1) both}
.path-nio.is-walking .path-nio-figure{animation:nio-path-step .22s ease-in-out 6}
@keyframes nio-path-idle{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}
@keyframes nio-path-step{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-9px) rotate(5deg)}}
@keyframes nio-walk-route{from{left:var(--nio-from-desktop-x);top:var(--nio-from-desktop-y)}to{left:var(--nio-desktop-x);top:var(--nio-desktop-y)}}
@media(max-width:700px){.ordered-course .path-step{grid-column:auto!important;grid-row:auto!important}.path-nio{left:var(--nio-mobile-x);top:var(--nio-mobile-y);width:54px;transform:translate(-50%,-76%)}.path-nio.is-walking{animation-name:nio-walk-route-mobile}}
@keyframes nio-walk-route-mobile{from{left:var(--nio-from-mobile-x);top:var(--nio-from-mobile-y)}to{left:var(--nio-mobile-x);top:var(--nio-mobile-y)}}
@media(prefers-reduced-motion:reduce){.path-nio,.path-nio-figure{animation:none!important}}
@media(prefers-reduced-motion:reduce){.ordered-course .mission-route--progress .mission-route-progress,.audio-wave i,.practice-phrase .practice-word{animation:none!important}.ordered-course .mission-route-progress{stroke-dashoffset:0}.audio-wave i{transform:scaleY(.7);opacity:.8}.practice-phrase .practice-word{opacity:1;transform:none}}

/* Visibilité Kàddu : les mêmes gestes, lisibles sur grand écran comme en mini-Nio. */
.mascot-svg{animation:floaty 2.6s ease-in-out infinite;transform-origin:center bottom}
@keyframes floaty{0%,100%{transform:translateY(3px) rotate(-3deg)}50%{transform:translateY(-8px) rotate(3deg)}}
.nio--rest .nio-face--rest{animation:nio-face-breathe 2.6s ease-in-out infinite}
@keyframes nio-face-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.nio--rest .nio-eye-open{animation:nio-blink-open 3.8s step-end infinite}
.nio--rest .nio-eye-closed{animation:nio-blink-closed 3.8s step-end infinite}
@keyframes nio-blink-open{0%,84%,100%{opacity:1}88%,94%{opacity:0}}
@keyframes nio-blink-closed{0%,84%,100%{opacity:0}88%,94%{opacity:1}}
.mascot-svg.nio--joy{animation:nio-joy-body 1.05s cubic-bezier(.2,.85,.35,1) both}
.mascot-svg.nio--encouragement{animation:nio-encourage-body 1.15s cubic-bezier(.2,.85,.35,1) both}
.nio--joy .nio-face--joy,.nio--encouragement .nio-face--encouragement{animation-duration:1.05s}
.nio--joy .nio-face--joy circle,.nio--joy .nio-face--joy path:last-child{animation:nio-spark-pop 1.05s ease-out both}
.mascot-svg.nio--joy>path:last-child,.mascot-svg.nio--encouragement>path:last-child{transform-box:fill-box;transform-origin:center;animation:nio-spark-pop 1.05s ease-out both}
@keyframes nio-joy-body{0%{transform:translateY(5px) scale(.94) rotate(-2deg)}42%{transform:translateY(-13px) scale(1.16) rotate(3deg)}68%{transform:translateY(2px) scale(1.04) rotate(-2deg)}100%{transform:translateY(0) scale(1) rotate(0)}}
@keyframes nio-encourage-body{0%{transform:translateX(-4px) translateY(3px) scale(.96)}38%{transform:translateX(5px) translateY(-9px) scale(1.1)}62%{transform:translateX(-3px) translateY(1px) scale(1.04)}100%{transform:translate(0) scale(1)}}
@keyframes nio-spark-pop{0%,100%{opacity:.55;transform:scale(.72)}45%{opacity:1;transform:scale(1.28)}}

.ordered-course .mission-route-progress{stroke-width:7;opacity:1;stroke-dasharray:.14 .06}
.ordered-course .mission-route--progress .mission-route-progress{animation:route-trace 1.35s ease-out forwards,route-flow 1.65s linear 1.35s infinite}
@keyframes route-trace{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes route-flow{to{stroke-dashoffset:-.2}}

.scene-svg .scene-ambient{animation-duration:2s}
.scene-svg--greeting .scene-ambient{animation-duration:1.65s;filter:drop-shadow(0 0 3px #51b992b8)}
@keyframes scene-drift{0%,100%{transform:translateY(0);opacity:.72}50%{transform:translateY(-9px);opacity:1}}
@keyframes scene-spark{0%,100%{transform:scale(.76);opacity:.7}50%{transform:scale(1.24);opacity:1}}

.audio-wave{width:34px;height:30px;gap:3px}
.audio-wave i{width:3px;opacity:.72;transform:scaleY(.35)}
.listen-button.is-playing .audio-wave i,.listen-button[data-audio-state="playing"] .audio-wave i{animation:audio-bar .52s ease-in-out infinite}
@keyframes audio-bar{0%,100%{transform:scaleY(.35);opacity:.7}50%{transform:scaleY(1);opacity:1}}

.feedback.feedback-success,.practice-confirmation{animation:feedback-halo 1.05s ease-out both}
.feedback-success::after{animation:feedback-sparks 1.05s ease-out both}
.feedback.feedback-success b,.practice-confirmation b,.review-result.feedback-success{animation:feedback-bounce .9s cubic-bezier(.2,.85,.35,1) both}
.completion.feedback-success .completion-nio{animation:feedback-bounce .95s cubic-bezier(.2,.85,.35,1) both}
.completion.feedback-success .xp-gain{animation:feedback-xp .95s cubic-bezier(.2,.85,.35,1) both}
@keyframes feedback-halo{0%{box-shadow:0 0 0 0 #4fbf9450}55%{box-shadow:0 0 0 16px #4fbf9400}100%{box-shadow:0 10px 28px #2e9d7430}}
@keyframes feedback-sparks{0%{opacity:0;transform:translateY(12px) scale(.65)}45%{opacity:1}100%{opacity:0;transform:translate(12px,-24px) scale(1.22)}}
@keyframes feedback-bounce{0%,100%{transform:translateY(0) scale(1)}42%{transform:translateY(-11px) scale(1.12)}68%{transform:translateY(2px) scale(1.04)}}
@keyframes feedback-xp{0%{opacity:0;transform:translateY(18px) scale(.78)}58%{opacity:1;transform:translateY(-5px) scale(1.18)}100%{transform:translateY(0) scale(1)}}

@media(prefers-reduced-motion:reduce){
 .mascot-svg,.nio--rest .nio-face--rest,.mascot-svg.nio--joy,.mascot-svg.nio--encouragement,.nio--joy .nio-face--joy,.nio--encouragement .nio-face--encouragement,.nio--joy .nio-face--joy circle,.nio--joy .nio-face--joy path:last-child,.mascot-svg.nio--joy>path:last-child,.mascot-svg.nio--encouragement>path:last-child,.ordered-course .mission-route--progress .mission-route-progress,.scene-svg .scene-ambient,.audio-wave i,.feedback.feedback-success,.practice-confirmation,.feedback-success::after,.feedback.feedback-success b,.practice-confirmation b,.review-result.feedback-success,.completion.feedback-success .completion-nio,.completion.feedback-success .xp-gain{animation:none!important}
 .mascot-svg{transform:none!important}
 .ordered-course .mission-route-progress{stroke-dasharray:1;stroke-dashoffset:0}
 .audio-wave i{transform:scaleY(.7);opacity:.8}
 .scene-svg .scene-ambient{filter:none}
 .feedback.feedback-success,.practice-confirmation{box-shadow:0 8px 22px #2e9d741c}
}

/* Immersive prototype: the world is a quiet stage behind the existing learning flow. */
.main{--world-stage-height:min(620px,100dvh);position:relative;isolation:isolate;overflow:visible;background:linear-gradient(180deg,#f8f7fc00 0 560px,var(--paper) 760px)}
.topbar,.main>#view,.footer{position:relative;z-index:1}
.world-stage{position:sticky;z-index:0;top:0;height:var(--world-stage-height);margin-bottom:calc(0px - var(--world-stage-height));overflow:hidden;pointer-events:none;opacity:1;transition:opacity .35s ease}
.world-stage{background:linear-gradient(180deg,#6747bf 0%,#9770df 40%,#ffd6a2 78%,#ffeeda 100%)}
#world-webgl,#world-canvas{position:absolute;inset:0;display:block;width:100%;height:100%}
#world-webgl{z-index:0}
#world-canvas{z-index:1}
.world-stage.webgl-ready #world-canvas{opacity:0}
.world-stage.webgl-ready>.world-nio{opacity:0}
.world-stage[data-scene=journey]{background:linear-gradient(180deg,#7355ce 0%,#bd8ed7 38%,#f6c783 75%,#ffeeda 100%)}
.world-stage[data-scene=market]{background:linear-gradient(180deg,#6747bf 0%,#a77ad8 38%,#ffbd86 75%,#fff0d5 100%)}
.world-stage[data-scene=station]{background:linear-gradient(180deg,#4f3aa3 0%,#8864ca 38%,#e8a477 75%,#ffe8c7 100%)}
.world-stage[data-scene=celebration]{background:linear-gradient(180deg,#3f2a9e 0%,#7650c8 40%,#f2a16d 76%,#ffe9c7 100%)}
.world-stage::after{content:"";position:absolute;inset:auto 0 0;height:120px;background:linear-gradient(180deg,#f8f7fc00,#f8f7fc);}
.world-layer{position:absolute;bottom:82px;width:34px;height:92px;border-radius:50% 50% 5px 5px;background:#3025533b;filter:blur(.2px);transform:translateX(var(--world-shift,0));}
.world-layer--far{left:13%;height:78px;opacity:.36;--world-shift:-8px}.world-layer--mid{right:18%;height:112px;opacity:.28;--world-shift:10px}
.world-sun{position:absolute;top:112px;right:15%;width:11px;height:11px;border-radius:50%;background:#fff7d8;box-shadow:0 0 0 7px #fff7d82e,0 0 28px 8px #ffdc8766}
.world-route-mark{position:absolute;left:10%;bottom:92px;width:9px;height:9px;border-radius:50%;background:var(--coral);box-shadow:0 0 0 7px #ff8d7938;opacity:.9}
.world-nio{position:absolute;right:8%;bottom:72px;width:42px;height:42px;border-radius:48% 48% 44% 44%;background:#7d54ea;box-shadow:0 8px 0 #30255330,0 0 0 5px #7d54ea28;transform:translateX(calc(var(--world-shift, 0px)));}
.world-nio::before,.world-nio::after{content:"";position:absolute;top:-8px;width:13px;height:17px;border-radius:80% 80% 30% 30%;background:#7048e8}.world-nio::before{left:5px;transform:rotate(-18deg)}.world-nio::after{right:5px;transform:rotate(18deg)}.world-nio i,.world-nio b{position:absolute;top:16px;width:5px;height:7px;border-radius:50%;background:#fff}.world-nio i{left:11px}.world-nio b{right:11px}.world-nio i::after,.world-nio b::after{content:"";display:block;width:2px;height:3px;margin:2px auto;background:#302553;border-radius:50%}.world-stage[data-scene=celebration] .world-nio{background:#936eff;box-shadow:0 8px 0 #30255330,0 0 0 7px #ffdc8750}
.world-stage[data-scene=journey] .world-route-mark{left:72%;background:var(--mint);box-shadow:0 0 0 7px #76dfc038}
.world-stage[data-scene=celebration]{opacity:1}.world-stage[data-scene=celebration] .world-sun{background:var(--yellow);box-shadow:0 0 0 9px #ffdc8750,0 0 34px 12px #ffdc8780}
.world-change{animation:world-arrive .7s ease both}
.hero{background:linear-gradient(111deg,#7048e8f2 0%,#7853e3e8 55%,#9972f4dc 100%)}
.ordered-course{background:#fffdf7ed;backdrop-filter:blur(3px)}
.lesson-card,.content-card,.journey-card,.stat{backdrop-filter:blur(2px)}
@keyframes world-arrive{0%{opacity:.2;transform:scale(1.025)}100%{opacity:1;transform:scale(1)}}
@media(max-width:720px){.main{--world-stage-height:min(495px,100dvh);background:linear-gradient(180deg,#f8f7fc00 0 445px,var(--paper) 630px)}.world-stage{opacity:1}.world-stage::after{height:105px}.world-layer--far{left:7%;bottom:52px}.world-layer--mid{right:10%;bottom:62px}.world-sun{top:102px;right:13%}.world-route-mark{bottom:70px}.hero{background:linear-gradient(111deg,#7048e8f5 0%,#7853e3ed 55%,#9972f4e6 100%)}}
@media(prefers-reduced-motion:reduce){.world-stage,.world-change{animation:none!important;transition:none!important}.world-stage{opacity:.78}.world-layer{transform:none}.main{scroll-behavior:auto}}

/* Interface foreground: never let the immersive scene hide UI or menus. */
.topbar{z-index:20}
.language-picker{z-index:30}
.language-options{z-index:60}
#view{isolation:isolate}
#view[data-page="home"] .view-intro{position:relative;z-index:1;max-width:680px;padding:6px 0 10px;color:#fff;text-shadow:0 2px 13px rgba(43,25,91,.46)}
#view[data-page="home"] .view-intro::before{content:"";position:absolute;inset:-8px -18px -10px -12px;z-index:-1;border-radius:20px;background:linear-gradient(90deg,rgba(49,31,106,.43) 0%,rgba(49,31,106,.20) 55%,rgba(49,31,106,0) 100%)}
#view[data-page="home"] .view-intro .eyebrow{color:#f5eefe}
#view[data-page="home"] .view-intro h1{color:#fff}
#view[data-page="home"] .view-intro p{color:#fff;font-weight:800;max-width:590px}
#view[data-page="game"] .view-intro{position:relative;z-index:1;max-width:700px;padding:6px 0 10px;color:#fff;text-shadow:0 2px 13px rgba(43,25,91,.56)}
#view[data-page="game"] .view-intro::before{content:"";position:absolute;inset:-8px -18px -10px -12px;z-index:-1;border-radius:20px;background:linear-gradient(90deg,rgba(49,31,106,.48) 0%,rgba(49,31,106,.22) 62%,rgba(49,31,106,0) 100%)}
#view[data-page="game"] .view-intro .eyebrow,#view[data-page="game"] .view-intro h1,#view[data-page="game"] .view-intro p{color:#fff}
#view[data-page="game"] .view-intro p{font-weight:800;max-width:590px}
#view[data-page="home"] .account-strip{position:relative;z-index:1;background:rgba(247,244,255,.82);border:1px solid rgba(255,255,255,.52);backdrop-filter:blur(7px) saturate(118%);box-shadow:0 12px 26px rgba(45,31,94,.14)}
#view[data-page="home"] .stat{background:rgba(255,255,255,.78);border-color:rgba(255,255,255,.64);backdrop-filter:blur(6px) saturate(120%);box-shadow:0 10px 24px rgba(45,31,94,.10)}

@media(max-width:720px){
 .topbar{z-index:30}
 .language-options{position:fixed;top:76px;left:17px;right:17px;width:auto;max-height:calc(100dvh - 156px);overflow:auto}
 #view[data-page="home"] .view-intro{padding:8px 2px 12px;text-shadow:0 2px 12px rgba(39,23,92,.64)}
 #view[data-page="home"] .view-intro::before{inset:-7px -12px -10px -10px;background:linear-gradient(90deg,rgba(49,31,106,.50) 0%,rgba(49,31,106,.27) 62%,rgba(49,31,106,0) 100%)}
 #view[data-page="home"] .view-intro h1{font-size:clamp(26px,8vw,34px);line-height:1.12}
 #view[data-page="home"] .view-intro p{font-size:13px;line-height:1.5}
 #view[data-page="game"] .view-intro{padding:8px 2px 12px;text-shadow:0 2px 12px rgba(39,23,92,.68)}
 #view[data-page="game"] .view-intro::before{inset:-7px -12px -10px -10px;background:linear-gradient(90deg,rgba(49,31,106,.54) 0%,rgba(49,31,106,.28) 62%,rgba(49,31,106,0) 100%)}
 #view[data-page="game"] .view-intro h1{font-size:clamp(26px,8vw,34px);line-height:1.12}
 #view[data-page="game"] .view-intro p{font-size:13px;line-height:1.5}
 #view[data-page="home"] .account-strip{background:rgba(247,244,255,.84);backdrop-filter:blur(5px) saturate(115%)}
 #view[data-page="home"] .stat{background:rgba(255,255,255,.80);backdrop-filter:blur(4px) saturate(115%)}
}

/* Chasse aux mots — the learning reward loop becomes a tactile 2D game. */
.word-run-teaser{display:flex;align-items:center;justify-content:space-between;gap:28px;margin:26px 0 30px;padding:32px 38px;border-radius:28px;color:#fff;background:radial-gradient(circle at 88% 14%,#ffc55f 0 3px,transparent 4px),radial-gradient(circle at 79% 31%,#ff9f70 0 5px,transparent 6px),linear-gradient(122deg,#432292,#7048e8 55%,#a177ee);box-shadow:0 18px 35px #5f42bc2b;overflow:hidden;position:relative}.word-run-teaser::after{content:"";position:absolute;inset:auto -40px -92px auto;width:260px;height:190px;border:2px solid #ffffff2e;border-radius:50%;transform:rotate(-18deg)}.word-run-teaser>div{position:relative;z-index:1}.word-run-teaser .eyebrow{color:#f4edff}.word-run-teaser h2{margin:7px 0;font-size:clamp(24px,3vw,34px);letter-spacing:-.05em}.word-run-teaser p{max-width:550px;margin:0 0 18px;color:#f3edff;font-weight:700;line-height:1.55}.word-run-teaser-score{display:grid;min-width:150px;gap:7px;padding:18px 20px;border:1px solid #ffffff52;border-radius:19px;background:#ffffff19;text-align:center;backdrop-filter:blur(9px)}.word-run-teaser-score span{font-size:13px;font-weight:900}.word-run-teaser-score b{font-size:30px;letter-spacing:.05em;color:#ffc6c6}.word-run-teaser-score small{font-weight:800;color:#eee7ff}.word-run{margin:0 0 22px;padding:18px;border:1px solid #d7caef;border-radius:29px;background:linear-gradient(145deg,#fffefd,#f7f2ff);box-shadow:0 16px 34px #4c3d8522}.word-run-hud{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:0 0 13px}.word-run-hud>div{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;padding:10px 15px;border:1px solid #ded5f6;border-radius:16px;background:#fff;color:#4b416d}.word-run-hud span{font-size:11px;font-weight:900;letter-spacing:.04em;color:#82799d;text-transform:uppercase}.word-run-hud b{font-size:18px;color:#382464}.word-run-hud .word-run-lives b{color:#e35b78;letter-spacing:2px}.word-run-stage{position:relative;overflow:hidden;border-radius:22px;background:#3e268f;box-shadow:inset 0 0 0 1px #ffffff38}.word-run-stage canvas{display:block;width:100%;height:auto;aspect-ratio:16/9;touch-action:none;outline:none}.word-run-overlay{position:absolute;inset:0;display:grid;place-items:center;padding:22px;background:linear-gradient(90deg,#26135f9e,#37206f55 58%,#37206f15);text-align:center}.word-run-overlay[hidden]{display:none}.word-run-overlay>div{max-width:420px;padding:26px;border:1px solid #ffffff3d;border-radius:22px;background:#2e1958b8;color:#fff;box-shadow:0 15px 32px #1d0d4a42;backdrop-filter:blur(7px)}.word-run-overlay .eyebrow{color:#f6eaff}.word-run-overlay h2{margin:8px 0;font-size:31px;letter-spacing:-.05em}.word-run-overlay p{margin:0 0 20px;line-height:1.55;color:#f1eaff;font-weight:700}.word-run-jump{position:absolute;right:22px;bottom:19px;display:grid;place-items:center;width:87px;height:87px;border:3px solid #fff1c9;border-radius:50%;color:#fff;background:linear-gradient(135deg,#8e64f2,#5f32cf);box-shadow:0 9px 0 #3317777d,0 14px 25px #2e175e75;font-size:35px;font-weight:900;line-height:.8;transition:transform .18s ease,box-shadow .18s ease}.word-run-jump span{margin-top:4px;font-size:10px;font-weight:900;letter-spacing:.05em;text-transform:uppercase}.word-run-jump:active,.word-run-jump.is-jumping{transform:translateY(7px) scale(.95);box-shadow:0 2px 0 #3317777d,0 8px 15px #2e175e75}.word-run-footer{display:flex;justify-content:space-between;gap:20px;padding:13px 5px 2px;color:#6f6789;font-size:13px;line-height:1.5}.word-run-footer p{margin:0}.word-run-footer b{color:#5c36c8}.word-run:focus-within{box-shadow:0 0 0 4px #bda9ff78,0 16px 34px #4c3d8522}
.word-run-hud--campaign{grid-template-columns:repeat(6,minmax(0,1fr))}.word-run-hud--campaign>div{display:grid;justify-items:center;gap:2px;text-align:center}.word-run-hud--campaign b{font-size:20px}
.word-run-sentence{display:grid;gap:7px;margin:0 0 13px;padding:13px 16px;border:1px solid #ded5f6;border-radius:18px;background:#fff}.word-run-sentence>span{font-size:10px;font-weight:900;letter-spacing:.09em;color:#7048e8;text-transform:uppercase}.word-run-sentence>div{display:flex;flex-wrap:wrap;gap:7px}.word-run-word{display:inline-grid;min-width:34px;min-height:31px;place-items:center;padding:5px 10px;border:1px dashed #c8b8f3;border-radius:10px;color:#9b8bbc;background:#faf8ff;font-size:14px}.word-run-word.is-collected{border-style:solid;border-color:#8ee0bf;color:#237b60;background:#effbf5;animation:word-collected .32s ease-out}.word-run-sentence small{font-size:11px;font-weight:800;color:#7d7592}.word-run-result-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.word-run-result-actions .btn{margin:0}@keyframes word-collected{0%{transform:translateY(5px) scale(.88);opacity:.3}100%{transform:translateY(0) scale(1);opacity:1}}
@media(max-width:720px){.word-run-teaser{align-items:flex-start;flex-direction:column;padding:27px 25px;gap:18px;border-radius:23px}.word-run-teaser-score{width:100%;grid-template-columns:1fr auto 1fr;align-items:center;text-align:left}.word-run-teaser-score b{text-align:center}.word-run-teaser-score small{text-align:right}.word-run{margin-inline:-2px;padding:10px;border-radius:21px}.word-run-hud{gap:6px;margin-bottom:8px}.word-run-hud>div{display:grid;justify-items:center;gap:2px;min-height:50px;padding:8px 5px;text-align:center}.word-run-hud b{font-size:14px}.word-run-hud .word-run-lives b{font-size:13px;letter-spacing:1px}.word-run-stage{border-radius:15px}.word-run-overlay{padding:8px;background:linear-gradient(90deg,#26135f9e,#37206f36)}.word-run-overlay>div{max-width:270px;padding:11px 14px;border-radius:18px}.word-run-overlay h2{margin:5px 0;font-size:21px;line-height:1.05}.word-run-overlay p{margin:0 0 9px;font-size:11px;line-height:1.25}.word-run-overlay .btn{padding:10px 14px;font-size:14px}.word-run-jump{right:12px;bottom:11px;width:66px;height:66px;font-size:28px}.word-run-jump span{font-size:8px}.word-run-footer{display:grid;gap:5px;padding:11px 5px 2px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.word-run-jump{transition:none}.word-run-teaser{background:linear-gradient(122deg,#432292,#7048e8 55%,#8e6ed7)}}

/* Directional controls keep the runner playable without a hardware keyboard. */
.word-run-controls{position:absolute;left:22px;bottom:19px;display:flex;gap:9px}.word-run-move{display:grid;place-items:center;width:72px;height:72px;border:2px solid #ffffffbd;border-radius:20px;color:#fff;background:#2f175fbf;box-shadow:0 7px 0 #22104475,0 12px 20px #1d0d4a60;font-size:31px;font-weight:900;line-height:.75;backdrop-filter:blur(5px);transition:transform .12s ease,box-shadow .12s ease}.word-run-move span{margin-top:3px;font-size:9px;font-weight:900;letter-spacing:.05em;text-transform:uppercase}.word-run-move:active{transform:translateY(6px) scale(.96);box-shadow:0 1px 0 #22104475,0 7px 14px #1d0d4a60}
.word-run-overlay:not([hidden])~.word-run-controls,.word-run-overlay:not([hidden])~.word-run-jump{visibility:hidden;pointer-events:none}
.word-run-jump,.word-run-move{touch-action:none;-webkit-tap-highlight-color:transparent;user-select:none}.word-run-move.is-pressed{transform:translateY(6px) scale(.96);box-shadow:0 1px 0 #22104475,0 7px 14px #1d0d4a60}.word-run-touch-hint{display:none}
.word-run-exit{position:absolute;z-index:6;top:12px;right:12px;display:grid;place-items:center;width:42px;height:42px;border:2px solid #ffffffba;border-radius:50%;color:#fff;background:#2c175fcc;box-shadow:0 5px 14px #1d0d4a78;font-size:27px;font-weight:900;line-height:.75;touch-action:none;-webkit-tap-highlight-color:transparent}.word-run-exit span{display:none}.word-run-exit:active{transform:scale(.92)}
.word-run-stage:fullscreen,.word-run-stage:-webkit-full-screen{width:100vw;height:100vh;border-radius:0;background:#21114e}.word-run-stage:fullscreen canvas,.word-run-stage:-webkit-full-screen canvas{width:100%;height:100%;aspect-ratio:auto;object-fit:contain}.word-run-stage:fullscreen .word-run-exit,.word-run-stage:-webkit-full-screen .word-run-exit{top:18px;right:20px;width:58px;height:58px;border-width:3px;font-size:38px}.word-run-stage:fullscreen .word-run-exit span,.word-run-stage:-webkit-full-screen .word-run-exit span{display:block;margin-top:2px;font-size:8px;letter-spacing:.06em;text-transform:uppercase}.word-run-stage:fullscreen .word-run-controls,.word-run-stage:-webkit-full-screen .word-run-controls{left:clamp(18px,4vw,56px);bottom:clamp(18px,4vh,48px);gap:14px}.word-run-stage:fullscreen .word-run-move,.word-run-stage:-webkit-full-screen .word-run-move{width:clamp(72px,12vw,112px);height:clamp(72px,12vw,112px);border-radius:26px;font-size:clamp(30px,5vw,48px)}.word-run-stage:fullscreen .word-run-move span,.word-run-stage:-webkit-full-screen .word-run-move span{font-size:clamp(8px,1.4vw,12px)}.word-run-stage:fullscreen .word-run-jump,.word-run-stage:-webkit-full-screen .word-run-jump{right:clamp(18px,4vw,56px);bottom:clamp(18px,4vh,48px);width:clamp(86px,14vw,126px);height:clamp(86px,14vw,126px);font-size:clamp(34px,6vw,54px)}.word-run-stage:fullscreen .word-run-jump span,.word-run-stage:-webkit-full-screen .word-run-jump span{font-size:clamp(9px,1.4vw,13px)}.word-run-stage:fullscreen .word-run-touch-hint,.word-run-stage:-webkit-full-screen .word-run-touch-hint{right:clamp(124px,19vw,188px);bottom:clamp(22px,5vh,55px);display:block;font-size:clamp(10px,1.8vw,16px)}
@media(max-width:720px){.word-run-controls{left:11px;bottom:11px;gap:6px}.word-run-move{width:51px;height:51px;border-radius:15px;font-size:24px}.word-run-move span{font-size:7px}}
@media(max-width:720px){.word-run-hud--campaign{grid-template-columns:repeat(3,minmax(0,1fr))}.word-run-hud--campaign>div{min-height:46px}.word-run-hud--campaign b{font-size:14px}}
@media(max-width:720px){.word-run-jump{right:10px;bottom:9px;width:70px;height:70px;font-size:29px}.word-run-touch-hint{position:absolute;right:89px;bottom:10px;display:block;margin:0;color:#fff;text-shadow:0 1px 3px #2b145d;font-size:8px;font-weight:900;letter-spacing:.02em;line-height:1.2;text-align:right;pointer-events:none}}

/* Parcours : une prochaine étape nette avant le catalogue complet. */
.journey-preview-note{max-width:640px;margin:0 0 16px;color:#6f6789;font-size:12px;line-height:1.55}.account-status{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-3px 0 16px;padding:9px 2px;color:#6f6789;font-size:11px;font-weight:800}.account-status .section-link{font-size:11px}.journey-catalog,.module-section{margin:18px 0 28px;border:1px solid var(--border);border-radius:18px;background:#fff;overflow:hidden}.journey-catalog>summary,.module-section>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;padding:17px 20px;font-size:15px;font-weight:900;color:#342b54}.journey-catalog>summary::-webkit-details-marker,.module-section>summary::-webkit-details-marker{display:none}.journey-catalog>summary::after,.module-section>summary::after{content:'⌄';color:var(--purple);font-size:18px;line-height:1}.journey-catalog[open]>summary::after,.module-section[open]>summary::after{transform:rotate(180deg)}.journey-catalog>summary+*,.module-section>summary+*{margin:0 20px 20px}.module-section>summary small{color:#908ca5;font-size:11px;font-weight:800}.module-section .journey-grid,.journey-catalog .journey-grid{margin-bottom:0}.path-nio-mobile{display:none}

/* Le décor reste décoratif : il ne dégrade jamais la lecture du titre. */
#view[data-page="journey"] .view-intro{position:relative;padding:17px 19px;border-radius:18px;background:linear-gradient(90deg,rgba(255,255,255,.96),rgba(255,255,255,.72));box-shadow:0 8px 24px rgba(51,34,99,.10)}#view[data-page="journey"] .view-intro p{color:#635d7c;font-weight:700}

/* Un écran en portrait affiche une consigne claire après l'ouverture du jeu. */
.word-run-rotate-note{display:none}.word-run-overlay:not([hidden])~.word-run-touch-hint{visibility:hidden;pointer-events:none}@media(max-width:720px) and (orientation:portrait){.word-run-stage:fullscreen canvas,.word-run-stage:-webkit-full-screen canvas,.word-run-stage:fullscreen .word-run-controls,.word-run-stage:-webkit-full-screen .word-run-controls,.word-run-stage:fullscreen .word-run-jump,.word-run-stage:-webkit-full-screen .word-run-jump,.word-run-stage:fullscreen .word-run-touch-hint,.word-run-stage:-webkit-full-screen .word-run-touch-hint{visibility:hidden;pointer-events:none}.word-run-stage:fullscreen .word-run-rotate-note,.word-run-stage:-webkit-full-screen .word-run-rotate-note{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:9px;padding:28px;text-align:center;background:linear-gradient(145deg,#291460,#4f2da5);color:#fff}.word-run-rotate-note>span{font-size:54px;line-height:1;animation:rotate-phone 1.6s ease-in-out infinite}.word-run-rotate-note b{font-size:23px}.word-run-rotate-note small{font-size:14px;color:#eee6ff}}@keyframes rotate-phone{50%{transform:rotate(90deg)}}

@media(max-width:720px){.mobile-nav{justify-content:space-between;padding-inline:5px}.mobile-nav button{min-width:56px;font-size:18px}.mobile-nav span{font-size:8px}.account-status{margin:0 0 12px;padding:7px 1px;font-size:10px}.ordered-course{padding:18px 14px}.ordered-course h2{font-size:20px}.journey-preview-note{font-size:11px;margin-bottom:13px}.ordered-course .mission-route{display:none}.ordered-course .path-nio{display:none}.ordered-course .mission-path{min-height:0!important;grid-auto-rows:auto;gap:10px}.ordered-course .path-step{min-height:126px;padding:15px 14px;box-shadow:0 3px 10px #56389612}.ordered-course .path-step.is-current{padding-right:65px}.path-nio-mobile{display:block;position:absolute;right:10px;top:9px;width:45px;height:45px;filter:drop-shadow(0 5px 4px #56389628)}.path-nio-mobile .mascot-svg{width:100%;height:auto;animation:none}.journey-catalog,.module-section{margin:14px 0 20px}.journey-catalog>summary,.module-section>summary{padding:15px 16px;font-size:13px}.module-section>summary small{font-size:10px}.journey-catalog>summary+*,.module-section>summary+*{margin:0 12px 14px}}

/* Nio du chemin : la règle générique des badges ne doit jamais le transformer en pastille. */
.ordered-course .path-step>.path-nio-mobile{display:none}
@media(max-width:720px){.ordered-course .path-step>.path-nio-mobile{display:block;position:absolute;right:10px;top:9px;width:45px;height:45px;border-radius:0;background:transparent;color:inherit;font-size:inherit;filter:drop-shadow(0 5px 4px #56389628)}}

/* Monétisation douce : l'énergie de Nio rend la limite gratuite compréhensible. */
.energy-meter{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,.65fr) auto;align-items:center;gap:16px;padding:14px 17px;margin:0 0 18px;border:1px solid #e0d4ff;border-radius:18px;background:linear-gradient(120deg,#f5efff,#fff8fc);box-shadow:0 7px 18px #56389610}.energy-meter>div:first-child{display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center}.energy-meter-icon{grid-row:span 2;font-size:23px}.energy-meter b{font-size:13px;color:#493276}.energy-meter small{font-size:11px;line-height:1.4;color:#74698e}.energy-meter-gauge{height:10px;overflow:hidden;border-radius:99px;background:#e5dbf8}.energy-meter-gauge span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#7550e6,#ab86ff);transition:width .25s ease}.energy-meter em{font-style:normal;font-size:11px;font-weight:900;color:#6d48d7;white-space:nowrap}.energy-rest-actions{display:grid;gap:11px;margin-top:22px}.energy-rest-actions small{color:#77718b;line-height:1.5}.pricing-grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}.pricing-card{position:relative}.pricing-card strong{display:block;margin:8px 0;font-size:21px;color:#382464}.pricing-card strong small{font-size:12px;color:#817895}.pricing-card--featured{border-color:#8b6bef;box-shadow:0 12px 28px #6948d526;background:#fbf9ff}.pricing-save{display:inline-flex;padding:5px 8px;border-radius:99px;background:#efe8ff;color:#6843d4;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.05em}
@media(max-width:700px){.energy-meter{grid-template-columns:1fr;gap:10px;padding:14px}.energy-meter em{justify-self:start}.pricing-grid--three{grid-template-columns:1fr}.pricing-card strong{font-size:20px}}

/* Record mondial — un panneau volontairement public, sans exposer le compte. */
.champion-board{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:19px;margin:22px 0 26px;padding:15px 22px;overflow:hidden;border:3px solid #3d247f;border-radius:22px;color:#fff;background:linear-gradient(110deg,#160d40,#48219b 50%,#923acf);box-shadow:0 12px 0 #2a165f,0 20px 34px #4427893b}.champion-board::before{content:"";position:absolute;inset:7px;border:1px solid #f6d57a8a;border-radius:14px;pointer-events:none}.champion-board>div{position:relative;z-index:1}.champion-board-lights{display:flex;gap:7px;color:#ffd36e;font-size:16px;letter-spacing:2px;text-shadow:0 0 12px #ffeab4;animation:championBlink 1.1s steps(2,end) infinite}.champion-board span,.champion-board small{display:block;font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.champion-board span{color:#f8da7f}.champion-board strong{display:block;margin:2px 0;font-size:clamp(19px,3vw,27px);letter-spacing:-.03em}.champion-board small{color:#f3eaff;letter-spacing:.04em;text-transform:none}.champion-trophy{font-size:38px;filter:drop-shadow(0 4px 0 #2a165f);animation:championTrophy 1.7s ease-in-out infinite}.word-run-overlay form{display:grid;gap:8px;margin:16px 0;text-align:left}.word-run-overlay label{font-size:13px;font-weight:900}.word-run-overlay input{width:100%;box-sizing:border-box;padding:12px 13px;border:2px solid #e2d6ff;border-radius:13px;color:#302553;background:#fff;font:800 16px Nunito,system-ui,sans-serif}.word-run-overlay input:focus{outline:3px solid #ffc95d}.word-run-public-note,.word-run-recorded{margin:0!important;font-size:12px!important;color:#f7efff!important}.word-run-recorded{font-weight:900}.word-run-overlay .form-error{margin:0;color:#ffd1d1;font-weight:900}@keyframes championBlink{50%{opacity:.38;text-shadow:none}}@keyframes championTrophy{50%{transform:translateY(-4px) rotate(4deg)}}
@media(max-width:720px){.champion-board{grid-template-columns:1fr auto;gap:8px;margin:18px 0 22px;padding:14px 16px;border-radius:18px}.champion-board-lights{display:none}.champion-board strong{font-size:20px}.champion-board small{font-size:10px;line-height:1.35}.champion-trophy{font-size:32px}}
@media(prefers-reduced-motion:reduce){.champion-board-lights,.champion-trophy{animation:none}}
.pricing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:22px 0}.pricing-card{padding:22px;border:1px solid #e1d7ff;border-radius:20px;background:linear-gradient(145deg,#fff,#f8f5ff)}.pricing-card h3{margin:10px 0 8px;font-size:1.55rem}.pricing-card h3 small{font-size:.85rem;font-weight:700}.pricing-card p{min-height:46px;color:#746d8f}@media(max-width:600px){.pricing-grid{grid-template-columns:1fr}.pricing-card p{min-height:0}}

/* Famille : le titulaire ajoute de vrais comptes sans alourdir l'abonnement. */
.family-access{margin:22px 0;padding:19px;border:1px solid #ddd0f9;border-radius:20px;background:linear-gradient(135deg,#fbf9ff,#f5efff)}.family-access h3{margin:0 0 5px;color:#382464}.family-access>p{margin:0;color:#716889;line-height:1.5}.family-access-form{margin:15px 0}.family-access-form label{display:block;margin-bottom:7px;font-size:12px;font-weight:900;color:#493276}.family-access-form>div{display:flex;gap:9px}.family-access-form input{min-width:0;flex:1;padding:11px 12px;border:1px solid #cabbed;border-radius:12px;background:#fff;color:#302553;font:700 14px Nunito,system-ui,sans-serif}.family-access-form input:focus{outline:3px solid #bba6ff80;border-color:#7650df}.family-access-form .btn{white-space:nowrap}.family-access-list{display:grid;gap:7px;margin:12px 0}.family-access-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #e3daf6;border-radius:12px;background:#fff;color:#5f5679;font-size:13px;font-weight:800}.family-access-list>div span{overflow-wrap:anywhere}.family-access-list .muted{padding:4px 0}.family-access .muted{font-size:12px}.family-access .form-error{min-height:0;margin:7px 0 0;color:#b34863;font-size:12px;font-weight:800}
@media(max-width:520px){.family-access{padding:16px}.family-access-form>div{display:grid}.family-access-form .btn{width:100%}.family-access-list>div{align-items:flex-start}.family-access-list .section-link{padding-top:0;white-space:nowrap}}

/* Informations légales : lecture confortable, sans quitter l'application. */
.footer-links{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.footer-links .section-link{font-size:10px;color:#665c84;text-decoration:underline;text-underline-offset:3px}.legal-page{max-width:860px}.legal-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.legal-tab{border:1px solid #ded4f5;background:#fff;color:#5f537f;border-radius:999px;padding:9px 12px;font-size:12px;font-weight:900;text-decoration:none}.legal-tab.is-active{background:#7048e8;border-color:#7048e8;color:#fff}.legal-content{padding:30px;line-height:1.75}.legal-content h2{font-size:25px;color:#302553}.legal-content h3{margin:27px 0 7px;font-size:16px;color:#493276}.legal-content p{max-width:72ch;color:#625b7d}.legal-content a{color:#5a36c7;font-weight:900;overflow-wrap:anywhere}.legal-updated{margin-top:30px!important;padding-top:16px;border-top:1px solid #e8e1f5;font-size:11px!important;color:#88819a!important}.legal-checkout-note{margin-top:19px;font-size:11px;line-height:1.65;color:#6f6789}.legal-checkout-note .section-link{display:inline;color:#5a36c7;text-decoration:underline;font-size:inherit;font-weight:900}
@media(max-width:700px){.footer-links{gap:8px}.footer-links .section-link{font-size:11px}.legal-content{padding:22px 18px}.legal-content h2{font-size:23px}.legal-tabs{display:grid;grid-template-columns:1fr 1fr}.legal-tab{min-height:44px}.legal-page .btn{width:100%}}
