/* ======================================================================
   JSON Schema 生成器 · 独立设计（翡翠绿 / 树状结构主题）
   浅色 = 薄荷纸 + 翡翠；深色 = 墨绿黑 + 亮翠
   ====================================================================== */
.jg{
  --ink:#12271f; --sub:#4f6a5e; --faint:#8ba398;
  --bg:#f2f8f5; --card:#ffffff; --card2:#e8f3ed; --line:#d3e4da; --line2:#e0eee7;
  --pri:#047857; --pri-2:#10b981; --pri-soft:#d9f2e8; --pri-ink:#065f46;
  --amber:#b45309; --amber-soft:#fdf3e2;
  --red:#c62828; --red-soft:#fbeaea;
  --r:14px;
  --shadow:0 1px 2px rgba(18,39,31,.05),0 10px 28px rgba(4,120,87,.09);
  color:var(--ink);
  font-family:-apple-system,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",system-ui,sans-serif;
  font-size:15px; line-height:1.75;
  background:
    radial-gradient(820px 400px at 86% -130px, rgba(16,185,129,.11), transparent 60%),
    radial-gradient(700px 360px at -8% 150px, rgba(4,120,87,.07), transparent 60%),
    var(--bg);
  padding:0 16px 56px;
}
:root[data-theme="dark"] .jg{
  --ink:#e4f2ea; --sub:#9dbcb0; --faint:#688a7c;
  --bg:#0a1511; --card:#11201a; --card2:#16291f; --line:#24402f; --line2:#1d3628;
  --pri:#34d399; --pri-2:#6ee7b7; --pri-soft:rgba(52,211,153,.14); --pri-ink:#a7f3d0;
  --amber:#fbbf24; --amber-soft:rgba(251,191,36,.10);
  --red:#f87171; --red-soft:rgba(248,113,113,.12);
  --shadow:0 1px 2px rgba(0,0,0,.4),0 12px 32px rgba(0,0,0,.42);
}
.jg *{box-sizing:border-box;}
.jg b{font-weight:700;}
.jg-wrap{max-width:1140px;margin:0 auto;}
.jg textarea,.jg pre,.jg code{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Consolas,"Courier New",monospace;}

