/* Habillage grimdark 40K — chargé après terminal.css, ne change ni les plans ni leurs cotes.
   Astra Militarum : cogitateur impérial (fer, laiton, cire rouge, phosphore vert).
   Orks : ferraille, rouille, bandes de danger, rouge sang.
   Animations visibles sur téléphone, en transform/opacity uniquement (fluides sur mobile). */

:root{
 --bg:#0d0b09;--panel:#1a1612;--line:#4a3d2a;--ink:#ece2c8;--muted:#b9ab8c;
 --gold:#d4a94a;--gold-dim:#8a6d33;--brass:#a8823a;--bone:#e8dcc0;--blood:#8e1b14;--red:#c4271b;
 --phosphor:#7dff9a;--phosphor-rgb:125,255,154;
 --astra:#8fe0a6;--orks:#e7a23a;
 --accent:#d4a94a;--accent-rgb:212,169,74;
 --imperial:'Cinzel','Times New Roman',serif;--gothic:'Pirata One','Cinzel',serif;
 --display:'Cinzel','Barlow Condensed',serif;
 --noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
 --skull:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 60'%3E%3Cg fill='%23d4a94a'%3E%3Cpath d='M50 22 6 8l4 6-8 2 10 5-8 4 12 3-8 5h14l-6 6 16-2-2 6 16-8z'/%3E%3Cpath d='m70 22 44-14-4 6 8 2-10 5 8 4-12 3 8 5H98l6 6-16-2 2 6-16-8z'/%3E%3Cpath d='M60 10c-11 0-16 8-16 16 0 6 3 9 6 11v7h5v3h3v-3h4v3h3v-3h5v-7c3-2 6-5 6-11 0-8-5-16-16-16z'/%3E%3C/g%3E%3Cg fill='%23120d08'%3E%3Cellipse cx='54' cy='27' rx='4.5' ry='5'/%3E%3Cellipse cx='66' cy='27' rx='4.5' ry='5'/%3E%3Cpath d='m60 32-2.5 5h5z'/%3E%3C/g%3E%3C/svg%3E");
 --orkglyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath fill='%23c4271b' d='m8 10 12 8L32 6l12 12 12-8-4 20c4 6 2 18-6 22l-2 6H20l-2-6c-8-4-10-16-6-22z'/%3E%3Cg fill='%23120d08'%3E%3Cpath d='m18 30 10 4-2 6-8-2zm28 0-10 4 2 6 8-2zM22 46h20l-2 6-4-4-4 4-4-4-4 4z'/%3E%3C/g%3E%3C/svg%3E");
}
body[data-faction=orks]{
 --accent:#e7a23a;--accent-rgb:231,162,58;--gold:#e7a23a;--gold-dim:#8f5a1c;--line:#5a3424;--panel:#1c130f;
 --phosphor:#ffb13b;--phosphor-rgb:255,177,59;--display:'Pirata One','Cinzel',serif;
}

/* ---------- fond : fer sombre, grain, vignette ---------- */
body{background:var(--bg);color:var(--ink)}
body:before{z-index:-1;background:radial-gradient(ellipse at 50% -10%,rgba(var(--accent-rgb),.13),transparent 60%),radial-gradient(ellipse at 50% 120%,rgba(142,27,20,.22),transparent 55%),var(--noise);opacity:1}
body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:70;box-shadow:inset 0 0 120px 30px #000c;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.18) 3px 3px)}
body[data-faction=orks]:before{background:radial-gradient(ellipse at 50% -10%,rgba(196,39,27,.22),transparent 60%),radial-gradient(ellipse at 50% 120%,rgba(231,162,58,.12),transparent 55%),var(--noise)}

/* ---------- typographie ---------- */
h1,h2,h3,.wordmark,.terminal-brand strong,.section-heading h2,.mission-panel h3,.chapter h3,.dialog-top h2,.sealed-order h2,.login-panel h2,.map-detail h3{font-family:var(--imperial);font-weight:800;letter-spacing:1px}
.page-heading h1{font-family:var(--gothic);font-weight:400;font-size:30px;letter-spacing:1px;color:var(--gold);text-shadow:0 0 18px rgba(var(--accent-rgb),.35)}
.eyebrow,.transmission,.tag,.mission-label,.fact-strip small,.coordinate{font-family:var(--mono)}
.eyebrow:before{content:"+++ ";color:var(--red)}
.panel>p,.mission-panel>p{color:var(--muted)}
.story-card blockquote{font-family:var(--imperial);font-weight:600;font-style:normal;font-size:18px;line-height:1.6;color:var(--bone)}

