/* anim-diagram.css — lightweight animated solution diagrams (no deps). */
.pmad{
  --ad-cell:#1b1e27; --ad-cell-b:#2a2e3a; --ad-ink:#e7e9ee; --ad-dim:#9aa3b2;
  --ad-accent:#ffd54a; --ad-good:#5fcf83; --ad-bad:#ff6f6f; --ad-info:#7aa2ff;
  border:1px solid var(--border,#2a2e3a); border-radius:12px;
  background:var(--bg-card,#13151b); padding:14px 14px 12px; color:var(--ad-ink);
  font-family:Inter,system-ui,sans-serif;
}
.pmad *{box-sizing:border-box}
.pmad-title{font-size:12px;font-weight:800;letter-spacing:.02em;color:var(--ad-dim);text-transform:uppercase;margin:0 0 10px}
.pmad-stage{position:relative;min-height:84px;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;padding:6px 2px 2px}

/* array stage */
.pmad-arr-wrap{position:relative;display:inline-block;padding-top:26px}
.pmad-arr{display:flex;gap:6px}
.pmad-cell{
  position:relative;min-width:42px;height:46px;border-radius:9px;
  background:var(--ad-cell);border:1.5px solid var(--ad-cell-b);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;
  transition:background .35s ease,border-color .35s ease,transform .35s ease,box-shadow .35s ease;
}
.pmad-cell .idx{position:absolute;bottom:-18px;left:0;right:0;text-align:center;font-size:10px;font-weight:600;color:var(--ad-dim)}
.pmad-cell.active{border-color:var(--ad-accent);box-shadow:0 0 0 2px rgba(255,213,74,.25);transform:translateY(-3px)}
.pmad-cell.window{background:rgba(122,162,255,.16);border-color:var(--ad-info)}
.pmad-cell.match{background:rgba(95,207,131,.22);border-color:var(--ad-good)}
.pmad-cell.bad{background:rgba(255,111,111,.18);border-color:var(--ad-bad)}
.pmad-cell.done{opacity:.5}
.pmad-cell.dim{opacity:.4}
/* pointers */
.pmad-ptr{position:absolute;top:0;display:flex;flex-direction:column;align-items:center;
  transition:transform .4s cubic-bezier(.4,1.2,.5,1);will-change:transform;pointer-events:none}
.pmad-ptr .tag{font-size:10px;font-weight:800;color:var(--ad-accent);background:rgba(255,213,74,.14);
  border:1px solid rgba(255,213,74,.4);border-radius:5px;padding:1px 5px;white-space:nowrap}
.pmad-ptr .car{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--ad-accent);margin-top:2px}
.pmad-ptr.c1 .tag{color:var(--ad-info);background:rgba(122,162,255,.14);border-color:rgba(122,162,255,.4)} .pmad-ptr.c1 .car{border-top-color:var(--ad-info)}
.pmad-ptr.c2 .tag{color:var(--ad-good);background:rgba(95,207,131,.14);border-color:rgba(95,207,131,.4)} .pmad-ptr.c2 .car{border-top-color:var(--ad-good)}

/* side panel: map / stack / note */
.pmad-side{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;align-items:flex-end}
.pmad-panel{min-width:120px}
.pmad-panel h5{margin:0 0 6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--ad-dim);text-align:center}
.pmad-rows{display:flex;flex-direction:column;gap:4px}
.pmad-row{display:flex;gap:6px;align-items:center;justify-content:center;font-size:13px;font-weight:700;
  background:var(--ad-cell);border:1px solid var(--ad-cell-b);border-radius:7px;padding:4px 9px;animation:pmadIn .3s ease}
.pmad-row .k{color:var(--ad-info)} .pmad-row .arrow{color:var(--ad-dim)} .pmad-row .v{color:var(--ad-ink)}
.pmad-stack{display:flex;flex-direction:column-reverse;gap:4px;align-items:center}
.pmad-stack .pmad-row{min-width:54px}
@keyframes pmadIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* grid / table stage */
.pmad-grid{display:grid;gap:4px}
.pmad-gc{min-width:34px;height:34px;border-radius:7px;background:var(--ad-cell);border:1.5px solid var(--ad-cell-b);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;
  transition:background .3s ease,border-color .3s ease,transform .3s ease,box-shadow .3s ease}