.jg-hero{margin-top:22px;border-radius:16px;overflow:hidden;box-shadow:var(--shadow);
  background:linear-gradient(120deg,#064e3b,#047857 50%,#10b981 115%);position:relative;}
:root[data-theme="dark"] .jg-hero{background:linear-gradient(120deg,#04241b,#065f46 50%,#0b7a55 115%);}
.jg-branch{position:absolute;right:18px;top:0;bottom:0;width:200px;opacity:.25;pointer-events:none;
  font-family:ui-monospace,Consolas,monospace;font-size:13px;line-height:2.1;color:#d1fae5;text-align:right;}
.jg-hero-body{position:relative;padding:24px 28px;}
.jg-hero h1{margin:0 0 8px;font-size:clamp(23px,3.4vw,31px);font-weight:900;color:#fff;line-height:1.3;}
.jg-hero p{margin:0;color:#c8ecdd;font-size:15px;max-width:820px;}
.jg-hero p em{font-style:normal;color:#86efac;font-weight:700;}

.jg-desk{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px;align-items:start;}
@media (max-width:940px){.jg-desk{grid-template-columns:1fr;}}
.jg-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;}
.jg-card h2{margin:0 0 4px;font-size:16px;font-weight:800;display:flex;align-items:center;gap:8px;}
.jg-card h2::before{content:"❋";color:var(--pri-2);font-size:15px;}
.jg-tip{font-size:12.5px;color:var(--sub);margin:0 0 10px;}
.jg-ta{width:100%;min-height:280px;resize:vertical;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--ink);font-size:13px;line-height:1.7;outline:none;}
.jg-ta:focus{border-color:var(--pri-2);box-shadow:0 0 0 3px var(--pri-soft);}
.jg-pre{width:100%;min-height:280px;max-height:460px;overflow:auto;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--ink);padding:12px 14px;font-size:12.5px;line-height:1.65;white-space:pre;margin:0;}
.jg-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;}
.jg-chip{border:1px solid var(--line);background:var(--card2);color:var(--sub);border-radius:999px;padding:5px 14px;font-size:13px;cursor:pointer;font-weight:600;transition:all .15s;user-select:none;}
.jg-chip:hover{border-color:var(--pri-2);color:var(--pri-ink);}
.jg-chip.on{background:var(--pri);border-color:var(--pri);color:#fff;}
:root[data-theme="dark"] .jg-chip.on{color:#06231a;}
.jg-btn{border:none;border-radius:10px;padding:9px 20px;font-size:14px;font-weight:800;cursor:pointer;transition:all .15s;}
.jg-btn-go{background:var(--pri);color:#fff;}
:root[data-theme="dark"] .jg-btn-go{color:#06231a;}
.jg-btn-go:hover{background:var(--pri-2);}
.jg-btn-ghost{background:var(--card2);color:var(--pri-ink);border:1px solid var(--line);}
.jg-btn-ghost:hover{border-color:var(--pri-2);}
.jg-msg{margin-top:10px;font-size:13px;min-height:20px;font-weight:600;}
.jg-msg.err{color:var(--red);}
.jg-msg.ok{color:var(--pri);}

.jg-overview{margin-top:12px;border:1px dashed var(--line);border-radius:10px;padding:10px 14px;}
.jg-overview .t{font-size:12.5px;font-weight:700;color:var(--sub);margin-bottom:6px;}
.jg-keyrow{display:flex;flex-wrap:wrap;gap:6px;}
.jg-key{font-family:ui-monospace,Consolas,monospace;font-size:12px;background:var(--pri-soft);color:var(--pri-ink);border-radius:7px;padding:2px 9px;}
.jg-key i{font-style:normal;color:var(--amber);font-weight:700;}
.jg-key.opt{background:var(--card2);color:var(--sub);}

.jg-faq{margin-top:34px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px 24px;box-shadow:var(--shadow);}
.jg-faq h2{margin:0 0 12px;font-size:19px;font-weight:900;}
.jg-faq h3{margin:18px 0 6px;font-size:15.5px;font-weight:800;color:var(--pri-ink);}
.jg-faq p{margin:0;color:var(--sub);font-size:14px;}
.jg-faq p b{color:var(--ink);}

/* ---------- 深度面板：模板 / 结构树 / 多格式导出 ---------- */
.jg-deep{margin-top:18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;min-width:0;}
.jg-deep-head h2{margin:0 0 4px;font-size:16px;font-weight:800;display:flex;align-items:center;gap:8px;}
.jg-deep-head h2::before{content:"❋";color:var(--pri-2);font-size:15px;}
.jg-deep-head p{margin:0 0 14px;font-size:12.5px;color:var(--sub);}
.jg-deep-tpls{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;}
.jg-deep-tpl{border:1px solid var(--line);background:var(--card2);color:var(--sub);border-radius:999px;padding:5px 14px;font-size:12.5px;font-weight:700;cursor:pointer;transition:all .15s;}
.jg-deep-tpl:hover{border-color:var(--pri-2);color:var(--pri-ink);}
.jg-deep-tpl.on{background:var(--pri);border-color:var(--pri);color:#fff;}
:root[data-theme="dark"] .jg-deep-tpl.on{color:#06231a;}
.jg-deep-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;}
.jg-deep-panel{min-width:0;}
.jg-deep-panel + .jg-deep-panel{border-left:1px solid var(--line2);padding-left:16px;}
.jg-deep-cap{font-size:12px;font-weight:700;color:var(--sub);margin:0 0 6px;}
.jg-deep-sel{padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--ink);font-size:13px;font-weight:700;outline:none;}
.jg-deep-sel:focus{border-color:var(--pri-2);box-shadow:0 0 0 3px var(--pri-soft);}
.jg-deep-pre{min-height:220px;max-height:380px;margin-top:8px;white-space:pre-wrap;word-break:break-word;overflow:auto;}
.jg-deep-svg{width:100%;height:auto;display:block;background:var(--card2);border:1px solid var(--line);border-radius:10px;}
.jg-deep-svg text{font-family:ui-monospace,Consolas,monospace;}
.jg-deep-empty{margin-top:8px;font-size:11.5px;color:var(--faint);line-height:1.6;}
@media (max-width:900px){
  .jg-deep-grid{grid-template-columns:1fr;}
  .jg-deep-panel + .jg-deep-panel{border-left:none;padding-left:0;border-top:1px solid var(--line2);padding-top:14px;}
}
