:root{
  --bg:#050d1a;
  --panel:rgba(255,255,255,.05);
  --panel-brd:rgba(255,255,255,.10);
  --text:#eaf3ff;
  --muted:#9db2cf;
  --teal:#2fd7b8;
  --indigo:#7c8cff;
  --amber:#ffab4d;
  --font:"IBM Plex Sans Arabic","Segoe UI",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:
    radial-gradient(1200px 700px at 80% -10%,rgba(124,140,255,.18),transparent 60%),
    radial-gradient(900px 600px at 10% 110%,rgba(47,215,184,.14),transparent 60%),
    var(--bg);
  color:var(--text);
  font-family:var(--font);
  display:flex;align-items:center;justify-content:center;
  padding:clamp(8px,2vw,26px);
  min-height:100vh;
}
.app{
  width:100%;max-width:1180px;
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));
  border:1px solid var(--panel-brd);
  border-radius:22px;
  backdrop-filter:blur(14px);
  box-shadow:0 30px 80px rgba(0,0,0,.55);
  overflow:hidden;
  display:flex;flex-direction:column;
}
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px clamp(14px,2.2vw,26px);
  border-bottom:1px solid rgba(255,255,255,.07);
  background:rgba(255,255,255,.03);
}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:.2px;font-size:clamp(14px,1.5vw,17px)}
.brand .dot{
  width:10px;height:10px;border-radius:50%;
  background:var(--teal);
  box-shadow:0 0 0 4px rgba(47,215,184,.18),0 0 18px rgba(47,215,184,.9);
  animation:pulseDot 2.4s ease-in-out infinite;
}
.scene-label{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.scene-label span:first-child{color:var(--teal);font-weight:700}

.stage{position:relative;aspect-ratio:1000/620;width:100%;background:#061224;overflow:hidden}
#canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
#canvas *{transform-box:fill-box;transform-origin:center}

.caption-wrap{
  position:absolute;inset-inline:0;bottom:0;
  padding:clamp(16px,3vw,34px) clamp(18px,4vw,54px) clamp(18px,3vw,36px);
  background:linear-gradient(0deg,rgba(4,10,20,.94) 12%,rgba(4,10,20,.78) 52%,transparent);
  display:flex;flex-direction:column;gap:8px;align-items:flex-start;
}
.level-chip{
  font-size:clamp(11px,1.2vw,13px);font-weight:600;
  color:#04231e;background:linear-gradient(135deg,#7ff0dc,#2fd7b8);
  padding:5px 13px;border-radius:999px;
  box-shadow:0 6px 18px rgba(47,215,184,.28);
  opacity:0;transform:translateY(8px);
}
.level-chip.in{animation:fadeUp .6s cubic-bezier(.2,.7,.3,1) forwards}
.caption{
  font-size:clamp(19px,3.1vw,38px);font-weight:700;line-height:1.35;
  text-shadow:0 3px 22px rgba(0,0,0,.6);opacity:0;
}
.caption.in{animation:fadeUp .7s cubic-bezier(.2,.7,.3,1) .06s forwards}
.caption-sub{
  font-size:clamp(12px,1.6vw,18px);color:#c3d3ea;font-weight:400;
  max-width:min(94%,900px);line-height:1.7;opacity:0;
}
.caption-sub.in{animation:fadeUp .7s cubic-bezier(.2,.7,.3,1) .22s forwards}

.controls{
  padding:12px clamp(14px,2.2vw,24px) 16px;
  border-top:1px solid rgba(255,255,255,.07);
  background:rgba(255,255,255,.03);
}
.timeline{height:6px;border-radius:999px;background:rgba(255,255,255,.09);overflow:hidden;cursor:pointer}
.progress{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--teal),var(--indigo));box-shadow:0 0 14px rgba(47,215,184,.5)}
.ctrl-row{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:42px;height:42px;padding:0 11px;
  border:1px solid var(--panel-brd);border-radius:12px;
  background:var(--panel);color:var(--text);cursor:pointer;
  font-family:var(--font);font-size:14px;font-weight:600;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease;
}
.btn:hover{transform:translateY(-2px);background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.22);box-shadow:0 10px 22px rgba(0,0,0,.35)}
.btn:active{transform:translateY(0)}
.btn svg{width:18px;height:18px;stroke-width:1.9}
.btn.primary{background:linear-gradient(135deg,#2fd7b8,#1c9d8c);border-color:transparent;color:#04231e}
.btn.primary:hover{box-shadow:0 12px 26px rgba(47,215,184,.35)}
.btn.active{background:rgba(124,140,255,.22);border-color:rgba(124,140,255,.5)}
.time{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;margin-inline:4px}
.chapters{display:flex;gap:6px;flex-wrap:wrap;margin-inline-start:auto}
.chip{
  font-size:11.5px;padding:6px 11px;border-radius:999px;cursor:pointer;
  border:1px solid var(--panel-brd);background:rgba(255,255,255,.04);color:var(--muted);
  transition:all .18s ease;white-space:nowrap;
}
.chip:hover{color:var(--text);border-color:rgba(255,255,255,.28);transform:translateY(-1px)}
.chip.active{background:linear-gradient(135deg,rgba(47,215,184,.22),rgba(124,140,255,.22));color:var(--text);border-color:rgba(47,215,184,.5)}

/* ---------- keyframes ---------- */
@keyframes pulseDot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.82)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes floatSlow{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(18px,-22px) scale(1.06)}}
.float-slow{animation:floatSlow 11s ease-in-out infinite}
.float-slow.d2{animation-duration:14s;animation-delay:-3s}
.float-slow.d3{animation-duration:17s;animation-delay:-6s}

