:root{--nuit:#10142e;--nuit-2:#1c2350;--nuit-3:#2a3470;--nuit-4:#3f4c94;--brume:#aeb4d8;--creme:#f6eedf;--ambre:#f2a93b;--lueur:#ffd98a;--sable:#f5e6cc;--papier:#fdf6e9;--kraft:#c99a62;--laterite:#b4532a;--encre:#2b1810;--bassin:#2bb3a3;--bissap:#c42f72;--reussite:#3dae5e;--danger:#c93a24;--titre:"Bricolage Grotesque", "Trebuchet MS", "Segoe UI", system-ui, sans-serif;--texte:"Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;--chiffres:"Martian Mono", ui-monospace, "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box}html,body,#racine{height:100%;margin:0}body{background:var(--nuit);color:var(--creme);font:16px/1.4 var(--texte);-webkit-text-size-adjust:100%}.page{max-width:430px;min-height:100%;padding:max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));flex-direction:column;gap:16px;margin:0 auto;display:flex}.page.jour{background:var(--sable);color:var(--encre)}.colonne{flex-direction:column;flex:1;gap:12px;display:flex}.bas{flex-direction:column;gap:12px;margin-top:auto;padding-top:16px;display:flex}h1{font:800 30px/1.05 var(--titre);letter-spacing:-.01em;margin:24px 0 0}label,.etiquette{margin-top:12px;font-weight:700}.etiquette{font:500 12px var(--chiffres);letter-spacing:.08em;text-transform:uppercase;opacity:.7;margin:16px 0 0}.doux{opacity:.75;margin:0}.aide{opacity:.7;margin:0;font-size:14px}.centre{text-align:center}.cache{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.logo{width:min(70%,260px);margin:12vh auto 0}.logo svg{width:100%;height:auto;display:block;overflow:visible}.profil{align-items:center;gap:10px;display:flex}.pastille{background:var(--ambre);width:40px;height:40px;color:var(--encre);font:800 18px/40px var(--titre);text-align:center;border:2px solid var(--encre);border-radius:50%;flex:none}.bouton{border:2px solid var(--encre);background:var(--ambre);min-height:56px;color:var(--encre);font:800 18px/1.1 var(--titre);cursor:pointer;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:100%;padding:10px 16px;text-decoration:none;display:flex}.bouton small{font:400 13px var(--texte);opacity:.8}.bouton:disabled{opacity:.45;cursor:default}.bouton.second{color:var(--creme);border-color:var(--creme);background:0 0}.bouton.encre{background:var(--encre);color:var(--creme)}.bouton.clair{color:var(--encre);background:0 0}.bouton.whatsapp{background:var(--reussite);color:#fff}.bouton:focus-visible,.lien:focus-visible,.champ:focus-visible{outline:3px solid var(--lueur);outline-offset:2px}.lien{color:inherit;font:700 15px var(--texte);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;align-self:flex-start;min-height:48px;padding:0 4px;text-decoration:underline}.champ{border:2px solid var(--encre);background:var(--papier);height:56px;color:var(--encre);font:700 18px var(--texte);border-radius:16px;width:100%;padding:0 16px}.cases{gap:10px;margin-top:8px;display:flex;position:relative}.case{border:2px solid var(--encre);background:var(--papier);height:72px;font:800 34px/68px var(--titre);text-align:center;border-radius:16px;flex:1}.case.active{border-color:var(--laterite);box-shadow:0 0 0 3px var(--lueur)}.cases input{opacity:0;width:100%;font-size:16px;position:absolute;inset:0}.code{font:800 56px/1 var(--titre);letter-spacing:.12em;margin:0 0 8px}.bandeau,.info,.erreur{border-radius:12px;margin:0;padding:10px 12px;font-size:15px}.bandeau{background:#2b181014}.info{background:var(--nuit-2);color:var(--brume)}.erreur{background:var(--danger);color:#fff;font-weight:700}.joueurs{flex-direction:column;gap:8px;margin:4px 0 0;padding:0;list-style:none;display:flex}.joueurs li{background:var(--papier);border:2px solid var(--encre);border-radius:16px;align-items:center;gap:10px;min-height:56px;padding:8px 12px;display:flex}.joueurs li.absent{opacity:.55}.marques{gap:6px;margin-left:auto;display:flex}.marques em{font:500 11px var(--chiffres);text-transform:uppercase;background:#2b18101a;border-radius:8px;padding:3px 6px}.marques em.hote{background:var(--ambre)}@media (prefers-reduced-motion:no-preference){.bouton{transition:transform 80ms}.bouton:active:not(:disabled){transform:translateY(2px)}}.lutte{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;gap:10px}.lutte-tete{grid-template-columns:1fr auto 1fr;align-items:end;gap:10px;display:grid}.jauge{flex-direction:column;gap:4px;min-width:0;display:flex}.jauge strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.jauge.c1{text-align:right;order:3}.barre{border:2px solid var(--encre);background:var(--papier);border-radius:8px;height:14px;display:flex;overflow:hidden}.jauge.c1 .barre{justify-content:flex-end}.barre i{background:var(--ambre);transition:width .15s}.jauge.c1 .barre i{background:var(--bassin)}.chrono{font:500 22px var(--chiffres);order:2;margin:0}.arene{border:2px solid var(--encre);background:linear-gradient(var(--papier) 72%, var(--kraft) 72%);border-radius:16px;height:230px;position:relative;overflow:hidden}.cercle{background:var(--sable);border:3px dashed var(--laterite);border-radius:50%;height:16%;position:absolute;bottom:14%;left:12%;right:12%}.lutteur{width:0;transition:left 60ms linear;position:absolute;bottom:22%}.lutteur>*{position:absolute;left:0;transform:translate(-50%)}.corps{border:2px solid var(--encre);background:var(--ambre);transform-origin:50% 100%;border-radius:13px 13px 6px 6px;width:26px;height:66px;margin-left:-13px;transition:rotate .12s,translate .12s,scale .12s,opacity .12s;bottom:0;transform:none}.lutteur.c1 .corps{background:var(--bassin);scale:-1 1}.corps:before{content:"";border:2px solid var(--encre);background:inherit;border-radius:50%;width:22px;height:22px;position:absolute;top:-26px;left:0}.bras{border:2px solid var(--encre);background:inherit;border-radius:4px;width:12px;height:8px;transition:width .12s;position:absolute;top:14px;left:14px}.pousser.prepa .corps{rotate:-16deg}.pousser.recup .corps{rotate:20deg}.pousser.recup .bras,.saisir.prepa .bras,.saisir.recup .bras{width:30px}.saisir.prepa .corps{rotate:6deg}.esquiver.prepa .corps{scale:1 .9}.lutteur.c1.esquiver.prepa .corps{scale:-1 .9}.esquiver.actif .corps{opacity:.6;translate:-10px;rotate:-26deg}.lutteur.c1.esquiver.actif .corps{translate:10px;rotate:26deg}.lutteur.c1.pousser.prepa .corps{rotate:16deg}.lutteur.c1.pousser.recup .corps{rotate:-20deg}.lutteur.c1.saisir.prepa .corps{rotate:-6deg}.tenu .corps{filter:grayscale(.8);rotate:-8deg}.lutteur.bord .corps{outline:3px solid var(--danger)}.geste{white-space:nowrap;font:800 14px var(--titre);bottom:112px}.charge{background:#2b18101f;border-radius:4px;width:44px;height:8px;bottom:100px;overflow:hidden}.charge:empty{display:none}.charge i{background:var(--encre);height:100%;display:block}.pousser .charge i{background:var(--laterite)}.saisir .charge i{background:var(--bassin)}.esquiver .charge i{background:var(--bissap)}.decompte,.fait{text-align:center;font:800 16px var(--titre);margin:0;position:absolute;top:8px;left:0;right:0}.decompte{font-size:72px;top:20px}.retards{font:500 12px var(--chiffres);text-align:center;opacity:.75;margin:0}.retards.lent{color:var(--danger);opacity:1}.commandes{grid-template-columns:1fr 1fr;gap:12px;margin-top:auto;display:grid}.pouce+.pouce{flex-direction:column}.pouce+.pouce .touche{flex:none;height:60px}.commandes .aide{grid-column:1/-1}.pouce{gap:8px;display:flex}.touche{border:2px solid var(--encre);background:var(--papier);min-width:0;height:auto;min-height:84px;color:var(--encre);font:800 15px var(--titre);touch-action:none;border-radius:16px;flex:1;padding:0 2px}.touche:active:not(:disabled){filter:brightness(.9);translate:0 2px}.touche:disabled{opacity:.4}.touche.pousser{background:var(--laterite);color:#fff}.touche.saisir{background:var(--bassin)}.touche.esquiver{background:var(--bissap);color:#fff}.lutte-fin{flex-direction:column;gap:12px;margin-top:auto;display:flex}.lutte-fin h1{margin:0 0 8px}.pousser.prepa .corps{box-shadow:0 0 0 4px var(--laterite)}.saisir.prepa .corps{box-shadow:0 0 0 4px var(--bassin)}.esquiver.prepa .corps,.esquiver.actif .corps{box-shadow:0 0 0 4px var(--bissap)}.arene.choc .lutteur{transition:left .22s cubic-bezier(.2,.8,.2,1)}@media (prefers-reduced-motion:no-preference){.arene.choc{animation:.22s secousse}}@keyframes secousse{20%{translate:-5px 2px}45%{translate:5px -2px}70%{translate:-3px 1px}}
