/* ===== Sherlock Volts : jeu.css (www/jeux/sherlock-volts/jeu.css, chargé par jouer.php APRÈS jeux.css) =====
   Couleur du jeu : violet (choix de Guillaume, 23/10/2026). On redéfinit les variables du socle
   et les quelques couleurs écrites en dur dans jeux.css (lueur du titre, carte).
   Plateau : classes sv-… ; --c = taille d'une case du circuit, --t = largeur d'un appareil, calculées par ui.js. */
.jx{--bg:#100b1a;--panel:#191226;--line:#2f2445;--fg:#efe8fb;--muted:#a395bd;
  --amber:#b46cff;--amber-soft:#b46cff26;--danger:#ff5a47;--vert:#4ade80;--jaune:#ffd166;
  --ph:#d9914f;--n:#4aa3ff;--pe:#a3d94a}
.jx-titre{text-shadow:0 0 16px #b46cff77}
.jx-btn.jx-go{color:#1b0630}
.jx-statut{min-height:4.1em;font-size:15px;font-weight:600}/* 3 lignes réservées : un message long ne rétrécit pas le plateau */
.jx-carte{background:#100b1af2;box-shadow:0 0 40px #b46cff33}
.jx-carte p{max-width:34ch}
.jx-gagne{z-index:5}
/* boutons du socle : sans la marge ni le filtre inversé de global.css (demande au socle du 22/10) */
.jx .jx-btn{margin:0;min-width:0;min-height:44px}
.jx .jx-btn:hover{filter:none}

/* --- plateau --- */
/* global.css du site donne à TOUS les boutons margin:4px, min-width/min-height 35px, padding 8px, fond blanc et un
   filtre inversé au survol (piège vu sur Ça disjoncte !, 22/10) : on remet à zéro */
.sv-zone button{margin:0;min-width:0;min-height:0;background-size:auto;padding:0;font:inherit;color:inherit}
.sv-zone button:hover{filter:none}
.sv-zone{--c:68px;--t:84px;width:100%;max-height:100%;display:flex;flex-direction:column;align-items:center;gap:10px;
  overflow:auto;touch-action:pan-y;scrollbar-width:none}
.sv-zone::-webkit-scrollbar{display:none}
.sv-plateau{position:relative;flex:none}
.sv-dessin,.sv-svg{position:absolute;inset:0;width:100%;height:100%}
.sv-svg{overflow:visible}
.sv-svg *{vector-effect:none}
.sv-fil{fill:none;stroke:#8c7fa6;stroke-width:4;stroke-linejoin:round;stroke-linecap:round}
.sv-fil.sv-ph{stroke:var(--ph)} .sv-fil.sv-n{stroke:var(--n)} .sv-fil.sv-pe{stroke:var(--pe);stroke-dasharray:14 7}
.sv-gaine{fill:#2a2038;stroke:#5d4d78;stroke-width:3}
.sv-cadre{fill:none;stroke:#4a3b63;stroke-width:3;stroke-dasharray:10 8}
.sv-tri{fill:none;stroke:#8c7fa6;stroke-width:4;stroke-linecap:round}
.sv-borne{fill:var(--bg);stroke:#8c7fa6;stroke-width:4}
.sv-sonde{fill:none;stroke:#b46cff55;stroke-width:3;stroke-dasharray:6 7;stroke-linecap:round}
.sv-sonde.sv-active{stroke:var(--amber);stroke-width:4;stroke-dasharray:none}
.sv-comp{fill:none;stroke:var(--fg);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.sv-tuile{fill:var(--panel);stroke:var(--line);stroke-width:3}
.sv-tuile-alim{stroke:var(--amber);stroke-dasharray:9 6}
.sv-off .sv-tuile-alim{stroke:var(--danger)}
.sv-p1{stroke-width:5} .sv-p2{stroke-width:10}
.sv-plein{fill:var(--fg);stroke:none}
.sv-coupe{stroke:var(--muted);stroke-dasharray:3 4}
.sv-pile.sv-off>g,.sv-pile.sv-off>path{opacity:.25}
.sv-txt{fill:var(--fg);stroke:none;font:700 22px 'Source Sans Pro',tahoma,sans-serif;text-anchor:middle}
.sv-sub{fill:var(--muted);stroke:none;font:700 14px 'Source Sans Pro',tahoma,sans-serif;text-anchor:middle}
.sv-lab{fill:var(--muted);stroke:var(--panel);stroke-width:6;paint-order:stroke;font:700 var(--lab,15px) 'Source Sans Pro',tahoma,sans-serif;text-anchor:middle}
/* réparé (victoire) : la lampe s'allume, le moteur tourne, la résistance chauffe */
.sv-repare .sv-bulbe{fill:var(--jaune);stroke:var(--jaune);filter:drop-shadow(0 0 8px #ffd166)}
.sv-repare .sv-res{fill:#ff8a3d;stroke:#ff8a3d;filter:drop-shadow(0 0 6px #ff8a3d)}
.sv-repare .sv-rotor{stroke:var(--vert);stroke-dasharray:16 6;transform-box:fill-box;transform-origin:center;animation:svTourne 1.2s linear infinite}

/* coupures (disjoncteur, pile, fiche) : toute la case se touche */
.sv-alim{position:absolute;width:calc(100% / var(--W));height:calc(100% / var(--H));background:none;border:0;border-radius:14px;cursor:pointer}
.sv-alim:focus-visible{outline:2px solid var(--amber);outline-offset:-2px}

/* points de mesure : 44 px au moins (doigt) */
.sv-pt{position:absolute;width:max(44px,calc(var(--c)*.64));height:max(44px,calc(var(--c)*.64));transform:translate(-50%,-50%);
  border-radius:50%;border:2px dashed var(--amber);background:#1d1430e6;color:var(--amber);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:max(14px,calc(var(--c)*.2));line-height:1;
  box-shadow:0 0 10px #b46cff44;transition:transform .12s,box-shadow .12s}
.sv-pt.sv-t-fil,.sv-pt.sv-t-cable{border-style:solid;border-width:4px;border-color:#b46cffaa}/* un anneau : on referme la pince autour */
.sv-pt.sv-t-serie{border-radius:12px}/* un carré : on ouvre le circuit */
.sv-pt.sv-vise{transform:translate(-50%,-50%) scale(1.18);box-shadow:0 0 22px var(--amber);background:#2b1b47}
.sv-pt.sv-pris{border-style:solid;color:var(--fg)}
.sv-pt[data-etat="ok"]{border-color:var(--amber)}
.sv-pt[data-etat="mal"]{border-color:#ffb020;color:#ffb020}
.sv-pt[data-etat="ko"],.sv-pt[data-etat="danger"]{border-color:var(--danger);color:var(--danger)}
.sv-pt .sv-ico{width:62%;height:62%}

/* le verdict : on accuse le coupable */
.sv-verdict{flex:none;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center;max-width:100%;
  padding:6px 8px;border-radius:12px;border:1px solid var(--line);transition:box-shadow .3s,border-color .3s}
.sv-q{color:var(--muted);font-size:14px;font-weight:700}
.sv-sus{min-height:44px!important;padding:6px 12px!important;border-radius:10px;border:1px solid var(--line);background:var(--panel);
  color:var(--fg);font-weight:700;font-size:15px;cursor:pointer}
.sv-sus:hover{border-color:var(--muted)}
.sv-verdict.sv-pret{border-color:var(--amber);box-shadow:0 0 16px #b46cff66;animation:svPret 1.6s ease-in-out infinite}
.sv-pret .sv-sus{border-color:#6b4d99}

/* le bac des appareils */
.sv-bac{flex:none;display:flex;gap:8px;justify-content:center;flex-wrap:wrap;max-width:100%}
.sv-app{width:var(--t);flex:none;display:flex;flex-direction:column;border-radius:12px;border:1px solid var(--line);background:var(--panel);
  overflow:hidden;touch-action:none;cursor:grab;transition:transform .12s,box-shadow .12s,opacity .12s}
.sv-lcd{height:24px;margin:5px 5px 0;border-radius:5px;background:#9fb59a;color:#122012;display:flex;align-items:center;justify-content:center;
  font:700 15px/1 'Source Sans Pro',tahoma,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap;overflow:hidden}
.sv-lcd[data-etat="mal"]{background:#d9b25a}
.sv-lcd[data-etat="ko"],.sv-lcd[data-etat="danger"]{background:var(--danger);color:#fff}
.sv-lcd[data-etat="ok"]{box-shadow:inset 0 0 0 2px #fff6}
.sv-app-vat .sv-lcd[data-etat="ok"]{background:var(--vert)}
.sv-corps{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 2px 2px!important;background:none;border:0;cursor:inherit}
.sv-ico{fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;display:block}
.sv-corps .sv-ico{width:30px;height:30px;color:var(--fg)}
.sv-nom{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
/* le sélecteur : on le touche pour le tourner (une tuile qui tourne) */
.sv-cadran{min-height:44px!important;display:flex;align-items:center;justify-content:center;gap:6px;border:0;border-top:1px solid var(--line);
  background:#221836;cursor:pointer;color:var(--amber);font-weight:700;font-size:16px}
.sv-bouton{position:relative;width:24px;height:24px;border-radius:50%;background:#3a2b57;border:2px solid var(--amber);transition:transform .25s}
.sv-bouton::after{content:'';position:absolute;left:50%;top:1px;width:3px;height:9px;margin-left:-1.5px;border-radius:2px;background:var(--fg)}
.sv-fixe{min-height:44px;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--line);color:var(--muted);font-weight:700;font-size:14px}
.sv-app.sv-sel{outline:3px solid var(--amber);outline-offset:2px;transform:translateY(-3px)}
.sv-app.sv-pose{border-color:#6b4d99;box-shadow:0 0 12px #b46cff55}
.sv-app.sv-parti{opacity:.3}
.sv-app.sv-secoue{animation:svSecoue .35s}
.sv-fantome{position:fixed;left:0;top:0;z-index:6;pointer-events:none;border-color:var(--amber);box-shadow:0 8px 24px #000a,0 0 16px #b46cff88;opacity:.95}
/* geste dangereux : l'écran rougit */
.sv-grave .sv-plateau{animation:svSecoue .35s}
.sv-grave .sv-plateau::after{content:'';position:absolute;inset:-6px;border-radius:16px;box-shadow:0 0 0 3px var(--danger),0 0 40px #ff5a47aa;pointer-events:none;animation:svFlash 1.2s ease-out forwards}
@keyframes svSecoue{0%,100%{transform:none}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
@keyframes svFlash{from{opacity:1}to{opacity:0}}
@keyframes svPret{0%,100%{box-shadow:0 0 6px #b46cff44}50%{box-shadow:0 0 20px #b46cffcc}}
@keyframes svTourne{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.sv-grave .sv-plateau,.sv-app.sv-secoue,.sv-verdict.sv-pret,.sv-repare .sv-rotor{animation:none}}
