/* =====================================================================
   NONARD v6 — « Marrakech 2077 » : identité visiteur, NOVA, calendrier, final,
   badges, sons, mode léger, compagnon robot, mini-jeu.
   ===================================================================== */

/* ---------- Outils du dock ---------- */
.dk-tools{display:flex;align-items:center;gap:6px;flex:none}
.dk-lang{display:flex;align-items:center;height:38px;padding:3px;border-radius:11px;background:rgba(23,17,26,.05);border:1px solid rgba(23,17,26,.08);font:500 11px/1 var(--mono);letter-spacing:.06em}
.dk-lang span{display:grid;place-items:center;height:30px;padding:0 8px;border-radius:8px;color:#6c6066;transition:background .3s,color .3s}
.dk-lang span.on{background:#17111a;color:#fff}
.dk-lang:hover span:not(.on){color:var(--wine)}
.dk-ic,.dk-badges{display:grid;place-items:center;height:38px;min-width:38px;border-radius:11px;background:rgba(23,17,26,.05);border:1px solid rgba(23,17,26,.08);color:#4c4248;transition:background .3s,color .3s,transform .3s var(--spring)}
.dk-ic:hover,.dk-badges:hover{background:rgba(114,14,40,.08);color:var(--wine)}
.dk-ic .ico,.dk-badges .ico{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dk-ic .w1,.dk-ic .w2{opacity:0}
.dk-ic .x{opacity:1}
.dk-ic.on{color:var(--wine)}
.dk-ic.on .w1,.dk-ic.on .w2{opacity:1;animation:sndw 1.4s ease-in-out infinite}
.dk-ic.on .w2{animation-delay:.2s}
.dk-ic.on .x{opacity:0}
@keyframes sndw{50%{opacity:.35}}
.dk-badges{display:flex;align-items:center;gap:4px;padding:0 10px;font:500 11.5px/1 var(--mono)}
.dk-badges b{font-weight:500;color:#17111a}
.dk-badges small{color:#8b7f85}
.dk-badges.has .ico{fill:var(--gold);stroke:var(--gold-d)}
.dk-badges.full{background:linear-gradient(120deg,#e9cf9d,#c9a26b);border-color:transparent}
.dk-badges.full .ico{fill:#fff;stroke:#fff}
@media (max-width:1240px){.dk-ic{display:none}}
@media (max-width:760px){.dk-lang{height:36px}.dk-lang span{height:28px;padding:0 6px}.dk-badges{height:36px;padding:0 8px}.dk-badges small{display:none}}
@media (max-width:420px){.dk-badges{display:none}}

/* ---------- Carnet de badges ---------- */
.tray{position:fixed;inset:0;z-index:400;background:rgba(23,17,26,.28);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;justify-content:flex-end;padding:14px}
.tray[hidden]{display:none}
.tray-in{width:min(420px,100%);max-height:calc(100vh - 28px);overflow:auto;border-radius:24px;background:rgba(255,255,255,.94);border:1px solid #fff;box-shadow:0 40px 90px -40px rgba(40,10,30,.6);padding:22px;animation:trayIn .5s var(--ease-out)}
@keyframes trayIn{from{transform:translateX(40px);opacity:0}}
.tray-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.tray-top b{font:500 22px/1 var(--disp);letter-spacing:-.03em;margin-right:auto;width:100%;order:3}
.tray-top .hud-k{margin-right:auto}
.tray-top .cmd-x{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:rgba(23,17,26,.06)}
.tray-top .cmd-x .ico{width:16px;height:16px}
.tray-bar{height:6px;border-radius:6px;background:rgba(114,14,40,.08);margin:16px 0 14px;overflow:hidden}
.tray-bar i{display:block;height:100%;width:0;border-radius:6px;background:linear-gradient(90deg,var(--wine),var(--signal),var(--gold));transition:width 1s var(--ease-out)}
.tray-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.tray-list li{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:14px;border:1px solid rgba(23,17,26,.07);background:#fff;transition:background .4s}
.tray-list .bi{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;flex:none;background:rgba(23,17,26,.05);color:#c5bcc0;font-size:15px}
.tray-list li div{flex:1;min-width:0}
.tray-list li b{display:block;font:500 14.5px/1.2 var(--disp)}
.tray-list li div span{font-size:12px;color:#8b7f85}
.tray-list .bgo{font:500 11px var(--mono);color:var(--wine);white-space:nowrap;padding:7px 9px;border-radius:9px;background:rgba(114,14,40,.06)}
.tray-list li.got{background:linear-gradient(120deg,#fff 40%,#fbf3e6)}
.tray-list li.got .bi{background:linear-gradient(140deg,#e9cf9d,#c9a26b);color:#fff;box-shadow:0 6px 16px -6px rgba(156,119,65,.7)}
.tray-list li.got .bgo{visibility:hidden}
.tray-prize{margin-top:14px;padding:16px;border-radius:16px;background:#17111a;color:#e9e0e3}
.tray-prize p{margin:8px 0 0;font-size:13.5px}
.tray-prize .hud-k{color:var(--gold-l)}
.tray-prize.won{background:linear-gradient(130deg,#2a0d18,#5a0a1f)}
.code-btn{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;margin-top:12px;padding:12px 14px;border-radius:12px;border:1px dashed rgba(235,211,166,.7);color:#fff;background:rgba(255,255,255,.06)}
.code-btn b{font:500 22px/1 var(--mono);letter-spacing:.08em;color:var(--gold-l)}
.code-btn span{font:500 11px var(--mono)}

/* ---------- Toast ---------- */
.toast{position:fixed;left:50%;top:88px;z-index:420;display:flex;align-items:center;gap:12px;padding:10px 18px 10px 10px;border-radius:16px;background:rgba(23,17,26,.92);color:#fff;box-shadow:0 20px 50px -20px rgba(23,17,26,.7);transform:translate(-50%,-30px) scale(.94);opacity:0;pointer-events:none;transition:transform .5s var(--spring),opacity .3s}
.toast.on{transform:translate(-50%,0);opacity:1}
.toast i{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;font-style:normal;font-size:18px;background:linear-gradient(140deg,#e9cf9d,#c9a26b);color:#fff}
.toast small{display:block;font:500 10px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--gold-l)}
.toast b{font:500 15px/1.3 var(--disp)}

/* ---------- Vidéo de démarrage ---------- */
.boot-vid{position:absolute;left:50%;top:50%;width:min(560px,80vw);transform:translate(-50%,-62%);opacity:0;mix-blend-mode:multiply;pointer-events:none;transition:opacity .6s}
.boot.first .boot-vid{opacity:.55}

/* ---------- Héros : carte d'identité ---------- */
.hg-ctas{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.id-pad{justify-self:end;width:min(380px,100%);display:flex;flex-direction:column;gap:12px;padding:20px;border-radius:24px;background:rgba(255,255,255,.62);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5);border:1px solid #fff;box-shadow:0 40px 80px -50px rgba(40,10,30,.55);position:relative;align-self:end;margin-bottom:12vh}
.id-pad::after{content:"";position:absolute;inset:-1px;border-radius:25px;padding:1px;background:var(--holo);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.id-f{display:flex;flex-direction:column;gap:6px}
.id-f span{font:500 11px var(--mono);color:#6c6066;letter-spacing:.04em}
.id-f input{height:52px;padding:0 16px;border-radius:14px;border:1px solid rgba(23,17,26,.12);background:#fff;font:500 20px var(--disp);letter-spacing:-.02em;color:#17111a;outline:none;transition:border-color .3s,box-shadow .3s}
.id-f input:focus{border-color:var(--wine);box-shadow:0 0 0 4px rgba(255,46,99,.12)}
.id-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.id-logo{position:relative;flex:1;display:flex;align-items:center;gap:10px;height:44px;padding:0 14px;border-radius:12px;border:1px dashed rgba(114,14,40,.35);color:var(--wine);font:500 13px var(--disp);cursor:pointer;transition:background .3s;min-width:0}
.id-logo:hover{background:rgba(114,14,40,.05)}
.id-logo input{position:absolute;inset:0;opacity:0;cursor:pointer}
.id-logo .ico{width:18px;height:18px;flex:none}
.id-logo span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.id-logo:focus-within{outline:2px solid var(--signal);outline-offset:2px}
.id-x{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:rgba(23,17,26,.06)}
.id-x .ico{width:16px;height:16px}
.chip{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px;border-radius:10px;border:1px solid rgba(23,17,26,.1);background:rgba(255,255,255,.8);font:500 12.5px/1 var(--disp);color:#17111a;transition:background .3s,border-color .3s,color .3s,transform .3s var(--spring);cursor:pointer}
.chip:hover{border-color:var(--wine);color:var(--wine);transform:translateY(-1px)}
.chip .ico{width:14px;height:14px}
.id-note{font-size:11.5px;line-height:1.45;color:#8b7f85}

/* ---------- Mode léger ---------- */
.lite-video{display:none}
html.lite .lite-video{display:block;position:sticky;top:0;width:100%;height:100svh;object-fit:cover;background:#f3ece6 center/cover no-repeat}
html.lite .hangar canvas.gl{display:none}
html.lite .hangar{height:110vh}
html.lite #build-gl,html.lite #final-gl{display:none}
html.lite .nb-stage{background:radial-gradient(80% 70% at 50% 40%,#fff,#efe8e4)}
html.lite .nb-stage::before{content:"";position:absolute;inset:18% 20%;border-radius:50%;border:1px dashed rgba(114,14,40,.25);animation:spinang2 30s linear infinite}
html.lite .final{background:radial-gradient(90% 70% at 50% 100%,#3a0f22,#120710 70%)}

/* ---------- 03 · NOVA construit votre événement ---------- */
.nb-grid{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(0,1.5fr) minmax(280px,.8fr);gap:18px;align-items:stretch}
.nb-chat{display:flex;flex-direction:column;border-radius:26px;background:rgba(255,255,255,.78);border:1px solid #fff;box-shadow:0 40px 80px -50px rgba(40,10,30,.4);overflow:hidden;min-height:560px}
.nb-log{flex:1;min-height:0;max-height:440px;overflow-y:auto;padding:18px 18px 10px;display:flex;flex-direction:column;gap:10px;scrollbar-width:thin;overscroll-behavior:contain}
.nmsg{animation:pop .35s var(--ease-out)}
.nmsg.bot{align-self:flex-start;max-width:88%}
.nmsg.me{max-width:88%}
.nmsg.typing{letter-spacing:.3em;animation:typing 1s steps(3) infinite}
@keyframes typing{50%{opacity:.4}}
.nb-quick{display:flex;flex-wrap:wrap;gap:6px;padding:4px 18px 12px}
.nb-quick:empty{display:none}
.nb-quick .chip{height:32px;font-size:12px;background:#fff}
.nb-form{display:flex;gap:8px;padding:12px;border-top:1px solid rgba(23,17,26,.07);background:rgba(255,255,255,.7)}
.nb-form input{flex:1;min-width:0;height:46px;padding:0 14px;border-radius:12px;border:1px solid rgba(23,17,26,.1);background:#fff;font:400 15px var(--disp);outline:none}
.nb-form input:focus{border-color:var(--wine);box-shadow:0 0 0 4px rgba(255,46,99,.1)}
.nb-form .btn{width:46px;height:46px;padding:0;justify-content:center;flex:none}
.nb-form .btn .ico{width:18px;height:18px;margin:0}
.nb-stage{position:relative;border-radius:26px;overflow:hidden;background:radial-gradient(90% 80% at 50% 30%,#ffffff 0%,#f3ede9 60%,#e9e1dc 100%);border:1px solid #fff;box-shadow:0 40px 80px -50px rgba(40,10,30,.45);min-height:560px}
.nb-stage canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}
.nb-stage::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(114,14,40,.05) 1px,transparent 1px) 0 0/100% 32px;-webkit-mask:linear-gradient(transparent 60%,#000);mask:linear-gradient(transparent 60%,#000)}
.b-hud{position:absolute;left:14px;right:14px;top:14px;z-index:2;display:flex;flex-wrap:wrap;gap:6px}
.b-hud span{font:500 10.5px/1 var(--mono);letter-spacing:.06em;padding:7px 9px;border-radius:9px;background:rgba(255,255,255,.75);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#a0959a;border:1px solid rgba(23,17,26,.06);transition:all .4s var(--ease-out)}
.b-hud span.on{background:#17111a;color:#fff;border-color:#17111a;animation:pop .4s var(--ease-out)}
.b-live{position:absolute;left:16px;bottom:14px;z-index:2;display:flex;align-items:center;gap:8px;font:500 10.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--wine)}
.b-live i{width:8px;height:8px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 4px rgba(255,46,99,.15);animation:blinkk 1.2s steps(2) infinite}
.nb-brief{display:flex;flex-direction:column;padding:20px;border-radius:26px;background:rgba(255,255,255,.78);border:1px solid #fff;box-shadow:0 40px 80px -50px rgba(40,10,30,.4)}
.br-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px}
.br-top .code b{color:#17111a;font-weight:500}
.st-ok:not(.ready) i{background:var(--gold);box-shadow:0 0 0 3px rgba(201,162,107,.2);animation:blinkk 1.2s steps(2) infinite}
.nb-brief .st-ok:not(.ready){color:var(--gold-d)}
.nb-brief .gauge{margin-bottom:4px}
.br-acts{display:flex;flex-direction:column;gap:8px;margin-top:auto}
.br-acts .btn{justify-content:center}
@media (max-width:1240px){
  .nb-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .nb-stage{grid-column:1/-1;order:-1;min-height:440px}
  .nb-chat{min-height:480px}
}
@media (max-width:760px){
  .nb-grid{grid-template-columns:1fr;gap:12px}
  .nb-stage{min-height:min(92vw,400px);border-radius:20px}
  .nb-chat{min-height:0}
  .nb-log{max-height:300px;min-height:180px}
  .b-hud span{font-size:9.5px;padding:6px 7px}
}

/* ---------- 08 · Calendrier holographique ---------- */
.cal-holo{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;perspective:1600px}
.cal-m{position:relative;padding:18px;border-radius:22px;background:linear-gradient(160deg,rgba(255,255,255,.88),rgba(255,255,255,.55));border:1px solid #fff;box-shadow:0 30px 60px -44px rgba(40,10,30,.5);transform:rotateX(14deg) translateY(30px);transform-origin:50% 100%;opacity:0;transition:transform 1s var(--ease-out),opacity .8s;transition-delay:calc(var(--mi) * .1s)}
.cal-m::before{content:"";position:absolute;inset:-1px;border-radius:23px;padding:1px;background:var(--holo);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.8}
.cal-m::after{content:"";position:absolute;left:10%;right:10%;bottom:-18px;height:18px;background:radial-gradient(50% 100% at 50% 0,rgba(255,46,99,.22),transparent);filter:blur(6px);pointer-events:none}
.cal-holo.in .cal-m,.no-js .cal-m{transform:none;opacity:1}
.cal-m h3{display:flex;align-items:baseline;gap:8px;font-size:22px;margin:0 0 12px}
.cal-m h3 small{font:500 11px var(--mono);color:#8b7f85;letter-spacing:.06em}
.cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cw{font:500 10px/1 var(--mono);color:#a0959a;text-align:center;padding:4px 0 6px}
.cd{position:relative;aspect-ratio:1;border-radius:9px;display:grid;place-items:center;font:500 12.5px/1 var(--mono);letter-spacing:-.02em;border:1px solid transparent;transition:transform .3s var(--spring),background .3s,box-shadow .3s}
.cd.libre{background:rgba(34,197,94,.08);color:#17111a;border-color:rgba(34,197,94,.22);cursor:pointer}
.cd.libre:hover,.cd.limite:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 10px 20px -10px rgba(114,14,40,.5);background:#fff}
.cd.limite{background:rgba(201,162,107,.14);color:#6b5230;border-color:rgba(201,162,107,.4);cursor:pointer}
.cd.limite::after{content:"";position:absolute;top:4px;right:4px;width:4px;height:4px;border-radius:50%;background:var(--gold-d)}
.cd.complet{background:repeating-linear-gradient(135deg,rgba(114,14,40,.08) 0 4px,transparent 4px 8px);color:#b9a9b0;text-decoration:line-through}
.cd.passe{color:#d1c8cc}
.cd.sel{background:#17111a!important;color:#fff;border-color:#17111a;box-shadow:0 0 0 4px rgba(255,46,99,.25),0 0 22px rgba(255,46,99,.4);transform:scale(1.1)}
.cd:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.cal-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-top:22px}
.cal-leg{display:flex;flex-wrap:wrap;gap:16px;font:500 11.5px var(--mono);color:#6c6066}
.cal-leg span{display:flex;align-items:center;gap:7px}
.cal-leg span::before{content:"";width:12px;height:12px;border-radius:4px}
.cal-leg .libre::before{background:rgba(34,197,94,.25);border:1px solid rgba(34,197,94,.5)}
.cal-leg .limite::before{background:rgba(201,162,107,.35);border:1px solid var(--gold)}
.cal-leg .complet::before{background:repeating-linear-gradient(135deg,rgba(114,14,40,.25) 0 3px,transparent 3px 6px);border:1px solid rgba(114,14,40,.2)}
.cal-pick{display:flex;align-items:center;gap:14px;padding:8px 8px 8px 18px;border-radius:999px;background:#fff;box-shadow:0 20px 40px -24px rgba(40,10,30,.5);animation:pop .4s var(--ease-out)}
.cal-pick[hidden]{display:none}
.cal-pick span{font-size:14px}
.cal-pick b{font:500 14px var(--mono);color:var(--wine)}
@media (max-width:1100px){.cal-holo{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){
  .cal-holo{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -20px;padding:4px 20px 26px;gap:12px;scrollbar-width:none}
  .cal-holo::-webkit-scrollbar{display:none}
  .cal-m{flex:0 0 86%;scroll-snap-align:center}
  .cal-pick{width:100%;justify-content:space-between;border-radius:18px}
}

/* ---------- 12 · Le final ---------- */
.final{position:relative;min-height:100svh;background:#1a0d1c;color:#f3ecef;overflow:hidden;display:flex;align-items:flex-end}
.final canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}
.fn-ui{position:relative;z-index:2;padding-top:120px;padding-bottom:9vh;display:flex;flex-direction:column;align-items:flex-start;gap:14px;pointer-events:none}
.fn-ui>*{pointer-events:auto}
.fn-ui .h-l{color:#fff;max-width:760px;margin:0}
.fn-ui .h-l em{color:var(--gold-l)}
.fn-ui p{color:#cbbdc3;max-width:520px;margin:0}
.fn-acts{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:10px}
.fn-name{font:500 12px var(--mono);letter-spacing:.08em;color:var(--gold-l)}
.fn-count{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);font:500 clamp(120px,22vw,300px)/1 var(--disp);letter-spacing:-.06em;color:#fff;text-shadow:0 0 60px rgba(255,46,99,.7);opacity:0;pointer-events:none;transition:opacity .4s}
.fn-count.on{opacity:1}
.fn-count.pulse{animation:fnPulse .9s var(--ease-out)}
.fn-count.out{opacity:0;transition:opacity 1.2s}
@keyframes fnPulse{from{transform:translate(-50%,-50%) scale(1.35);filter:blur(4px)}}
.final.playing .fn-ui .h-l,.final.playing .fn-ui p{opacity:.15;transition:opacity .8s}

/* ---------- Boutique : prix déchiffrés au survol ---------- */
.pcard .price{transition:filter .5s,opacity .5s}
@media (hover:hover){
  .pcard:not(.rv-price) .price{filter:blur(7px);opacity:.55}
  .pcard:not(.rv-price) .price::after{content:"";}
}
.pcard.rv-price .price{filter:none;opacity:1}
.pcard .price .pv{display:inline-block}

/* ---------- Compagnon NOVA ---------- */
.nova-drone{position:fixed;left:18px;bottom:16px;z-index:160;display:flex;flex-direction:column;align-items:flex-start;pointer-events:none;will-change:transform}
.nova-drone>*{pointer-events:auto}
.nv-body{position:relative;width:80px;height:80px;border-radius:50%;padding:0;background:none;cursor:pointer;transition:transform .4s var(--spring)}
.nv-body:hover{transform:scale(1.08)}
.nv-body:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.nv-gl{position:absolute;inset:0;width:80px!important;height:80px!important;display:none}
.nova-drone.gl .nv-gl{display:block}
.nv-svg{width:80px;height:80px;display:none;filter:drop-shadow(0 10px 14px rgba(40,10,30,.3))}
.nova-drone.flat .nv-svg{display:block}
.nova-drone.flat .nv-body{animation:hover 3s ease-in-out infinite}
@keyframes hover{50%{transform:translateY(-6px)}}
.nv-svg .sk{fill:#fbf9f7;stroke:rgba(23,17,26,.12);stroke-width:1}
.nv-svg .vz{fill:#1a0a0f}
.nv-svg .ey circle{fill:#ff2e63;filter:drop-shadow(0 0 3px #ff2e63)}
.nv-svg .an{stroke:#720E28;stroke-width:2}
.nv-svg .tip{fill:#ff2e63}
.nv-svg .sh{fill:rgba(40,10,30,.18)}
.nova-drone.happy .nv-svg .hd{animation:nvHop .9s var(--spring)}
@keyframes nvHop{40%{transform:translateY(-10px) rotate(-8deg)}}
.nv-say{position:relative;max-width:min(270px,calc(100vw - 110px));margin:0 0 8px 6px;padding:11px 32px 11px 14px;border-radius:16px 16px 16px 4px;background:rgba(23,17,26,.92);color:#fff;font:400 13.5px/1.45 var(--disp);box-shadow:0 20px 40px -20px rgba(23,17,26,.6);opacity:0;transform:translateY(8px) scale(.96);transform-origin:0 100%;transition:opacity .3s,transform .4s var(--spring);pointer-events:none}
.nv-say.on{opacity:1;transform:none;pointer-events:auto}
.nv-say p{margin:0;min-height:1.45em}
.nv-mute{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:7px;display:grid;place-items:center;font-size:11px;color:#bfb3b8;background:rgba(255,255,255,.08)}
.nova-drone.bye{opacity:0;transform:translateY(30px)!important;transition:opacity .4s,transform .5s}
html.game-on .nova-drone,html.game-on .fab{display:none}
@media (max-width:760px){
  .nova-drone{left:10px;bottom:10px}
  .nv-body,.nv-gl,.nv-svg{width:62px!important;height:62px!important}
  .nv-say{font-size:12.5px}
  body.has-bar .nova-drone{bottom:84px}
}
@media print{.nova-drone,.toast,.tray{display:none!important}}

/* ---------- Mini-jeu ---------- */
html.game-on{overflow:hidden}
.game{position:fixed;inset:0;z-index:500;background:#f3ece6;touch-action:none}
.game-gl{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}
.game-hud{position:absolute;left:14px;right:14px;top:14px;display:flex;gap:8px;align-items:stretch;pointer-events:none}
.game-hud>div{padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.75);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid #fff;display:flex;flex-direction:column;gap:6px}
.game-hud>div b{font:500 20px/1 var(--mono);letter-spacing:-.04em;color:#17111a}
.game-hud>div.ok b{color:#1f8a5e}
.game-hud .g-x{margin-left:auto;width:46px;border-radius:14px;background:rgba(255,255,255,.85);display:grid;place-items:center;font-size:16px;pointer-events:auto}
.game-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,calc(100% - 32px));padding:26px;border-radius:26px;background:rgba(255,255,255,.88);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #fff;box-shadow:0 40px 90px -40px rgba(40,10,30,.6);text-align:center;animation:pop .5s var(--ease-out)}
.game-card[hidden]{display:none}
.game-card h3{font-size:32px;margin:10px 0 8px}
.game-card p{color:#4c4248;margin:0 0 10px}
.game-card .g-help{font:500 11.5px var(--mono);color:#8b7f85}
.game-card .btn{margin-top:8px}
.g-acts{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
@media (max-width:560px){.game-hud>div{padding:8px 10px}.game-hud>div b{font-size:16px}}
.nova-drone{transition:opacity .6s}
.nova-drone.wait{opacity:0;visibility:hidden}

/* ---------- Configurateur : poste de pilotage ---------- */
.viewer{background:radial-gradient(80% 70% at 50% 38%,#ffffff 0%,#f3ede9 60%,#e7dfda 100%);border:1px solid #fff;box-shadow:0 40px 80px -50px rgba(40,10,30,.5)}
.viewer::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(rgba(114,14,40,.05) 1px,transparent 1px) 0 0/100% 28px;-webkit-mask:linear-gradient(transparent 55%,#000);mask:linear-gradient(transparent 55%,#000)}
.viewer-hud{position:absolute;inset:12px;z-index:2;pointer-events:none}
.viewer-hud i{position:absolute;width:18px;height:18px;border:1.5px solid rgba(114,14,40,.45)}
.viewer-hud i:nth-child(1){left:0;top:0;border-right:0;border-bottom:0}
.viewer-hud i:nth-child(2){right:0;top:0;border-left:0;border-bottom:0}
.viewer-hud i:nth-child(3){left:0;bottom:0;border-right:0;border-top:0}
.viewer-hud i:nth-child(4){right:0;bottom:0;border-left:0;border-top:0}
.vh-st{position:absolute;right:28px;top:4px;font:500 10px/1 var(--mono);letter-spacing:.12em;color:var(--wine);display:flex;align-items:center;gap:7px}
.vh-st::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 3px rgba(255,46,99,.15);animation:blinkk 1.2s steps(2) infinite}
.viewer .hint3d{background:rgba(23,17,26,.75);color:#fff;font-family:var(--mono);letter-spacing:.08em;left:22px;top:22px}
.seg{background:rgba(23,17,26,.75)}
.seg button{font-family:var(--mono)}
.ar-btn{position:absolute;right:16px;top:40px;z-index:4;display:flex;align-items:center;gap:8px;height:42px;padding:0 6px 0 12px;border-radius:13px;background:linear-gradient(120deg,#8C1433,#5a0a1f);color:#fff;font:500 13px var(--disp);box-shadow:0 14px 30px -12px rgba(114,14,40,.7);animation:pop .5s var(--ease-out)}
.ar-btn[hidden]{display:none}
.ar-btn .ico{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
.ar-btn b{font:500 10.5px var(--mono);padding:6px 7px;border-radius:8px;background:rgba(255,255,255,.18)}
.ar-mv{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;left:0;top:0}
.pricebox{background:#17111a;border-radius:22px;box-shadow:0 30px 60px -36px rgba(23,17,26,.8)}
.pb-total{font-family:var(--mono)!important;letter-spacing:-.04em}
html.lite .final.playing .fn-name{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);font:700 clamp(36px,8vw,96px)/1 var(--disp);letter-spacing:-.04em;color:#fff;text-shadow:0 0 40px rgba(255,46,99,.8);white-space:nowrap}
.bay.calendar{overflow-x:clip}
/* Héros sur tablette et mobile : le vaisseau en haut, le texte et la carte compacte en bas */
@media (max-width:1100px){
  .id-pad{justify-self:stretch;width:auto;max-width:560px;margin:14px 0 0;padding:14px;gap:10px;align-self:auto}
  .hg-in{align-content:end;gap:0}
}
@media (max-width:760px){
  .hg-copy .lead{display:none}
  .hg-copy .h-xl{font-size:clamp(36px,10vw,60px)}
  .hg-ctas{margin-top:16px;gap:8px;flex-wrap:nowrap}
  .hg-ctas .btn{padding-left:14px;padding-right:14px;font-size:13px;white-space:nowrap}
  .id-pad .hud-k,.id-f span,.id-note{display:none}
  .id-f input{height:46px;font-size:17px}
  .id-pad .id-row{flex-wrap:nowrap}
  .id-pad .id-row:last-of-type .chip{flex:1;justify-content:center;font-size:12px;padding:0 8px}
  .id-logo{height:40px;font-size:12.5px}
  .id-x{width:40px;height:40px}
  .hg-in{padding-bottom:84px}
  .hg-copy::before{display:none}
  .id-pad{background:rgba(255,255,255,.82)}
}
@media (max-width:380px){.hg-ctas .btn .ico{display:none}}
@media (max-width:760px){.id-pad{margin-right:66px}.hg-ctas{margin-right:0}}

/* ---------- v7 · Visionneuse 3D produit : commandes ---------- */
.viewer .photo{pointer-events:none;z-index:0}
.viewer.show-photo .photo{pointer-events:auto;z-index:2}
.viewer canvas{z-index:1}
.viewer-views{position:absolute;right:14px;top:50%;transform:translateY(-50%);z-index:4;display:flex;flex-direction:column;gap:4px;padding:5px;border-radius:14px;background:rgba(23,17,26,.78);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.viewer-views[hidden]{display:none}
.viewer-views button{min-width:44px;height:32px;padding:0 8px;border-radius:9px;font:500 11px/1 var(--mono);letter-spacing:.04em;color:#e9e0e3;transition:background .2s,color .2s}
.viewer-views button:hover{background:rgba(255,255,255,.12)}
.viewer-views button.on,.viewer-views button[aria-pressed=true]{background:#fff;color:#17111a}
.viewer-views i{height:1px;background:rgba(255,255,255,.15);margin:3px 4px}
.viewer.show-photo .viewer-views,.viewer.show-photo .viewer-fs{display:none}
.viewer-fs{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:4;display:none;align-items:center;gap:8px;height:38px;padding:0 14px;border-radius:12px;background:#fff;color:#17111a;font:500 12.5px var(--disp);box-shadow:0 10px 24px -12px rgba(23,17,26,.6)}
.viewer-fs .ico{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
.viewer.fs{position:fixed!important;inset:0;z-index:600;border-radius:0!important;aspect-ratio:auto!important;margin:0}
.viewer.fs canvas{touch-action:none}
.viewer.fs .viewer-fs{bottom:auto;top:calc(14px + env(safe-area-inset-top));background:#17111a;color:#fff}
html.viewer-fs{overflow:hidden}
html.viewer-fs .nova-drone,html.viewer-fs .fab,html.viewer-fs .dock,html.viewer-fs .mbar{display:none!important}
@media (pointer:coarse){.viewer-fs{display:flex}.viewer .hint3d{display:none}}
@media (max-width:760px){
  .viewer-views{top:12px;right:12px;left:12px;transform:none;flex-direction:row;overflow-x:auto;scrollbar-width:none;justify-content:flex-start}
  .viewer-views i{width:1px;height:auto;margin:4px 2px}
  .viewer-views button{min-width:40px;flex:none}
  .ar-btn{top:auto;bottom:60px}
  .vh-st{display:none}
}

/* ---------- v7 · Performance : pas de flou d'arrière-plan au-dessus des scènes 3D animées ---------- */
.tele,.id-pad,.b-hud span,.game-hud>div,.game-card,.viewer-views,.tp,.tw-dial,.hb-lab,.msn-id,.hangar .btn.ghost,.seg{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.id-pad{background:rgba(255,255,255,.9)}
.tele{background:rgba(255,255,255,.82)}
.tp{background:rgba(255,255,255,.9)}
.b-hud span{background:rgba(255,255,255,.92)}
.game-hud>div{background:rgba(255,255,255,.9)}
.game-card{background:rgba(255,255,255,.96)}
.viewer-views,.seg{background:rgba(23,17,26,.88)}
.hangar .btn.ghost{background:rgba(255,255,255,.85)}
.dock{-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4)}
section.bay:not(.nova){content-visibility:auto;contain-intrinsic-size:auto 900px}

/* =====================================================================
   v7 · Ouverture : saut en hyperespace à travers un tunnel de murs LED
   ===================================================================== */
@property --hole{syntax:'<length-percentage>';inherits:false;initial-value:0%}
.boot{--cut:0%;position:fixed;inset:0;z-index:300;pointer-events:none;overflow:hidden;background:radial-gradient(70% 70% at 50% 50%,#2a0c19 0%,#12060b 55%,#07030a 100%);clip-path:none!important;-webkit-mask:radial-gradient(circle at 50% 50%,transparent var(--hole),#000 calc(var(--hole) + 1px));mask:radial-gradient(circle at 50% 50%,transparent var(--hole),#000 calc(var(--hole) + 1px));--hole:0%;transition:--hole .85s cubic-bezier(.7,0,.2,1);animation:bfail 0s 5s forwards}
.boot::before,.boot::after,.boot-laser{display:none}
.boot.js{animation:none}
.boot.open{--hole:150%}
.boot.gone{visibility:hidden}
.boot.closing{--hole:0%;transition-duration:.45s;visibility:visible}
@keyframes bfail{to{visibility:hidden}}
.wp-scene{position:absolute;inset:0;perspective:520px;perspective-origin:50% 50%;overflow:hidden}
.wp-tunnel{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translateZ(-300px)}
.wp-ring{position:absolute;left:0;top:0;width:86vmin;height:56vmin;margin:-28vmin 0 0 -43vmin;border-radius:18px;transform:translateZ(calc(var(--i) * -300px)) rotateZ(calc(var(--i) * 4deg));border:2px solid rgba(255,46,99,.75);box-shadow:0 0 22px rgba(255,46,99,.35),inset 0 0 22px rgba(255,46,99,.2);background:radial-gradient(rgba(255,210,225,.18) 1px,transparent 1.6px) 0 0/9px 9px;opacity:calc(1 - var(--i) * .055)}
.wp-ring:nth-child(3n){border-color:rgba(235,211,166,.8);box-shadow:0 0 22px rgba(201,162,107,.35),inset 0 0 22px rgba(201,162,107,.18)}
.wp-ring:nth-child(3n+1){border-color:rgba(155,107,214,.6);box-shadow:0 0 22px rgba(155,107,214,.3)}
.wp-warp{position:absolute;left:50%;top:50%;width:0;height:0;opacity:0}
.wp-warp b{position:absolute;left:0;top:0;width:var(--l);height:2px;border-radius:2px;transform-origin:0 50%;background:linear-gradient(90deg,transparent,rgba(255,220,232,.95));transform:rotate(var(--a)) translateX(4vmax) scaleX(.1);opacity:0}
.wp-logo{position:absolute;left:50%;top:50%;width:min(210px,40vmin);aspect-ratio:1;margin:calc(min(210px,40vmin) / -2) 0 0 calc(min(210px,40vmin) / -2);transform-style:preserve-3d;perspective:600px;opacity:0}
.wl{position:absolute;inset:0;display:grid;place-items:center;color:#fff}
.wl svg{width:100%;height:auto}
.wl.l1{color:#fff;filter:drop-shadow(0 0 18px rgba(255,46,99,.9))}
.wl.l2{color:#FF2E63;transform:translateZ(-14px);opacity:.8}
.wl.l3{color:#C9A26B;transform:translateZ(-28px);opacity:.55}
.wp-hud{position:absolute;left:50%;bottom:max(9vh,40px);transform:translateX(-50%);display:grid;justify-items:center;gap:8px;color:#e9dfe3;text-align:center;opacity:0}
.wp-hud small{font:500 10px/1 var(--mono);letter-spacing:.24em;text-transform:uppercase;color:#EBD3A6}
.wp-pct{font:500 34px/1 var(--mono);letter-spacing:-.04em;color:#fff;font-variant-numeric:tabular-nums}
.wp-msg{font:400 12px/1 var(--mono);letter-spacing:.08em;color:#b9a7ae}
.wp-flash{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,#fff 0%,rgba(255,235,242,.9) 30%,transparent 70%);opacity:0}

/* Première visite : le saut complet (2 s) */
.boot.first.run .wp-tunnel{animation:wpFly 2s cubic-bezier(.55,0,.25,1) forwards}
.boot.first.run .wp-warp{animation:wpFade 2s ease forwards}
.boot.first.run .wp-warp b{animation:wpStreak .9s cubic-bezier(.4,0,1,1) var(--d) infinite}
.boot.first.run .wp-logo{animation:wpLogo 2s cubic-bezier(.3,0,.2,1) forwards}
.boot.first.run .wp-hud{animation:wpHud 2s ease forwards}
.boot.first.run .wp-flash{animation:wpFlash 2s ease forwards}
@keyframes wpFly{0%{transform:translateZ(-300px) rotateZ(0)}100%{transform:translateZ(4500px) rotateZ(50deg)}}
@keyframes wpFade{0%,15%{opacity:0}35%,85%{opacity:1}100%{opacity:0}}
@keyframes wpStreak{0%{transform:rotate(var(--a)) translateX(3vmax) scaleX(.05);opacity:0}25%{opacity:1}100%{transform:rotate(var(--a)) translateX(70vmax) scaleX(1.6);opacity:0}}
@keyframes wpLogo{0%{opacity:0;transform:translateZ(-1600px) rotateY(-70deg) rotateX(20deg)}35%{opacity:1}68%{transform:translateZ(0) rotateY(0) rotateX(0)}82%{opacity:1;transform:translateZ(40px) scale(1.04)}100%{opacity:0;transform:translateZ(520px) scale(1.4)}}
@keyframes wpHud{0%,8%{opacity:0;transform:translate(-50%,10px)}20%,78%{opacity:1;transform:translate(-50%,0)}100%{opacity:0}}
@keyframes wpFlash{0%,80%{opacity:0}90%{opacity:.85}100%{opacity:0}}
/* Visites suivantes : simple passage à travers le logo (0,5 s) */
.boot:not(.first) .wp-scene,.boot:not(.first) .wp-warp,.boot:not(.first) .wp-hud{display:none}
.boot:not(.first){background:radial-gradient(60% 60% at 50% 50%,#2a0c19,#0d0508)}
.boot:not(.first).run .wp-logo{animation:wpQuick .5s cubic-bezier(.5,0,.3,1) forwards}
@keyframes wpQuick{0%{opacity:1;transform:scale(.6)}60%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(2.6)}}
.boot.closing .wp-logo{animation:none;opacity:1;transform:scale(.8);transition:opacity .2s .2s}
@media (prefers-reduced-motion:reduce){.boot{display:none}}

/* =====================================================================
   v7 · 02 · Quatre métiers : chaque carte montre ce que nous livrons
   ===================================================================== */
.m7-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.m7{position:relative;display:flex;flex-direction:column;border-radius:26px;background:#fff;border:1px solid rgba(23,17,26,.06);box-shadow:0 40px 70px -54px rgba(40,10,30,.55);overflow:hidden;transition:transform .5s var(--spring),box-shadow .4s}
.m7:hover{transform:translateY(-6px);box-shadow:0 50px 80px -50px rgba(114,14,40,.55)}
.m7::after{content:"";position:absolute;inset:0;border-radius:26px;padding:1px;background:var(--holo);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .4s;pointer-events:none}
.m7:hover::after{opacity:1}
.m7-link{position:absolute;inset:0;z-index:3;border-radius:26px}
.m7-link:focus-visible{outline:2px solid var(--signal);outline-offset:3px}
.m7-scene{position:relative;aspect-ratio:16/8.4;overflow:hidden;background:radial-gradient(90% 90% at 50% 20%,#2b0d1a 0%,#14070d 70%);transition:transform .6s var(--ease-out)}
.m7-scene::after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px) 0 0/100% 4px;pointer-events:none}
.m7-stand .m7-scene,.m7-web .m7-scene{background:radial-gradient(90% 90% at 50% 20%,#ffffff 0%,#efe8e4 75%)}
.m7-body{display:flex;flex-direction:column;gap:10px;padding:22px 24px 22px;flex:1}
.m7-top{display:flex;justify-content:space-between;align-items:center}
.m7-n{font:500 12px/1 var(--mono);color:var(--wine);letter-spacing:.1em}
.m7 h3{font-size:clamp(24px,2.2vw,32px);margin:0;letter-spacing:-.03em}
.m7 p{margin:0;color:#4c4248;font-size:15px;max-width:460px}
.m7-get{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.m7-get li{display:flex;align-items:center;gap:7px;font:500 12.5px/1 var(--disp);padding:8px 11px;border-radius:10px;background:rgba(114,14,40,.05);color:#2a1e24}
.m7-get li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--signal)}
.m7-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-top:auto;padding-top:12px;border-top:1px solid rgba(23,17,26,.07)}
.m7-price{display:flex;align-items:baseline;gap:6px}
.m7-price small{font:500 10.5px var(--mono);color:#8b7f85;letter-spacing:.06em}
.m7-price b{font:500 22px/1 var(--mono);letter-spacing:-.04em;color:#17111a}
.m7-go{display:flex;align-items:center;gap:8px;font:500 13px var(--disp);color:var(--wine)}
.m7-go .ico{width:16px;height:16px;transition:transform .4s var(--spring)}
.m7:hover .m7-go .ico{transform:translateX(5px)}
@media (max-width:900px){.m7-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin:0 -20px;padding:4px 20px 18px;scrollbar-width:none}.m7-grid::-webkit-scrollbar{display:none}.m7{flex:0 0 min(84vw,420px);scroll-snap-align:center}.m7 h3{font-size:24px}.m7 p{font-size:14px}}
.bay.modules{overflow-x:clip}
/* Les scènes ne s'animent que visibles (classe .play) */
.m7:not(.play) .m7-scene *{animation-play-state:paused!important}

/* --- Scène 1 : mur LED, enceintes, faisceaux, public --- */
.sc-led{position:absolute;inset:0}
.led-wall{position:absolute;left:50%;top:13%;width:58%;aspect-ratio:12/7;transform:translateX(-50%);display:grid;grid-template-columns:repeat(12,1fr);gap:2px;padding:4px;border-radius:4px;background:#0a0306;box-shadow:0 0 0 2px #2a1a20,0 0 60px rgba(255,46,99,.35)}
.led-wall i{border-radius:1px;background:#3b0716;animation:px 2.6s linear infinite;animation-delay:calc(var(--k) * -61ms)}
@keyframes px{0%{background:#3b0716}25%{background:#8C1433}45%{background:#ff2e63}60%{background:#C9A26B}80%{background:#5a0a1f}100%{background:#3b0716}}
.led-wall b{position:absolute;inset:0;display:grid;place-items:center;font:700 clamp(14px,2.4vw,26px)/1 var(--disp);letter-spacing:.02em;color:#fff;text-shadow:0 0 18px rgba(255,255,255,.7);mix-blend-mode:screen;animation:ledTxt 6s steps(1) infinite}
@keyframes ledTxt{0%{opacity:1}45%{opacity:1}50%{opacity:0}55%{opacity:1}100%{opacity:1}}
.led-legs{position:absolute;left:50%;top:77%;width:30%;height:14%;transform:translateX(-50%);display:flex;justify-content:space-between}
.led-legs i{width:4px;height:100%;background:#4a3a40}
.spk{position:absolute;top:30%;width:8%;aspect-ratio:1/2;border-radius:6px;background:#1d1016;box-shadow:inset 0 0 0 1px #3a2a30;display:grid;place-items:center;gap:2px;padding:6px 0}
.spk.l{left:8%}.spk.r{right:8%}
.spk i{width:62%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#0c0508 30%,#3a2a30 32%,#140a0e 60%);animation:cone .46s ease-in-out infinite alternate}
@keyframes cone{to{transform:scale(1.12)}}
.beams{position:absolute;inset:0;pointer-events:none}
.beams i{position:absolute;top:-10%;width:18%;height:110%;background:linear-gradient(rgba(255,210,230,.35),transparent 80%);clip-path:polygon(45% 0,55% 0,100% 100%,0 100%);transform-origin:50% 0;mix-blend-mode:screen;animation:beam 4s ease-in-out infinite alternate}
.beams i:nth-child(1){left:12%;animation-delay:-1s}.beams i:nth-child(2){left:41%;background:linear-gradient(rgba(235,211,166,.35),transparent 80%)}.beams i:nth-child(3){left:70%;animation-delay:-2.4s}
@keyframes beam{0%{transform:rotate(-18deg)}100%{transform:rotate(18deg)}}
.crowd{position:absolute;left:0;right:0;bottom:-4%;height:22%;display:flex;justify-content:space-around;align-items:flex-end}
.crowd i{width:5.4%;aspect-ratio:1/1.6;border-radius:50% 50% 0 0;background:#0a0306;box-shadow:0 -10px 0 -3px #0a0306;animation:bob 1.1s ease-in-out infinite alternate;animation-delay:calc(var(--k) * -97ms)}
@keyframes bob{to{transform:translateY(-6%)}}

/* --- Scène 2 : stand isométrique qui se monte --- */
.sc-stand{position:absolute;inset:0;display:grid;place-items:center;perspective:900px}
.iso{position:relative;width:46%;aspect-ratio:3/2;transform:rotateX(58deg) rotateZ(-38deg) translateY(4%);transform-style:preserve-3d}
.iso>i{position:absolute;display:block}
.iso .fl{inset:0;background:repeating-linear-gradient(90deg,#e9e2dc 0 18px,#e2d9d2 18px 19px),#ece5df;box-shadow:0 30px 40px -10px rgba(40,10,30,.35);animation:isoIn 6s var(--ease-out) infinite}
.iso .wl-b{left:0;top:-58%;width:100%;height:58%;transform-origin:50% 100%;transform:rotateX(-90deg);background:linear-gradient(#8C1433,#5a0a1f);animation:wallB 6s var(--ease-out) infinite}
.iso .wl-s{left:-58%;top:0;width:58%;height:100%;transform-origin:100% 50%;transform:rotateY(90deg);background:#f6f1ec;box-shadow:inset 0 0 0 1px rgba(23,17,26,.1);animation:wallS 6s var(--ease-out) infinite}
.iso .ban{position:absolute;left:12%;top:10%;width:46%;height:24%;display:grid;place-items:center;background:#17111a;border-radius:2px;animation:ban 6s ease infinite}
.iso .ban b{font:700 clamp(7px,.9vw,11px)/1 var(--disp);letter-spacing:.12em;color:#EBD3A6;white-space:nowrap}
.iso .scr{position:absolute;left:64%;top:16%;width:28%;height:46%;border-radius:2px;background:linear-gradient(120deg,#ff2e63,#9b6bd6,#C9A26B,#ff2e63);background-size:300% 100%;box-shadow:0 0 18px rgba(255,46,99,.6);animation:scr 6s ease infinite,grad 3s linear infinite}
.iso .ctr{left:34%;top:56%;width:32%;height:16%;background:#fff;box-shadow:0 0 0 1px rgba(23,17,26,.12),0 0 24px rgba(255,46,99,.5);transform-style:preserve-3d;animation:ctr 6s var(--ease-out) infinite}
.iso .ctr-t{position:absolute;left:0;top:100%;width:100%;height:120%;transform-origin:50% 0;transform:rotateX(-90deg);background:linear-gradient(#fff,#efe7e1);border-bottom:2px solid #ff2e63}
.iso .plt{left:6%;top:64%;width:10%;height:15%;border-radius:50%;background:radial-gradient(circle,#7fae79,#3f6a42);transform:translateZ(18px);animation:ctr 6s var(--ease-out) infinite}
.iso .spot{width:34%;height:44%;border-radius:50%;background:radial-gradient(circle,rgba(255,200,150,.6),transparent 70%);transform:translateZ(1px);animation:spot 6s ease infinite}
.iso .s1{left:12%;top:14%}.iso .s2{left:52%;top:20%}
@keyframes isoIn{0%{opacity:0;transform:translateZ(-30px)}10%,92%{opacity:1;transform:none}100%{opacity:0}}
@keyframes wallB{0%,10%{transform:rotateX(0deg);opacity:0}24%,92%{transform:rotateX(-90deg);opacity:1}100%{transform:rotateX(-90deg);opacity:0}}
@keyframes wallS{0%,18%{transform:rotateY(0deg);opacity:0}32%,92%{transform:rotateY(90deg);opacity:1}100%{transform:rotateY(90deg);opacity:0}}
@keyframes ban{0%,34%{opacity:0;transform:translateY(-30%)}44%,92%{opacity:1;transform:none}100%{opacity:0}}
@keyframes ctr{0%,46%{opacity:0;transform:translateZ(90px)}56%,92%{opacity:1;transform:translateZ(18px)}100%{opacity:0;transform:translateZ(18px)}}
@keyframes scr{0%,54%{opacity:0}62%,92%{opacity:1}100%{opacity:0}}
@keyframes spot{0%,62%{opacity:0}70%,92%{opacity:1}100%{opacity:0}}
@keyframes grad{to{background-position:200% 0}}
.sc-stand .dim{position:absolute;right:6%;bottom:8%;font:500 10.5px var(--mono);letter-spacing:.08em;color:var(--wine);padding:6px 8px;border-radius:8px;background:rgba(255,255,255,.8);box-shadow:0 0 0 1px rgba(114,14,40,.15)}

/* --- Scène 3 : plan de gala qui se remplit --- */
.sc-gala{position:absolute;inset:0;display:grid;place-items:center}
.plan{position:relative;width:62%;aspect-ratio:16/10;border-radius:10px;background:radial-gradient(circle at 50% 40%,rgba(201,162,107,.18),transparent 70%),repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 1px,transparent 1px 16px),repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,transparent 1px 16px);box-shadow:inset 0 0 0 1px rgba(235,211,166,.25)}
.plan .stg{position:absolute;left:30%;top:4%;width:40%;height:12%;border-radius:4px;background:linear-gradient(90deg,#8C1433,#ff2e63);box-shadow:0 0 20px rgba(255,46,99,.6)}
.plan .tb{position:absolute;width:8.5%;aspect-ratio:1;border-radius:50%;background:#f6efe4;box-shadow:0 0 14px rgba(255,220,170,.5);left:calc(14% + mod(var(--k), 3) * 28%);top:calc(28% + round(down, calc(var(--k) / 3), 1) * 24%);animation:tbIn 6s var(--spring) infinite;animation-delay:calc(var(--k) * 120ms)}
.plan .tb:nth-child(2){left:17%;top:27%}.plan .tb:nth-child(3){left:45.7%;top:27%}.plan .tb:nth-child(4){left:74%;top:27%}
.plan .tb:nth-child(5){left:17%;top:52%}.plan .tb:nth-child(6){left:45.7%;top:52%}.plan .tb:nth-child(7){left:74%;top:52%}
.plan .tb:nth-child(8){left:17%;top:77%}.plan .tb:nth-child(9){left:45.7%;top:77%}.plan .tb:nth-child(10){left:74%;top:77%}
.plan .tb u{position:absolute;left:50%;top:50%;width:26%;aspect-ratio:1;margin:-13% 0 0 -13%;border-radius:50%;background:#C9A26B;transform:rotate(calc(var(--c) * 45deg)) translateY(-260%);opacity:0;animation:chair 6s ease infinite;animation-delay:calc(var(--k) * 120ms + var(--c) * 60ms + 500ms)}
@keyframes tbIn{0%{transform:scale(0);opacity:0}8%,90%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}
@keyframes chair{0%,5%{opacity:0}12%,90%{opacity:1}100%{opacity:0}}
.plan .sweep{position:absolute;inset:-10%;background:radial-gradient(circle at var(--sx,30%) 50%,rgba(255,240,210,.22),transparent 26%);animation:sweep 5s ease-in-out infinite alternate;mix-blend-mode:screen;pointer-events:none}
@keyframes sweep{0%{--sx:20%}100%{--sx:80%}}
@property --sx{syntax:'<percentage>';inherits:false;initial-value:30%}
.sc-gala .cnt{position:absolute;left:6%;bottom:8%;font:500 10.5px var(--mono);letter-spacing:.08em;color:#EBD3A6}
.sc-gala .cnt b{font-weight:500;color:#fff;font-size:14px}

/* --- Scène 4 : site qui se construit, mobile, roll-up --- */
.sc-web{position:absolute;inset:0}
.brw{position:absolute;left:8%;top:12%;width:58%;height:76%;border-radius:10px;background:#fff;box-shadow:0 20px 40px -20px rgba(40,10,30,.45),0 0 0 1px rgba(23,17,26,.06);overflow:hidden}
.brw .bar{display:flex;align-items:center;gap:4px;height:12%;padding:0 8px;background:#f1ece8}
.brw .bar i{width:7px;height:7px;border-radius:50%;background:#d8cfc9}
.brw .bar i:first-child{background:#ff5f57}
.brw .bar span{margin-left:8px;font:500 9px var(--mono);color:#8b7f85}
.brw .pg{position:relative;height:88%;padding:6%;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:10% 38% 1fr;gap:6%}
.brw .pg i{display:block;border-radius:4px;background:#efe9e5;animation:blk 6s ease infinite}
.brw .hd{grid-column:1/-1;animation-delay:.1s!important}
.brw .hero{grid-column:1/-1;background:linear-gradient(120deg,#5a0a1f,#ff2e63)!important;animation-delay:.6s!important}
.brw .c1{animation-delay:1.1s!important}.brw .c2{animation-delay:1.4s!important}.brw .c3{animation-delay:1.7s!important}
.brw .btn7{position:absolute;left:12%;top:42%;width:22%;height:8%;border-radius:20px;background:#fff!important;animation-delay:2.2s!important}
@keyframes blk{0%{opacity:0;transform:translateY(8px)}8%,88%{opacity:1;transform:none}100%{opacity:0}}
.phone{position:absolute;right:20%;top:24%;width:13%;height:62%;border-radius:12px;background:#17111a;padding:6% 1.4%;display:flex;flex-direction:column;gap:6%;box-shadow:0 16px 30px -14px rgba(23,17,26,.6);animation:ph 6s var(--ease-out) infinite}
.phone i{flex:1;border-radius:4px;background:#2d2027}
.phone i:first-child{flex:1.6;background:linear-gradient(160deg,#ff2e63,#5a0a1f)}
@keyframes ph{0%,30%{transform:translateY(20%);opacity:0}40%,90%{transform:none;opacity:1}100%{opacity:0}}
.rollup{position:absolute;right:5%;bottom:10%;width:10%;height:70%;border-radius:2px;background:linear-gradient(#fff,#f6f1ec);box-shadow:0 0 0 1px rgba(23,17,26,.1),0 6px 0 -2px #9a9093;display:grid;place-items:start center;padding-top:20%;transform-origin:50% 100%;animation:ru 6s var(--ease-out) infinite}
.rollup b{font:700 16px/1 var(--disp);color:var(--wine)}
@keyframes ru{0%,48%{transform:scaleY(0)}60%,90%{transform:scaleY(1)}100%{transform:scaleY(0)}}
@media (prefers-reduced-motion:reduce){.m7-scene *{animation:none!important;opacity:1!important}}

/* =====================================================================
   v7 · 08 · Calendrier : pile de mois holographique + console
   ===================================================================== */
.c7{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.85fr);gap:22px;align-items:stretch}
.c7-left{display:flex;flex-direction:column;gap:14px;min-width:0}
.c7-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.c7-sm{display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:12px;background:rgba(255,255,255,.6);border:1px solid rgba(23,17,26,.06);text-align:left;transition:background .3s,border-color .3s,transform .3s var(--spring)}
.c7-sm span{font:500 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#6c6066}
.c7-sm i{display:grid;grid-template-columns:repeat(16,1fr);gap:1.5px}
.c7-sm u{display:block;aspect-ratio:1;border-radius:1px;background:rgba(34,197,94,.45)}
.c7-sm u.limite{background:var(--gold)}.c7-sm u.complet{background:var(--wine)}.c7-sm u.passe{background:rgba(23,17,26,.12)}
.c7-sm:hover{transform:translateY(-2px);border-color:rgba(114,14,40,.3)}
.c7-sm.on{background:#17111a;border-color:#17111a}.c7-sm.on span{color:#EBD3A6}
.c7-deck{--rx:0deg;--ry:0deg;position:relative;display:grid;perspective:1400px;perspective-origin:50% 0%;touch-action:pan-y;user-select:none;padding-bottom:66px;margin-bottom:-56px}
.c7-m{--o:0;grid-area:1/1;position:relative;padding:20px 22px 22px;border-radius:24px;background:linear-gradient(160deg,#fff,#fbf8f6);border:1px solid #fff;box-shadow:0 40px 70px -44px rgba(40,10,30,.55);transform-origin:50% 0;transform:translateY(calc(min(var(--o),3) * 22px)) translateZ(calc(min(var(--o),3) * -90px)) rotateX(var(--rx)) rotateY(var(--ry));opacity:calc(1 - min(var(--o),3) * .28);transition:transform .7s var(--ease-out),opacity .5s,filter .5s;z-index:calc(10 - var(--o));filter:blur(calc(min(var(--o),3) * .6px));pointer-events:none}
.c7-m.on{pointer-events:auto}
.c7-m.past{transform:translateY(-30px) translateZ(120px) rotateX(70deg);opacity:0;pointer-events:none}
.c7-m:not(.on) .c7-g{opacity:.65}
.c7-m::before{content:"";position:absolute;inset:-1px;border-radius:25px;padding:1px;background:var(--holo);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.c7-m.on::after{content:"";position:absolute;left:0;right:0;top:0;height:28%;border-radius:24px 24px 0 0;background:linear-gradient(transparent,rgba(255,46,99,.08),transparent);animation:scan 3.2s linear infinite;pointer-events:none}
.c7-mh{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.c7-mh h3{font-size:30px;margin:0;letter-spacing:-.03em}
.c7-mh h3 small{font:500 12px var(--mono);color:#8b7f85;margin-left:6px}
.c7-mc{font:500 11px var(--mono);color:#1f8a5e}
.c7-mc b{font-size:16px;font-weight:500}
.c7-g{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;transition:opacity .4s}
.c7-w{font:500 10px/1 var(--mono);color:#a0959a;text-align:center;padding:4px 0 6px;text-transform:uppercase;letter-spacing:.06em}
.c7 .cd{position:relative;aspect-ratio:1.7;border-radius:11px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:7px 8px;font:500 13px/1 var(--mono);border:1px solid transparent;transition:transform .35s var(--spring),background .3s,box-shadow .3s,color .3s}
.c7 .cd b{font-weight:500}
.c7 .cd i{width:100%;height:3px;border-radius:2px;background:currentColor;opacity:.35}
.c7 .cd.libre{background:rgba(34,197,94,.07);color:#155e3c;border-color:rgba(34,197,94,.2);cursor:pointer}
.c7 .cd.limite{background:rgba(201,162,107,.13);color:#6b5230;border-color:rgba(201,162,107,.42);cursor:pointer}
.c7 .cd.limite i{background:linear-gradient(90deg,var(--gold-d) 40%,rgba(156,119,65,.2) 40%);opacity:1}
.c7 .cd.complet{background:repeating-linear-gradient(135deg,rgba(114,14,40,.08) 0 4px,transparent 4px 8px);color:#b39ca6}
.c7 .cd.complet b{text-decoration:line-through}
.c7 .cd.passe{color:#d6cdd1}.c7 .cd.passe i{opacity:0}
.c7 .cd.we:not(.passe):not(.complet){box-shadow:inset 0 -2px 0 rgba(114,14,40,.12)}
.c7 .cd.today{outline:2px solid var(--signal);outline-offset:1px}
.c7 .cd.libre:hover,.c7 .cd.limite:hover{transform:translateY(-4px) scale(1.06);background:#fff;box-shadow:0 14px 24px -12px rgba(114,14,40,.55)}
.c7 .cd.sel{background:#17111a!important;color:#fff!important;border-color:#17111a;transform:translateY(-3px) scale(1.08);box-shadow:0 0 0 4px rgba(255,46,99,.25),0 0 30px rgba(255,46,99,.45)}
.c7 .cd.sel i{background:var(--signal);opacity:1}
.c7-nav{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.c7-arr{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#fff;border:1px solid rgba(23,17,26,.1);color:#17111a;transition:background .3s,color .3s}
.c7-arr:first-child .ico{transform:rotate(180deg)}
.c7-arr .ico{width:16px;height:16px}
.c7-arr:hover:not(:disabled){background:#17111a;color:#fff}
.c7-arr:disabled{opacity:.35}
.c7-pos{font:500 12px var(--mono);color:#6c6066;min-width:44px;text-align:center}
.c7-nav .cal-leg{margin-left:auto}
/* Console */
.c7-console{position:relative;display:flex;flex-direction:column;gap:18px;padding:22px;border-radius:24px;background:radial-gradient(120% 80% at 100% 0%,#4a0d22 0%,#17111a 60%);color:#efe6ea;box-shadow:0 40px 70px -40px rgba(23,17,26,.75);overflow:hidden}
.c7-console::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:26px 26px;pointer-events:none}
.c7-console>*{position:relative}
.cc-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.c7-console .hud-k{color:var(--gold-l)}
.cc-led{display:flex;align-items:center;gap:7px;font:500 10px var(--mono);color:#9ad9b4;letter-spacing:.06em}
.cc-led i{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e;animation:blinkk 2s steps(2) infinite}
.cc-big{font:500 clamp(32px,3.2vw,46px)/1 var(--disp);letter-spacing:-.04em;margin:6px 0 0;color:#fff}
.cc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}
.cc-stats div{padding:12px;border-radius:14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08)}
.cc-stats b{display:block;font:500 24px/1 var(--mono);color:#fff}
.cc-stats span{font-size:11px;color:#b9a7ae}
.cc-stats div:nth-child(1) b{color:#7ee2a8}.cc-stats div:nth-child(2) b{color:var(--gold-l)}.cc-stats div:nth-child(3) b{color:#ff7aa0}
.cc-k{font:500 10px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#b9a7ae}
.cc-sel{display:flex;flex-direction:column;gap:12px}
.cc-sel[hidden],.cc-empty[hidden]{display:none}
.cc-sel.pop{animation:pop .45s var(--ease-out)}
.cc-date{margin:0;font:500 clamp(26px,2.6vw,36px)/1.05 var(--disp);letter-spacing:-.035em;color:#fff;text-transform:capitalize}
.cc-row{display:flex;align-items:center;gap:10px}
.cc-badge{font:500 11px var(--mono);padding:6px 10px;border-radius:9px;background:rgba(34,197,94,.16);color:#9ff0c1}
.cc-badge.limite{background:rgba(201,162,107,.18);color:var(--gold-l)}
.cc-j{font:500 22px/1 var(--mono);letter-spacing:-.04em;color:var(--signal);text-shadow:0 0 18px rgba(255,46,99,.6)}
.cc-fit{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.cc-fit li{display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:8px;font-size:13px;padding:8px 10px;border-radius:11px;background:rgba(255,255,255,.05)}
.cc-fit li i{width:10px;height:10px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e}
.cc-fit li.no i{background:#f59e0b;box-shadow:0 0 8px #f59e0b}
.cc-fit li small{font:500 10px var(--mono);color:#b9a7ae}
.cc-sel .btn{justify-content:center;margin-top:4px}
.cc-note{font-size:11.5px;color:#9e8c93}
.cc-next{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.cc-chips{display:flex;flex-wrap:wrap;gap:6px}
.c7-console .chip{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14);color:#fff;text-transform:capitalize}
.c7-console .chip:hover{background:#fff;color:#17111a}
@media (max-width:1100px){.c7{grid-template-columns:1fr}}
@media (max-width:640px){
  .c7-strip{grid-template-columns:repeat(6,minmax(64px,1fr));overflow-x:auto;margin:0 -20px;padding:0 20px;scrollbar-width:none}
  .c7-m{padding:14px 12px 14px}
  .c7-g{gap:4px}
  .c7 .cd{aspect-ratio:1;padding:5px;font-size:12px;border-radius:9px}
  .c7 .cd i{height:2px}
  .c7-w{font-size:9px}
  .c7-mh h3{font-size:24px}
  .c7-nav .cal-leg{width:100%;margin:0}
  .c7-console{padding:18px}
}

/* =====================================================================
   v7 · 09 · Séquence de lancement : l'horloge de mission
   ===================================================================== */
.launch.l7{height:380vh;background:#12070d}
.l7-stage{position:sticky;top:0;height:100svh;display:flex;align-items:center;overflow:hidden;color:#efe6ea;background:radial-gradient(60% 80% at 28% 50%,#3a0f22 0%,#12070d 62%)}
.l7-stars{position:absolute;inset:0;background-image:radial-gradient(1px 1px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 78% 12%,#ffd9e4,transparent),radial-gradient(1.5px 1.5px at 64% 72%,#fff,transparent),radial-gradient(1px 1px at 32% 86%,#EBD3A6,transparent),radial-gradient(1px 1px at 90% 54%,#fff,transparent),radial-gradient(1px 1px at 46% 34%,#fff,transparent),radial-gradient(1px 1px at 6% 62%,#fff,transparent);opacity:.7;animation:l7tw 6s ease-in-out infinite alternate}
@keyframes l7tw{to{opacity:.35}}
.l7-in{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5vw;align-items:center;width:100%}
.l7-dial{position:relative;width:min(560px,44vw,78svh);aspect-ratio:1;justify-self:center}
.l7-dial svg{width:100%;height:100%;overflow:visible}
.l7-halo{fill:none;stroke:rgba(255,46,99,.08);stroke-width:1}
.l7-core{stroke:rgba(255,255,255,.06)}
.l7-ticks line{stroke:rgba(255,255,255,.18);stroke-width:1.5;transition:stroke .3s}
.l7-ticks line.mj{stroke-width:2.5}
.l7-ticks line.lit{stroke:#FF2E63}
.l7-ticks line.lit.mj{stroke:#EBD3A6}
.l7-ticks text{font:500 11px var(--mono);fill:rgba(255,255,255,.45);text-anchor:middle;letter-spacing:.04em}
.l7-track{fill:none;stroke:rgba(255,255,255,.08);stroke-width:6;stroke-linecap:round}
.l7-prog{fill:none;stroke:url(#l7g);stroke-width:6;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 8px rgba(255,46,99,.7))}
.l7-node circle{fill:#12070d;stroke:rgba(255,255,255,.3);stroke-width:2;transition:fill .4s,stroke .4s}
.l7-node text{font:500 10px var(--mono);fill:rgba(255,255,255,.6);text-anchor:middle}
.l7-node.on circle{fill:#FF2E63;stroke:#fff}
.l7-node.on text{fill:#fff}
.l7-ring{fill:none;stroke:rgba(255,255,255,.1);stroke-width:1}
.l7-ring.r1{stroke-dasharray:3 9;animation:spinang2 40s linear infinite;transform-origin:0 0}
.l7-ring.r2{stroke:rgba(201,162,107,.18);stroke-dasharray:60 20;animation:spinang2 26s linear infinite reverse;transform-origin:0 0}
.l7-sweep{animation:spinang2 5s linear infinite;transform-origin:0 0}
.l7-sweep path{fill:url(#l7g);opacity:.12}
.l7-ship path{fill:#fff;filter:drop-shadow(0 0 6px #FF2E63)}
.l7-ship .fl{fill:#FF2E63;animation:fl .15s steps(2) infinite}
@keyframes fl{50%{opacity:.4}}
.l7-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;pointer-events:none}
.l7-phase{font:500 11px var(--mono);letter-spacing:.24em;text-transform:uppercase;color:#EBD3A6}
.l7-phase.flip{animation:pop .5s var(--ease-out)}
.l7-count{display:flex;align-items:baseline;gap:6px;font:500 clamp(64px,8vw,120px)/.9 var(--disp);letter-spacing:-.06em;color:#fff;font-variant-numeric:tabular-nums}
.l7-count span{color:#FF2E63;font-size:.5em}
.l7-center small{font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#b9a7ae}
.launch.t0 .l7-count b{color:#EBD3A6;text-shadow:0 0 40px rgba(201,162,107,.8)}
.launch.t0 .l7-core{fill:#4a0d22}
.l7-panel{display:flex;flex-direction:column;gap:18px;min-width:0}
.l7-panel .h-l{color:#fff;margin:0;font-size:clamp(34px,3.6vw,56px)}
.l7-panel .h-l em{color:var(--gold-l)}
.l7-steps{display:grid;min-height:270px}
.l7s{grid-area:1/1;display:flex;flex-direction:column;gap:12px;padding:22px;border-radius:22px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.09);opacity:0;transform:translateY(24px) scale(.98);transition:opacity .5s,transform .6s var(--ease-out);pointer-events:none}
.l7s.on{opacity:1;transform:none;pointer-events:auto}
.l7s.done{transform:translateY(-24px) scale(.98)}
.l7s-top{display:flex;justify-content:space-between;align-items:center;font:500 11px var(--mono);letter-spacing:.08em}
.l7s-n{color:#FF2E63}
.l7s .when{color:#b9a7ae}
.l7s h3{margin:0;font-size:clamp(26px,2.4vw,36px);color:#fff}
.l7s h3 em{color:var(--gold-l)}
.l7s p{margin:0;color:#cbbdc3;font-size:15px}
.l7s ul{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.l7s li{display:flex;align-items:center;gap:8px;font:500 12.5px/1 var(--disp);padding:9px 11px;border-radius:10px;background:rgba(255,255,255,.07)}
.l7s li i{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);position:relative}
.l7s.on li i{border-color:#22c55e;background:#22c55e;animation:pop .4s var(--ease-out) backwards}
.l7s.on li:nth-child(2) i{animation-delay:.2s}.l7s.on li:nth-child(3) i{animation-delay:.4s}
.l7s li i::after{content:"";position:absolute;left:3.5px;top:1px;width:3px;height:6px;border:solid #12070d;border-width:0 1.5px 1.5px 0;transform:rotate(45deg);opacity:0}
.l7s.on li i::after{opacity:1}
.l7s-chip{align-self:flex-start;font:500 10.5px var(--mono);letter-spacing:.06em;padding:6px 9px;border-radius:8px;background:rgba(201,162,107,.16);color:var(--gold-l)}
.l7-rail{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.l7-rail button{display:flex;flex-direction:column;gap:8px;text-align:left;color:#b9a7ae;font:500 11px/1.2 var(--mono);letter-spacing:.04em}
.l7-rail i{display:block;height:3px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.l7-rail u{display:block;height:100%;width:calc(var(--f,0) * 100%);background:linear-gradient(90deg,#FF2E63,#C9A26B)}
.l7-rail button.on{color:#fff}
.l7-rail button:hover{color:#fff}
@media (max-width:1000px){
  .launch.l7{height:340vh}
  .l7-in{grid-template-columns:1fr;gap:14px;align-content:center;padding-top:70px}
  .l7-dial{width:min(330px,74vw,40svh)}
  .l7-ticks text{font-size:14px}
  .l7-panel{gap:12px}
  .l7-panel .h-l{display:none}
  .l7-panel .hud-k{display:none}
  .l7-steps{min-height:0}
  .l7s{padding:16px;gap:8px}
  .l7s p{font-size:13.5px}
  .l7s li{font-size:11.5px;padding:7px 9px}
  .l7-rail span{font-size:9.5px}
}
@media (max-width:1000px) and (max-height:700px){.l7s p{display:none}}

/* =====================================================================
   v7 · Pied de page : la Terre en 3D (hublot spatial)
   ===================================================================== */
.f5-globe{max-width:600px;cursor:grab}
.f5-globe.grab{cursor:grabbing}
.g-port{position:absolute;inset:3%;border-radius:50%;background:radial-gradient(circle at 50% 50%,#1b0a14 0%,#0a0408 62%,#06020a 100%);box-shadow:0 0 0 1px rgba(255,255,255,.6),0 0 0 8px rgba(255,255,255,.35),0 0 0 9px rgba(114,14,40,.15),0 50px 90px -40px rgba(40,10,30,.7),inset 0 0 60px rgba(0,0,0,.6);overflow:hidden}
.g-port::before{content:"";position:absolute;inset:0;background-image:radial-gradient(1px 1px at 14% 22%,#fff,transparent),radial-gradient(1px 1px at 80% 16%,#ffe2ea,transparent),radial-gradient(1.4px 1.4px at 70% 80%,#fff,transparent),radial-gradient(1px 1px at 26% 76%,#EBD3A6,transparent),radial-gradient(1px 1px at 90% 50%,#fff,transparent),radial-gradient(1px 1px at 40% 10%,#fff,transparent),radial-gradient(1px 1px at 8% 58%,#fff,transparent),radial-gradient(1px 1px at 56% 92%,#fff,transparent);opacity:.8}
.g-port::after{content:"";position:absolute;inset:-1px;border-radius:50%;padding:2px;background:var(--holo);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude}
.f5-globe canvas{position:relative;z-index:1;display:block;width:100%!important;height:100%!important;touch-action:pan-y}
.f5-globe:not(.gl-on) .g-port{background:radial-gradient(circle at 50% 50%,#1b0a14,#06020a)}
html.lite .f5-globe .g-port{display:none}
.g-lab{z-index:2;display:flex;align-items:center;gap:8px;bottom:1%!important}
.g-lab i{width:7px;height:7px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 3px rgba(255,46,99,.2);animation:blinkk 1.4s steps(2) infinite}
.g-hint{position:absolute;right:6%;top:8%;z-index:2;font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#6c6066;opacity:0;transition:opacity .4s}
.f5-globe.gl-on .g-hint{opacity:1}
@media (max-width:760px){.g-hint{display:none}.f5-globe{max-width:420px}}

/* =====================================================================
   v7 · Mobile : barre d'actions, sommaire, NOVA dans la barre
   ===================================================================== */
.mbar7,.mchap,.msheet{display:none}
@media (max-width:760px){
  .mbar7{position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:165;display:grid;grid-template-columns:1fr 1fr 1.35fr 1fr 1fr;align-items:center;height:62px;padding:0 6px;border-radius:20px;background:rgba(23,17,26,.9);-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);box-shadow:0 18px 40px -16px rgba(23,17,26,.7),inset 0 1px 0 rgba(255,255,255,.08);transition:transform .45s var(--ease-out)}
  .mbar7::after{content:"";position:absolute;inset:-1px;border-radius:21px;padding:1px;background:var(--holo);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.45;pointer-events:none}
  .mbar7.tuck{transform:translateY(calc(100% + 16px))}
  .mbar7.off{display:none}
  .mbar7>*{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;color:#e9dfe3}
  .mbar7 small{font:500 9.5px/1 var(--mono);letter-spacing:.06em;color:#b9a7ae}
  .mbar7 small b{font-weight:500;color:#fff}
  .mbar7 .ico{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  .mb-badge .ico{fill:rgba(201,162,107,.35);stroke:#EBD3A6}
  .mb-wa .ico{stroke:none;fill:#4ade80}
  .mb-main{height:46px!important;margin:0 4px;border-radius:15px;background:linear-gradient(120deg,#8C1433,#5a0a1f);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 8px 20px -8px rgba(255,46,99,.6);flex-direction:row!important;gap:6px!important}
  .mb-main b{font:500 14px var(--disp);color:#fff}
  .mb-main small{color:#f9d3df;padding:3px 5px;border-radius:6px;background:rgba(255,255,255,.14)}
  .mb-main .dot{width:7px;height:7px;border-radius:50%;background:var(--signal);box-shadow:0 0 8px var(--signal);animation:blinkk 1.2s steps(2) infinite}
  .mb-menu i{display:block;width:18px;height:2px;border-radius:2px;background:#fff;margin:0}
  .mb-menu i+i{margin-top:-1px}
  .mb-menu{gap:3px!important}.mb-menu small{margin-top:3px}
  .mb-slot{display:block;width:30px;height:24px}
  /* Le dock du haut s'allège : logo et langue */
  .dk-launch,.dk-burger,.dk-badges{display:none!important}
  .dock{justify-content:space-between}
  .fab{display:none!important}
  body.has-bar .fab{display:flex!important}
  /* NOVA posé dans la barre */
  .nova-drone.docked{left:calc(16px + (100vw - 32px) / 5.35 / 2 - 26px);bottom:calc(10px + env(safe-area-inset-bottom) + 22px);transform:none!important;z-index:166;transition:bottom .45s var(--ease-out),opacity .4s}
  .nova-drone.docked .nv-body,.nova-drone.docked .nv-gl,.nova-drone.docked .nv-svg{width:52px!important;height:52px!important}
  .nova-drone.docked .nv-say{position:absolute;left:0;bottom:66px;width:max-content;max-width:calc(100vw - 40px);margin:0;font-size:12.5px;border-radius:14px 14px 14px 4px}
  html:has(.mbar7.tuck) .nova-drone.docked{bottom:-80px}
  body.has-bar .nova-drone.docked{left:10px;bottom:84px}
  /* Pastille de sommaire */
  .mchap{position:fixed;left:50%;top:23px;z-index:172;display:flex;align-items:center;gap:8px;height:32px;padding:0 10px 0 12px;border-radius:999px;background:rgba(255,255,255,.92);box-shadow:0 8px 20px -10px rgba(40,10,30,.4),0 0 0 1px rgba(23,17,26,.06);transform:translateX(-50%);font:500 11px/1 var(--mono);color:#17111a;max-width:calc(100vw - 210px);white-space:nowrap;animation:pop .35s var(--ease-out)}
  .mchap[hidden]{display:none}
  .mc-n{color:var(--signal)}
  .mc-t{overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em}
  .mchap i{width:8px;height:8px;border-right:1.5px solid #8b7f85;border-bottom:1.5px solid #8b7f85;transform:rotate(45deg) translateY(-2px);margin-left:2px}
  body.has-ann .mchap{top:55px}
  body.has-ann.scrolled .mchap{top:23px}
  .dock.hide~.mchap,html:has(.dock.hide) .mchap{top:-50px}
  .msheet{position:fixed;inset:0;z-index:420;display:flex;align-items:flex-end;background:rgba(23,17,26,.35)}
  .msheet[hidden]{display:none}
  .ms-in{width:100%;max-height:80vh;overflow:auto;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:#fff;animation:sheet .4s var(--ease-out)}
  @keyframes sheet{from{transform:translateY(100%)}}
  .ms-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
  .ms-top .cmd-x{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:rgba(23,17,26,.06)}
  .ms-top .cmd-x .ico{width:15px;height:15px}
  .ms-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
  .ms-list button{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border-radius:12px;text-align:left;font:500 15px var(--disp);color:#17111a}
  .ms-list button span{font:500 11px var(--mono);color:var(--wine);width:22px}
  .ms-list button.on{background:#17111a;color:#fff}
  .ms-list button.on span{color:var(--signal)}
  html.ms-open{overflow:hidden}
  /* Espace pour la barre en bas de page */
  footer.f5{padding-bottom:90px}
  .toast{top:auto;bottom:calc(86px + env(safe-area-inset-bottom));transform:translate(-50%,30px) scale(.94);max-width:calc(100vw - 24px)}
  .toast.on{transform:translate(-50%,0)}
  /* Sections : moins de scroll, plus de gestes */
  .tabs{flex-wrap:nowrap;overflow-x:auto;margin:0 -20px 18px;padding:2px 20px;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tabs .tab{flex:none}
  .gauges{display:flex!important;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin:0 -20px!important;padding:4px 20px 14px;max-width:none!important;scrollbar-width:none}
  .gauges::-webkit-scrollbar{display:none}
  .gauge-c{flex:0 0 82vw;scroll-snap-align:center}
  .bay-head p{font-size:14.5px}
  .bay{padding-top:72px;padding-bottom:72px}
}
@media (max-width:760px){.hg-in{padding-bottom:100px}}
