:root,:root[data-theme=sombre]{--fond-app: #161512;--fond-barre: #21201d;--fond-zone: #2a2825;--fond-carte: #34322e;--texte: #ececec;--texte-attenue: #a0988c;--accent: #7fa650;--accent-fort: #9dc84f;--bordure: #3d3a35;--lien-actif-fond: #3d4a2a}:root[data-theme=clair]{--fond-app: #f4f2ee;--fond-barre: #ffffff;--fond-zone: #ffffff;--fond-carte: #f0eee9;--texte: #2a2825;--texte-attenue: #6b6355;--accent: #5d8a3a;--accent-fort: #4a7a2c;--bordure: #dcd8d0;--lien-actif-fond: #e4edd6}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--fond-app);color:var(--texte)}.shell{display:flex;min-height:100vh}.barre-laterale{display:flex;flex-direction:column;width:240px;padding:20px 14px;background:var(--fond-barre);border-right:1px solid var(--bordure)}.marque{font-size:22px;font-weight:700;color:var(--accent-fort);padding:6px 10px 20px;letter-spacing:.5px}.navigation{display:flex;flex-direction:column;gap:4px;flex:1}.lien-nav{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:8px;color:var(--texte-attenue);text-decoration:none;font-weight:600;font-size:15px;transition:background .15s,color .15s}.lien-nav:hover{background:var(--fond-zone);color:var(--texte)}.lien-nav.actif{background:var(--lien-actif-fond);color:var(--accent-fort)}.lien-nav .icone{font-size:18px;width:22px;text-align:center}.bouton-theme{margin-top:12px;padding:10px 12px;border:1px solid var(--bordure);border-radius:8px;background:var(--fond-zone);color:var(--texte);font-weight:600;font-size:14px;cursor:pointer;transition:border-color .15s}.identite-invite{margin-top:auto;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--bordure);border-radius:8px;background:var(--fond-zone)}.identite-libelle{font-size:12px;color:var(--texte-attenue)}.identite-pseudo{font-size:15px;font-weight:700;color:var(--accent-fort)}.identite-etat{font-size:13px;color:var(--texte-attenue)}.bouton-theme:hover{border-color:var(--accent)}.zone-principale{flex:1;padding:40px 48px;background:var(--fond-zone);overflow-y:auto}.surface h1{margin:0 0 8px;font-size:30px}.description{color:var(--texte-attenue);font-size:16px;margin:0 0 24px}.carte-placeholder{padding:28px;border:1px dashed var(--bordure);border-radius:12px;background:var(--fond-carte);color:var(--texte-attenue);font-style:italic}.page-jeu{display:flex;flex-direction:column;gap:20px}.page-jeu-vide,.page-jeu-fin,.page-jeu-erreur{align-items:flex-start}.page-jeu-plateau{display:flex;flex-wrap:wrap;gap:32px;align-items:flex-start}.grille-sudoku{display:flex;flex-direction:column;gap:12px}.grille-entete{display:flex;align-items:center;gap:16px;font-size:15px;font-weight:600}.compteur-erreurs{color:var(--texte-attenue)}.grille-terminee{color:var(--accent-fort);font-weight:700}.grille-attente{color:var(--texte-attenue);font-style:italic;padding:40px 0}.grille-cases{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);width:min(70vmin,480px);height:min(70vmin,480px);gap:1px;padding:3px;background:var(--bordure);border:3px solid var(--texte-attenue);border-radius:6px;-webkit-user-select:none;user-select:none}.case-sudoku{display:flex;align-items:center;justify-content:center;background:var(--fond-carte);color:var(--texte);font-size:clamp(16px,4vmin,26px);font-weight:600;cursor:default;transition:background .1s;position:relative}.grille-cases .case-sudoku:nth-child(3n):not(:nth-child(9n)){border-right:2px solid var(--texte-attenue)}.grille-cases .case-sudoku:nth-child(n+19):nth-child(-n+27),.grille-cases .case-sudoku:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--texte-attenue)}.case-donnee{background:var(--fond-zone);color:var(--texte);font-weight:800}.case-correcte{color:var(--accent-fort);font-weight:700}.case-erreur{color:#e06c6c;background:#e06c6c1f;font-weight:700}.case-sudoku[tabindex="0"]{cursor:pointer}.case-sudoku[tabindex="0"]:hover{background:var(--lien-actif-fond)}.case-selectionnee{background:var(--lien-actif-fond);outline:2px solid var(--accent);outline-offset:-2px}.grille-refus{color:#e06c6c;font-size:14px;margin:0}.pave-numerique{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;width:min(70vmin,480px);margin-top:4px}.pave-touche{padding:14px 0;font-size:22px;font-weight:700;color:var(--texte);background:var(--fond-carte);border:1px solid var(--bordure);border-radius:8px;cursor:pointer;transition:background .1s,border-color .1s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.pave-touche:hover:not(:disabled),.pave-touche:active:not(:disabled){background:var(--lien-actif-fond);border-color:var(--accent)}.pave-touche:disabled{opacity:.4;cursor:default}.pave-effacer{color:var(--accent-fort)}.temps-restant{font-size:18px;font-weight:700;color:var(--accent-fort)}.page-jeu-adversaires{min-width:240px}.page-jeu-adversaires h3{margin:0 0 12px;font-size:16px;color:var(--texte-attenue)}.avancements-adverses{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.avancements-vide{color:var(--texte-attenue);font-style:italic}.avancement-joueur{padding:10px 12px;border:1px solid var(--bordure);border-radius:8px;background:var(--fond-carte);display:flex;flex-direction:column;gap:6px;font-size:14px}.avancement-joueur>*{display:inline-block}.avancement-niveau{color:var(--texte-attenue);font-size:13px}.avancement-barre{height:8px;border-radius:4px;background:var(--fond-zone);overflow:hidden}.avancement-barre-remplie{display:block;height:100%;background:var(--accent);transition:width .3s}.avancement-pourcentage,.avancement-score,.avancement-combo{font-weight:700;color:var(--accent-fort)}.avancement-erreurs{color:var(--texte-attenue);font-size:13px}.avancement-deconnecte{opacity:.55}.avancement-elimine{color:#e06c6c;font-size:13px;font-weight:700}.avancement-complet{color:var(--accent-fort);font-weight:700}.page-jeu-reconnexion,.page-jeu-elimine{color:var(--texte-attenue);font-weight:600;margin:0}.page-jeu-reconnexion-perdue{color:#e06c6c;font-weight:700}.page-jeu-retour{align-self:flex-start;margin-top:12px;padding:10px 18px;border:1px solid var(--bordure);border-radius:8px;background:var(--fond-carte);color:var(--texte);font-weight:600;cursor:pointer}.page-jeu-retour:hover{border-color:var(--accent)}.fin-partie{display:flex;flex-direction:column;gap:16px;max-width:520px}.fin-partie-titre{margin:0;font-size:24px;color:var(--accent-fort)}.fin-partie-classement{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.fin-partie-joueur{display:flex;align-items:center;gap:14px;padding:12px 16px;border:1px solid var(--bordure);border-radius:8px;background:var(--fond-carte);font-size:15px}.fin-partie-position{font-weight:800;font-size:18px;color:var(--accent-fort);min-width:28px}.fin-partie-statut,.fin-partie-niveau,.fin-partie-erreurs{color:var(--texte-attenue);font-size:13px}.fin-partie-score,.fin-partie-cases{font-weight:700;margin-left:auto}.fin-partie-refus{color:#e06c6c;font-size:14px}@media(max-width:900px){.shell{flex-direction:column}.barre-laterale{flex-direction:row;align-items:center;width:100%;padding:8px 12px;gap:6px;border-right:none;border-bottom:1px solid var(--bordure);overflow-x:auto}.marque{font-size:18px;padding:0 8px 0 0;white-space:nowrap}.navigation{flex-direction:row;gap:2px;flex:1}.lien-nav{padding:8px 10px}.navigation .lien-nav span:not(.icone){display:none}.lien-nav .icone{font-size:20px}.identite-invite,.bouton-theme{display:none}.zone-principale{padding:20px 16px}.page-jeu-plateau{flex-direction:column;gap:20px}.page-jeu-adversaires{width:100%;min-width:0}}@media(max-width:560px){.grille-cases,.pave-numerique{width:min(96vw,460px)}.grille-cases{height:min(96vw,460px)}.pave-touche{padding:16px 0;font-size:24px}.zone-principale{padding:16px 10px}}
