:root{--color-primary: #7b45d9;--color-primary-dark: #6232b8;--color-primary-tint: #f3ecfd;--color-accent: #f5b800;--color-accent-dark: #c48f00;--color-accent-ink: #8a6400;--color-danger: #e5484d;--color-success: #2fb67c;--color-success-tint: #e3f7ee;--color-bg: #fbf8ff;--color-surface: #ffffff;--color-border: #e4dffb;--color-text: #241f3d;--color-text-muted: #6b6483;--font-display: "Lato", system-ui, sans-serif;--font-body: "Lato", system-ui, sans-serif;--radius-lg: 24px;--radius-md: 14px;--radius-pill: 999px;--shadow-card: 0 16px 40px -16px rgba(123, 69, 217, .28);--shadow-button: 0 6px 0 var(--color-accent-dark);--shadow-button-secondary: 0 6px 0 var(--color-primary-dark)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-body);color:var(--color-text);background:var(--color-bg)}h1,h2,h3{font-family:var(--font-display);margin:0 0 .5em}.nav{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;padding:1rem 1.5rem;background:var(--color-primary)}.nav-brand{font-family:var(--font-display);font-size:1.3rem;font-weight:700;color:#fff;margin-right:auto}.nav a{color:#fff;text-decoration:none;font-weight:700;font-size:.9rem;padding:.4rem .9rem;border-radius:var(--radius-pill);background:#ffffff24;transition:background .15s ease}.nav a:hover{background:#ffffff42}.page{position:relative;min-height:calc(100vh - 64px);display:flex;align-items:center;justify-content:center;padding:2.5rem 1.25rem;overflow:hidden}.page:before,.page:after{content:"";position:absolute;background:url(/logo-icon.svg) center / contain no-repeat;opacity:.12;z-index:0;pointer-events:none}.page:before{width:300px;height:300px;top:-70px;left:-90px;transform:rotate(-14deg)}.page:after{width:240px;height:240px;bottom:-70px;right:-60px;transform:rotate(12deg)}.page-tapisserie:before{top:0;right:0;bottom:0;left:0;width:auto;height:auto;transform:none;background:url(/tapisserie.svg) 0 0 / 420px 420px repeat;opacity:.12}.page-tapisserie:after{display:none}.card{position:relative;z-index:1;width:100%;max-width:440px;background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:2.25rem 2rem}.card--wide{max-width:720px}.card h1{font-size:1.6rem;color:var(--color-primary-dark)}.field{margin-bottom:1.1rem;display:flex;flex-direction:column;gap:.35rem;text-align:left}.field label{font-weight:700;font-size:.85rem;color:var(--color-text-muted)}input,select{font-family:var(--font-body);font-size:1rem;color:var(--color-text);padding:.65rem .9rem;border-radius:var(--radius-md);border:2px solid var(--color-border);background:var(--color-surface);outline:none;transition:border-color .15s ease}input:focus,select:focus{border-color:var(--color-primary)}.btn{font-family:var(--font-display);font-weight:700;font-size:1rem;border:none;border-radius:var(--radius-pill);padding:.7rem 1.6rem;cursor:pointer;transition:transform .08s ease,box-shadow .08s ease}.btn:active{transform:translateY(3px)}.btn-primary{background:var(--color-accent);color:var(--color-text);box-shadow:var(--shadow-button)}.btn-primary:active{box-shadow:0 2px 0 var(--color-accent-dark)}.btn-secondary{background:var(--color-primary-tint);color:var(--color-primary-dark);box-shadow:none}.btn-secondary:hover{background:#e3ddfd}.btn-link{background:none;border:none;color:var(--color-text-muted);text-decoration:none;padding:.4rem 0;font-family:var(--font-body);font-weight:700;font-size:.85rem;cursor:pointer;transition:color .15s ease}.btn-link:hover{color:var(--color-primary-dark);text-decoration:underline}.btn-block{display:block;width:100%}.btn-link-center{display:block;width:100%;text-align:center;margin-top:.85rem}.role-tabs{display:flex;gap:.3rem;background:var(--color-primary-tint);border-radius:var(--radius-pill);padding:.3rem;margin-bottom:1.5rem}.role-tab{flex:1;border:none;background:none;cursor:pointer;font-family:var(--font-display);font-weight:700;font-size:.9rem;color:var(--color-primary-dark);padding:.55rem 1rem;border-radius:var(--radius-pill);transition:background .15s ease,color .15s ease}.role-tab-active{background:var(--color-primary);color:#fff}.btn-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem;align-items:center}.message{margin-top:1.25rem;padding:.85rem 1rem;border-radius:var(--radius-md);font-size:.95rem}.message-success{background:var(--color-success-tint);color:#1d6b4a;border:2px solid var(--color-success)}.message-error{background:#fdebec;color:#a42428;border:2px solid var(--color-danger)}.pseudo-list{list-style:none;padding:0;margin:0 0 .75rem;display:flex;flex-direction:column;gap:.5rem}.pseudo-option{display:flex;align-items:center;gap:.6rem;padding:.55rem .8rem;border:2px solid var(--color-border);border-radius:var(--radius-md);font-weight:700;cursor:pointer}.establishment-results{list-style:none;padding:0;margin:.4rem 0;display:flex;flex-wrap:wrap;gap:.5rem}.dashboard-classes{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem;margin-top:1.75rem}.class-card{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-md);padding:1.25rem}.class-card h3{font-size:1.15rem;color:var(--color-primary-dark)}.invite-code{display:inline-block;font-family:var(--font-display);font-size:1.1rem;letter-spacing:.05em;background:var(--color-primary-tint);color:var(--color-primary-dark);padding:.25rem .7rem;border-radius:var(--radius-pill);margin:.4rem 0 .8rem}.student-list{list-style:none;padding:0;margin:.75rem 0 0;display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--color-text-muted)}.tone-1{--tone: #8e4ec6;--tone-tint: #f3eafb;--tone-ink: #5f2a91}.tone-2{--tone: #2f80ed;--tone-tint: #e4efff;--tone-ink: #1a56ad}.tone-3{--tone: #12a5b8;--tone-tint: #dff5f8;--tone-ink: #0a6574}.tone-4{--tone: #30a46c;--tone-tint: #e3f6ec;--tone-ink: #1b6b45}.tone-5{--tone: #f2a900;--tone-tint: #fff3d1;--tone-ink: #7a5200}.tone-6{--tone: #f76b15;--tone-tint: #ffeedf;--tone-ink: #a24409}.tone-7{--tone: #e5484d;--tone-tint: #fdebec;--tone-ink: #a42428}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--color-primary-dark);outline-offset:2px}.nav a:focus-visible,.nav-button:focus-visible{outline-color:#fff}.nav-button{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.6);border-radius:var(--radius-pill);font-family:inherit;font-weight:700;font-size:.9rem;padding:.35rem .9rem;cursor:pointer}.nav-button:hover{background:#ffffff26}a.btn{display:inline-block;text-decoration:none}.teacher-nav{display:flex;flex-wrap:wrap;gap:0 1.75rem;padding-inline:max(1.25rem,calc((100% - 1040px)/2 + 1.25rem));background:var(--color-surface);border-bottom:2px solid var(--color-border)}.teacher-tab{margin-bottom:-2px;padding:.85rem 0 .7rem;color:var(--color-text-muted);font-weight:700;text-decoration:none;border-bottom:4px solid transparent}.teacher-tab:hover{color:var(--color-primary-dark)}.teacher-tab--active{color:var(--color-primary-dark);border-bottom-color:var(--color-primary)}.workspace{max-width:1040px;margin:0 auto;padding:1.75rem 1.25rem 3.5rem}.page-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem 2rem;margin-bottom:1.5rem}.page-header h1{margin:0;font-size:2rem;font-weight:800;line-height:1.1}.page-meta{margin:.3rem 0 0;color:var(--color-text-muted);font-size:.95rem}.page-header--tinted{display:block;padding:1.1rem 1.5rem 1.4rem;background:var(--tone-tint);border-left:8px solid var(--tone);border-radius:4px var(--radius-md) var(--radius-md) 4px;color:var(--tone-ink)}.page-header--tinted h1,.page-header--tinted .page-meta{color:var(--tone-ink)}.page-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.75rem 0 1.25rem}.page-actions .btn{padding:.45rem 1.1rem;font-size:.95rem}.breadcrumb ol{display:flex;flex-wrap:wrap;gap:.2rem .5rem;margin:0 0 .7rem;padding:0;list-style:none;font-size:.9rem}.breadcrumb li+li:before{content:"›";content:"›" / "";margin-right:.5rem;opacity:.65}.breadcrumb a{color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px}.breadcrumb [aria-current=page]{font-weight:700}.create-row{display:flex;flex:0 1 28rem;align-items:center;gap:.6rem}.create-row input{flex:1 1 0;min-width:0}.create-row .btn{flex:none}.class-form{display:grid;grid-template-columns:7rem minmax(0,1fr) auto;align-items:end;gap:.75rem 1rem}.class-form .field{margin:0}.class-form select,.class-form input{min-height:2.9rem}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 1.5rem;margin:1.25rem 0 1rem}.toolbar .create-row{margin-left:auto}.empty-state{max-width:40rem;margin:1.25rem 0;padding:1.1rem 1.4rem;color:var(--color-text-muted);border:2px dashed var(--color-border);border-radius:var(--radius-md)}.dashboard-block{margin-top:1.75rem;padding-top:1.25rem;border-top:2px solid var(--color-border)}.dashboard-block:first-of-type{border-top:none;padding-top:0}.dossier-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2rem 1.25rem;margin:2.25rem 0 1.5rem;padding:0;list-style:none}.dossier-tile{position:relative;display:flex;flex-direction:column;gap:.3rem;padding:1.1rem 1.1rem .8rem;background:var(--tone-tint);color:var(--tone-ink);border:2px solid var(--tone);border-radius:0 var(--radius-md) var(--radius-md) var(--radius-md)}.dossier-tile:before{content:"";position:absolute;top:-16px;left:-2px;width:4.5rem;height:16px;background:var(--tone);border-radius:8px 8px 0 0}.dossier-tile-name{color:var(--tone-ink);font-family:var(--font-display);font-size:1.25rem;font-weight:700;line-height:1.2;text-decoration:none;overflow-wrap:anywhere}.dossier-tile-name:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit}.dossier-tile-name:hover{text-decoration:underline}.dossier-tile-name:focus-visible{outline:none}.dossier-tile-name:focus-visible:after{outline:3px solid var(--color-primary-dark);outline-offset:3px}.dossier-tile-meta{margin:0 0 .7rem;font-size:.9rem}.dossier-tile-actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:.25rem .9rem;margin-top:auto;padding-top:.5rem;border-top:1px dashed var(--tone)}.dossier-tile-actions .btn-secondary,.liste-row-actions .btn-secondary,.carte-row-actions .btn-secondary{padding:.15rem .1rem;background:none;border-radius:4px;box-shadow:none;color:inherit;font-family:var(--font-body);font-size:.9rem;text-decoration:underline;text-underline-offset:3px}.dossier-tile-actions .btn-secondary:hover,.liste-row-actions .btn-secondary:hover,.carte-row-actions .btn-secondary:hover{background:none;text-decoration-thickness:2px}.liste-row-actions,.carte-row-actions{color:var(--color-primary-dark)}.inline-rename{display:flex;flex:1 1 100%;flex-wrap:wrap;align-items:center;gap:.5rem}.inline-rename input{flex:1 1 8rem;min-width:0}.liste-rows{display:flex;flex-direction:column;gap:.5rem;margin:1rem 0 0;padding:0;list-style:none}.liste-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.4rem 1.25rem;padding:.8rem 1rem .8rem 1.1rem;background:var(--color-surface);border:2px solid var(--color-border);border-left:8px solid var(--tone);border-radius:4px var(--radius-md) var(--radius-md) 4px}.liste-row-main{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .6rem}.liste-row-main a{color:var(--color-text);font-family:var(--font-display);font-size:1.15rem;font-weight:700;text-decoration:none;overflow-wrap:anywhere}.liste-row-main a:hover{text-decoration:underline}.liste-row-meta{margin:0;color:var(--color-text-muted);font-size:.9rem;white-space:nowrap}.liste-row-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .9rem}.niveau-badge{padding:.1rem .6rem;background:var(--tone-tint, var(--color-primary-tint));color:var(--tone-ink, var(--color-primary-dark));font-size:.75rem;font-weight:700;border-radius:var(--radius-pill)}.carte-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) auto;align-items:end;gap:.75rem 1rem;margin:1.5rem 0 1rem}.carte-form .field{margin:0}.carte-list{margin:1rem 0 0;padding:0;list-style:none;border-top:2px solid var(--color-border)}.carte-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) auto;align-items:baseline;gap:.4rem 1.25rem;padding:.8rem .25rem;border-bottom:1px solid var(--color-border)}.carte-row--editing{display:block}.carte-terme{font-family:var(--font-display);font-size:1.1rem;font-weight:700;overflow-wrap:anywhere}.carte-definition{color:var(--color-text-muted);overflow-wrap:anywhere}.carte-row-actions{display:flex;gap:.25rem .9rem}.niveau-layout{display:grid;grid-template-columns:minmax(0,1fr) 20rem;gap:2rem 2.5rem;align-items:start;margin-top:2rem}.section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem;margin-bottom:.75rem}.section-head h2{margin:0;font-size:1.35rem}.niveau-dossiers .section-head .create-row{flex:0 1 26rem}.niveau-dossiers .dossier-grid{margin-top:2rem}.niveau-dossiers .niveau-badge{display:none}.niveau-classes{padding:1.25rem;background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-md)}.niveau-classes .create-row{flex:none}.class-list{display:flex;flex-direction:column;gap:.9rem;margin-top:1.1rem}.niveau-classes .class-card{padding:.9rem 1rem;background:var(--color-bg);border-width:1px}.niveau-classes .class-card h3{margin:0 0 .5rem}.class-card-code{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem .8rem}.class-card-code .invite-code{margin:0}.class-card-code .btn-secondary{padding:.15rem .1rem;background:none;box-shadow:none;color:var(--color-primary-dark);font-family:var(--font-body);font-size:.85rem;text-decoration:underline;text-underline-offset:3px}.class-card-empty{margin:.75rem 0 0;font-size:.9rem;color:var(--color-text-muted)}.niveau-classes .student-list{margin-top:.75rem;padding-top:.6rem;border-top:1px dashed var(--color-border)}.student-list li{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.student-listes-count{margin-right:auto;font-size:.8rem;color:var(--color-text-muted)}.student-status{flex:none;padding:.05rem .55rem;font-size:.8rem;border-radius:var(--radius-pill);background:var(--color-primary-tint);color:var(--color-primary-dark)}@media (max-width: 900px){.niveau-layout{grid-template-columns:minmax(0,1fr)}}@media (max-width: 640px){.liste-row,.carte-row,.carte-form,.class-form{grid-template-columns:minmax(0,1fr)}.create-row,.toolbar .create-row{flex:1 1 100%;margin-left:0}.page-header h1{font-size:1.65rem}.teacher-nav{gap:0 1.1rem}.teacher-tab{font-size:.92rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important}.meteor .meteor-trail,.meteor .meteor-smoke{animation:none}.meteor-levelup-text{animation:meteor-levelup-static 1.6s step-end forwards}}@keyframes meteor-levelup-static{0%{opacity:1}to{opacity:0}}.game-card{max-width:36rem;margin:1.5rem auto;text-align:center}.game-progress{color:var(--color-text-muted);margin:0 0 .75rem}.game-prompt{font-family:var(--font-display);font-size:1.6rem;margin:.5rem 0 1rem}.choice-list{display:grid;gap:.75rem;margin-top:.5rem}.choice-list .choice{width:100%;padding:.9rem 1rem;font-size:1.15rem;background:var(--color-surface);color:var(--color-text);border:2px solid var(--color-border);box-shadow:none}.choice-list .choice:hover:not(:disabled){background:var(--color-primary-tint);border-color:var(--color-primary)}.choice-list .choice:disabled{cursor:default;opacity:1}.choice-list .choice-correct{background:var(--color-success-tint);border-color:var(--color-success)}.choice-list .choice-wrong{background:#fdebec;border-color:var(--color-danger)}.qcm-feedback{margin:1rem 0 .75rem}.game-score{font-family:var(--font-display);font-size:1.5rem}.game-actions{display:flex;gap:.75rem;justify-content:center;margin-top:1rem}.game-actions .btn{padding:.6rem 1.5rem}.game-actions .btn svg{width:1.5rem;height:1.5rem;display:block}.game-next{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin:1rem auto}.game-next .btn{text-decoration:none;padding:.6rem 1.25rem}.mistake-list{text-align:left;padding-left:1.25rem}.mistake-given{color:var(--color-text-muted)}.flashcard{display:block;width:100%;min-height:12rem;padding:1.5rem;font-family:var(--font-display);font-size:2rem;cursor:pointer;background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.game-card--wide{max-width:52rem}.pairs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.75rem;margin-top:1rem}.pair-tile{min-height:5rem;padding:.75rem;cursor:pointer;font:inherit;background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-md)}.pair-tile[aria-pressed=true]{border-color:var(--color-primary);box-shadow:var(--shadow-button)}.pair-tile--matched{opacity:.45;border-color:var(--color-success);cursor:default}.meteor-field,.etoile-sky{position:relative;height:22rem;overflow:hidden;margin-bottom:1rem;border-radius:var(--radius-lg);background:radial-gradient(1.5px 1.5px at 12% 18%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 27% 62%,#fff 50%,transparent 51%),radial-gradient(1.5px 1.5px at 41% 33%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 58% 12%,#fff 50%,transparent 51%),radial-gradient(2px 2px at 69% 48%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 83% 24%,#fff 50%,transparent 51%),radial-gradient(1.5px 1.5px at 91% 70%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 6% 80%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 48% 85%,#fff 50%,transparent 51%),linear-gradient(#0d0b24,#2a2170)}.meteor-ground{position:absolute;left:0;right:0;bottom:0;height:2.5rem;pointer-events:none;background:linear-gradient(transparent,#ff6e2859)}.meteor{position:absolute;z-index:1;max-width:10rem;transform:translate(-50%)}.meteor-word{position:relative;z-index:2;display:block;padding:.35rem .8rem;color:#fff;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.6);background:radial-gradient(circle at 35% 30%,#6b4a3a,#2b1d18 70%);border:2px solid #ff8a3d;border-radius:var(--radius-pill);box-shadow:0 0 10px 2px #ff8a3dcc,0 0 24px 6px #ffc83c59}.meteor-trail,.meteor-smoke{position:absolute;left:50%;bottom:60%;pointer-events:none;transform-origin:50% 100%}.meteor-trail{z-index:1;width:80%;height:7rem;margin-left:-40%;background:radial-gradient(ellipse 50% 100% at 50% 100%,#fff3b0,#ffb43d 25%,rgba(255,90,30,.7) 55%,transparent 80%);filter:blur(2px);animation:meteor-flicker .15s ease-in-out infinite alternate}.meteor-smoke{z-index:0;width:130%;height:12rem;margin-left:-65%;background:radial-gradient(ellipse 50% 100% at 50% 100%,rgba(230,225,245,.75),rgba(170,165,200,.4) 50%,transparent 85%);filter:blur(6px);animation:meteor-smoke 1.6s ease-in-out infinite alternate}@keyframes meteor-flicker{0%{transform:scaleX(.9);opacity:.85}to{transform:scaleX(1.05) scaleY(1.08);opacity:1}}@keyframes meteor-smoke{0%{transform:translate(-4px) scaleX(.95);opacity:.7}to{transform:translate(4px) scaleX(1.08);opacity:1}}.meteor-levelup{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;pointer-events:none}.meteor-levelup-text{margin:0;font-size:2rem;font-weight:800;color:#ffd84a;text-shadow:0 0 8px rgba(255,216,74,.8),0 2px 0 rgba(13,11,36,.6);opacity:0;animation:meteor-levelup 1.6s ease-out forwards}@keyframes meteor-levelup{0%{opacity:0;transform:scale(.4)}20%{opacity:1;transform:scale(1.15)}35%{transform:scale(1)}75%{opacity:1}to{opacity:0;transform:scale(1)}}.meteor-over-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.meteor-over{position:absolute;z-index:3;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:.5rem;background:#0d0b24d9;color:#fff}.etoile-sky{height:12rem}.etoile{position:absolute;z-index:1;left:0;top:0;width:2rem;height:2rem;animation-name:etoile-file;animation-timing-function:linear;animation-fill-mode:forwards}.etoile--paused{animation-play-state:paused}.etoile-head{position:relative;z-index:2;display:block;width:2rem;line-height:2rem;text-align:center;font-size:1.6rem;color:#fff6c4;text-shadow:0 0 6px #fff,0 0 14px #ffd84a,0 0 26px rgba(255,216,74,.7)}.etoile--caught .etoile-head{color:#c9ffd8;text-shadow:0 0 6px #fff,0 0 16px #4ade80}.etoile-trail{position:absolute;z-index:1;right:50%;top:calc(50% - 1.5px);width:6rem;height:3px;border-radius:3px;transform:rotate(25deg);transform-origin:100% 50%;pointer-events:none;background:linear-gradient(to right,transparent,rgba(255,246,196,.5) 60%,#fff6c4);filter:blur(.5px)}@keyframes etoile-file{0%{left:0;top:0}to{left:calc(100% - 2rem);top:calc(100% - 2rem)}}.fireworks{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;pointer-events:none;overflow:hidden}.firework{position:absolute;width:0;height:0}.firework-spark{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--color);box-shadow:0 0 6px var(--color);opacity:0;transform:rotate(var(--angle)) translateY(0);animation:firework-burst 1.3s ease-out var(--delay) forwards}@keyframes firework-burst{0%{opacity:1;transform:rotate(var(--angle)) translateY(0) scale(1)}70%{opacity:1}to{opacity:0;transform:rotate(var(--angle)) translateY(-7rem) scale(.4)}}@media (prefers-reduced-motion: reduce){.fireworks{display:none}}.student-dossier{margin:1.5rem 0}.student-liste-list,.jeux-grid{list-style:none;padding:0;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr))}.student-liste,.jeu-card{display:grid;gap:.25rem;padding:1rem;height:100%;color:inherit;text-decoration:none;background:var(--color-surface);border:2px solid var(--tone, var(--color-border));border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.student-liste-meta{color:var(--color-text-muted)}.jeu-card--disabled{opacity:.55}.jeux-categorie{margin:1.5rem 0}.jeux-categorie .section-head .page-meta{margin:0}.jeux-categorie--activites{--jeu-accent: var(--color-success);--jeu-accent-tint: var(--color-success-tint)}.jeux-categorie--jeux{--jeu-accent: var(--color-accent-dark);--jeu-accent-tint: #fff3d1}.jeux-categorie .section-head h2{border-left:5px solid var(--jeu-accent);padding-left:.6rem}.jeux-categorie .jeu-card{border-top:4px solid var(--jeu-accent)}.jeu-card-icon{width:2.75rem;height:2.75rem;padding:.6rem;margin-bottom:.35rem;box-sizing:border-box;border-radius:50%;color:var(--jeu-accent, var(--color-primary));background:var(--jeu-accent-tint, var(--color-primary-tint))}.classement-portee,.classement-presets{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:1rem 0}.classement-filters{display:flex;flex-wrap:wrap;align-items:end;gap:1rem;max-width:none}.classement-filters .classement-portee,.classement-filters .classement-presets{margin:0}.classement-trophy{color:var(--color-accent);vertical-align:-.1em}.classement-scroll{overflow-x:auto;margin-top:1rem;border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.classement-grid{width:100%;border-collapse:collapse;background:var(--color-surface)}.classement-grid th,.classement-grid td{padding:.7rem .9rem;border-bottom:1px solid var(--color-border)}.classement-grid thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);text-align:center;white-space:nowrap}.classement-grid thead tr:first-child th:first-child,.classement-grid tbody th{text-align:left;white-space:nowrap}.classement-grid thead .classement-jeu-icon{display:block;margin:0 auto .25rem;font-size:1.1rem}.classement-grid tbody tr:nth-child(odd){background:var(--color-bg)}.classement-col--active{background:color-mix(in srgb,var(--color-accent) 14%,transparent)}.classement-cell{text-align:center;min-width:5.5rem}.classement-cell .classement-jeu-icon{font-size:1.25rem}.classement-cell--on .classement-jeu-icon{color:var(--color-primary)}.classement-cell--off .classement-jeu-icon{color:var(--color-border)}.classement-rang{display:inline-flex;align-items:center;gap:.15rem;margin-left:.35rem;padding:.05rem .45rem;border-radius:var(--radius-pill);background:var(--color-primary-tint);color:var(--color-primary-dark);font-weight:700;font-size:.85rem;vertical-align:middle}.classement-result{display:block;margin-top:.2rem;font-size:.75rem;color:var(--color-text-muted);white-space:nowrap}.classement-moi,.classement-grid tbody tr.classement-moi{font-weight:700;background:color-mix(in srgb,var(--color-primary, #5b4bd6) 12%,transparent)}.btn-icon{vertical-align:-.125em;margin-right:.15rem}.back-links{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 .85rem}.back-links a{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .85rem;border-radius:var(--radius-pill);background:var(--color-surface);color:var(--tone-ink, var(--color-primary-dark));border:1.5px solid color-mix(in srgb,var(--tone, var(--color-primary)) 35%,transparent);font-weight:700;font-size:.875rem;line-height:1.3;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s}.back-links a:hover{background:var(--tone, var(--color-primary));border-color:var(--tone, var(--color-primary));color:#fff}.first-steps{margin:.5rem 0 0;padding-left:1.25rem;display:grid;gap:.35rem}.game-actions .btn{display:inline-flex;align-items:center;gap:.5rem}.auth-switch{text-align:center;margin-top:1rem}.choice-correct:before{content:"✓ "}.choice-wrong:before{content:"✗ "}.nav-brand a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:.6rem;padding:0}.nav-logo{display:block;width:2.25rem;height:2.25rem;border-radius:28%;box-shadow:0 0 0 2px #ffffff73}.partage-lien{margin-top:1rem}.partage-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}
