/* vivacite-v1 — l'écran « Vivacité » et le lecteur de jeux (sans ombres portées, sans flash) */
#ec-vivacite .viv-jour h2,#ec-vivacite .viv-famille h2{margin:0 0 4px}
#ec-vivacite .viv-indice{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:6px 0 2px}
#ec-vivacite .viv-indice b{font-size:2.1rem;line-height:1;color:var(--sauge-profond,#CBE5B8)}
#ec-vivacite .viv-indice span,#ec-vivacite .viv-note{color:var(--encre-douce,#C4CFBC);font-size:.95rem;line-height:1.45;margin:4px 0}
#ec-vivacite .viv-note.petite{font-size:.82rem;opacity:.9}
#ec-vivacite .viv-fam-tete{display:flex;align-items:center;gap:14px;margin-bottom:12px}
#ec-vivacite .viv-fam-tete img{width:56px;height:56px;flex:0 0 56px;border-radius:14px}
#ec-vivacite .viv-fam-tete p{margin:0;color:var(--encre-douce,#C4CFBC);font-size:.9rem}
#ec-vivacite .viv-jeux{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}#ec-vivacite .viv-jeux > .viv-jeu{min-width:0;overflow-wrap:anywhere;hyphens:auto} /* trad-1014 : les noms longs (de, ru) ne débordent plus */
#ec-vivacite .viv-jeu{position:relative;text-align:start;display:flex;flex-direction:column;gap:4px;min-height:74px;padding:12px 12px 12px 14px;border-radius:16px;border:1px solid var(--trait,rgba(255,255,255,.14));background:rgba(255,255,255,.05);color:var(--encre,#F2F5EC);font:inherit;cursor:pointer}
#ec-vivacite .viv-jeu b{font-size:1rem;line-height:1.25;padding-inline-end:22px}
#ec-vivacite .viv-jour .retour{margin-bottom:10px}
#ec-vivacite .viv-jeu span{font-size:.8rem;color:var(--encre-douce,#C4CFBC)}
#ec-vivacite .viv-jeu:active{transform:scale(.98)}
#ec-vivacite .viv-cadenas{position:absolute;top:10px;inset-inline-end:10px;width:14px;height:16px;opacity:.75;background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 16'%3E%3Crect x='1' y='7' width='12' height='9' rx='2' fill='%23C9C2D8'/%3E%3Cpath d='M3.5 7V5a3.5 3.5 0 0 1 7 0v2' fill='none' stroke='%23C9C2D8' stroke-width='1.6'/%3E%3C/svg%3E")}
#ec-vivacite .viv-etoile{position:absolute;top:6px;inset-inline-end:9px;font-style:normal;color:#F2C94C;font-size:15px}
#ec-vivacite .viv-libre{position:static;align-self:flex-start;margin-top:2px;font-style:normal;font-size:.68rem;letter-spacing:.03em;padding:2px 7px;border-radius:999px;background:rgba(111,207,151,.18);color:#9FE3B9}
html.theme-clair #ec-vivacite .viv-jeu{background:rgba(0,0,0,.03)}
html.theme-clair #ec-vivacite .viv-libre{color:#2F7A52;background:rgba(111,207,151,.22)}

