/* lens — a private data workbench. Design: a dark "plotting console" — deep
   indigo-ink, a faint dot-grid plotting field, electric-cyan primary with an
   amber measure accent, everything data-bearing set in monospace. */

:root{
  --ink:#0A0C12; --ink-2:#0F121C; --ink-3:#141826; --panel:#11141F;
  --line:#20263A; --line-2:#2B3350;
  --text:#EAEEF9; --text-2:#9AA6C4; --text-3:#68738F;
  --cyan:#38E1FF; --cyan-dim:#1C6E82; --amber:#FFB020; --lime:#8BE04B;
  --bad:#FF6B6B;
  --sans:ui-sans-serif,-apple-system,"Segoe UI",Roboto,Inter,system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono","JetBrains Mono","Cascadia Code",Menlo,Consolas,monospace;
  --r:12px; --r-sm:9px; --ease:cubic-bezier(.22,.61,.36,1);
}
*{ box-sizing:border-box; }
html,body{ margin:0; height:100%; }
body{ font-family:var(--sans); background:var(--ink); color:var(--text); -webkit-font-smoothing:antialiased; letter-spacing:-.01em; overflow:hidden; }
.mono{ font-family:var(--mono); font-variant-numeric:tabular-nums; }

/* faint plotting-paper dot grid */
.grid-bg{ position:fixed; inset:0; z-index:0; pointer-events:none;
  background-image:radial-gradient(circle at center, rgba(120,140,190,.10) 1px, transparent 1.4px);
  background-size:26px 26px; mask-image:radial-gradient(circle at 30% 0%, #000 0%, transparent 78%); }

/* ── topbar ─────────────────────────────────────────────────────────────── */
.topbar{ position:relative; z-index:3; height:56px; display:flex; align-items:center; gap:16px;
  padding:0 18px; border-bottom:1px solid var(--line); background:rgba(10,12,18,.72); backdrop-filter:blur(10px); }
.brand{ display:inline-flex; align-items:center; gap:9px; text-decoration:none; color:var(--text); }
.brand-mark svg{ width:26px; height:26px; fill:none; stroke:var(--cyan); stroke-width:1.9; stroke-linecap:round; }
.brand-mark .handle{ stroke:var(--amber); }
.brand-word{ font-weight:700; font-size:19px; letter-spacing:-.03em; }
.privacy-chip{ display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--text-2);
  padding:5px 10px; border:1px solid var(--line-2); border-radius:999px; background:var(--ink-3); letter-spacing:0; }
.privacy-chip svg{ width:13px; height:13px; fill:none; stroke:var(--lime); stroke-width:1.8; }
.engine{ margin-left:auto; display:inline-flex; align-items:center; gap:8px; font-size:12px; color:var(--text-2); }
.engine-dot{ width:8px; height:8px; border-radius:50%; background:var(--amber); box-shadow:0 0 10px var(--amber); }
.engine-dot.ready{ background:var(--lime); box-shadow:0 0 10px var(--lime); }
.engine-dot.err{ background:var(--bad); box-shadow:0 0 10px var(--bad); }

/* boot progress bar — the engine is a ~36MB WASM download on first load */
.bootbar{ position:fixed; top:56px; left:0; right:0; height:2.5px; z-index:4; background:rgba(56,225,255,.08); overflow:hidden; }
.bootbar span{ display:block; height:100%; width:0; background:linear-gradient(90deg,var(--cyan),var(--amber)); box-shadow:0 0 12px var(--cyan); transition:width .25s var(--ease); }

.stage{ position:relative; z-index:1; height:calc(100% - 56px); }
.view{ position:absolute; inset:0; }

/* ── empty state ────────────────────────────────────────────────────────── */
.empty{ display:grid; place-items:center; padding:24px; overflow:auto; }
.empty-inner{ width:100%; max-width:640px; text-align:center; }
.eyebrow{ display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--text-2); margin:0 0 18px; }
.pin{ width:7px; height:7px; border-radius:50%; background:var(--cyan); box-shadow:0 0 12px var(--cyan); }
.empty h1{ font-size:clamp(34px,7vw,54px); line-height:1.02; letter-spacing:-.035em; margin:0 0 16px; font-weight:700; }
.empty h1 .hl{ color:var(--cyan); }
.lede{ font-size:16px; line-height:1.6; color:var(--text-2); margin:0 auto 26px; max-width:520px; }
.lede b{ color:var(--text); font-weight:600; }