@keyframes beadPop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.18);opacity:1}100%{transform:scale(1);opacity:1}}
.bead{animation:beadPop .55s cubic-bezier(.2,1.3,.4,1) both}
@keyframes drawLine{to{stroke-dashoffset:0}}
.draw{stroke-dasharray:var(--len,1200);stroke-dashoffset:var(--len,1200);animation:drawLine 1.5s ease-out forwards}
@keyframes dashFlow{to{stroke-dashoffset:-60}}
.dash-flow{stroke-dasharray:8 10;animation:dashFlow 2.6s linear infinite}
@keyframes riseIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.rise{animation:riseIn .75s cubic-bezier(.2,.7,.3,1) both}
@keyframes popIn{0%{transform:scale(.55);opacity:0}70%{transform:scale(1.06);opacity:1}100%{transform:scale(1);opacity:1}}
.pop{animation:popIn .7s cubic-bezier(.2,1.1,.4,1) both}
@keyframes swayHelix{0%,100%{transform:rotate(-2.5deg) translateX(-4px)}50%{transform:rotate(2.5deg) translateX(4px)}}
.sway{animation:swayHelix 5.5s ease-in-out infinite}
@keyframes corePulse{0%,100%{opacity:.30;transform:scale(1)}50%{opacity:.55;transform:scale(1.07)}}
.core-pulse{animation:corePulse 4.2s ease-in-out infinite}
@keyframes bondPulse{0%,100%{opacity:.35;stroke-width:2}50%{opacity:1;stroke-width:3.4}}
.bond-pulse{animation:bondPulse 1.9s ease-in-out infinite}
@keyframes spinSlow{to{transform:rotate(360deg)}}
.spin-slow{animation:spinSlow 24s linear infinite}
@keyframes riseGlow{from{opacity:0}to{opacity:.85}}
.glow-in{animation:riseGlow 1.4s ease-out both}

/* وحدة فرعية تتجمع من الركن إلى المركز */
@keyframes asmTL{from{transform:translate(-150px,-110px);opacity:0}to{transform:translate(0,0);opacity:1}}
@keyframes asmTR{from{transform:translate(150px,-110px);opacity:0}to{transform:translate(0,0);opacity:1}}
@keyframes asmBL{from{transform:translate(-150px,120px);opacity:0}to{transform:translate(0,0);opacity:1}}
@keyframes asmBR{from{transform:translate(150px,120px);opacity:0}to{transform:translate(0,0);opacity:1}}
.asm-tl{animation:asmTL 1.25s cubic-bezier(.22,.9,.28,1) both}
.asm-tr{animation:asmTR 1.25s cubic-bezier(.22,.9,.28,1) both}
.asm-bl{animation:asmBL 1.25s cubic-bezier(.22,.9,.28,1) both}
.asm-br{animation:asmBR 1.25s cubic-bezier(.22,.9,.28,1) both}
@keyframes hemeIn{0%{opacity:0;transform:scale(.4)}100%{opacity:1;transform:scale(1)}}
.heme{animation:hemeIn .6s ease-out both}

/* المشهد الأخير: تشوّه الشكل بسبب طفرة واحدة */
@keyframes deform{0%{transform:scale(1)}35%{transform:scale(1.04,1.1)}70%{transform:scale(1.14,.9) }100%{transform:scale(1.24,.82) rotate(-6deg)}}
.deform{animation:deform 2.6s ease-in-out 1.1s both}
@keyframes redShift{0%{fill:#2fd7b8}100%{fill:#ff5d6c}}
.red-shift{animation:redShift 1.2s ease-out 1.2s both}
@keyframes flowArrow{0%{opacity:0;transform:translateX(14px)}100%{opacity:1;transform:translateX(0)}}
.flow{animation:flowArrow .6s ease-out both}

/* أدوات SVG شائعة */
.svg-label{font-family:var(--font);font-weight:600;fill:#dbe8fa}
.svg-note{font-family:var(--font);font-weight:400;fill:#9db2cf}
.aa-t{font-family:var(--font);font-weight:700;font-size:12px;fill:#04231e}
.strand{stroke-linecap:round;stroke-linejoin:round;fill:none}
.hbond{stroke:#8fa4ff;stroke-width:2.2;stroke-linecap:round}

@media (max-width:720px){
  .chapters{width:100%;margin:8px 0 0;justify-content:flex-start}
  .btn{min-width:38px;height:38px}
  .time{order:9}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important}
}