/* le lecteur */
html.viv-ouvert,html.viv-ouvert body{overflow:hidden}
.viv-jeu{position:fixed;inset:0;z-index:80;display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top) + 10px) 16px calc(env(safe-area-inset-bottom) + 14px);background:var(--brume,#130E20);color:var(--encre,#F2F5EC);-webkit-user-select:none;user-select:none;touch-action:manipulation}
.viv-jeu[hidden]{display:none}
html.theme-clair .viv-jeu{background:#F7F5FB;color:#2A2433}
.vj-tete{display:grid;grid-template-columns:44px 1fr;align-items:center;gap:6px;min-height:44px}
.vj-fermer{width:44px;height:44px;border-radius:50%;border:1px solid var(--trait,rgba(255,255,255,.16));background:transparent;color:inherit;font-size:18px}
.vj-titre{font-weight:700;font-size:1.05rem}
.vj-info{grid-column:1/-1;font-size:.82rem;opacity:.75;min-height:18px}
.vj-temps{height:6px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.vj-temps i{display:block;height:100%;background:var(--sauge,#9ACB86);transform-origin:left;border-radius:3px}
html[dir=rtl] .vj-temps i{transform-origin:right}
.vj-consigne{margin:6px 0 4px;min-height:1.4em;font-size:1rem;text-align:center;opacity:.9}
.vj-zone{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;border-radius:22px;border:1px solid transparent;transition:border-color .25s,background-color .25s}
/* rapidite-1014 (David) : plus de cadre autour de la zone au premier toucher ; le retour bon/faux est une teinte brève du fond, sans bordure */
.vj-zone.vj-ok{border-color:transparent;background-color:rgba(111,207,151,.10)}
.vj-zone.vj-ko{border-color:transparent;background-color:rgba(232,112,122,.09)}
.vj-zone,.vj-zone *{-webkit-tap-highlight-color:transparent}
.vj-zone button:focus:not(:focus-visible){outline:none}
.vj-zone.vj-libre{display:block}
.vj-bas{display:flex;flex-direction:column;gap:10px;padding-top:12px;min-height:64px}
.vj-choix{display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}
.vj-choix.un{grid-template-columns:1fr}
.vj-choix.quatre{grid-template-columns:repeat(4,1fr)}
.vj-choix.six{grid-template-columns:repeat(6,1fr)}
.vj-choix.neuf{grid-template-columns:repeat(5,1fr)}
.vj-choix.quatre.fl{grid-template-columns:repeat(4,1fr)}
.vj-bouton,.vj-touche,.vj-go,.vj-sec{min-height:56px;border-radius:16px;border:1px solid var(--trait,rgba(255,255,255,.16));background:rgba(255,255,255,.07);color:inherit;font:inherit;font-size:1.1rem;font-weight:600;display:flex;align-items:center;justify-content:center;gap:2px;flex-wrap:wrap;padding:6px}
.vj-choix.grand .vj-bouton{min-height:96px;font-size:1.35rem}
.vj-choix.formes .vj-bouton{min-height:70px}
.vj-bouton:active,.vj-touche:active{background:rgba(255,255,255,.16)}
html.theme-clair .vj-bouton,html.theme-clair .vj-touche,html.theme-clair .vj-sec{background:#fff;border-color:rgba(0,0,0,.1)}
.vj-go{background:var(--sauge,#9ACB86);color:#14202A;border:0}
.vj-sec{background:transparent}
.vj-saisie{text-align:center;font-size:2rem;font-weight:700;letter-spacing:.12em;min-height:44px}
.vj-pave{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.vj-touche{min-height:52px;font-size:1.3rem}
.vj-touche.ok{background:var(--sauge,#9ACB86);color:#14202A;border:0}
.vj-intro{text-align:center;max-width:340px;display:flex;flex-direction:column;align-items:center;gap:6px}
.vj-intro img{border-radius:18px}
.vj-fam{margin:0;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;opacity:.7}
.vj-but{margin:0;font-size:1.08rem;line-height:1.5}
.vj-rec{margin:6px 0 0;font-size:.9rem;opacity:.8}
.vj-resultat{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;max-width:340px}
.vj-valeur{margin:0;font-size:2.6rem;font-weight:700;color:var(--sauge-profond,#CBE5B8)}
html.theme-clair .vj-valeur{color:#4F3C8C}
.vj-detail{margin:0;opacity:.85}
.vj-courbe{width:240px;height:60px;color:var(--sauge,#9ACB86);margin-top:6px}
.vj-rond{width:min(58vw,240px);aspect-ratio:1;border-radius:50%;border:2px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);transition:background-color .08s}
.vj-rond.allume,.vj-rond.vert{background:#6FCF97;border-color:#6FCF97}
.vj-rond.rouge{background:#E8707A;border-color:#E8707A}
.vj-cible{position:absolute;width:56px;height:56px;border-radius:50%;border:0;background:radial-gradient(circle,#F2C94C 0 22%,rgba(242,201,76,.25) 24% 55%,#F2C94C 57% 66%,rgba(242,201,76,0) 68%)}
.vj-grand{font-size:min(20vw,96px);font-weight:700;line-height:1;min-height:1.1em;text-align:center}
.vj-grand.lettre{font-size:min(26vw,120px)}
.vj-grand.mot{font-size:min(11vw,52px);letter-spacing:.04em}
.vj-grand.fleches{font-size:min(15vw,72px);letter-spacing:.06em;direction:ltr}
.vj-question{font-size:1.1rem;font-weight:700;letter-spacing:.08em;opacity:.85;min-height:1.4em}
.vj-stim{min-height:100px;display:flex;align-items:center}
.vj-ecoute{width:min(80vw,320px);min-height:180px;border-radius:24px;border:1px solid var(--trait,rgba(255,255,255,.16));background:rgba(255,255,255,.06);color:inherit;font:inherit;font-size:1.1rem;padding:16px}
.vj-calcul{font-size:min(12vw,56px);font-weight:700;text-align:center;direction:ltr;min-height:1.2em}
.vj-calcul.petit{font-size:min(7.5vw,34px)}
.vj-tuiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:min(86vw,340px)}
.vj-tuile{min-height:72px;border-radius:16px;border:1px solid var(--trait,rgba(255,255,255,.16));background:rgba(255,255,255,.07);color:inherit;font:inherit;font-size:1.6rem;font-weight:700}
.vj-tuile.pris{background:rgba(155,107,234,.35)}
.vj-points{width:min(86vw,360px);height:min(56vh,320px);color:#EEE8F8}
.vj-points.petit{width:min(70vw,260px);height:min(40vh,220px)}
.vj-pastilles{display:grid;grid-template-columns:1fr 1fr;gap:14px;width:min(78vw,300px)}
.vj-pastille{aspect-ratio:1;border-radius:26px;border:0;opacity:.42;transition:opacity .12s}
.vj-pastille.on{opacity:1}
.p-rouge{background:#E8707A}.p-bleu{background:#6FA8F2}.p-vert{background:#6FCF97}.p-jaune{background:#F2C94C}
.bloque{pointer-events:none}
.vj-grille{display:grid;gap:8px;width:min(86vw,360px)}
.vj-grille.petite{width:min(38vw,150px);gap:5px}
.vj-case{aspect-ratio:1;border-radius:12px;border:1px solid var(--trait,rgba(255,255,255,.14));background:rgba(255,255,255,.06);color:inherit;font:inherit;padding:0}
.vj-case.on{background:#9B6BEA;border-color:#9B6BEA}
.vj-case.faux{background:rgba(232,112,122,.55)}
.vj-case.manque{outline:2px dashed #9B6BEA;outline-offset:-4px}
.vj-grille.lettres .vj-case{font-size:min(7vw,30px);font-weight:600}
.vj-grille.lettres .vj-case.pris{opacity:.35}
.vj-grille.sudoku .vj-case{font-size:min(9vw,40px);font-weight:700}
.vj-grille.sudoku .vj-case.fixe{background:rgba(255,255,255,.12)}
.vj-grille.sudoku .vj-case.sel{outline:2px solid var(--sauge,#9ACB86);outline-offset:-3px}
.vj-grille.sudoku .vj-case.bd{margin-inline-end:6px}.vj-grille.sudoku .vj-case.bb{margin-bottom:6px}
.vj-grille.chemin .vj-case.depart{background:radial-gradient(circle,#F2C94C 0 30%,rgba(255,255,255,.06) 32%)}
.vj-grille.cartes .vj-carte{aspect-ratio:3/4;border-radius:12px;border:1px solid var(--trait,rgba(255,255,255,.16));background:rgba(155,107,234,.28);display:flex;align-items:center;justify-content:center;padding:0}
.vj-grille.cartes .vj-carte.vue{background:rgba(255,255,255,.1)}
.vj-grille.cartes .vj-carte.trouve{opacity:.45}
.vj-cle{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;width:min(90vw,380px)}
.vj-cle span{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;border-radius:12px;background:rgba(255,255,255,.06)}
.vj-cle b{font-size:1.4rem}.vj-cle i{font-style:normal;font-weight:700;opacity:.85}
.vj-billes{width:100%;height:100%}
.vj-billes .bille{fill:rgba(238,232,248,.75)}
.vj-billes .bille.on{fill:#F2C94C}
.vj-billes .bille.faux{fill:#E8707A}
.vj-ligne{display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap}
.vj-q{font-size:2rem;font-weight:700;min-width:44px;text-align:center}
.vj-balances{display:flex;flex-direction:column;gap:12px;align-items:center;font-size:1.4rem;direction:ltr}
.vj-balances p{margin:0;display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:center}
.vj-balances p.q{font-weight:700}
.vj-tour{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(92vw,380px);height:min(42vh,240px)}
.vj-tour .piquet{position:relative;display:flex;flex-direction:column-reverse;align-items:center;gap:4px;padding:8px 2px;border-radius:14px;border:1px solid var(--trait,rgba(255,255,255,.14));background:rgba(255,255,255,.04)}
.vj-tour .piquet.sel{border-color:var(--sauge,#9ACB86)}
.vj-tour .mat{position:absolute;bottom:8px;top:18px;left:50%;width:6px;margin-left:-3px;border-radius:3px;background:rgba(255,255,255,.18)}
.vj-tour .disque{position:relative;height:22px;border-radius:11px}
.d1{background:#F2C94C}.d2{background:#6FCF97}.d3{background:#6FA8F2}.d4{background:#B78BF2}
.vj-laby{width:min(88vw,360px);aspect-ratio:1}
.vj-laby svg{width:100%;height:100%}
.vj-laby line{stroke:var(--encre,#EEE8F8);stroke-width:1.2;stroke-linecap:round;opacity:.8}
.vj-matrice{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:min(80vw,300px)}
.vj-matrice .m{aspect-ratio:1;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:2px;border-radius:12px;background:rgba(255,255,255,.06)}
.vj-matrice .m.q{font-size:1.8rem;font-weight:700}
.vj-choix.formes .m{display:flex;gap:2px;flex-wrap:wrap;justify-content:center}
.vj-deuxformes{display:flex;gap:18px;align-items:center;justify-content:center;width:100%}
.vj-poly{width:min(38vw,150px);height:min(38vw,150px)}
.vj-traits{width:100%;height:100%}
.vj-traits .trait{stroke:var(--encre,#EEE8F8);stroke-width:5;stroke-linecap:round}
.vj-traits .prise{stroke:transparent;stroke-width:36;stroke-linecap:round;cursor:pointer}
.vj-miroir{display:flex;align-items:center;gap:10px}
.vj-miroir .axe{width:2px;align-self:stretch;background:rgba(255,255,255,.3)}
.vj-miroir span.vj-case{display:block}
@media (prefers-reduced-motion:reduce){.vj-zone,.vj-pastille,.vj-rond{transition:none}}
html.theme-clair .vj-case{background:rgba(40,30,70,.04);border-color:rgba(40,30,70,.12)}
html.theme-clair .vj-grille.sudoku .vj-case.fixe{background:rgba(40,30,70,.09)}
html.theme-clair .vj-zone .vj-tuile,html.theme-clair .vj-ecoute,html.theme-clair .vj-rond{background:#fff;border-color:rgba(40,30,70,.12)}
html.theme-clair .vj-cle span,html.theme-clair .vj-matrice .m{background:rgba(40,30,70,.05)}
html.theme-clair .vj-billes .bille{fill:rgba(60,50,90,.55)}
html.theme-clair .vj-points{color:#3E3358}
html.theme-clair .vj-tour .mat{background:rgba(40,30,70,.2)}
.vj-repere{width:260px;height:34px;color:inherit;margin-top:8px}
.vj-situe{margin:2px 0 0;font-weight:600;font-size:.98rem;max-width:320px}
.vj-repere-txt{margin:2px 0 0;font-size:.84rem;opacity:.72;max-width:320px;line-height:1.4}

/* vivacite-sert-v1 : « À quoi ça sert » sur l'écran d'avant-partie */
.vj-sert{margin:6px 0 0;padding:8px 12px;border-radius:12px;border:1px solid var(--trait,rgba(255,255,255,.14));max-width:320px}
.vj-sert-tit{margin:0 0 2px;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;opacity:.65}
.vj-sert-txt{margin:0;font-size:.9rem;line-height:1.45;opacity:.88}
html.theme-clair .vj-sert{border-color:rgba(40,30,70,.14)}
.vj-zone:has(> .vj-intro){justify-content:flex-start;overflow-y:auto}
.vj-zone > .vj-intro{margin-block:auto}

/* vivacite-rejouer-1010 : l'écran de résultat (valeur, repère, courbe) peut être plus haut que l'écran du téléphone ;
   la zone défile et les boutons « Rejouer » / « Autres jeux » restent entiers en bas au lieu d'être poussés hors écran. */
.vj-zone:has(> .vj-resultat){justify-content:flex-start;overflow-y:auto;-webkit-overflow-scrolling:touch}
.vj-zone > .vj-resultat{margin-block:auto}
.vj-bas{flex-shrink:0}
.vj-courbe{max-width:100%;height:auto}
/* rapidite-1014 : Le signal s'allume dans une couleur différente à chaque essai */
.vj-rond.allume{background:var(--vj-couleur,#6FCF97);border-color:var(--vj-couleur,#6FCF97)}