.drop{ display:flex; flex-direction:column; align-items:center; gap:8px; padding:34px 24px; cursor:pointer;
  border:1.5px dashed var(--line-2); border-radius:16px; background:linear-gradient(180deg,rgba(56,225,255,.04),transparent);
  transition:.18s var(--ease); }
.drop:hover,.drop.hot{ border-color:var(--cyan); background:linear-gradient(180deg,rgba(56,225,255,.10),transparent); transform:translateY(-1px); }
.drop-glyph svg{ width:34px; height:34px; fill:none; stroke:var(--cyan); stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.drop-title{ font-size:17px; font-weight:600; }
.drop-sub{ font-size:12px; color:var(--text-3); letter-spacing:.02em; }
.samplebtn{ margin:16px 0 0; background:none; border:0; color:var(--amber); font-size:13.5px; cursor:pointer; font-weight:600; }
.samplebtn:hover{ text-decoration:underline; }
.promises{ list-style:none; margin:30px 0 0; padding:0; display:grid; gap:10px; text-align:left; }
.promises li{ font-size:13.5px; color:var(--text-2); padding-left:20px; position:relative; line-height:1.5; }
.promises li::before{ content:""; position:absolute; left:2px; top:7px; width:6px; height:6px; border-radius:50%; background:var(--cyan); }
.promises b{ color:var(--text); font-weight:600; }

/* ── workbench ──────────────────────────────────────────────────────────── */
.work{ display:grid; grid-template-columns:248px 1fr; }
.side{ border-right:1px solid var(--line); background:var(--ink-2); display:flex; flex-direction:column; overflow:hidden; }
.side-head{ display:flex; align-items:center; padding:12px 14px 8px; }
.side-title{ font-size:11px; letter-spacing:.16em; color:var(--text-3); }
.mini{ margin-left:auto; width:24px; height:24px; border-radius:7px; border:1px solid var(--line-2); background:var(--ink-3);
  color:var(--text-2); font-size:16px; line-height:1; cursor:pointer; }
.mini:hover{ color:var(--cyan); border-color:var(--cyan-dim); }
.tables{ flex:1; overflow:auto; padding:4px 8px 8px; }
.tbl{ margin-bottom:6px; border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--ink-3); }
.tbl-head{ display:flex; align-items:center; gap:8px; padding:9px 11px; cursor:pointer; }
.tbl-head:hover{ background:rgba(56,225,255,.05); }
.tbl-name{ font-family:var(--mono); font-size:13px; color:var(--cyan); font-weight:600; }
.tbl-rows{ margin-left:auto; font-family:var(--mono); font-size:11px; color:var(--text-3); }
.tbl-cols{ padding:2px 6px 8px; }
.col{ display:flex; align-items:center; gap:8px; padding:3px 8px; font-family:var(--mono); font-size:11.5px; border-radius:6px; cursor:pointer; }
.col:hover{ background:rgba(255,255,255,.04); }
.col-name{ color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.col-type{ margin-left:auto; color:var(--text-3); font-size:10.5px; text-transform:lowercase; }
.side-foot{ padding:9px 14px; border-top:1px solid var(--line); font-size:10.5px; color:var(--text-3); }

.panel{ display:flex; flex-direction:column; min-width:0; }
.editor-wrap{ border-bottom:1px solid var(--line); background:var(--ink-2); }
.editor-bar{ display:flex; align-items:center; gap:12px; padding:8px 12px; }
.editor-bar .lbl{ font-size:11px; letter-spacing:.16em; color:var(--text-3); }
.editor-bar .hint{ font-size:11px; color:var(--text-3); }
.grow{ flex:1; }
.run{ display:inline-flex; align-items:center; gap:7px; padding:7px 15px; border-radius:9px; border:0; cursor:pointer;
  background:var(--cyan); color:#04222b; font-weight:700; font-size:13px; letter-spacing:-.01em; }
.run:hover{ filter:brightness(1.08); }
.run svg{ width:13px; height:13px; fill:currentColor; }
.sql{ width:100%; height:132px; resize:vertical; border:0; outline:0; background:var(--ink); color:var(--text);
  font-size:13.5px; line-height:1.6; padding:12px 14px; tab-size:2; }
.sql::selection{ background:rgba(56,225,255,.28); }

.results{ flex:1; display:flex; flex-direction:column; min-height:0; }
.res-tabs{ display:flex; align-items:center; gap:4px; padding:8px 12px; border-bottom:1px solid var(--line); }
.tab{ padding:6px 12px; border-radius:8px; border:1px solid transparent; background:none; color:var(--text-2);
  font-size:12.5px; font-weight:600; cursor:pointer; }
.tab:hover{ color:var(--text); }
.tab.is-on{ color:var(--cyan); background:var(--ink-3); border-color:var(--line-2); }
.res-meta{ font-size:11.5px; color:var(--text-3); margin-right:6px; }
.mini2{ padding:6px 11px; border-radius:8px; border:1px solid var(--line-2); background:var(--ink-3); color:var(--text-2);
  font-size:12px; font-weight:600; cursor:pointer; }
.mini2:hover{ color:var(--amber); border-color:var(--amber); }
.res-body{ flex:1; overflow:auto; min-height:0; }

/* data grid */
table.grid{ border-collapse:collapse; width:max-content; min-width:100%; font-family:var(--mono); font-size:12.5px; }
.grid thead th{ position:sticky; top:0; z-index:2; background:var(--ink-3); color:var(--text-2); text-align:left;
  font-weight:600; padding:8px 12px; border-bottom:1px solid var(--line-2); white-space:nowrap; }
.grid thead th .th-type{ display:block; font-size:10px; color:var(--text-3); font-weight:400; text-transform:lowercase; }
.grid tbody td{ padding:6px 12px; border-bottom:1px solid rgba(32,38,58,.55); white-space:nowrap; color:var(--text); }
.grid tbody tr:hover td{ background:rgba(56,225,255,.05); }
.grid td.num{ text-align:right; color:var(--amber); }
.grid td.null{ color:var(--text-3); font-style:italic; }
.rownum{ color:var(--text-3); text-align:right; user-select:none; }

/* profile cards */
.prof-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; padding:14px; }
.pcard{ border:1px solid var(--line); border-radius:12px; background:var(--ink-2); padding:13px 14px; }
.pcard h4{ margin:0 0 2px; font-family:var(--mono); font-size:13px; color:var(--cyan); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pcard .ptype{ font-family:var(--mono); font-size:10.5px; color:var(--text-3); text-transform:lowercase; }
.pbar{ height:6px; border-radius:4px; background:var(--ink-3); margin:10px 0 8px; overflow:hidden; }
.pbar span{ display:block; height:100%; background:linear-gradient(90deg,var(--cyan),var(--cyan-dim)); }
.pstat{ display:flex; justify-content:space-between; font-family:var(--mono); font-size:11.5px; color:var(--text-2); padding:2px 0; }
.pstat b{ color:var(--text); font-weight:600; }

/* chart */
.chart-body{ display:flex; flex-direction:column; }
.chart-ctrls{ display:flex; gap:16px; padding:12px 14px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.chart-ctrls label{ font-size:12px; color:var(--text-2); display:inline-flex; align-items:center; gap:7px; }
.chart-ctrls select{ background:var(--ink-3); color:var(--text); border:1px solid var(--line-2); border-radius:7px; padding:5px 8px; font-size:12px; }
.chart{ flex:1; width:100%; min-height:0; padding:12px; }

/* misc */
.busy{ position:fixed; inset:0; z-index:20; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
  background:rgba(10,12,18,.72); backdrop-filter:blur(3px); color:var(--text-2); font-size:13px; }
.busy-ring{ width:38px; height:38px; border-radius:50%; border:3px solid var(--line-2); border-top-color:var(--cyan); animation:spin .8s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }
.toast{ position:fixed; left:50%; bottom:26px; transform:translateX(-50%) translateY(10px); z-index:30; opacity:0;
  background:var(--ink-3); border:1px solid var(--line-2); color:var(--text); padding:11px 16px; border-radius:11px;
  font-size:13px; max-width:min(90vw,460px); transition:.26s var(--ease); box-shadow:0 20px 50px -20px rgba(0,0,0,.7); }
.toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }
.toast.err{ border-color:var(--bad); }

@media(max-width:760px){
  .work{ grid-template-columns:1fr; }
  .side{ display:none; }
  .privacy-chip{ display:none; }
}
