:root{
  --navy:#0b1f3a; --navy2:#13325c; --gold:#c9a227; --gold2:#e8d48a;
  --bg:#eef1f5; --card:#fff; --ink:#1b2430; --muted:#5d6b7a; --line:#d8dee6;
  --ok:#1e7b45; --err:#b3261e; --red:#b3261e;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:"Source Sans 3",system-ui,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:17px;line-height:1.45;min-height:100vh;display:flex;flex-direction:column}
h1,h2,h3,.brand-title,.nav-group,.wtop,.seekr-logo,.fg-logo{font-family:"Barlow Condensed",Arial,sans-serif;letter-spacing:.3px}
h1{font-size:30px;margin:0 0 10px;color:var(--navy)} h2{font-size:24px;margin:0 0 8px;color:var(--navy)} h3{font-size:20px;margin:18px 0 8px;color:var(--navy)}
a{color:var(--navy2)}
code{background:#f1f3f6;padding:1px 5px;border-radius:4px}

.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:10px 18px;background:var(--navy);color:#fff;border-bottom:3px solid var(--gold)}
.brand{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.brand-title{font-size:22px;font-weight:700;text-transform:uppercase;line-height:1}
.brand-sub{font-size:13px;color:var(--gold2)}
.top-right{display:flex;gap:10px;align-items:center}
.team-chip{background:var(--navy2);border:1px solid var(--gold);color:var(--gold2);padding:6px 12px;border-radius:20px;font-weight:700;font-size:14px;white-space:nowrap}
.scan-btn{background:var(--gold);color:var(--navy);border:0;border-radius:8px;padding:10px 14px;font-weight:700;font-size:15px;cursor:pointer}
.menu-btn{display:none;background:none;border:0;color:#fff;font-size:28px;cursor:pointer}

.layout{display:flex;flex:1}
.sidebar{width:240px;flex-shrink:0;background:#fff;border-right:1px solid var(--line);padding:10px 0;position:sticky;top:66px;height:calc(100vh - 66px);overflow:auto}
.nav-group{font-size:13px;text-transform:uppercase;color:var(--muted);padding:14px 18px 4px;font-weight:700}
.nav-item{display:flex;justify-content:space-between;align-items:center;padding:11px 18px;text-decoration:none;color:var(--ink);font-weight:600;border-left:4px solid transparent}
.nav-item:hover{background:#f4f6f9}
.nav-item.active{background:#e9eef6;border-left-color:var(--gold);color:var(--navy)}
.nav-item.locked{color:#9aa5b1}
.nbadge{background:var(--red);color:#fff;border-radius:10px;padding:0 7px;font-size:13px}
.content{flex:1;padding:22px;max-width:1100px;min-width:0}
.disclaimer{font-size:12px;color:var(--muted);text-align:center;padding:10px 16px;border-top:1px solid var(--line);background:#fff}

.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:18px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.card.narrow{max-width:620px}
.ok-card{border-left:6px solid var(--ok)}
.locked-card{text-align:center;max-width:560px;margin:40px auto}
.lock-big{font-size:46px}
.muted{color:var(--muted)} .small{font-size:14px}
.row{display:flex;gap:10px;align-items:center;margin:10px 0}
.row.wrap{flex-wrap:wrap} .row.between{justify-content:space-between}
input,select{font:inherit;padding:11px 12px;border:1px solid #b9c3cf;border-radius:8px;background:#fff;min-width:0}
.row input{flex:1}
.btn{display:inline-block;font:inherit;font-weight:700;background:var(--navy);color:#fff;border:0;border-radius:8px;padding:11px 18px;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--navy2)} .btn:disabled{background:#9aa5b1;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--navy)}
.btn.ok{background:var(--ok)} .btn.danger{background:var(--err)}
.btn.small{padding:7px 12px;font-size:14px} .btn.big{font-size:20px;padding:14px 26px;margin-top:10px}

.hero{display:flex;gap:20px;align-items:center;background:var(--navy);color:#fff;border-radius:12px;padding:22px;margin-bottom:18px;border:2px solid var(--red)}
.hero h1{color:#ffb4ab;font-size:34px}
.lead{font-size:20px;margin:0}
.video-box video{width:100%;max-height:440px;background:#000;border-radius:8px}
blockquote{margin:10px 0;padding:12px 16px;border-left:4px solid var(--gold);background:#faf7ec;font-style:italic}
.suspect-strip{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}
img.mini{width:52px;height:64px;object-fit:cover;border-radius:4px;border:1px solid var(--line)}

.kicker{text-transform:uppercase;font-size:13px;font-weight:700;color:var(--gold);margin:0 0 6px;letter-spacing:.5px}
.article p{max-width:720px}
.stats{display:flex;gap:16px;margin:16px 0;flex-wrap:wrap}
.stats div{background:var(--navy);color:#fff;border-radius:10px;padding:12px 18px;min-width:150px}
.stats b{display:block;font-family:"Barlow Condensed";font-size:30px;color:var(--gold2)} .stats span{font-size:14px}

.grid{display:grid;gap:14px}
.grid.suspects{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.suspect{text-align:center;display:flex;flex-direction:column;gap:2px;font-size:15px}
.suspect img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.suspect span{color:var(--muted);font-size:13px}
.suspect.out{opacity:.25;filter:grayscale(1)}
.grid.wanted{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.wanted-card{border:2px solid var(--navy);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:4px;background:#fffdf6}
.wtop{background:var(--red);color:#fff;text-align:center;font-size:22px;font-weight:700;border-radius:6px}
.wanted-card img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:6px}
.wanted-card b{font-size:18px} .crimes{color:var(--red);font-weight:600;font-size:14px} .reward{font-weight:700;color:var(--navy)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tile{display:flex;flex-direction:column;gap:4px;text-align:left;font:inherit;background:#f4f6f9;border:1px solid var(--line);border-radius:10px;padding:16px;cursor:pointer;text-decoration:none;color:var(--ink)}
.tile b{font-size:19px;color:var(--navy)} .tile span{color:var(--muted)}
.msg{border:1px solid var(--line);border-radius:8px;margin:10px 0;padding:10px 14px}
.msg summary{cursor:pointer;display:flex;justify-content:space-between;gap:10px} .msg summary span{color:var(--muted);font-size:14px}
.msg pre{white-space:pre-wrap;font-family:inherit;margin:10px 0 0}
.objectives{display:grid;gap:12px}
.obj{border:1px solid var(--line);border-radius:10px;padding:4px 16px 10px}
.st{display:inline-block;font-size:13px;padding:2px 8px;border-radius:10px;background:#eef1f5;color:var(--muted);margin-left:8px;vertical-align:middle}
.st.ok{background:#dff3e6;color:var(--ok)}

.seekr-logo{font-size:40px;font-weight:700;color:#3d5afe} .seekr-logo span{color:#ff6d00;margin-left:6px}
.seekr-q{display:flex;gap:14px;align-items:center;margin:16px 0}
img.thumb{width:90px;height:110px;object-fit:cover;border-radius:6px}
.results{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.result{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;padding:10px 14px;text-decoration:none;color:var(--ink)}
.result b{color:#1a0dab} .result span{color:var(--muted);font-size:14px}
.rtype{font-size:12px!important;text-transform:uppercase;font-weight:700;color:#3d5afe!important}

.fg{background:#fafafa}
.fg-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:10px}
.fg-logo{font-size:30px;font-weight:700;background:linear-gradient(90deg,#f58529,#dd2a7b,#8134af);-webkit-background-clip:text;background-clip:text;color:transparent}
.fg-profile{display:flex;gap:18px;align-items:center;margin:18px 0}
img.fg-av{width:110px;height:110px;border-radius:50%;object-fit:cover;border:3px solid #dd2a7b}
.fg-posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.fg-post{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}
.fg-post p{margin:6px 0}
.fg-photo{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:6px;background:#eee}
svg.scene{width:100%;border-radius:6px;display:block}
.fg-meta{font-size:14px;margin-top:8px}
.private{text-align:center;padding:40px;font-size:20px;border:1px dashed #bbb;border-radius:10px}

.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.form-grid label,.rep label{display:flex;flex-direction:column;font-size:14px;font-weight:600;gap:4px}
.tbl{width:100%;border-collapse:collapse;margin-top:8px;font-size:15px}
.tbl th,.tbl td{border-bottom:1px solid var(--line);padding:8px;text-align:left}
.tbl tr:not(:first-child){cursor:pointer} .tbl tr:not(:first-child):hover{background:#f4f6f9}
.fiche{display:grid;grid-template-columns:200px 1fr;gap:20px;margin-top:10px}
.fiche img,.nophoto{width:200px;aspect-ratio:4/5;object-fit:cover;border-radius:8px;background:#e3e7ec;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.kv td{padding:5px 10px 5px 0;vertical-align:top} .kv td:first-child{color:var(--muted);white-space:nowrap}
.alert{border:1px solid var(--line);border-left:6px solid var(--navy);border-radius:8px;padding:12px 16px;margin-top:14px;background:#f8fafc}
.alert.red{border-left-color:var(--red);background:#fff5f4}
.rep{border:1px solid var(--line);border-radius:10px;padding:2px 16px 12px;margin:12px 0}
.attr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin:10px 0}
.attr{font:inherit;padding:12px;border:1px solid var(--navy);background:#fff;border-radius:8px;cursor:pointer;text-align:left}
.attr:hover{background:#e9eef6}
.chk{display:flex;gap:8px;align-items:center}
.clue-list{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.clue{background:var(--navy);color:var(--gold2);padding:6px 12px;border-radius:16px;font-weight:700}
.logbox{max-height:240px;overflow:auto;font-size:14px;background:#f4f6f9;border-radius:8px;padding:10px;font-family:monospace}

.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal[hidden]{display:none}
.modal-box{background:#fff;border-radius:12px;padding:20px;width:min(520px,100%);max-height:95vh;overflow:auto}
.modal video{width:100%;border-radius:8px;background:#000;max-height:300px}
.scan-msg{color:var(--err);font-weight:600}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:12px 20px;border-radius:10px;z-index:60;max-width:90vw;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.toast.ok{background:var(--ok)} .toast.err{background:var(--err)}

@media (max-width:900px){
  .menu-btn{display:block}
  .sidebar{position:fixed;left:0;top:66px;z-index:30;transform:translateX(-100%);transition:transform .2s;box-shadow:4px 0 20px rgba(0,0,0,.2)}
  body.nav-open .sidebar{transform:none}
  .brand-sub{display:none} .brand-title{font-size:17px}
  .content{padding:14px}
  .fiche{grid-template-columns:1fr} .hero{flex-direction:column;text-align:center}
}

img.logo{border-radius:50%;object-fit:cover;display:block}

/* portraits : affichés en entier, sans recadrage */
.suspect img,.wanted-card img,.fiche img{aspect-ratio:auto;height:auto;object-fit:contain}
img.thumb{width:70px;height:auto}
img.mini{width:40px;height:auto}
.wanted-card img{max-width:180px;margin:0 auto}
.fiche img{width:200px}

.reset-link{background:none;border:0;color:var(--muted);text-decoration:underline;font:inherit;font-size:12px;cursor:pointer;padding:0}
.nav-reset{display:block;width:calc(100% - 36px);margin:24px 18px 16px;padding:9px;background:#fff;border:1px dashed #b9c3cf;border-radius:8px;color:var(--muted);font:inherit;font-size:14px;cursor:pointer}

.timer{font-family:"Barlow Condensed",monospace;font-size:24px;font-weight:700;color:#fff;background:#13325c;border:1px solid var(--gold);border-radius:8px;padding:2px 12px;min-width:84px;text-align:center}
.timer.idle{opacity:.55}
.timer.warn{background:#b3261e;border-color:#ffb4ab}
.gameover{position:fixed;inset:0;z-index:45;background:rgba(10,10,10,.94);color:#fff;display:flex;align-items:center;justify-content:center;text-align:center}
.gameover[hidden]{display:none}
.go-title{font-family:"Barlow Condensed",Arial;font-size:96px;font-weight:700;color:#ff5449;letter-spacing:6px}
.gameover p{font-size:22px}
.start-box{margin-top:14px;text-align:center}
.msg.hint{border-left:4px solid var(--gold)}
.suspect img{aspect-ratio:1/1!important;object-fit:cover!important}
img.mini{width:44px;height:44px;object-fit:cover;border-radius:50%}

/* icônes du menu */
.nav-l{display:flex;align-items:center;gap:10px}
.ico{width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-item .ico{color:var(--navy2)}
.nav-item.active .ico{color:var(--gold)}
.nav-item.locked .ico{color:#b6bfca}
.ico.lk{width:16px;height:16px;margin-left:6px}

/* ---- Machine de décryptage (Espace agent) ---- */
.dec-machine{background:#0a1628;border:2px solid var(--gold);border-radius:14px;padding:20px;color:#cfe3ff;margin:14px 0}
.dec-keys{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.dec-keys label{flex:1;min-width:180px;font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--gold2);font-weight:700}
.dec-keys input{display:block;width:100%;margin-top:6px;font:700 26px/1.2 'Courier New',monospace;letter-spacing:8px;text-transform:uppercase;text-align:center;background:#06101e;color:#7fffb0;border:1px solid #2c4a75;border-radius:8px;padding:10px}
.dec-screen{background:#030a14;border:1px solid #1f3a60;border-radius:10px;padding:16px;margin-bottom:16px;box-shadow:inset 0 0 24px rgba(0,255,140,.08)}
.dec-slots{display:flex;justify-content:center;gap:8px}
.dec-slots span{width:52px;height:68px;display:flex;align-items:center;justify-content:center;font:700 38px 'Courier New',monospace;color:#3ddc84;background:#071425;border:1px solid #1f3a60;border-radius:8px;transition:background .2s,color .2s}
.dec-slots span:nth-child(3){margin-right:18px}
.dec-slots span.lock{background:#0f3d24;color:#b9ffd6;border-color:#3ddc84;box-shadow:0 0 12px rgba(61,220,132,.5)}
.dec-slots span.err{color:#ff8a80;border-color:#b3261e;background:#2a0b0b}
.dec-bar{height:6px;background:#0d1d33;border-radius:3px;margin:14px 0 10px;overflow:hidden}
.dec-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#3ddc84,var(--gold))}
.dec-log{font:600 14px 'Courier New',monospace;color:#7fa7d9;text-align:center;letter-spacing:1px;min-height:20px}
.dec-machine.run .dec-slots span{text-shadow:0 0 6px rgba(61,220,132,.7)}
.dec-machine.win{border-color:#3ddc84}.dec-machine.win .dec-log{color:#3ddc84}
.dec-machine.fail{animation:decShake .45s}.dec-machine.fail .dec-log{color:#ff8a80}
@keyframes decShake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.dec-warn{font-size:14px;color:var(--err);font-weight:600}
.dec-code{display:flex;gap:14px;margin:6px 0 16px}
.dec-code div{flex:1;background:#0a1628;border:2px solid var(--gold);border-radius:12px;padding:12px;text-align:center}
.dec-code span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--gold2);font-weight:700}
.dec-code b{font:700 40px 'Courier New',monospace;color:#7fffb0;letter-spacing:10px}
.timer.hit{animation:decHit 1.6s}
@keyframes decHit{0%,40%,80%{background:#b3261e;transform:scale(1.15)}20%,60%,100%{transform:scale(1)}}
@media(max-width:600px){.dec-slots span{width:40px;height:54px;font-size:30px}.dec-slots span:nth-child(3){margin-right:10px}}

/* Comparaison d'empreintes */
.fp-scan{position:relative;width:220px;margin:14px auto;border:2px solid var(--navy);border-radius:10px;overflow:hidden;background:#fff}
.fp-scan img{display:block;width:100%}
.fp-bar{position:absolute;left:0;right:0;height:18%;top:-18%;background:linear-gradient(180deg,rgba(31,111,209,0),rgba(31,111,209,.45),rgba(31,111,209,0));border-bottom:2px solid #1f6fd1;animation:fpScan 1.6s linear infinite}
.fp-scan.stop .fp-bar{display:none}
@keyframes fpScan{to{top:100%}}
.fp-steps{list-style:none;padding:0;margin:10px auto;max-width:420px}
.fp-steps li{padding:5px 0 5px 28px;position:relative;color:#9aa3af}
.fp-steps li.on{color:var(--navy);font-weight:600}
.fp-steps li.on::before{content:"";position:absolute;left:4px;top:9px;width:12px;height:12px;border:2px solid #1f6fd1;border-top-color:transparent;border-radius:50%;animation:fpSpin .8s linear infinite}
.fp-steps li.done::before{content:"✓";position:absolute;left:4px;top:4px;color:#1a7f37;font-weight:700;border:0;animation:none;width:auto;height:auto}
@keyframes fpSpin{to{transform:rotate(360deg)}}

/* Amélioration d'image */
.enh-view{position:relative;overflow:hidden;border-radius:8px;background:#000;aspect-ratio:4/3;max-width:760px;margin:10px auto;cursor:crosshair;touch-action:manipulation}
.enh-view img{display:block;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-select:none;transition:transform .15s}
.enh-ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px 18px;max-width:760px;margin:0 auto}
.enh-sl{display:grid;grid-template-columns:90px 1fr 56px;align-items:center;gap:8px;font-size:14px}
.enh-sl input{width:100%}
.enh-sl b{font-variant-numeric:tabular-nums;text-align:right}

/* Registre des habilitations */
.table-wrap{overflow-x:auto}
.reg{width:100%;border-collapse:collapse;font-size:14px}
.reg th,.reg td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:center;vertical-align:middle}
.reg th:first-child,.reg td:first-child,.reg th:nth-child(2),.reg td:nth-child(2){text-align:left}
.reg td:first-child{display:flex;align-items:center;gap:8px;white-space:nowrap}
.reg td:first-child img,.reg td:first-child .ph{width:34px;height:42px;object-fit:cover;border-radius:4px}
.suspect[data-x]{cursor:pointer}

/* Recherche vidéo */
.vs-head{display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;margin:8px 0 12px}
.vs-target{display:flex;gap:12px;align-items:center}
.vs-target img,.vs-target .ph{width:64px;height:80px;object-fit:cover;border-radius:6px;border:2px solid var(--red)}
.vs-target b{display:block;font-size:18px}
.vs-stats{display:flex;gap:22px}
.vs-stats div{text-align:center}
.vs-stats span{display:block;font:700 22px/1.1 ui-monospace,monospace;color:var(--navy)}
.vs-stats small{color:#667;font-size:12px}
.vs-bar{height:8px;background:#e3e7ee;border-radius:4px;overflow:hidden;margin-bottom:12px}
.vs-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#1f6fd1,#35d07f);transition:width .5s}
.vs-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.vs-tile{position:relative;background:#000;border-radius:6px;overflow:hidden}
.vs-tile canvas{display:block;width:100%;height:auto}
.vs-rec{position:absolute;right:6px;bottom:4px;color:#ff4d4d;font:700 10px monospace;animation:vsBlink 1s steps(2) infinite}
@keyframes vsBlink{50%{opacity:0}}
@media (max-width:700px){.vs-grid{grid-template-columns:repeat(2,1fr)}}

/* Recherche vidéo : images de caméras */
.vs-tile{aspect-ratio:16/9}
.vs-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(.35) contrast(1.08) brightness(.92)}
.vs-img.flip{transform:scaleX(-1)}
.vs-img.kb{animation:vsKb 4s linear forwards}
.vs-img.flip.kb{animation:vsKbF 4s linear forwards}
@keyframes vsKb{from{transform:scale(1)}to{transform:scale(1.07)}}
@keyframes vsKbF{from{transform:scaleX(-1) scale(1)}to{transform:scaleX(-1) scale(1.07)}}
.vs-tile::after{content:"";position:absolute;inset:0;background:url(../img/ville/grain.png);mix-blend-mode:overlay;animation:vsGrain .4s steps(4) infinite;pointer-events:none}
@keyframes vsGrain{0%{background-position:0 0}25%{background-position:-40px 20px}50%{background-position:30px -30px}75%{background-position:-20px -50px}}
.vs-boxes{position:absolute;inset:0;z-index:2}
.vs-lab{position:absolute;left:0;right:0;top:0;z-index:3;background:rgba(0,0,0,.55);color:#e8ecef;font:10px/16px ui-monospace,monospace;padding:0 6px;white-space:nowrap;overflow:hidden}
.vs-rec{z-index:3}
.fbox{position:absolute;border:2px solid;border-radius:2px}
.fbox em{position:absolute;left:-2px;top:-15px;font:700 10px/13px ui-monospace,monospace;font-style:normal;padding:0 3px;color:#000;white-space:nowrap}
.fbox.r{border-color:#ff3b30}.fbox.r em{background:#ff3b30;color:#fff}
.fbox.o{border-color:#ff9500}.fbox.o em{background:#ff9500}
.fbox.y{border-color:#ffd60a}.fbox.y em{background:#ffd60a}
.fbox.g{border-color:#34c759;border-width:3px;box-shadow:0 0 12px #34c759}.fbox.g em{background:#34c759;font-size:13px;line-height:16px;top:-19px}
.vs-det{max-width:760px;margin:10px 0 4px}

/* Empreinte partielle : points caractéristiques et impression labo */
.alert.orange{border-left-color:#e08600;background:#fff8ec}
.alert.ok{border-left-color:#1a7f37;background:#f1faf3}
.fp-pts{position:absolute;inset:0;pointer-events:none}
.fp-pt{position:absolute;width:7%;aspect-ratio:1;border:2px solid #1f6fd1;border-radius:2px;background:rgba(31,111,209,.12);box-shadow:0 0 6px rgba(31,111,209,.8);transform:translate(-50%,-50%) scale(2.2);opacity:0;animation:fpPt .35s ease-out forwards}
@keyframes fpPt{to{transform:translate(-50%,-50%) scale(1);opacity:1}}
.fp-count{text-align:center;font-weight:600;color:#1f6fd1;min-height:1.2em;margin:4px 0}
.fp-steps li.fail{color:var(--red);font-weight:600}
.fp-steps li.fail::before{content:"✕";position:absolute;left:4px;top:4px;color:var(--red);font-weight:700}
.labprint{margin:10px 0}
.lab-log{font-family:ui-monospace,Menlo,monospace;font-size:13px;background:#0d1f3c;color:#cfe3ff;border-radius:8px;padding:8px 12px;margin-top:8px}
.lab-log p{margin:2px 0}

/* Enquête interne : dossiers de la taupe */
.dossier{border:1px solid var(--line);border-left:6px solid var(--navy);border-radius:8px;padding:12px 16px;margin:14px 0;background:#f8fafc}
.dossier.ok{border-left-color:#1a7f37;background:#f1faf3}
.dossier h3{margin:4px 0 6px}
.dos-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:4px 12px;margin:8px 0 10px}
.gbar{background:#e6e9ef;border-radius:4px;height:10px;width:160px;overflow:hidden}
.gbar i{display:block;height:100%;background:#1f6fd1}
.tbl tr.hi td{font-weight:700;color:var(--navy)}
.tbl tr.hi .gbar i{background:#b3261e}
.enh-view.note{background:#222}

.permis-card{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:14px;background:linear-gradient(135deg,#f4f7fb,#e9eef6);margin:12px 0}
.permis-ph{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.permis-ph img,.permis-ph .ph{width:120px;height:150px;object-fit:cover;border-radius:4px}
.permis .kv{flex:1;min-width:240px;border-collapse:collapse}.permis .kv th{text-align:left;color:var(--muted);font-weight:600;padding:3px 10px 3px 0;white-space:nowrap;vertical-align:top}.permis .kv td{padding:3px 0}

.fil-txt{font-weight:600;margin:10px 0}
.fil-hist{display:flex;flex-direction:column;gap:4px}
.fil-row{display:grid;grid-template-columns:70px 1fr auto;gap:10px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;font-size:14px}
.fil-row.hit{border-color:#2e9e57;background:#eef8f1}.fil-row.miss{color:var(--muted)}
.fil-st{font-size:12px;text-transform:uppercase;font-weight:700}.fil-st.ok{color:#2e9e57}
.vs-det{max-width:760px}
.alert.green{border-left-color:#2e9e57;background:#eef8f1}

.morse{display:flex;align-items:center;gap:16px;margin:12px 0}
.lamp{width:46px;height:46px;border-radius:50%;background:#2a2f38;border:3px solid #111;box-shadow:inset 0 0 8px #000}
.lamp.on{background:#fff6b0;box-shadow:0 0 22px 8px #ffe066}

/* Bandeau des messages non lus (11 oct.) */
.msgbar{display:block;padding:10px 18px;background:#fff6d6;border-bottom:2px solid var(--gold);color:var(--navy);text-decoration:none;font-size:16px}
.msgbar[hidden]{display:none}
.msgbar.order{background:var(--red);border-bottom-color:#7d1912;color:#fff;animation:msgpulse 1.6s ease-in-out infinite}
.msgbar span{float:right;font-weight:700}
@keyframes msgpulse{50%{filter:brightness(1.15)}}
details.msg.order{border-left:5px solid var(--red)}
.go-list{list-style:none;padding:0;margin:14px auto 22px;text-align:left;display:table;font-size:18px}
.go-list li{margin:4px 0}
.mole-pick{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.other-lists .alert{margin:8px 0}
.refus{color:var(--err);font-weight:600;margin:6px 0 0;font-size:.95em}
/* Radiographie 3D et balistique (arme du scellé 0314) */
.card.wide{max-width:1100px}
.xr{position:relative;background:#02060c;border-radius:10px;overflow:hidden;touch-action:none;height:min(62vh,560px);border:1px solid #1d2b3d}
.xr canvas{display:block;width:100%;height:100%}
.xr-hud{position:absolute;left:12px;top:10px;color:#7fd3ff;font:600 13px ui-monospace,Menlo,monospace;letter-spacing:.5px;pointer-events:none;text-shadow:0 0 4px #000}
.xr-hud2{position:absolute;right:12px;bottom:10px;color:#7fd3ff99;font:12px ui-monospace,Menlo,monospace;pointer-events:none}
.xr-wait{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#7fd3ff;margin:0}
.xr-ctrl{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin-top:12px}
.xr-ctrl label{display:flex;gap:8px;align-items:center;font-weight:600}
.xr-ctrl input[type=range]{width:200px}
.bal-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:760px){.bal-grid{grid-template-columns:1fr}}
.bal-f{display:block;font-weight:600;margin-bottom:10px;max-width:320px}.bal-f select{display:block;width:100%;margin-top:4px}
.bal-svg{width:100%;height:auto;background:#02060c;border-radius:8px}