/* ---------- barre du haut : plaque de fer, liseré laiton, crâne ailé ---------- */
.terminal-top{background:linear-gradient(180deg,#2a241c,#15110d),var(--noise);border-bottom:2px solid var(--brass);box-shadow:0 2px 0 #000,0 8px 24px #000a}
.terminal-top:after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:4px;background:repeating-linear-gradient(90deg,var(--gold-dim) 0 2px,transparent 2px 14px);opacity:.6}
.terminal-brand strong{color:var(--gold);text-shadow:0 0 10px rgba(var(--accent-rgb),.4);letter-spacing:3px}
.terminal-brand small{color:var(--muted)}
.sigil{border:0!important;background:var(--skull) center/contain no-repeat!important;width:64px!important;height:40px!important;clip-path:none!important;filter:drop-shadow(0 0 6px rgba(var(--accent-rgb),.55));animation:sigil-glow 3.2s ease-in-out infinite}
.sigil .ui-icon,.sigil{color:transparent;font-size:0}.sigil .ui-icon{display:none}
body[data-faction=orks] .sigil{background-image:var(--orkglyph)!important;width:44px!important;height:44px!important;animation:ork-jolt 2.6s steps(1) infinite}
.audio-launch,.icon-btn{background:#1d1813;border-color:var(--gold-dim);color:var(--gold)}
.connection{color:var(--phosphor)}.connection:before{background:var(--phosphor);box-shadow:0 0 10px var(--phosphor)}

/* ---------- navigation : fer, bannière rouge active ---------- */
.sidebar{background:linear-gradient(180deg,#1b1611,#100d0a),var(--noise);border-color:var(--gold-dim)}
.nav-link{color:var(--muted)}
.nav-link.active{color:var(--bone);background:linear-gradient(180deg,rgba(142,27,20,.55),rgba(142,27,20,.15));border-color:var(--red);box-shadow:inset 0 0 18px rgba(196,39,27,.35),0 0 14px rgba(196,39,27,.25);animation:banner-pulse 3s ease-in-out infinite}
.nav-link.active .ui-icon{color:var(--gold)}
.nav-coordinate{color:var(--gold-dim)}
@media(max-width:850px){.sidebar{background:#100d0af7;border-top:2px solid var(--brass)}}

/* ---------- panneaux : plaques rivetées ---------- */
.panel,.chapter,.fact-strip,.notice,.map-detail,dialog,.narration-dock{background:linear-gradient(160deg,#241e17,#14100c),var(--noise);border:1px solid var(--gold-dim);box-shadow:inset 0 1px 0 #ffffff10,inset 0 0 30px #000a,0 6px 20px #0008}
.panel{clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,14px 100%,0 calc(100% - 14px))}
.panel:before,.panel:after{width:7px;height:7px;border:0;border-radius:50%;opacity:.9;background:radial-gradient(circle at 35% 35%,#e9cf8a,#6d5426 70%);box-shadow:0 0 0 1px #000}
.panel:before{left:8px;top:8px}.panel:after{right:8px;bottom:8px}
.notice{border-left:3px solid var(--red)}
.section-heading h2{color:var(--gold)}
.tag{color:var(--gold);border-color:var(--gold-dim);background:#120e0a}
.chapter.current{background:linear-gradient(160deg,#3a2a17,#1a130c);border-color:var(--gold);box-shadow:0 0 20px rgba(var(--accent-rgb),.18),inset 0 0 30px #000a}
.chapter-index{font-family:var(--gothic);font-weight:400;color:var(--gold);text-shadow:0 0 12px rgba(var(--accent-rgb),.5)}
.chapter.locked{opacity:.75;filter:saturate(.4)}
.fact-strip strong{font-family:var(--imperial);font-weight:700;color:var(--bone)}
.fact-strip>div,.fact-strip>div:first-child{border-color:var(--gold-dim)}
.fact-strip{grid-template-columns:1.4fr 1fr}   /* 2 blocs : mission + force engagée */
@media(max-width:590px){.fact-strip{grid-template-columns:1fr}.fact-strip>div:first-child{grid-column:auto}}
.score-pair strong,.total strong,.round strong,.campaign-scores .panel strong{font-family:var(--imperial);font-weight:800;text-shadow:0 0 18px currentColor}
.objective-link{background:#120e0a;border-color:var(--gold-dim);color:var(--gold);font-family:var(--gothic)}
.objective-link:hover{background:#2a1f12;border-color:var(--gold)}
.mission-label{color:var(--red);border-color:var(--blood);background:#1a0c09}

/* ---------- boutons : laiton gravé / fer ---------- */
.btn{border-radius:0;font-family:var(--imperial);font-weight:700;letter-spacing:1.5px;background:linear-gradient(180deg,#2b241b,#18130e);border:1px solid var(--gold-dim);color:var(--bone);box-shadow:inset 0 1px 0 #ffffff14,0 3px 0 #000}
.btn.primary{background:linear-gradient(180deg,#e7c66e,#b48a35 55%,#8a6526);color:#1a1108;border:1px solid #f3dc9a;text-shadow:0 1px 0 #f6e2a855;box-shadow:inset 0 1px 0 #fff6,0 3px 0 #4a3412,0 0 18px rgba(212,169,74,.25)}
.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,#f3d688,#c49a42 55%,#94702c);box-shadow:inset 0 1px 0 #fff6,0 3px 0 #4a3412,0 0 26px rgba(212,169,74,.45)}
.btn.ghost{background:#16110d;border-color:var(--gold-dim);color:var(--gold)}
.btn.ghost:hover:not(:disabled),.btn:hover:not(:disabled){border-color:var(--gold);background:#2a2016}
.btn.danger{background:linear-gradient(180deg,#9b2419,#5e130d);border-color:#c4271b;color:var(--bone)}
body[data-faction=orks] .btn.primary{background:repeating-linear-gradient(-45deg,#e5b80b 0 12px,#151008 12px 24px);color:#fff;text-shadow:0 0 4px #000,0 1px 0 #000,1px 0 0 #000,-1px 0 0 #000;border:2px solid #e5b80b;animation:hazard-slide 1.6s linear infinite;background-size:34px 34px}
body[data-faction=orks] .btn.primary:hover:not(:disabled){filter:brightness(1.15)}
.field input,.field select,.field textarea{background:#0e0b08;border-color:var(--gold-dim);color:var(--bone);border-radius:0}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(var(--accent-rgb),.25)}

/* ---------- héros : écran de cogitateur ---------- */
.terminal-hero{background:radial-gradient(ellipse at 70% 55%,rgba(var(--phosphor-rgb),.10),transparent 60%),linear-gradient(160deg,#1c1812,#0b0907),var(--noise);border:2px solid var(--brass);box-shadow:inset 0 0 60px #000,inset 0 0 0 1px #000,0 0 30px rgba(var(--accent-rgb),.12)}
.terminal-hero:before{background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.35) 3px 3px);opacity:1;animation:crt-flicker 4s steps(1) infinite}
.terminal-hero:after{height:3px;background:linear-gradient(90deg,var(--red),var(--gold) 50%,var(--red));opacity:.9}
.crt-roll{position:absolute;left:0;right:0;top:0;height:28%;pointer-events:none;z-index:4;background:linear-gradient(180deg,transparent,rgba(var(--phosphor-rgb),.10) 45%,rgba(var(--phosphor-rgb),.18) 50%,transparent);animation:crt-roll 5.5s linear infinite}
.transmission{display:inline-block;color:var(--phosphor);border-left:3px solid var(--red);text-shadow:0 0 8px rgba(var(--phosphor-rgb),.8);font-size:10px;letter-spacing:1px;white-space:nowrap;max-width:100%}
.transmission>span{display:inline-block;overflow:hidden;vertical-align:bottom;width:calc(var(--n)*(1ch + 1px) + 2px);animation:typing 2.6s steps(40,end) .3s both}
.transmission:after{content:"█";color:var(--phosphor);margin-left:2px;animation:blink 1s steps(1) infinite}
.terminal-hero h2{font-family:var(--gothic);font-weight:400;color:var(--bone);text-shadow:0 0 2px #fff6,0 0 22px rgba(var(--accent-rgb),.45),0 4px 0 #000;position:relative;animation:title-burn 5s ease-in-out infinite}
.terminal-hero h2 span{font-family:var(--imperial);font-weight:800;color:var(--gold);letter-spacing:6px;text-shadow:0 0 16px rgba(var(--accent-rgb),.7),0 3px 0 #000}
.terminal-hero h2:before{content:attr(data-text);position:absolute;left:0;top:0;color:var(--red);opacity:0;pointer-events:none;mix-blend-mode:screen;animation:glitch 6s steps(1) infinite}
.terminal-hero .hero-copy>p{color:var(--muted)}
.terminal-hero .hero-copy strong{color:var(--bone)}
.terminal-hero .hero-art img{filter:sepia(1) hue-rotate(60deg) saturate(1.35) brightness(.62) contrast(1.2) drop-shadow(0 0 12px rgba(var(--phosphor-rgb),.4));opacity:.95}
.terminal-hero .hero-art{overflow:visible}
.terminal-hero .hero-art img{position:relative!important;width:100%!important;max-width:640px;transform:none;animation:holo-bob 7s ease-in-out infinite!important}
body[data-faction=orks] .terminal-hero .hero-art img{filter:sepia(1) hue-rotate(-20deg) saturate(2.4) brightness(.85) contrast(1.2) drop-shadow(0 0 14px rgba(231,120,40,.5))}
.terminal-hero .radar{border-color:rgba(var(--phosphor-rgb),.35);background:repeating-radial-gradient(circle,transparent 0 40px,rgba(var(--phosphor-rgb),.18) 41px 42px,transparent 43px 80px)}
.radar:before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(var(--phosphor-rgb),.45),transparent 22%);animation:orbit 4s linear infinite}
.scan-line{height:2px;opacity:.9;background:linear-gradient(90deg,transparent,var(--phosphor),transparent);box-shadow:0 0 18px 4px rgba(var(--phosphor-rgb),.35)}
.target-reticle{border-color:var(--red);box-shadow:0 0 0 8px rgba(196,39,27,.12),0 0 18px rgba(196,39,27,.5)}
.target-reticle:before,.target-reticle:after{background:var(--red)}
.holo-corner{border-color:var(--gold);opacity:.9}
.coordinate{color:var(--phosphor);text-shadow:0 0 6px rgba(var(--phosphor-rgb),.6)}

/* braises : bien visibles, qui montent sur toute la hauteur */
.particles{z-index:6}
.particles i{width:calc(var(--s,1)*2px + 2px);height:calc(var(--s,1)*2px + 2px);background:#ffb347;box-shadow:0 0 6px 2px #ff6a1a,0 0 14px 4px #ff3d0066;border-radius:50%;animation:ember calc(6s + var(--d)*.6s) linear infinite;animation-delay:calc(var(--d)*-.9s)}
body[data-faction=astra] .particles i:nth-child(3n){background:#ffe9a8;box-shadow:0 0 6px 2px #d4a94a}

/* sceau de pureté : cire rouge + parchemin, oscille */
.purity-seal{position:absolute;right:14px;top:-4px;width:46px;height:118px;z-index:7;pointer-events:none;transform-origin:50% 0;animation:seal-sway 4.5s ease-in-out infinite}
.purity-seal:before{content:"";position:absolute;left:9px;top:30px;width:28px;height:88px;background:linear-gradient(90deg,#cbb98d,#efe2bf 40%,#c9b486),repeating-linear-gradient(0deg,transparent 0 9px,#6b553055 9px 10px);clip-path:polygon(0 0,100% 0,100% 100%,50% 88%,0 100%);box-shadow:0 4px 8px #0008}
.purity-seal:after{content:"";position:absolute;left:0;top:0;width:46px;height:46px;border-radius:50%;background:radial-gradient(circle at 38% 35%,#d9443a,#8e1b14 55%,#4d0b07);box-shadow:0 3px 6px #000a,inset 0 0 0 3px #a3271d,inset 0 0 0 5px #6a120c}
.purity-seal b{position:absolute;left:0;top:14px;width:46px;z-index:1;text-align:center;font:700 9px var(--imperial);color:#f2c9a0;letter-spacing:.5px}
body[data-faction=orks] .purity-seal:before{background:repeating-linear-gradient(-45deg,#e5b80b 0 7px,#151008 7px 14px);clip-path:polygon(10% 0,100% 0,85% 100%,0 92%)}
body[data-faction=orks] .purity-seal:after{background:var(--orkglyph) center/80% no-repeat,radial-gradient(circle,#3a2a1a,#1a120b);box-shadow:0 3px 6px #000a,inset 0 0 0 3px #6b3a1f}
body[data-faction=orks] .purity-seal b{display:none}

/* ---------- ordres scellés : parchemin et cire ---------- */
.sealed-order{background:linear-gradient(170deg,#2e2418,#17110b),var(--noise);border:2px solid var(--brass);box-shadow:inset 0 0 50px #000,0 10px 30px #000a}
.order-seal{background:radial-gradient(circle at 38% 35%,#d9443a,#8e1b14 55%,#4d0b07)!important;border:0!important;box-shadow:0 6px 14px #000a,inset 0 0 0 4px #a3271d,inset 0 0 0 6px #6a120c,0 0 30px rgba(196,39,27,.35)!important;color:#f2c9a0;animation:wax-breathe 3s ease-in-out infinite}
.sealed-order h2{font-family:var(--gothic);font-weight:400;color:var(--gold);text-shadow:0 0 14px rgba(var(--accent-rgb),.4)}
.sealed-order.decrypted .private-message{background:linear-gradient(180deg,#e9dcb8,#d3c08f);color:#2a1d0e;padding:22px 18px;margin:0 0 18px;box-shadow:inset 0 0 40px #8a6d3388,0 6px 16px #0009;clip-path:polygon(0 2%,6% 0,20% 2%,40% 0,60% 2%,80% 0,100% 2%,100% 98%,85% 100%,60% 98%,40% 100%,20% 98%,0 100%)}
.sealed-order.decrypted .private-message h2{color:#7a1510;text-shadow:none}
.sealed-order.decrypted .private-message .lead{color:#2a1d0e}
.private-message{animation:decrypt-burn 1.1s ease-out}

/* ---------- écran de connexion ---------- */
.login-shell{position:relative;overflow:hidden}
.login-shell>.particles{position:fixed}
.login-shell>.wordmark{font-family:var(--imperial);font-weight:800;color:var(--gold)}
.login-shell>.wordmark .sigil{display:inline-block}
.login-grid h1{font-family:var(--gothic);font-weight:400;color:var(--bone);text-shadow:0 0 22px rgba(var(--accent-rgb),.35),0 4px 0 #000}
.login-grid h1 em{color:var(--gold);font-family:var(--imperial);font-weight:800}
/* plan holographique affiché en entier (plus de recadrage), légère flottaison verticale */
.login-art{max-height:none!important;height:auto!important;overflow:visible!important;margin-top:16px!important;padding:8px 0 18px}
.login-art img{width:100%!important;transform:none!important;animation:holo-bob 7s ease-in-out infinite}
.login-art img{filter:sepia(1) hue-rotate(60deg) saturate(1.3) brightness(.62) contrast(1.15) drop-shadow(0 0 12px rgba(var(--phosphor-rgb),.35))!important}
body[data-faction=orks] .login-art img{filter:sepia(1) hue-rotate(-20deg) saturate(1.6) brightness(.7) contrast(1.2) drop-shadow(0 0 12px rgba(231,120,40,.45))!important}
.faction-choice span{background:#16110d;border-color:var(--gold-dim);border-radius:0;transition:border-color .2s,box-shadow .2s}
.faction-choice input:checked+span{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 0 20px rgba(var(--accent-rgb),.3);background:#241a10}
.faction-choice b{color:var(--gold)}
body[data-faction=orks] .faction-choice input:checked+span{border-color:#e5b80b;box-shadow:0 0 0 1px #e5b80b,0 0 20px rgba(196,39,27,.4);background:#2a120c}

/* ---------- préparation (hôte) : décors et STL ---------- */
/* accès hôte discret : petite icône dans le coin, quasi invisible pour les joueurs */
.prep-btn{position:fixed;right:10px;bottom:10px;z-index:80;width:30px;height:30px;padding:5px;display:grid;place-items:center;background:none;border:0;color:var(--gold-dim);opacity:.28;cursor:pointer;transition:opacity .2s}
.prep-btn:hover,.prep-btn:focus-visible{opacity:.9}
.prep-btn .ui-icon{width:18px;height:18px}
.prep-list{display:grid;gap:8px;margin:14px 0}
.prep-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#120e0a;border:1px solid var(--gold-dim)}
.prep-item h3{font-size:17px;margin:4px 0;color:var(--bone)}
.prep-item small{color:var(--muted);font:11px var(--mono)}
.prep-src{margin-top:8px;display:flex;flex-direction:column;gap:4px;font:11px/1.5 var(--mono);color:var(--muted)}
.prep-src code{color:var(--gold);background:#0b0805;border:1px solid var(--gold-dim);padding:5px 7px;word-break:break-all;user-select:all}
.prep-src .prep-scale{color:#ff6a4d}
.prep-item .btn{flex-shrink:0;font-size:12px;padding:9px 12px;gap:8px;min-height:40px}
@media(max-width:590px){.prep-item{flex-direction:column;align-items:stretch}}

/* ---------- divers ---------- */
dialog{color:var(--ink)}
.dialog-top h2{color:var(--gold)}
#toast{background:#2a1f14;border:1px solid var(--gold-dim);color:var(--bone)}
.footer{border-color:var(--gold-dim);color:var(--muted)}
.player-badge{background:#16110d;border-color:var(--gold-dim)}
.score-panel.astra{border-top:3px solid var(--astra)}.score-panel.orks{border-top:3px solid var(--orks)}

/* ---------- animations ---------- */
@keyframes sigil-glow{0%,100%{filter:drop-shadow(0 0 4px rgba(var(--accent-rgb),.35))}50%{filter:drop-shadow(0 0 12px rgba(var(--accent-rgb),.9))}}
@keyframes ork-jolt{0%,92%{transform:none}93%{transform:translate(2px,-1px) rotate(-6deg)}95%{transform:translate(-2px,1px) rotate(5deg)}97%{transform:none}}
@keyframes banner-pulse{0%,100%{box-shadow:inset 0 0 18px rgba(196,39,27,.3),0 0 10px rgba(196,39,27,.2)}50%{box-shadow:inset 0 0 24px rgba(196,39,27,.55),0 0 20px rgba(196,39,27,.45)}}
@keyframes crt-flicker{0%,100%{opacity:1}7%{opacity:.75}8%{opacity:1}41%{opacity:.85}42%{opacity:1}77%{opacity:.7}78%{opacity:1}}
@keyframes crt-roll{0%{transform:translateY(-100%)}100%{transform:translateY(420%)}}
@keyframes typing{from{width:0}}
@keyframes blink{50%{opacity:0}}
@keyframes title-burn{0%,100%{text-shadow:0 0 2px #fff6,0 0 16px rgba(var(--accent-rgb),.35),0 4px 0 #000}50%{text-shadow:0 0 2px #fff9,0 0 34px rgba(var(--accent-rgb),.75),0 4px 0 #000}}
@keyframes glitch{0%,90%,100%{opacity:0;transform:none}91%{opacity:.85;transform:translate(-4px,1px)}92%{opacity:.6;transform:translate(3px,-2px)}93%{opacity:0}96%{opacity:.7;transform:translate(-2px,0)}97%{opacity:0}}
@keyframes ember{0%{transform:translate(0,0) scale(1);opacity:0}8%{opacity:1}60%{opacity:.85}100%{transform:translate(calc((var(--d) - 6)*6px),-520px) scale(.3);opacity:0}}
@keyframes seal-sway{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes wax-breathe{0%,100%{transform:scale(1);box-shadow:0 6px 14px #000a,inset 0 0 0 4px #a3271d,inset 0 0 0 6px #6a120c,0 0 18px rgba(196,39,27,.25)}50%{transform:scale(1.05);box-shadow:0 6px 14px #000a,inset 0 0 0 4px #a3271d,inset 0 0 0 6px #6a120c,0 0 38px rgba(196,39,27,.6)}}
@keyframes holo-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes hazard-slide{to{background-position:34px 0}}
@keyframes decrypt-burn{0%{opacity:0;transform:scaleY(.2);filter:brightness(3)}60%{opacity:1;filter:brightness(1.4)}100%{transform:none;filter:none}}

/* ---------- téléphone ---------- */
@media(max-width:590px){
 .terminal-hero h2{font-size:64px}
 .terminal-hero .hero-art{height:auto!important;padding:14px 10px 34px}
 .terminal-hero .radar{top:-20px!important}
 .terminal-hero h2 span{letter-spacing:4px}
 .purity-seal{right:10px;width:40px;height:100px}
 .purity-seal:after{width:40px;height:40px}.purity-seal b{width:40px;top:12px;font-size:8px}
 .purity-seal:before{left:8px;width:24px;height:74px}
 .transmission{font-size:9px}
 .page-heading h1{font-size:27px}
 .sigil{width:52px!important;height:33px!important}
 .terminal-brand strong{font-size:18px;letter-spacing:2px}
 .login-grid h1{font-size:54px}
}
@media print{body:before,body:after,.particles,.crt-roll,.purity-seal{display:none!important}.panel{clip-path:none}}
