:root{--page:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink2:#52514e;--muted:#898781;
  --hair:rgba(11,11,11,.10);--hair2:rgba(11,11,11,.06);--accent:#2a78d6;--accent-d:#1c5cab;
  --accent-t:rgba(42,120,214,.08);--shadow:0 1px 2px rgba(11,11,11,.05),0 1px 3px rgba(11,11,11,.04)}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--page);color:var(--ink);font-family:system-ui,-apple-system,'Segoe UI',sans-serif;
  height:100vh;overflow:hidden;display:flex;flex-direction:column}
button{font-family:inherit;cursor:pointer;border:none;background:none}
#topbar{display:flex;align-items:center;gap:20px;padding:0 24px;height:58px;flex:none;
  background:var(--surface);border-bottom:1px solid var(--hair)}
#logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;color:inherit;text-decoration:none}
#logo em{font-style:normal;color:var(--accent)}
#topbar span.sub{color:var(--muted);font-size:14px}
.tb-link{margin-left:auto;color:var(--ink2);font-size:13.5px;font-weight:500;padding:8px 14px;
  border-radius:8px;text-decoration:none}
.tb-link:hover{background:var(--accent-t);color:var(--accent-d)}
.tb-link.pri{background:var(--accent);color:#fff;font-weight:600;margin-left:0}
#stage{flex:1;position:relative}
#c3d{width:100%;height:100%;display:block}
#panel{position:absolute;left:20px;top:20px;width:270px;background:var(--surface);
  border:1px solid var(--hair);border-radius:12px;box-shadow:var(--shadow);padding:18px}
#panel h2{font-size:15px;font-weight:650;letter-spacing:-.01em;margin-bottom:4px}
#panel p{color:var(--ink2);font-size:12.5px;margin-bottom:14px}
#panel label{font-size:12px;color:var(--ink2);font-weight:600;display:block;margin-bottom:6px}
#asm{width:100%;accent-color:var(--accent)}
.legend{margin-top:14px;border-top:1px solid var(--hair2);padding-top:12px}
.legend .li{display:flex;gap:9px;align-items:center;font-size:12.5px;color:var(--ink2);padding:4px 0;cursor:pointer;border-radius:6px}
.legend .li:hover{color:var(--accent-d)}
.legend .sw{width:11px;height:11px;border-radius:3px;flex:none}
#tip{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);color:var(--muted);font-size:12px;
  background:var(--surface);border:1px solid var(--hair);border-radius:20px;padding:7px 18px;box-shadow:var(--shadow)}
#nolib{position:absolute;inset:0;display:none;place-items:center;text-align:center;color:var(--ink2);padding:30px}
