
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;600;700&family=Syne:wght@700;800;900&display=swap');

:root {
  --bg:#f0eeec; --surface:#fff; --surface2:#f8f7f5;
  --border:#e0ddd8; --shadow:rgba(0,0,0,0.07);
  --accent:#5c4fff; --accent2:#ff4f9a; --accent3:#00c98d;
  --text:#1a1a2e; --muted:#8a8a9a;
}
/* ── THEMES ── */
[data-theme="light"] {
  --bg:#f5f5f5; --surface:#ffffff; --surface2:#efefef;
  --border:#d0d0d0; --shadow:rgba(0,0,0,0.06);
  --accent:#2563eb; --accent2:#e11d88; --accent3:#059669;
  --text:#111827; --muted:#6b7280;
}
[data-theme="dark"] {
  --bg:#0d0f18; --surface:#161925; --surface2:#1e2235;
  --border:#2a2e45; --shadow:rgba(0,0,0,0.55);
  --accent:#8b7fff; --accent2:#ff6eb4; --accent3:#00e0a0;
  --text:#dde0f0; --muted:#6070a0;
  --link-color:#3d4470;
  --node-obj-bg:#1e1a3a; --node-obj-bor:#3a2f70; --node-obj-col:#9080f0;
  --node-arr-bg:#2a1a35; --node-arr-bor:#5a2a60; --node-arr-col:#d070d0;
  --node-str-bg:#0f2520; --node-str-bor:#1a5040; --node-str-col:#40c880;
  --node-num-bg:#251a0a; --node-num-bor:#5a3510; --node-num-col:#e09040;
  --node-boo-bg:#250f0f; --node-boo-bor:#5a1a1a; --node-boo-col:#e05050;
  --node-nul-bg:#1a1a22; --node-nul-bor:#35353f; --node-nul-col:#8080a0;
}
[data-theme="dark"] .nc{box-shadow:0 2px 18px rgba(0,0,0,0.6)}
[data-theme="dark"] .nh{border-bottom-color:var(--border)}
[data-theme="dark"] textarea{color:var(--text)}
[data-theme="dark"] .fr:hover{background:#1e2245}
[data-theme="dark"] .cr:hover{background:#1e2245}
[data-theme="dark"] .fr.key-highlighted{background:#252555!important}
[data-theme="dark"] .fr.key-highlighted .fk{color:#a090ff!important}
/* darker grid on dark theme */
[data-theme="dark"] #gw{
  background-image:linear-gradient(rgba(255,255,255,0.04) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,0.04) 1px,transparent 1px);
}
/* fix zoom button icons on dark */
[data-theme="dark"] .zb{color:var(--text)}
[data-theme="dark"] .zb:hover{color:var(--accent)}
/* type badge icons on dark */
[data-theme="dark"] .tb{opacity:0.9}
[data-theme="candy"] {
  --bg:#fdf4ff; --surface:#ffffff; --surface2:#faf0fe;
  --border:#e8c8f8; --shadow:rgba(180,0,255,0.07);
  --accent:#9333ea; --accent2:#f472b6; --accent3:#06b6d4;
  --text:#1e0a3c; --muted:#a06abf;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'JetBrains Mono',monospace;background:var(--bg);color:var(--text);height:100vh;display:flex;flex-direction:column;overflow:hidden}

/* HEADER */
header{height:52px;display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;z-index:20;box-shadow:0 1px 6px var(--shadow)}
.logo{font-family:'Syne',sans-serif;font-size:21px;font-weight:900;letter-spacing:-1px;display:flex;align-items:center;user-select:none;white-space:nowrap}
.logo-j{color:var(--text)}.logo-bang{color:var(--accent2);font-size:13px;font-weight:900;letter-spacing:0;margin-left:4px;align-self:flex-end;margin-bottom:2px}.logo-b{color:var(--accent)}
.hdiv{width:1px;height:24px;background:var(--border)}
.search-wrap{position:relative;flex:1;max-width:280px}
.search-wrap input{width:100%;background:var(--surface2);border:1.5px solid var(--border);border-radius:8px;color:var(--text);font-family:'JetBrains Mono',monospace;font-size:12px;padding:6px 48px 6px 30px;outline:none;transition:all .2s}
.search-wrap input:focus{border-color:var(--accent)}
.search-wrap input.active{background:#f0ecff;border-color:var(--accent);box-shadow:0 0 0 3px rgba(92,79,255,0.12)}
[data-theme="dark"] .search-wrap input.active{background:#1e1a3a;border-color:var(--accent);box-shadow:0 0 0 3px rgba(140,127,255,0.18)}
.si{position:absolute;left:9px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--muted);pointer-events:none}
#sc{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:10px;color:var(--accent);font-weight:700}
.btn{display:flex;align-items:center;gap:5px;padding:5px 13px;border-radius:8px;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;cursor:pointer;border:1.5px solid var(--border);background:var(--surface);color:var(--text);transition:all .15s;white-space:nowrap}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff}.btn.pri:hover{background:#4a3ee0}
.btn.fix{background:#fff8e8;border-color:#f0d080;color:#b08000}.btn.fix:hover{background:#fff0c0;border-color:#e0c000}
.btn.imp{background:#16a34a;border-color:#15803d;color:#fff;font-weight:700}.btn.imp:hover{background:#15803d;border-color:#166534}
[data-theme="dark"] .btn.imp{background:#166534;border-color:#14532d;color:#86efac}
[data-theme="candy"] .btn.imp{background:#7c3aed;border-color:#6d28d9;color:#fff}
[data-theme="light"] .btn.imp{background:#1d4ed8;border-color:#1e40af;color:#fff}
.btn.bfy{background:#0891b2;border-color:#0e7490;color:#fff;font-weight:700}.btn.bfy:hover{background:#0e7490}
.btn.active-mode{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
[data-theme="dark"] .btn.bfy{background:#164e63;border-color:#155e75;color:#67e8f9}
.btn-g{display:flex;gap:6px}

/* LAYOUT */
.app{display:flex;flex:1;overflow:hidden}

/* LEFT PANEL */
.pl{width:310px;min-width:180px;max-width:80vw;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}
.ptabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}
.ptab{flex:1;padding:9px;text-align:center;font-size:10px;font-weight:700;letter-spacing:.5px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;transition:all .15s;text-transform:uppercase}
.ptab.active{color:var(--accent);border-bottom-color:var(--accent)}
.tc{display:none;flex:1;overflow:hidden;flex-direction:column}.tc.active{display:flex}

/* EDITOR */
#je{flex:1;background:transparent;border:none;color:var(--text);font-family:'JetBrains Mono',monospace;font-size:11.5px;line-height:1.65;padding:12px;resize:none;outline:none}
.efooter{height:40px;padding:0 12px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-size:10px;flex-shrink:0;gap:8px}
#es{flex:1}.ok{color:#00b07a!important}.err{color:#e03030!important}.warn{color:#d08000!important}

/* ERROR PANEL */
.ep{background:#fff5f5;border-top:2px solid #ffc0c0;padding:10px 12px 6px;font-size:11px;display:none;flex-shrink:0;max-height:180px;overflow-y:auto}
.ep-footer{padding:6px 12px 8px;background:#fff5f5;border-top:1px solid #ffd0d0;display:none;flex-shrink:0}
.ep-footer.vis{display:block}
.ep.vis{display:block}
.el{color:#c0392b;font-weight:700;margin-bottom:3px}
.ed{color:#aaa;font-size:10px;margin-bottom:6px}
.ec{background:#fff;border:1px solid #ffc0c0;border-radius:6px;padding:6px 10px;font-size:10.5px;white-space:pre;overflow-x:auto}
.em{background:#ffe0e0;color:#c0392b;border-radius:2px;padding:0 2px;font-weight:700}

/* REMOVED TAB */
.rem-list{padding:10px 12px;flex:1;overflow-y:auto}
.rem-item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #f4f4f4;font-size:11px}
.rem-foot{padding:8px 10px;border-top:1px solid var(--border);display:flex;gap:6px}

/* RESIZE */
.rh{width:4px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background .2s}
.rh:hover{background:var(--accent)}

/* GRAPH */
.gw{flex:1;position:relative;overflow:hidden;background:var(--bg);
  background-image:linear-gradient(rgba(180,175,168,0.22) 1px,transparent 1px),linear-gradient(90deg,rgba(180,175,168,0.22) 1px,transparent 1px);
  background-size:28px 28px}
#gs{width:100%;height:100%}

/* NODE CARDS (HTML inside foreignObject) */
.nc{background:var(--surface);border:1.5px solid var(--border);border-radius:10px;box-shadow:0 2px 10px var(--shadow);font-family:'JetBrains Mono',monospace;overflow:hidden;position:relative;box-sizing:border-box}
.nh{padding:6px 10px 6px 8px;font-size:11px;font-weight:700;display:flex;align-items:center;gap:6px;cursor:move;border-bottom:1.5px solid var(--border)}
.tb{font-size:9px;padding:2px 7px;border-radius:10px;font-weight:700;flex-shrink:0}
.nlbl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
.nsz{font-size:9px;color:#aaa;flex-shrink:0}
.nf{padding:3px 0}
.fr{display:flex;align-items:center;padding:3px 10px;gap:5px;font-size:10.5px;transition:background .1s;cursor:pointer;min-height:22px;position:relative}
.fr:hover{background:#f0ecff}
.fr:hover .fd{opacity:1}
.fr.key-highlighted{background:#ede8ff!important;outline:2px solid #7b68ee33;outline-offset:-1px}
.fr.key-highlighted .fk{color:#5c4fff!important;font-weight:700}
.fk{color:var(--muted);flex-shrink:0;font-size:10px}
.fv{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fd{width:16px;height:16px;background:#ffe8e8;border:none;border-radius:4px;color:#c0392b;font-size:13px;line-height:1;cursor:pointer;opacity:0;transition:opacity .1s;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-weight:900;font-family:sans-serif}
.fd:hover{background:#ffc0c0}

.cr-lbl{flex:1;font-weight:600}
.cbadge{font-size:9px;padding:2px 7px;border-radius:10px;font-weight:700;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:72px}
.csw{display:inline-block;width:10px;height:10px;border-radius:2px;border:1px solid rgba(0,0,0,0.15);vertical-align:middle;margin-right:2px;flex-shrink:0}

/* LINK */
.lp{fill:none;stroke:var(--link-color,#ccc);stroke-width:1.5}
.lp.hi{stroke:var(--accent);stroke-width:2}

/* CONTEXT MENU */
.ctx-item{padding:6px 10px;font-size:11px;border-radius:6px;cursor:pointer;color:var(--text);transition:background .1s}
.ctx-item:hover{background:#f0ecff;color:var(--accent)}

/* COLLAPSE BUTTON active state */
.zb.active{background:var(--accent);border-color:var(--accent);color:#fff}

/* EXPAND BUTTON on child-ref row */
.cr{display:flex;align-items:center;padding:3px 10px 3px 10px;gap:6px;font-size:10.5px;color:var(--muted);min-height:22px;cursor:pointer;transition:background .1s;position:relative;padding-right:30px}
.cr:hover{background:#f5f0ff}
/* circle +/- button on right edge, centered vertically, half-outside the card */
.cr-expand{
  position:absolute;
  right:3px;
  top:50%;
  transform:translateY(-50%);
  width:14px;height:14px;
  background:#e8e8e8;
  border:1.5px solid #aaaaaa;
  border-radius:50%;
  color:#777777;
  font-size:9px;
  line-height:1;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-weight:700;
  font-family:sans-serif;
  transition:all .15s;
  z-index:10;
  opacity:0.65;
}
.cr-expand:hover{background:#d8d8d8;border-color:#888;color:#444;opacity:1;transform:translateY(-50%) scale(1.08)}
.cr-expand.expanded{background:#e0e0e0;border-color:#999;color:#555;opacity:0.75}

/* TOAST */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#1a1a2e;color:#fff;font-family:'JetBrains Mono',monospace;font-size:11px;padding:8px 18px;border-radius:8px;z-index:9999;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.show{opacity:1}

/* ARRAY ITEM SEPARATORS */
.arr-sep{stroke:#7060c0;stroke-width:3;stroke-dasharray:8 5;opacity:0.85}
.arr-sep-label{font-family:'JetBrains Mono',monospace;font-size:9px;fill:#a090cc;font-weight:700}

/* SAME-INDEX HIGHLIGHT */
.nc.idx-selected{border-width:2.5px!important;box-shadow:0 0 0 3px var(--idx-glow,#7b68ee44),0 4px 16px rgba(0,0,0,0.12)!important}
.nc.idx-selected .nh{filter:brightness(0.93)}
.nc.idx-dimmed{opacity:0.28}

/* NODE DELETE (whole node) */
.nd{width:18px;height:18px;background:transparent;border:none;border-radius:4px;color:#ccc;font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-weight:900;font-family:sans-serif;transition:all .15s;padding:0}
.nd:hover{background:#ffe0e0;color:#c0392b}

/* MERGED NODE */
.nc.merged{border-style:dashed;border-width:2px}
.merge-badge{font-size:9px;padding:2px 7px;border-radius:10px;background:#fff3cd;color:#856404;font-weight:700;border:1px solid #ffc107;margin-left:4px}
.merge-varied{color:#e08030!important;font-style:italic}
.merge-varied::after{content:'~';font-size:8px;margin-left:2px;opacity:.7}
.irregular-badge{display:inline-flex;align-items:center;gap:2px;font-size:9px;padding:1px 5px;border-radius:8px;background:#fff3cd;color:#856404;border:1px solid #ffc107;font-weight:700;flex-shrink:0;margin-left:2px}
.irregular-badge title{display:none}

/* ZOOM */
.zc{position:absolute;top:14px;right:14px;display:flex;gap:6px}
.zb{width:30px;height:30px;background:var(--surface);border:1.5px solid var(--border);border-radius:8px;color:var(--text);font-size:16px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s;box-shadow:0 1px 4px var(--shadow);position:relative}
.zb:hover{border-color:var(--accent);color:var(--accent)}

/* THEME SWITCHER */
.theme-sw{display:flex;gap:3px;background:var(--surface);border:1.5px solid var(--border);border-radius:8px;padding:3px;box-shadow:0 1px 4px var(--shadow)}
.th-btn{width:22px;height:22px;background:transparent;border:none;border-radius:5px;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--muted);line-height:1;position:relative}
.th-btn:hover{background:var(--surface2);color:var(--text)}
.th-btn.active{background:var(--accent);color:#fff;box-shadow:0 1px 4px rgba(0,0,0,0.15)}

/* LANG SWITCHER */
.lang-sw{display:flex;gap:2px;background:var(--surface);border:1.5px solid var(--border);border-radius:8px;padding:3px;box-shadow:0 1px 4px var(--shadow)}
.lang-btn{width:26px;height:22px;background:transparent;border:none;border-radius:5px;font-size:10px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--muted);font-family:'JetBrains Mono',monospace;letter-spacing:.5px}
.lang-btn:hover{background:var(--surface2);color:var(--text)}
.lang-btn.active{background:var(--accent);color:#fff;box-shadow:0 1px 4px rgba(0,0,0,0.15)}

/* TOOLTIP */
#tt{position:absolute;background:var(--surface);border:1.5px solid var(--accent);border-radius:8px;padding:7px 11px;font-size:11px;pointer-events:none;display:none;z-index:200;max-width:240px;word-break:break-all;box-shadow:0 4px 16px var(--shadow)}

/* EXPORT */
.xp{position:absolute;bottom:18px;right:18px;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:14px;width:272px;display:none;z-index:100;box-shadow:0 6px 28px var(--shadow)}
.xp.open{display:block}
.xp h3{font-family:'Syne',sans-serif;font-size:14px;font-weight:800;margin-bottom:10px;color:var(--accent)}
.tnw{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.tnw label{font-size:10px;color:var(--muted);white-space:nowrap}
.tnw input{flex:1;background:var(--surface2);border:1.5px solid var(--border);border-radius:6px;color:var(--text);font-family:'JetBrains Mono',monospace;font-size:11px;padding:4px 8px;outline:none}
.tnw input:focus{border-color:var(--accent)}
.xo{background:var(--surface2);border:1.5px solid var(--border);border-radius:8px;padding:9px 12px;margin-bottom:7px;cursor:pointer;transition:border-color .15s}
.xo:hover{border-color:var(--accent)}
.xo .xt{font-size:11px;font-weight:700;color:var(--text);margin-bottom:2px}
.xo .xd{color:var(--muted);font-size:10px}
.dialect-btn{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;padding:4px 9px;border-radius:6px;border:1.5px solid var(--border);background:var(--surface2);color:var(--muted);cursor:pointer;transition:all .15s;white-space:nowrap}
.dialect-btn:hover{border-color:var(--accent);color:var(--accent)}
.dialect-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}

/* EMPTY */
.es{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}
.es .big{font-family:'Syne',sans-serif;font-size:56px;font-weight:900;color:#d0ccc8;letter-spacing:-3px}
.es p{font-size:12px;color:var(--muted);margin-top:8px}

/* INFO */
.ib{position:absolute;bottom:12px;left:12px;font-size:10px;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:4px 10px}

::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}

/* DRAG & DROP OVERLAY */
#dropOverlay{position:fixed;inset:0;z-index:99999;background:rgba(92,79,255,0.13);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .15s}
#dropOverlay.active{opacity:1;pointer-events:auto}
#dropOverlayInner{background:var(--surface);border:2.5px dashed var(--accent);border-radius:20px;padding:48px 64px;text-align:center;box-shadow:0 8px 48px rgba(92,79,255,0.18);pointer-events:none}
#dropOverlayIcon{font-size:48px;line-height:1;margin-bottom:16px;color:var(--accent)}
#dropOverlayText{font-family:'Syne',sans-serif;font-size:22px;font-weight:900;color:var(--accent);margin-bottom:6px}
#dropOverlaySub{font-size:11px;color:var(--muted);font-weight:700;letter-spacing:.5px;text-transform:uppercase}

/* FILE TABS */
#fileTabBar{height:36px;display:flex;align-items:stretch;background:var(--surface2);border-bottom:1px solid var(--border);padding:0 6px;gap:1px;flex-shrink:0;overflow-x:auto;overflow-y:hidden;z-index:10;box-shadow:0 1px 4px var(--shadow)}
#fileTabBar::-webkit-scrollbar{height:3px}
#fileTabBar::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
.ftab-label{display:flex;align-items:center;padding:0 8px 0 4px;font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:900;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;white-space:nowrap;flex-shrink:0;border-right:1px solid var(--border);margin-right:4px;user-select:none;opacity:0.6}
.ftab{display:flex;align-items:center;gap:5px;padding:0 8px 0 12px;border-bottom:2px solid transparent;font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;color:var(--muted);cursor:pointer;transition:all .15s;white-space:nowrap;max-width:180px;flex-shrink:0;user-select:none;background:transparent}
.ftab:hover{color:var(--text);background:var(--surface)}
.ftab.active{color:var(--text);border-bottom-color:var(--accent);background:var(--surface)}
[data-theme="light"] .ftab.active{background:#e8f0ff;border-bottom-color:var(--accent)}
[data-theme="dark"] .ftab.active{background:var(--surface);border-bottom-color:var(--accent)}
[data-theme="candy"] .ftab.active{background:#f3e8ff;border-bottom-color:var(--accent)}
.ftab-name{max-width:110px;overflow:hidden;text-overflow:ellipsis}
.ftab-close{width:14px;height:14px;background:transparent;border:none;border-radius:3px;color:var(--muted);font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .1s;flex-shrink:0;font-family:sans-serif;font-weight:400}
.ftab-close:hover{background:#ffe0e0;color:#c03030}
.ftab-add{width:24px;height:24px;background:transparent;border:1.5px dashed var(--border);border-radius:6px;color:var(--muted);font-size:18px;font-weight:300;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;align-self:center;margin-left:4px;font-family:sans-serif;line-height:1}
.ftab-add:hover{border-color:var(--accent);color:var(--accent)}

/* VIEW SWITCHER */
.view-sw{display:flex;gap:2px;background:var(--surface);border:1.5px solid var(--border);border-radius:8px;padding:3px;box-shadow:0 1px 4px var(--shadow)}
.vw-btn{width:28px;height:22px;background:transparent;border:none;border-radius:5px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--muted);line-height:1;position:relative}
.vw-btn:hover{background:var(--surface2);color:var(--text)}
.vw-btn.active{background:var(--accent);color:#fff;box-shadow:0 1px 4px rgba(0,0,0,0.15)}
.zc{z-index:20}

/* CUSTOM TOOLTIPS (data-tip attribute) */
[data-tip]{position:relative}
[data-tip]:hover::after{
  content:attr(data-tip);
  position:absolute;
  top:calc(100% + 7px);
  left:50%;
  transform:translateX(-50%);
  background:#1a1a2e;
  color:#fff;
  font-family:'JetBrains Mono',monospace;
  font-size:10px;
  font-weight:600;
  padding:4px 9px;
  border-radius:6px;
  white-space:nowrap;
  pointer-events:none;
  z-index:9999;
  box-shadow:0 2px 8px rgba(0,0,0,0.28);
  opacity:0.93;
}
[data-theme="dark"] [data-tip]:hover::after{background:#3a3f5e;border:1px solid var(--border)}


/* USER BUTTON */
.jb-user-btn{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--border);background:var(--surface);color:var(--muted);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;position:relative;line-height:1}
.jb-user-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--surface2)}
.jb-user-btn.logged-in{border-color:#5c4fff;color:#5c4fff;background:#f0edff}
.jb-user-btn.logged-in:hover{background:#e4e0ff}
#jbUserPanel a:hover,.jb-user-btn+div button:hover{background:var(--surface2)}

/* SCHEMA MODAL */
.schema-wrap{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;max-width:700px;width:95%;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 8px 40px rgba(0,0,0,0.2);overflow:hidden}
.schema-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.schema-code{margin:0;padding:16px 20px;overflow:auto;font-family:'JetBrains Mono',monospace;font-size:11px;line-height:1.65;color:var(--text);flex:1;white-space:pre;background:var(--surface2);border:none;outline:none}
[data-theme="dark"] .schema-code{background:#1e2235;color:#c8d3f5}

/* ── MOBILE ── */
@media (max-width: 640px) {
  body{height:auto;min-height:100vh;overflow:auto}
  header{height:auto;flex-wrap:wrap;padding:8px 12px;gap:6px}
  .logo{font-size:17px}
  .search-wrap{order:10;flex:1 0 100%;max-width:100%}
  /* hide resize handle and some spacers */
  .rh,.hdiv{display:none}
  /* stack layout vertically */
  .app{flex-direction:column;overflow:visible}
  .pl{width:100%;max-width:100%;height:260px;min-width:0;border-right:none;border-bottom:1px solid var(--border);flex-shrink:0}
  .gw{min-height:60vh;flex:1}
  /* export panel: full-width on mobile */
  .xp{width:calc(100vw - 36px);right:18px;left:18px}
  /* zoom controls: smaller gap from edge */
  .zc{top:8px;right:8px}
  /* hide tab bar label text to save space */
  .ftab-label{display:none}
}
