/* ---------- Deus ex machina ---------- */
.dexbtn{font-family:"ArgusBebas",sans-serif;font-size:18px;letter-spacing:.08em;padding:7px 14px 5px;color:#f2f1ff;border-color:rgba(242,241,255,.55)}
.dexbtn:hover{background:rgba(47,107,255,.15)}
.md-btns{display:flex;flex-wrap:wrap;gap:8px}
.md-dex{border-style:dashed}
.dex{position:fixed;inset:0;z-index:40;background:#050507;overflow:auto;padding:16px;--g:#f2f1ff}
.dx-in{max-width:1500px;margin-inline:auto;display:grid;gap:16px;padding-block:12px 40px}
.dx-h{display:flex;justify-content:space-between;gap:16px;align-items:start;border-bottom:1px solid #22263a;padding-bottom:14px}
.dx-lbl{font-size:11px;letter-spacing:.28em;color:#6f86c9}
.dx-h h2{margin:6px 0;font-family:"Bodoni Moda",Didot,serif;font-weight:800;font-size:clamp(30px,4.4vw,58px);line-height:1;color:var(--g);transform:scaleX(1.3);transform-origin:0 50%;text-shadow:0 0 12px rgba(47,107,255,.35)}
.dx-h p{margin:0;color:#a9a7b8;max-width:70ch;line-height:1.55}
.dx-x{font-size:18px;padding:8px 12px}
.dx-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:12px}
.dx-step{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border:1px solid #22263a;padding:12px;background:rgba(47,107,255,.04)}
.dx-step > b{font-family:"Archivo","Arial Black",sans-serif;font-weight:900;font-size:22px;color:var(--g)}
.dx-step > span{font-size:11px;letter-spacing:.24em;color:#8f9bc2;margin-right:auto}
.dx-step em{font-style:normal;font-size:11px;color:#8b8e9b;flex-basis:100%}
.dx-btn{display:inline-flex;align-items:center;font:inherit;font-size:12px;padding:8px 11px;background:var(--panel);border:1px solid var(--line);color:var(--fg);cursor:pointer;clip-path:none}
.dx-btn:hover{border-color:var(--g)}
.dx-danger.armed{background:#5a1a22;border-color:#ff3b4f}
.dx-go{font-family:var(--ui);font-size:12px;letter-spacing:.2em;padding:10px 14px;background:var(--g);border:1px solid var(--g);color:#fff;clip-path:none}
.dx-go:disabled,.dx-btn:disabled{opacity:.4}
.dx-sw{display:flex;gap:6px}
.dx-sw button{width:22px;height:22px;padding:0;border-radius:50%;background:var(--c);clip-path:none;border:1px solid rgba(255,255,255,.25)}
.dx-sw button[aria-pressed="true"]{outline:2px solid #fff;outline-offset:2px}
.dx-chk{display:flex;gap:6px;align-items:center;font-size:12px;color:#a9a7b8}
.dx-msg{font-size:12.5px;color:#c9cbe0;min-height:1.2em}
.dx-prog{height:4px;background:#1a1d2b}.dx-prog i{display:block;height:100%;width:0;background:var(--g);box-shadow:0 0 10px var(--g);transition:width .3s}
.dx-tbl{overflow:auto;border:1px solid #22263a;max-height:62vh}
.dx-tbl table{border-collapse:collapse;width:100%;min-width:1100px;font-size:12px}
.dx-tbl th{position:sticky;top:0;background:#0d0f18;text-align:left;font-weight:500;font-size:10.5px;letter-spacing:.14em;color:#8f9bc2;padding:8px;border-bottom:1px solid #22263a;z-index:1}
.dx-tbl td{border-bottom:1px solid #161927;padding:6px 8px;vertical-align:top;color:#dfe1ee}
.dx-tbl td[contenteditable]{outline:none;cursor:text}
.dx-tbl td[contenteditable]:focus{background:rgba(47,107,255,.12);box-shadow:inset 0 0 0 1px var(--g)}
.dx-tbl .c-desc{min-width:340px;max-width:520px;line-height:1.45;color:#b9bbcc}
.dx-tbl .c-nom{font-weight:500;min-width:140px}
.dx-tbl .c-r,.dx-tbl .c-p,.dx-tbl .c-m,.dx-tbl .c-v{text-align:center;font-weight:500;color:#9fb6ff;width:44px}
.dx-tbl .c-icon_path{font-size:10.5px;color:#7d8098;max-width:200px;word-break:break-all}
.dx-tbl .th{width:52px}.dx-tbl .th img{width:46px;height:46px;object-fit:cover;display:block;border:1px solid #2a2e44}
.dx-tbl .th span{display:grid;place-items:center;width:46px;height:46px;border:1px dashed #2a2e44;color:#4b4f68}
.dx-tbl tr.done td{opacity:.45}
.dx-del{padding:4px 7px;font-size:11px;clip-path:none}

.pz-tw{position:relative;display:grid;place-items:center;width:100%}
.pz-tw > h1{position:relative;z-index:1}
.pz-orn{position:absolute;left:50%;top:50%;width:min(118vh,1500px,140vw);height:auto;transform:translate(-50%,-50%);pointer-events:none;z-index:0;opacity:.14;overflow:visible}
.pz-orn .of{fill:var(--glow)}
.pz-orn .ol{fill:none;stroke:var(--glow);stroke-width:2;opacity:.7}
.pz-orn .ok{fill:none;stroke:var(--glow);stroke-width:3}
.pz-orn .ob{fill:none;stroke:var(--glow);stroke-width:10;stroke-linejoin:miter;opacity:2.5}
.pz-orn .ot{fill:var(--glow);font:500 15px "IBM Plex Mono",monospace;letter-spacing:4px}
.pz-ornbtn{font-family:var(--ui);font-size:10px;letter-spacing:.2em;padding:4px 8px;background:transparent;border:1px solid color-mix(in srgb,var(--glow) 40%,transparent);color:var(--glow);clip-path:none;margin-right:10px}
.pz-ornbtn[aria-pressed="false"]{opacity:.45}
@media (prefers-reduced-motion:no-preference){.pz.go .pz-orn{animation:ornIn 2s ease .4s both,ornBreath 9s ease-in-out 2.4s infinite}}
@keyframes ornIn{from{opacity:0;transform:translate(-50%,-50%) scale(.9)}}
@keyframes ornBreath{50%{opacity:.2}}
@media (max-width:760px){.pz-orn{width:150vw}}
/* intro : fil de vie + code */
.boot{position:fixed;inset:0;z-index:50;background:#08070c;display:grid;place-items:center;cursor:pointer;transition:opacity .6s,transform .6s}
.boot.out{opacity:0;transform:translateY(-3%);pointer-events:none}
.boot svg{position:absolute;inset:0;width:100%;height:100%}
.boot .thread{fill:none;stroke:#7da2ff;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 6px #7da2ff)}
.boot .thread2{fill:none;stroke:#fff;stroke-width:1;opacity:.35}
.boot pre{position:relative;margin:0;font-family:var(--ui);font-size:clamp(11px,1.3vw,14px);line-height:1.75;color:#d9d4e6;min-width:min(560px,86vw);white-space:pre-wrap;text-shadow:0 0 8px rgba(125,162,255,.55)}
.boot pre .ok{color:#7da2ff}.boot pre .ac{color:#7da2ff;text-shadow:0 0 10px #7da2ff}
.boot pre .c{display:inline-block;width:.6em;height:1.1em;background:#d9d4e6;vertical-align:-.2em;animation:blink 1s steps(1) infinite}
.boot .skip{position:absolute;right:20px;bottom:18px;font-family:var(--ui);font-size:11px;letter-spacing:.14em;color:#6d6880}
.boot .big{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scaleX(1.42);font-family:"Bodoni Moda",Didot,serif;font-weight:800;text-shadow:0 0 8px #7da2ff,0 0 30px rgba(125,162,255,.5);color:#7da2ff!important;font-size:clamp(48px,12vw,180px);letter-spacing:.02em;color:#fff;opacity:0;transition:opacity .4s,letter-spacing 1s}
.boot .big.on{opacity:1;letter-spacing:.02em}
@media (prefers-reduced-motion:no-preference){
  .cv-ring .spin{animation:spin 60s linear infinite}
  .cv-band .tr{animation:marq 26s linear infinite}
  .cv-ticker .tr{animation:marq 60s linear infinite}
  .cv-title .l1{animation:pan 18s ease-in-out infinite alternate}
}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes marq{to{transform:translateX(-50%)}}
@keyframes pan{to{background-position:62% 55%}}
@keyframes blink{50%{opacity:0}}
@media (max-width:900px){
  .cv-in{grid-template-columns:minmax(0,1fr)}
  .cv-r{width:min(100%,440px)}
  .cv-stats{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:14px}
  .cv-stats div:nth-child(2){border-right:0}
  .cv-stats div:nth-child(3){padding-left:0}
  .cv-halo{display:none}
}
/* cartes de gabarits, style « features » */
.tpl .num{font-family:var(--ui);font-size:11px;letter-spacing:.12em;color:var(--mute)}
.tpl{position:relative}
.tpl::before{content:"";position:absolute;left:18px;top:0;width:44px;height:3px;background:var(--vio,#7a3cff);z-index:1}
