:root{
    --bg:#070a0f; --bg2:#0b1018; --panel:rgba(20,26,36,.72); --panel2:rgba(28,35,48,.7);
    --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.14);
    --fg:#eaf1f8; --mut:#8b97a8; --dim:#5d6b7d;
    --acc:#34e1a1; --acc2:#43b6ff; --acc3:#b07bff; --red:#ff6b6b; --amber:#ffce5a;
    --grad:linear-gradient(120deg,#34e1a1 0%,#2dd4bf 38%,#43b6ff 72%,#b07bff 100%);
    --glow:0 0 0 1px var(--line), 0 18px 48px -20px rgba(0,0,0,.8);
    --r:14px;
  }
  *{box-sizing:border-box}
  html,body{margin:0;height:100%}
  body{
    background:var(--bg); color:var(--fg);
    font:14px/1.55 'Inter',ui-sans-serif,system-ui,sans-serif;
    display:flex; flex-direction:column; overflow:hidden;
    -webkit-font-smoothing:antialiased;
  }
  /* animated aurora background */
  body::before{content:'';position:fixed;inset:-30%;z-index:-2;pointer-events:none;
    background:
      radial-gradient(38% 44% at 12% 8%, rgba(52,225,161,.16), transparent 60%),
      radial-gradient(40% 48% at 88% 18%, rgba(67,182,255,.15), transparent 62%),
      radial-gradient(46% 50% at 70% 96%, rgba(176,123,255,.13), transparent 60%);
    filter:blur(20px); animation:drift 22s ease-in-out infinite alternate;}
  @keyframes drift{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(0,-2%,0) scale(1.06)}}
  body::after{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.5;
    background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
    background-size:46px 46px; mask-image:radial-gradient(circle at 50% 40%,#000,transparent 85%);}

  ::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line2);border-radius:8px}
  ::-webkit-scrollbar-track{background:transparent}

  /* header */
  header{display:flex;align-items:center;gap:16px;padding:13px 22px;border-bottom:1px solid var(--line);
    background:linear-gradient(180deg,rgba(13,18,26,.9),rgba(13,18,26,.55));backdrop-filter:blur(14px);z-index:10}
  .brand{display:flex;align-items:center;gap:12px}
  .mark{width:34px;height:34px;border-radius:10px;background:var(--grad);position:relative;box-shadow:0 6px 22px -6px rgba(52,225,161,.6);}
  .mark::after{content:'◈';position:absolute;inset:0;display:grid;place-items:center;color:#06120c;font-size:17px;font-weight:900}
  .brand b{font-size:17px;font-weight:800;letter-spacing:-.02em}
  .brand .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
  .brand small{display:block;color:var(--mut);font-size:11.5px;font-weight:500;margin-top:-2px}
  .sp{flex:1}
  .badge{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--mut);padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel)}
  .dot{width:7px;height:7px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px var(--acc);animation:pulse 2s infinite}
  @keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

  button{font:inherit;cursor:pointer;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);color:var(--fg);padding:8px 13px;transition:.16s;font-weight:500}
  button:hover{border-color:var(--acc2);transform:translateY(-1px);box-shadow:0 8px 24px -12px rgba(67,182,255,.5)}
  button:active{transform:translateY(0)}
  button.primary{background:var(--grad);color:#04130b;border:none;font-weight:700}
  button.primary:hover{box-shadow:0 10px 30px -8px rgba(52,225,161,.6);filter:brightness(1.06)}
  button.ghost{background:transparent;border-color:var(--line)}
  select,textarea,input{background:rgba(6,10,16,.85);color:var(--fg);border:1px solid var(--line2);border-radius:10px;padding:9px 11px;font:inherit;width:100%;transition:.15s}
  select:focus,textarea:focus,input:focus{outline:none;border-color:var(--acc2);box-shadow:0 0 0 3px rgba(67,182,255,.16)}
  textarea{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px;resize:vertical;line-height:1.5}
  input::placeholder{color:var(--dim)}

  main{flex:1;display:grid;grid-template-columns:332px 1fr 312px;min-height:0}
  .col{padding:16px;overflow:auto;display:flex;flex-direction:column;gap:6px}
  .col.left{border-right:1px solid var(--line)} .col.right{border-left:1px solid var(--line)}
  h3{margin:16px 0 9px;font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--dim);font-weight:700;display:flex;align-items:center;gap:8px}
  h3 .n{width:18px;height:18px;border-radius:6px;background:var(--panel2);border:1px solid var(--line2);display:grid;place-items:center;font-size:10px;color:var(--acc)}

  .recipes{display:flex;flex-direction:column;gap:7px}
  .rc{display:flex;align-items:center;gap:11px;text-align:left;padding:10px 12px;border-radius:11px;background:var(--panel);border:1px solid var(--line)}
  .rc:hover{border-color:var(--acc);transform:translateX(2px);box-shadow:0 8px 24px -16px rgba(52,225,161,.7)}
  .rc .ic{font-size:17px;width:24px;text-align:center;filter:saturate(1.2)}
  .rc .tx{font-size:12.5px;font-weight:600;letter-spacing:-.01em}
  .row{display:flex;gap:9px}
  label.sm{font-size:10.5px;color:var(--dim);font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin:12px 0 5px;display:block}
  .err{color:var(--red);font-size:12px;white-space:pre-wrap;font-family:'JetBrains Mono',monospace;margin-top:4px}

  /* canvas */
  .stage{display:flex;flex-direction:column;min-height:0;position:relative}
  .ctoolbar{display:flex;gap:9px;align-items:center;padding:9px 16px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,rgba(13,18,26,.6),transparent)}
  .ctoolbar button{padding:6px 11px;font-size:12.5px}
  .pill{font-size:11.5px;color:var(--mut);font-family:'JetBrains Mono',monospace;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel)}
  .canvas{flex:1;display:flex;align-items:center;justify-content:center;margin:16px;border-radius:18px;overflow:hidden;position:relative;
    background:radial-gradient(circle at 50% 30%,#fff,#eef2f6);box-shadow:var(--glow),inset 0 0 0 1px rgba(255,255,255,.04)}
  .canvas img{max-width:100%;max-height:100%;height:auto;display:block;will-change:transform}
  /* hero empty state */
  .hero{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:40px;
    background:radial-gradient(60% 60% at 50% 35%,rgba(20,26,36,.9),rgba(7,10,15,.97))}
  .hero h1{font-size:clamp(26px,3.4vw,44px);line-height:1.07;font-weight:900;letter-spacing:-.03em;margin:0;max-width:14ch}
  .hero h1 span{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
  .hero p{color:var(--mut);max-width:46ch;margin:0;font-size:15px}
  .hero .cta{display:flex;gap:12px;margin-top:6px}
  .chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:10px;max-width:40ch}
  .chips span{font-size:11px;color:var(--mut);border:1px solid var(--line2);border-radius:999px;padding:4px 11px;background:var(--panel)}
  /* loading shimmer */
  .loading{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:rgba(7,10,15,.5);backdrop-filter:blur(3px);z-index:5}
  .loading.on{display:flex}
  .spinner{width:46px;height:46px;border-radius:50%;border:3px solid rgba(255,255,255,.12);border-top-color:var(--acc);animation:spin .8s linear infinite}
  @keyframes spin{to{transform:rotate(360deg)}}

  /* results */
  .stat{display:flex;gap:11px;margin:6px 0 4px}
  .box{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 12px;text-align:center;position:relative;overflow:hidden}
  .box::before{content:'';position:absolute;inset:0 0 auto 0;height:2px;background:var(--grad);opacity:.8}
  .box b{display:block;font-size:30px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;
    background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
  .box span{font-size:10.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.1em;font-weight:600}
  table{width:100%;border-collapse:collapse;font-size:12px;font-family:'JetBrains Mono',monospace}
  th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)} th{color:var(--dim);font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.08em}
  tbody tr:hover{background:rgba(255,255,255,.03)}
  .muted{color:var(--mut)}.tiny{font-size:11px}
  .det{font-size:11.5px;color:var(--mut);line-height:1.6;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:11px}
  .det b{color:var(--fg)}

  /* tutorial */
  .tut-mask{position:fixed;inset:0;background:rgba(2,4,8,.66);backdrop-filter:blur(2px);z-index:50;display:none}
  .tut{position:fixed;z-index:52;max-width:350px;background:linear-gradient(180deg,rgba(24,31,43,.98),rgba(16,21,30,.98));border:1px solid var(--acc2);border-radius:16px;padding:20px;box-shadow:0 30px 70px -20px #000}
  .tut h4{margin:0 0 7px;font-size:16px;font-weight:800}
  .tut p{margin:0 0 15px;color:#c4d0dd;font-size:13.5px}
  .tut .nav{display:flex;justify-content:space-between;align-items:center}
  .tut .dots{display:flex;gap:5px}.tut .dots i{width:7px;height:7px;border-radius:50%;background:var(--line2);transition:.2s}.tut .dots i.on{background:var(--acc);width:18px;border-radius:4px}
  .spot{position:fixed;z-index:51;border:2px solid var(--acc);border-radius:12px;pointer-events:none;transition:.25s cubic-bezier(.4,0,.2,1);box-shadow:0 0 0 4px rgba(52,225,161,.22),0 0 0 9999px rgba(2,4,8,.55)}

  /* compiled-plan panel (native collapsible) */
  details.plan{margin-top:11px;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:2px 12px}
  details.plan summary{cursor:pointer;list-style:none;font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--dim);font-weight:700;padding:9px 0;user-select:none}
  details.plan summary::-webkit-details-marker{display:none}
  details.plan summary::before{content:'▸';color:var(--acc);margin-right:7px;font-size:9px;display:inline-block}
  details.plan[open] summary::before{content:'▾'}
  .planpre{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--mut);background:rgba(6,10,16,.85);border:1px solid var(--line2);border-radius:10px;padding:11px;max-height:240px;overflow:auto;white-space:pre-wrap;margin:0 0 10px}
  .cheat{font-size:10.5px;color:var(--dim);font-family:'JetBrains Mono',monospace;line-height:1.5;margin:6px 0 2px}
  .cheat b{color:var(--mut);font-weight:600}

/* CodeMirror (query editor) — themed to the dark UI */
.CodeMirror{height:auto;min-height:150px;background:rgba(6,10,16,.85);color:#eaf1f8;border:1px solid var(--line2);border-radius:10px;
  font-family:JetBrains Mono,ui-monospace,monospace;font-size:12.5px;line-height:1.6;padding:6px 4px}
.CodeMirror-focused{border-color:var(--acc2);box-shadow:0 0 0 3px rgba(67,182,255,.16)}
.CodeMirror-cursor{border-left:1px solid #eaf1f8}
.cm-s-default .cm-string{color:#34e1a1}.cm-s-default .cm-string.cm-property{color:#43b6ff}
.cm-s-default .cm-number{color:#ffce5a}.cm-s-default .cm-atom{color:#b07bff}
.cm-s-default .cm-property{color:#9fb3c8}.CodeMirror-selected{background:rgba(67,182,255,.22)}
.CodeMirror-hints{background:#11161f;border:1px solid var(--line2);border-radius:9px;font-family:JetBrains Mono,monospace;font-size:12px;box-shadow:0 14px 40px -16px #000;z-index:60}
.CodeMirror-hint{color:#cdd6e0;padding:4px 9px}
li.CodeMirror-hint-active{background:var(--grad);color:#04130b}
/* empty-result state — guidance over the canvas */
.emptystate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;background:radial-gradient(60% 60% at 50% 45%,rgba(13,18,26,.86),rgba(7,10,15,.93));
  color:#cdd6e0;font-weight:700;font-size:21px;text-align:center;padding:34px}
.emptystate small{font-weight:400;font-size:13px;color:var(--mut);max-width:44ch;line-height:1.6}
.emptystate code{font-family:'JetBrains Mono',monospace;color:var(--acc2);background:rgba(67,182,255,.12);padding:1px 5px;border-radius:5px}
