/* ---- Démo 3D : comment fonctionne la communauté ---- */
.demo-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(20px,4vw,56px);align-items:center;margin-top:30px}
.chapters{list-style:none;padding:0;display:flex;flex-direction:column;gap:12px}
.chapters>li{border:1px solid var(--line);border-radius:18px;background:var(--glass);padding:0;overflow:hidden;opacity:.55;transition:opacity .3s,border-color .3s,box-shadow .3s}
.chapters>li.on{opacity:1;border-color:var(--cy);box-shadow:0 0 34px #22e0ff26}
.chapters>li>button{width:100%;display:flex;gap:14px;align-items:center;text-align:left;background:none;border:0;color:var(--ink);padding:16px 18px;cursor:pointer;font:inherit}
.chapters .n{flex:0 0 auto;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font:700 1.1rem ui-monospace,monospace;background:linear-gradient(135deg,var(--cy),var(--vi));color:#04121a}
.chapters b{display:block;font-size:1.15rem}.chapters small{color:var(--mute)}
.chapters ul{list-style:none;padding:0 18px 0 70px;max-height:0;overflow:hidden;transition:max-height .4s,padding .4s;color:var(--mute);font-size:.95rem}
.chapters>li.on ul{max-height:200px;padding-bottom:12px}
.chapters ul li{padding:3px 0 3px 22px;position:relative;transition:color .3s}
.chapters ul li::before{content:"○";position:absolute;left:0;color:var(--mute)}
.chapters ul li.act{color:var(--ink)}.chapters ul li.act::before{content:"●";color:var(--pk)}
.chapters ul li.done{color:#c4cbff}.chapters ul li.done::before{content:"✔";color:#3dff9a}
.chapters .pg{display:block;height:3px;background:#0a0d26}.chapters .pg b{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cy),var(--pk))}

.vplayer{min-width:0}
.stage{position:relative;height:calc(640px*var(--sc,1));perspective:1500px;display:flex;justify-content:center;
  border-radius:26px;border:1px solid var(--line);background:radial-gradient(ellipse at 50% 30%,#8a6bff30,transparent 62%),linear-gradient(#0a0d2a,#060818);overflow:hidden}
.stage::before{content:"";position:absolute;left:-30%;right:-30%;bottom:-8%;height:42%;background:linear-gradient(#22e0ff26 1px,transparent 1px) 0 0/100% 30px,linear-gradient(90deg,#22e0ff26 1px,transparent 1px) 0 0/38px 100%;transform:perspective(420px) rotateX(64deg);transform-origin:top;opacity:.7}
.dwrap{position:relative;margin-top:calc(22px*var(--sc,1));width:300px;height:570px;transform:scale(var(--sc,1));transform-origin:top center;transform-style:preserve-3d}
.device{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--rx,5deg)) rotateY(var(--ry,-14deg));transition:transform .25s ease-out}
.floaty{position:absolute;inset:0;transform-style:preserve-3d;animation:bob 6s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-12px)}}
.pbody{position:absolute;inset:0;border-radius:46px;background:linear-gradient(145deg,#2a2f66,#0a0c26);border:2px solid #3a4088;box-shadow:0 40px 80px #000c,0 0 60px #22e0ff33,inset 0 0 0 5px #05061a}
.pbody::after{content:"";position:absolute;left:50%;top:12px;width:84px;height:20px;border-radius:12px;background:#02030c;transform:translateX(-50%);z-index:5}
.pscreen{position:absolute;left:10px;top:10px;width:280px;height:550px;border-radius:38px;overflow:hidden;background:#070919;color:var(--ink);transform:translateZ(1px);font-family:"Space Grotesk",system-ui,sans-serif}
.appbar{position:absolute;top:0;left:0;right:0;height:64px;padding:34px 18px 0;display:flex;justify-content:space-between;font-weight:700;font-size:.9rem;background:#0b0e2a;border-bottom:1px solid var(--line);z-index:3}
.appbar span{color:var(--cy);font:600 .7rem ui-monospace,monospace;align-self:center;margin-top:-10px}
.sc{position:absolute;inset:64px 0 0 0;padding:14px 16px;opacity:0;pointer-events:none;transition:opacity .4s}
.sc.on{opacity:1}
.sc h4{font-size:1.05rem;margin-bottom:10px}
.av{width:38px;height:38px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;font-size:1.1rem;background:linear-gradient(135deg,var(--c1,#22e0ff),var(--c2,#8a6bff))}
.av.big{width:84px;height:84px;font-size:2.4rem;margin:0 auto 10px}
.av0{margin:0 auto 12px;width:64px;height:64px;font-size:1.7rem;transition:transform .3s}
.fld{margin-bottom:10px}.fld label{display:block;font-size:.7rem;color:var(--mute);margin-bottom:4px}
.fld .in{height:40px;border-radius:12px;border:1px solid var(--line);background:#0e1130;display:flex;align-items:center;padding:0 12px;font-size:.95rem;transition:border-color .2s,box-shadow .2s}
.fld.foc .in{border-color:var(--cy);box-shadow:0 0 0 3px #22e0ff2e}
.fld em{color:var(--mute);font-style:normal;margin-right:2px}
.fld .in u{width:2px;height:18px;background:var(--cy);margin-left:1px;animation:blink 1s steps(1) infinite;visibility:hidden}.fld.foc .in u{visibility:visible}
@keyframes blink{50%{opacity:0}}
.sw{display:flex;gap:10px}.sw i{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2));border:2px solid transparent;transition:transform .25s,border-color .25s}.sw i.on{border-color:#fff;transform:scale(1.18)}
.dcta{display:block;width:100%;margin-top:14px;height:44px;border:0;border-radius:99px;background:linear-gradient(135deg,var(--cy),#7df3ff);color:#04121a;font:700 .95rem "Space Grotesk",sans-serif;transition:transform .2s}
.dcta.press,.pbtn.press{transform:scale(.94)}
.welcome{position:absolute;inset:0;background:#070919f2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;opacity:0;transform:scale(.9);transition:.5s;z-index:4;padding:20px}
.welcome.on{opacity:1;transform:none}.welcome h4{font-size:1.4rem}.welcome p{color:var(--mute);font-size:.9rem;margin-top:4px}
.confetti i{position:absolute;left:50%;top:44%;width:8px;height:12px;border-radius:2px;opacity:0}
.welcome.on .confetti i{animation:conf 1.6s ease-out forwards}
@keyframes conf{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r))}}

.cmp{display:flex;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.ta{flex:1;min-height:70px;font-size:.92rem;line-height:1.4;color:var(--ink);padding-top:6px}
.ta:empty::before{content:"Qu'est-ce qui se passe ?";color:var(--mute)}
.cmpf{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:8px 0 10px;border-bottom:1px solid var(--line);font:600 .75rem ui-monospace,monospace;color:var(--mute)}
.pbtn{padding:7px 18px;border-radius:99px;background:linear-gradient(135deg,var(--cy),#7df3ff);color:#04121a;font:700 .85rem "Space Grotesk",sans-serif;opacity:.5;transition:opacity .2s,transform .2s}.pbtn.ready{opacity:1}
.mpost{display:flex;gap:9px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.82rem;line-height:1.4}
.mpost b{font-size:.85rem}.mpost small{color:var(--mute)}.mpost p{margin-top:2px}.mpost .h{color:var(--cy)}
.mpost.new{background:#22e0ff14;animation:slidein .6s ease-out;margin:0 -16px;padding-left:16px;padding-right:16px}
@keyframes slidein{from{opacity:0;transform:translateY(-24px)}}
.toast2{position:absolute;left:50%;bottom:18px;transform:translate(-50%,30px);background:#fff;color:#000;font-weight:700;font-size:.8rem;padding:8px 16px;border-radius:99px;opacity:0;transition:.4s;white-space:nowrap;z-index:6}
.toast2.on{opacity:1;transform:translate(-50%,0)}

.mstats{display:flex;justify-content:space-between;font-size:.8rem;color:var(--mute);margin:8px 0;padding:8px 2px;border-block:1px solid var(--line);position:relative}
.mstats span b{color:var(--ink);font-variant-numeric:tabular-nums}
.hp{position:absolute;bottom:0;font-style:normal;animation:hp 1.4s ease-out forwards;pointer-events:none}
@keyframes hp{to{transform:translateY(-70px) scale(1.4);opacity:0}}
.seenby{display:flex;align-items:center;gap:8px;font-size:.75rem;color:var(--mute);margin:6px 0 8px}
.seenby .av{width:22px;height:22px;font-size:.7rem;margin-left:-8px;border:2px solid #070919}.seenby .av:first-child{margin-left:0}
.replies2 .mpost{opacity:0;transform:translateY(10px);transition:.5s}.replies2 .mpost.on{opacity:1;transform:none}
.mring{position:absolute;inset:0;background:#070919;opacity:0;transition:opacity .5s;perspective:600px;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center}
.mring.on{opacity:1}.mring p{position:absolute;bottom:22px;left:0;right:0;text-align:center;font-size:.82rem;color:var(--mute);padding:0 18px}
.mring .r3{position:relative;width:0;height:0;transform-style:preserve-3d;animation:spin 9s linear infinite}
@keyframes spin{from{transform:translateZ(-160px) rotateY(0)}to{transform:translateZ(-160px) rotateY(-360deg)}}
.mring .c3{position:absolute;left:-62px;top:-44px;width:124px;height:88px;border-radius:12px;border:1px solid #ffffff2a;background:linear-gradient(160deg,#171b52,#0b0e2a);backface-visibility:hidden;padding:8px;font-size:.62rem;line-height:1.3;color:#c4cbff;transform:rotateY(calc(var(--i)*60deg)) translateZ(150px)}
.mring .c3.me{border-color:var(--cy);box-shadow:0 0 22px #22e0ff66}.mring .c3 b{display:block;color:#fff;font-size:.68rem;margin-bottom:2px}

.tap{position:absolute;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;background:#ffffff40;border:2px solid #fff;box-shadow:0 0 18px #fff8;z-index:9;transition:transform .6s cubic-bezier(.3,.8,.3,1),opacity .3s;opacity:0;pointer-events:none}
.tap.show{opacity:1}.tap.click{animation:tapc .35s}
@keyframes tapc{50%{scale:.7;background:#fff}}

.sat{position:absolute;padding:9px 14px;border-radius:14px;font-weight:700;font-size:.85rem;background:linear-gradient(135deg,#171b52,#0b0e2a);border:1px solid var(--cy);box-shadow:0 14px 40px #000a,0 0 24px #22e0ff44;white-space:nowrap;opacity:0;transition:opacity .5s,transform .6s;z-index:6}
.sat.on{opacity:1}
.sat.s1{left:-96px;top:150px;transform:translateZ(0) scale(.6)}.sat.s1.on{transform:translateZ(90px) scale(1)}
.sat.s2{right:-92px;top:250px;transform:translateZ(0) scale(.6)}.sat.s2.on{transform:translateZ(110px) scale(1)}
.sat.s3{left:-84px;top:380px;transform:translateZ(0) scale(.6)}.sat.s3.on{transform:translateZ(100px) scale(1)}

.vbar{display:flex;align-items:center;gap:12px;margin-top:12px;padding:10px 14px;border:1px solid var(--line);border-radius:99px;background:var(--glass)}
.vbar button{flex:0 0 auto;width:34px;height:34px;border-radius:50%;border:0;background:linear-gradient(135deg,var(--cy),var(--vi));color:#04121a;font-size:.9rem;cursor:pointer}
.vbar span{flex:1;min-width:0;font-size:.88rem;color:#c4cbff}
.vbar em{font:600 .75rem ui-monospace,monospace;color:var(--mute);font-style:normal}

@media(max-width:900px){
  .demo-grid{grid-template-columns:1fr}
  .chapters{flex-direction:row;overflow-x:auto;gap:8px;padding-bottom:4px;scrollbar-width:none}
  .chapters>li{flex:0 0 auto;min-width:200px}
  .chapters>li ul{display:none}
}
@media(prefers-reduced-motion:reduce){.floaty{animation:none}.mring .r3{animation-duration:30s}}

/* badges 3D : restent dans la scène sur petits écrans */
@media(max-width:900px){
  .sat{font-size:.78rem;padding:7px 11px}
  .sat.s1{left:-18px;top:420px}.sat.s2{left:auto;right:-18px;top:440px}.sat.s3{left:-18px;top:440px}
  .sat.s1.on{transform:translateZ(60px) scale(1)}.sat.s2.on{transform:translateZ(70px) scale(1)}.sat.s3.on{transform:translateZ(60px) scale(1)}
}
