/* css/narnia.css — la salle d'arcade : 12 mini-jeux, thème « comme ana.sh » (2026-09-13).
   Réutilise directement les jetons de ana.css (--brand, --g50..900, --line, --line-2, --card, --card-in,
   --ok, --danger, --mono, --r, --r-in, --shadow). Deux familles d'ajouts propres à cette page :
   - --warn / --warn-200 : jaune/or (il n'existe pas dans ana.css), pour le « près » du wordle.
   - --screen-bg / --screen-fg : petits « écrans » sombres fixes (survol démineur/serpent, boutons simon,
     zone stroop, boîte réflexes) qui restent sombres quel que soit le thème du site — exactement comme les
     canevas (flappy bird, casse-briques) qui peignent déjà leurs propres couleurs fixes en JS. Ça évite de
     réécrire les couleurs à basse opacité codées en dur dans reaction.js/simon.js/stroop.js (pensées pour un
     fond sombre) : elles restent lisibles en clair comme en sombre sans toucher au JS. */
:root{
  --warn:#f79009;--warn-200:#fef0c7;--warn-ink:#93650b;
  --screen-bg:#15151b;--screen-fg:#f4f4f5;
}

/* ── page : colonne ana.sh, élargie pour la grille de jeux ── */
.page-wrap.narnia-page{max-width:1040px}
.page-title,.page-sub{max-width:640px}

/* ── carte d'index (liens vers les 12 jeux) ── */
.narnia-nav{margin-bottom:28px}
.narnia-nav .eb{margin-bottom:6px}
.narnia-nav p{margin-bottom:14px}
.narnia-links{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:2px 20px}
.narnia-links a{display:flex;align-items:center;gap:8px;padding:6px 0;color:var(--strong);font-size:14px;text-decoration:none}
.narnia-links a:hover{color:var(--brand)}
.narnia-links i{font-style:normal;color:var(--muted);width:1.1em;flex:none;text-align:center}

/* ── en-tête de chaque fiche de jeu ── */
.narnia-game{margin-bottom:24px;scroll-margin-top:20px}
.narnia-game-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.narnia-game-head h2{font-size:19px;font-weight:600;letter-spacing:-.01em;color:var(--fg)}

/* ── mise en page commune : jeu à gauche, « comment jouer » à droite ── */
.grid.g2{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;align-items:start}
@media(max-width:760px){.grid.g2{grid-template-columns:1fr}}

.game{display:flex;flex-direction:column;gap:4px;min-width:0}
.game>.eb{margin-bottom:8px}
.hint{font-size:13px;color:var(--muted);line-height:1.5}
.how-to{background:var(--g50);border-radius:var(--r-in);padding:16px}
.how-to .eb{margin-bottom:8px}
.how-to p{font-size:14px;color:var(--muted);line-height:1.6}

/* hud (score / bouton) commun à tous les jeux */
.hud{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 12px;
  padding:8px 12px;background:var(--g50);border-radius:8px;border:1px solid var(--line)}
.hud .pill-btn{padding:6px 12px;font-size:13px;flex:none}
.score{font-family:var(--mono);font-size:12.5px;color:var(--muted);white-space:nowrap}
.status-line{font-weight:600;font-size:13.5px;color:var(--brand);text-align:center;min-height:20px}

/* onglets de difficulté */
.diffs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.na-diff-btn{font-family:var(--mono);font-size:11px;letter-spacing:.06em;padding:6px 12px;border-radius:999px;
  border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer;transition:all .15s}