.pmad-gc.cur{border-color:var(--ad-accent);box-shadow:0 0 0 2px rgba(255,213,74,.25);transform:scale(1.06)}
.pmad-gc.visit{background:rgba(122,162,255,.18);border-color:var(--ad-info)}
.pmad-gc.path{background:rgba(95,207,131,.22);border-color:var(--ad-good)}
.pmad-gc.wall{background:#0b0c10;border-color:#000;color:#3a3f4b}
.pmad-gc.fill{background:rgba(255,213,74,.16);border-color:var(--ad-accent)}

/* generic storyboard fallback */
.pmad-story{width:100%;max-width:560px}
.pmad-story .f{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:8px;transition:opacity .3s,background .3s}
.pmad-story .f .n{flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:var(--ad-cell-b);color:var(--ad-ink);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center}
.pmad-story .f.on{background:rgba(255,213,74,.10)} .pmad-story .f.on .n{background:var(--ad-accent);color:#1a1a1f}
.pmad-story .f.past{opacity:.5}

/* caption + controls */
.pmad-cap{margin:12px 2px 0;font-size:13px;line-height:1.5;color:var(--ad-ink);min-height:20px;text-align:center}
.pmad-cap b{color:var(--ad-accent)}
.pmad-result{margin-top:8px;text-align:center;font-size:12.5px;font-weight:700;color:var(--ad-good)}
.pmad-ctl{display:flex;align-items:center;gap:8px;justify-content:center;margin-top:12px;flex-wrap:wrap}
.pmad-ctl button{background:var(--ad-cell);border:1px solid var(--ad-cell-b);color:var(--ad-ink);
  border-radius:8px;padding:6px 11px;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}
.pmad-ctl button:hover{background:var(--ad-cell-b);border-color:var(--ad-dim)}
.pmad-ctl button:disabled{opacity:.4;cursor:default}
.pmad-ctl .play{background:var(--ad-accent);color:#1a1a1f;border-color:var(--ad-accent)}
.pmad-ctl .play:hover{filter:brightness(1.05)}
.pmad-ctl .prog{font-size:12px;color:var(--ad-dim);font-variant-numeric:tabular-nums;min-width:48px;text-align:center}
.pmad-ctl .spd{font-size:12px;color:var(--ad-dim);cursor:pointer;user-select:none;border:1px solid var(--ad-cell-b);border-radius:7px;padding:5px 8px}

@media (prefers-color-scheme:light){
  .pmad{--ad-cell:#f4f5f8;--ad-cell-b:#d9dce4;--ad-ink:#16181d;--ad-dim:#5b6473;background:#fff}
}
@media (prefers-reduced-motion:reduce){
  .pmad-cell,.pmad-ptr,.pmad-gc,.pmad-story .f{transition:none}
  .pmad-row{animation:none}
}
@media (max-width:560px){ .pmad-cell{min-width:34px;height:40px;font-size:14px} .pmad-side{gap:12px} }

/* linked list stage */
.pmad-list-wrap{position:relative;display:inline-block;padding-top:26px}
.pmad-list{display:flex;align-items:center;gap:2px}
.pmad-lnode{min-width:42px;height:44px;border-radius:10px;background:var(--ad-cell);border:1.5px solid var(--ad-cell-b);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;
  transition:background .35s,border-color .35s,transform .35s,box-shadow .35s}
.pmad-lnode.active{border-color:var(--ad-accent);box-shadow:0 0 0 2px rgba(255,213,74,.25);transform:translateY(-3px)}
.pmad-lnode.done{background:rgba(95,207,131,.18);border-color:var(--ad-good)}
.pmad-lnode.dim{opacity:.4}
.pmad-arrow{color:var(--ad-dim);font-size:18px;font-weight:800;padding:0 3px;transition:transform .35s,color .35s}
.pmad-arrow.rev{transform:scaleX(-1);color:var(--ad-good)}
.pmad-arrow.cut{color:var(--ad-bad);opacity:.5}

/* nodes (tree / graph) stage */
.pmad-nodes{position:relative;width:100%}
.pmad-edges{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.pmad-edges line{stroke:var(--ad-cell-b);stroke-width:2;transition:stroke .35s,stroke-width .35s}
.pmad-edges line.on{stroke:var(--ad-accent);stroke-width:3}
.pmad-edges line.path{stroke:var(--ad-good);stroke-width:3}
.pmad-node{position:absolute;transform:translate(-50%,-50%);min-width:34px;height:34px;border-radius:50%;
  background:var(--ad-cell);border:2px solid var(--ad-cell-b);display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:13px;padding:0 6px;transition:background .35s,border-color .35s,box-shadow .35s,transform .2s}
.pmad-node.cur{border-color:var(--ad-accent);box-shadow:0 0 0 3px rgba(255,213,74,.25)}
.pmad-node.visit{background:rgba(122,162,255,.20);border-color:var(--ad-info)}
.pmad-node.path{background:rgba(95,207,131,.22);border-color:var(--ad-good)}
.pmad-node.bad{background:rgba(255,111,111,.18);border-color:var(--ad-bad)}
.pmad-node.dim{opacity:.45}

/* intervals timeline */
.pmad-timeline{width:100%;max-width:520px;display:flex;flex-direction:column;gap:6px}
.pmad-trow{width:100%;height:24px;position:relative;display:flex}
.pmad-bar{height:22px;border-radius:6px;background:var(--ad-cell);border:1.5px solid var(--ad-cell-b);
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;min-width:26px;
  transition:background .35s,border-color .35s,margin-left .35s,width .35s}
.pmad-bar.active{border-color:var(--ad-accent);background:rgba(255,213,74,.16)}
.pmad-bar.merge{background:rgba(95,207,131,.22);border-color:var(--ad-good)}
.pmad-bar.bad{background:rgba(255,111,111,.18);border-color:var(--ad-bad)}

/* bits */
.pmad-bit{font-family:ui-monospace,Menlo,monospace}
.pmad-bit.set{background:rgba(255,213,74,.16);border-color:var(--ad-accent)}
.pmad-bit.one{color:var(--ad-good)}
