*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background:#04121f;
  color:#dff3ff;
  font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  overflow:hidden;
}
#viz{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0}

/* ---------- top bar ---------- */
#bar{
  position:fixed;top:0;left:0;right:0;z-index:30;
  display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  padding:10px 12px;
  background:linear-gradient(180deg,rgba(2,10,20,.72),rgba(2,10,20,0));
  backdrop-filter:blur(2px);
}
.spacer{flex:1}
.pill{
  font:500 12px/1 "JetBrains Mono",monospace;
  color:#cfeaff;
  background:rgba(6,26,44,.55);
  border:1px solid rgba(120,210,255,.28);
  padding:7px 11px;border-radius:999px;
  cursor:pointer;letter-spacing:.02em;
  display:inline-flex;align-items:center;gap:7px;
  transition:background .15s,border-color .15s,transform .1s;
}
.pill:hover{background:rgba(14,50,80,.7);border-color:rgba(150,230,255,.55)}
.pill:active{transform:translateY(1px)}
.pill.primary{background:rgba(0,190,255,.16);border-color:rgba(120,235,255,.6);color:#eafcff}
.pill.on{background:rgba(255,90,180,.2);border-color:rgba(255,140,200,.7);color:#ffe6f4}
.pill.sel{padding:3px 4px 3px 11px;color:#7fb9d8}
.pill select{
  font:500 12px/1 "JetBrains Mono",monospace;
  background:transparent;color:#eafcff;border:0;outline:0;
  padding:5px 6px;border-radius:999px;cursor:pointer;
}
.pill select option{background:#06182a;color:#dff3ff}
.mono{font-variant-numeric:tabular-nums;color:#82d7ff;background:transparent;border-color:transparent;cursor:default}

/* ---------- editor ---------- */
#editor-wrap{
  position:fixed;z-index:20;
  top:52px;left:14px;
  width:min(760px,calc(100vw - 28px));
  height:calc(100vh - 130px);
}
#hl,#code{
  position:absolute;inset:0;margin:0;
  padding:10px 12px;
  font:500 14px/1.62 "JetBrains Mono",ui-monospace,monospace;
  letter-spacing:.01em;
  white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;
  border:0;overflow:auto;tab-size:2;
}
#hl{color:#9fd8f5;pointer-events:none;text-shadow:0 1px 3px rgba(0,10,25,.85)}
#code{
  background:transparent;color:transparent;caret-color:#7ff3ff;
  resize:none;outline:none;
}
#code::selection{background:rgba(120,220,255,.28)}
#hl .cm{color:#4d7f9c;font-style:italic}
#hl .tn{color:#ff8fd0;font-weight:700}
#hl .gk{color:#c39cff;font-weight:700}
#hl .pk{color:#5fa8c9}
#hl .pv{color:#8be0b6}
#hl .op{color:#4f93b8}
#hl .dr{color:#ffd479}
#hl .nt{color:#c8ecff}
#hl .nu{color:#9fe8c4}
#hl .act{
  color:#03131f;background:#a9f2ff;border-radius:3px;
  box-shadow:0 0 14px rgba(140,240,255,.75);text-shadow:none;
}
#hl .act.dr{background:#ffd479;color:#241500}
#hl .act.tn{background:#ff8fd0;color:#2a0016}

/* ---------- tracks ---------- */
#tracks{
  position:fixed;z-index:25;left:14px;bottom:14px;
  display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100vw - 28px);
}
.trk{
  font:500 11px/1 "JetBrains Mono",monospace;
  padding:6px 10px;border-radius:999px;cursor:pointer;
  background:rgba(6,26,44,.5);border:1px solid rgba(120,210,255,.22);
  color:#a9d8ee;display:inline-flex;align-items:center;gap:6px;
}
.trk .dot{width:6px;height:6px;border-radius:50%;background:#2d566e;transition:background .08s,box-shadow .08s}
.trk.hit .dot{background:#8ff4ff;box-shadow:0 0 10px #8ff4ff}
.trk.muted{opacity:.4;text-decoration:line-through}

#err{
  position:fixed;z-index:26;left:14px;bottom:52px;
  font:500 12px/1.5 "JetBrains Mono",monospace;color:#ff9db5;
  background:rgba(60,0,20,.55);border:1px solid rgba(255,120,150,.35);
  padding:6px 10px;border-radius:8px;max-width:calc(100vw - 28px);
  display:none;white-space:pre-wrap;
}
#err.show{display:block}

/* ---------- docs ---------- */
#doc,#catalog{
  position:fixed;inset:0;z-index:60;
  background:rgba(2,10,20,.86);backdrop-filter:blur(6px);
  overflow:auto;
}
.doc-inner{max-width:820px;margin:0 auto;padding:56px 24px 80px;font-size:13px;line-height:1.7;color:#bfe6fb}
.doc-inner h1{font-size:26px;margin:0 0 6px;color:#8ff4ff;letter-spacing:.06em}
.doc-inner h2{font-size:14px;margin:26px 0 8px;color:#ff8fd0;letter-spacing:.08em;text-transform:uppercase}
.doc-inner code{background:rgba(120,220,255,.1);padding:1px 5px;border-radius:4px;color:#a9f2ff}
.doc-inner table{border-collapse:collapse;width:100%}
.doc-inner td{padding:4px 10px 4px 0;vertical-align:top;border-bottom:1px solid rgba(120,210,255,.1)}
.doc-inner td:first-child{white-space:nowrap;width:190px}
#doc-close,#cat-close{
  position:fixed;top:14px;right:18px;background:none;border:0;color:#8ff4ff;
  font-size:20px;cursor:pointer;
}
@media (max-width:720px){
  #editor-wrap{height:calc(100vh - 190px)}
  #hl,#code{font-size:12.5px}
}

#cat-table{border-collapse:collapse;width:100%;font-size:12.5px}
#cat-table td{padding:6px 10px 6px 0;border-bottom:1px solid rgba(120,210,255,.1);vertical-align:top}
#cat-table td:first-child{color:#dff3ff}
#cat-table .who{color:#7fb9d8;white-space:nowrap}
#cat-table a{color:#8ff4ff;text-decoration:none}
#cat-table a:hover{text-decoration:underline}
#cat-table .only{color:#4d7f9c}
#cat-table td:nth-child(3),#cat-table td:nth-child(4){white-space:nowrap;text-align:right}
#cat-table td:nth-child(3){width:110px}
#cat-table td:nth-child(4){width:120px}
.mini{
  font:500 11px/1 "JetBrains Mono",monospace;color:#03131f;background:#8ff4ff;
  border:0;border-radius:999px;padding:5px 10px;cursor:pointer;white-space:nowrap;
}
.mini:hover{background:#c7f9ff}