.na-diff-btn:hover{border-color:var(--line-2);color:var(--strong)}
.na-diff-btn.active{border-color:var(--brand);color:#fff;background:var(--brand)}

.game canvas{height:auto}

/* écran de fin superposé au plateau (démineur, signal perdu) : un « écran » fixe, sombre dans les deux thèmes */
.overlay{display:none;position:absolute;inset:-1px;border-radius:var(--r-in);background:rgba(16,20,30,.94);
  flex-direction:column;align-items:center;justify-content:center;z-index:5;padding:20px 14px;gap:2px}
.overlay.show{display:flex}
.overlay-icon{font-size:28px;margin-bottom:6px;color:var(--screen-fg);opacity:.9}
.overlay-title{font-weight:600;font-size:19px;color:var(--screen-fg);margin-bottom:2px}
.overlay-sub{font-size:13px;color:#c2c2cc;margin-bottom:4px}
.overlay-time{font-family:var(--mono);font-size:14px;letter-spacing:.08em;color:#9b8afb;margin-bottom:12px}
.overlay .pill-btn{margin-top:2px;background:#fff;color:#15151b;border-color:transparent}
.overlay .pill-btn:hover{background:#ececf5}

/* ── détecteur d'anomalies (démineur) ── */
.board-scroll{display:flex;align-items:center;justify-content:center;overflow-x:auto;margin-bottom:12px}
.board-wrap{position:relative;display:inline-block}
.mine-grid{display:grid;gap:2px;user-select:none}
.cell{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer;
  font-family:var(--mono);font-size:14px;font-weight:600;border:1px solid var(--line);background:var(--g50);
  transition:background .1s,border-color .1s}
.cell:hover:not(.revealed):not(.flagged){background:var(--g100);border-color:var(--line-2)}
.cell.revealed{background:var(--card-in);border-color:var(--line);cursor:default}
.cell.flagged{background:var(--brand-200);border-color:var(--brand)}
.cell.mine-hit{background:rgba(240,68,56,.18);border-color:var(--danger)}
.cell.mine-show{background:var(--g50);border-color:rgba(240,68,56,.25)}
.n1{color:#3b82f6}.n2{color:var(--ok)}.n3{color:var(--danger)}.n4{color:var(--brand)}
.n5{color:#9f1239}.n6{color:#0e7490}.n7{color:var(--fg)}.n8{color:var(--muted)}
.flag-sym{color:var(--brand);font-size:12px}.mine-sym{color:var(--danger);font-size:12px}

/* ── signal perdu (snake) ── */
.snake-wrap{position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:10px}
#snakeCanvas{background:var(--screen-bg);border-radius:var(--r-in)}
.dpad{display:none;flex-direction:column;align-items:center;gap:4px;margin-top:6px}
.dpad-row{display:flex;gap:4px}
.dpad-row button{width:36px;height:36px;padding:0;border-radius:8px;font-size:14px;
  background:var(--card);border:1px solid var(--line);color:var(--fg);cursor:pointer}
.dpad-row button:hover{border-color:var(--line-2)}

/* ── correspondances (memory) ── */
.mem-area{display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.mem-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%;max-width:300px;margin:0 auto}
.mem-card{aspect-ratio:1;perspective:600px;cursor:pointer}
.mem-card-inner{width:100%;height:100%;position:relative;transition:transform .35s;transform-style:preserve-3d}
.mem-card.flipped .mem-card-inner,.mem-card.matched .mem-card-inner{transform:rotateY(180deg)}
.mem-face,.mem-back{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  border-radius:8px;backface-visibility:hidden;font-size:20px}
.mem-back{background:var(--g100);border:1px solid var(--line);color:var(--muted);font-size:16px}
.mem-face{background:var(--card);border:1px solid var(--line)}
.mem-card.matched .mem-face{border-color:var(--brand);background:var(--brand-200)}

/* ── signal_typing.exe ── */
.typ-area{display:flex;flex-direction:column;gap:10px;width:100%}
.typ-display-wrap{display:flex;align-items:center;justify-content:center;padding:16px 12px;min-height:88px;
  background:var(--g50);border-radius:var(--r-in);border:1px solid var(--line)}
.typ-display{font-size:clamp(15px,1.4vw,18px);line-height:1.85;text-align:center;max-width:380px;
  word-break:break-word;color:var(--strong)}
.typ-ok{color:var(--ok)}
.typ-err{color:var(--danger);text-decoration:underline}
.typ-cur{color:#fff;background:var(--brand);border-radius:2px;padding:0 1px}
.typ-pending{color:var(--muted);opacity:.75}
.typ-endmsg{color:var(--muted);font-size:14px}
.typ-input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--card)}
.typ-input:focus-visible{outline:2px solid var(--brand);outline-offset:1px}

/* ── réflexes ── */
.reflex-wrap{margin-bottom:8px;border-radius:var(--r-in);overflow:hidden;background:var(--screen-bg)}
.reflex-box{display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;transition:all .18s;user-select:none;min-height:150px}
.reflex-box:active{transform:scale(.98)}
.reflex-main{font-family:var(--mono);font-size:40px;letter-spacing:.02em;color:var(--screen-fg);transition:all .18s;line-height:1}
.reflex-sub{font-size:13px;color:#a8a8b3;margin-top:8px;text-align:center;padding:0 16px}

/* ── séquence (simon) ── */
.simon-area{display:flex;flex-direction:column;gap:10px;margin-bottom:8px}
.simon-btns{display:grid;gap:8px;max-width:280px;margin:0 auto;width:100%;padding:12px;
  border-radius:var(--r-in);background:var(--screen-bg)}
.simon-btn{aspect-ratio:1;border:1px solid transparent;border-radius:10px;
  font-size:22px;cursor:pointer;transition:all .12s;display:flex;align-items:center;justify-content:center;width:100%}
.simon-btn:disabled{cursor:default}
.simon-status{color:var(--muted);font-size:13.5px;text-align:center}
#simonStartBtn{border-color:var(--brand);color:var(--brand);background:transparent}

/* ── fréquence.exe (click speed) ── */
.click-area{display:flex;flex-direction:column;gap:10px}
.click-main-btn{background:var(--g50);border:2px solid var(--line);border-radius:var(--r-in);
  font-family:var(--mono);font-size:15px;letter-spacing:.06em;color:var(--brand);cursor:pointer;
  transition:background .07s,transform .07s;user-select:none;min-height:130px;
  display:flex;align-items:center;justify-content:center;width:100%}
.click-main-btn:active{background:var(--brand-200);transform:scale(.97)}
.click-main-btn:disabled{cursor:default;opacity:.5}
.click-stats{display:flex;justify-content:space-between;font-family:var(--mono);font-size:13px;color:var(--muted)}
.click-bar-wrap{height:4px;background:var(--line);border-radius:4px;overflow:hidden}
.click-bar{height:100%;background:var(--brand);border-radius:4px;width:0%;transition:width .2s linear}

/* ── transmission codée (pendu) ── */
.hang-area{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.hang-lives{font-family:var(--mono);font-size:15px;color:var(--danger);letter-spacing:3px;text-align:center;min-height:20px}
.hang-word{display:flex;gap:5px;justify-content:center;flex-wrap:wrap}
.hang-slot{width:22px;height:30px;border-bottom:2px solid var(--brand);display:flex;align-items:center;
  justify-content:center;font-family:var(--mono);font-size:17px;color:var(--fg);flex-shrink:0}
.hang-slot.space{width:12px;border-bottom:none}
.hang-alpha{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;max-width:260px;margin:0 auto}
.hang-btn{width:26px;height:26px;padding:0;background:var(--g50);border:1px solid var(--line);
  border-radius:5px;font-family:var(--mono);font-size:12px;color:var(--muted);cursor:pointer;
  transition:all .12s;display:flex;align-items:center;justify-content:center}
.hang-btn:hover:not(:disabled){border-color:var(--line-2);color:var(--strong)}
.hang-btn:disabled{opacity:.35;cursor:default}
.hang-btn.wrong{border-color:var(--danger);color:var(--danger);background:rgba(240,68,56,.08)}
.hang-btn.hit{border-color:var(--ok);color:var(--ok);background:rgba(18,183,106,.1)}

/* ── vol instable (flappy bird) / évasion (casse-briques) : le canevas peint ses propres couleurs fixes ── */
.flap-wrap,.bko-wrap{display:flex;align-items:center;justify-content:center}
#flapCanvas,#bkoCanvas{background:var(--screen-bg);border-radius:var(--r-in)}

/* ── écho (wordle) ── */
.wrd-area{display:flex;flex-direction:column;gap:10px}
.wrd-grid{display:flex;flex-direction:column;gap:4px;height:210px;flex-shrink:0}
.wrd-row{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;flex:1;min-height:0}
.wrd-cell{display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;
  font-family:var(--mono);font-weight:600;font-size:16px;line-height:1;background:var(--g50);overflow:hidden;
  transition:background .2s,border-color .2s;color:var(--strong)}
.wrd-cell.hit{background:rgba(18,183,106,.16);border-color:var(--ok);color:var(--ok)}
.wrd-cell.near{background:var(--warn-200);border-color:var(--warn);color:var(--warn-ink)}
.wrd-cell.miss{background:var(--g100);border-color:var(--line);color:var(--muted);opacity:.75}
.wrd-cell.cur{border-color:var(--brand);color:var(--brand)}
.wrd-kb{display:flex;flex-direction:column;gap:4px;align-items:center}
.wrd-kb-row{display:flex;gap:4px}
.wrd-kb-btn{min-width:24px;height:28px;padding:0 4px;background:var(--g50);border:1px solid var(--line);
  border-radius:5px;font-family:var(--mono);font-size:11px;color:var(--muted);cursor:pointer;
  transition:all .12s;display:flex;align-items:center;justify-content:center}
.wrd-kb-btn:hover{border-color:var(--line-2);color:var(--strong)}
.wrd-kb-btn.hit{background:rgba(18,183,106,.16);border-color:var(--ok);color:var(--ok)}
.wrd-kb-btn.near{background:var(--warn-200);border-color:var(--warn);color:var(--warn-ink)}
.wrd-kb-btn.miss{background:var(--g100);border-color:var(--line);color:var(--muted);opacity:.55}
.wrd-kb-btn.wide{min-width:36px;font-size:10px}

/* ── interférence (stroop) ── */
.stroop-area{display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center}
.stroop-word{font-family:var(--mono);font-size:44px;letter-spacing:.05em;line-height:1;min-height:88px;width:100%;
  display:flex;align-items:center;justify-content:center;border-radius:var(--r-in);background:var(--screen-bg)}
.stroop-q{font-size:13px;color:var(--muted);margin-top:-2px}
.stroop-choices{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%;max-width:280px}
.stroop-btn{padding:10px 6px;background:var(--g50);border:1px solid var(--line);border-radius:8px;
  font-family:var(--mono);font-size:14px;cursor:pointer;transition:all .15s}
.stroop-btn:hover:not(:disabled){border-color:var(--line-2);background:var(--g100)}
.stroop-btn:disabled{cursor:default}
.stroop-btn.correct{background:rgba(18,183,106,.16);border-color:var(--ok)!important}
.stroop-btn.wrong{background:rgba(240,68,56,.14);border-color:var(--danger)!important}
.stroop-timer-bar{width:100%;max-width:280px;height:3px;background:var(--line);border-radius:3px;overflow:hidden}
.stroop-bar{height:100%;background:var(--brand);transition:width .1s linear}

/* ── responsive ── */
@media(max-width:640px){
  .narnia-links{grid-template-columns:1fr 1fr}
  .cell{width:24px;height:24px;font-size:12px}
  .mine-grid{gap:1px}
  .dpad{display:flex}
  .mem-grid{max-width:240px;gap:6px}
  .wrd-grid{height:auto}
  .typ-display{font-size:14px}
  .stroop-word{font-size:36px}
}

/* la carte « comment jouer » ne s'étire pas à la hauteur du plateau */
.narnia-game .grid.g2{align-items:start}
