.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 42%,transparent 30%,rgba(0,0,0,.55) 75%,#000 100%)}
.scene{position:relative;z-index:2;min-height:100%;display:grid;grid-template-rows:auto 1fr auto;padding:max(18px,env(safe-area-inset-top)) 22px max(18px,env(safe-area-inset-bottom))}
.haut,.bas{display:flex;justify-content:space-between;align-items:center;gap:12px}
.canal{display:inline-flex;align-items:center;gap:8px}
.led{width:7px;height:7px;border-radius:50%;background:var(--vert);box-shadow:0 0 10px var(--vert);animation:clignote 2.4s ease-in-out infinite}
@keyframes clignote{50%{opacity:.35}}
.veille{align-self:center;justify-self:center;display:grid;justify-items:center;gap:26px;text-align:center}
.veille .grand{padding:18px 34px;font-size:17px}
.point-bleu{width:9px;height:9px;border-radius:50%;background:var(--bleu);box-shadow:0 0 14px var(--bleu)}
.aide{margin:0;color:var(--gris2);font-size:13px}
.coeur{align-self:center;justify-self:center;width:min(980px,100%);display:grid;justify-items:center;gap:18px;padding:8px 0}
.coeur #noyau{width:min(380px,64vw,48vh)}
.terminal{margin:0;min-height:1.6em;font:500 12.5px/1.75 var(--mono);color:#b9c0cc;white-space:pre;text-align:left;letter-spacing:.02em;max-width:100%;overflow:hidden}
.terminal .ok{color:var(--vert)}.terminal .b{color:var(--bleu-vif)}
.terminal .curseur{display:inline-block;width:.6em;height:1.1em;background:#fff;vertical-align:-2px;animation:clignote 1s steps(1) infinite}
.sous-titre{margin:0;min-height:3.2em;max-width:860px;text-align:center;font:500 clamp(18px,2.3vw,26px)/1.45 var(--sans);letter-spacing:-.005em;color:rgba(245,247,250,.22);text-wrap:balance}
.sous-titre .dit{color:#fff;transition:color .18s}
.sous-titre .cle{color:var(--bleu-vif)}
.acces{width:min(460px,100%);padding:18px 18px 12px;display:grid;gap:12px;animation:monte .8s cubic-bezier(.2,.8,.2,1)}
@keyframes monte{from{opacity:0;transform:translateY(14px) scale(.98)}}
.champ{display:flex;gap:10px}
.champ input{flex:1;min-width:0;background:rgba(0,0,0,.55);border:1px solid var(--trait2);border-radius:12px;padding:14px 16px;font:600 18px var(--mono);letter-spacing:.18em;outline:none;transition:border-color .2s,box-shadow .2s}
.champ input:focus{border-color:var(--bleu);box-shadow:0 0 0 4px rgba(59,140,255,.18)}
.champ .bouton{width:52px;padding:0;font-size:20px;border-radius:12px}
.etat{margin:0;min-height:1.3em;font:500 12px var(--mono);letter-spacing:.06em;color:var(--gris)}
.etat.refus{color:var(--rouge)}.etat.ok{color:var(--vert)}
.acces.secoue{animation:secoue .45s}
@keyframes secoue{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.scene.sortie{transition:opacity 1.1s ease,transform 1.4s cubic-bezier(.6,0,.2,1),filter 1.2s;opacity:0;transform:scale(1.18);filter:blur(6px)}
@media (max-width:600px){.terminal{font-size:10.5px}.haut .surtitre:first-child{display:none}}
.acces-titre{margin:0;font-size:13px;font-weight:700;letter-spacing:.32em;color:#fff}
.acces-sous{margin:-6px 0 4px;font-size:13px;color:var(--gris)}
.sous-titre{display:none!important}   /* sous-titres retirés : la voix suffit */
.sous-titre{display:none!important}   /* sous-titres retirés : la voix suffit */

.nda{display:flex;gap:10px;align-items:flex-start;text-align:left;font-size:11.5px;line-height:1.5;color:var(--gris);cursor:pointer}
.nda input{flex:none;width:16px;height:16px;margin-top:2px;accent-color:#fff}
.nda b{color:#fff;font-weight:600}
.en{color:var(--gris2);font-weight:400}.nda .en{display:inline-block;margin-top:4px}
