/* ======================================================================
   JSON-LD 生成器 · 独立设计（企业控制台 / 配置面板主题）
   浅色 = 石板灰白 + 翡翠绿；深色 = 暗夜后台
   ====================================================================== */
.jl{
  --ink:#1e293b; --sub:#55647a; --faint:#93a1b5;
  --bg:#eef1f5; --card:#ffffff; --card2:#f1f4f8; --line:#d9e0e9; --line2:#e7ecf2;
  --pri:#059669; --pri-2:#10b981; --pri-soft:#d9f3e9; --pri-ink:#065f46;
  --slate:#334155; --code-bg:#0f172a; --code-ink:#a5f3fc;
  --ok:#15803d; --err:#dc2626;
  --r:10px;
  --shadow:0 1px 2px rgba(30,41,59,.05),0 12px 28px rgba(30,41,59,.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:
    linear-gradient(180deg, rgba(5,150,105,.05), transparent 260px),
    var(--bg);
  padding:0 16px 56px;
}
:root[data-theme="dark"] .jl{
  --ink:#e2e8f0; --sub:#94a3b8; --faint:#5b6b82;
  --bg:#0b1120; --card:#111a2c; --card2:#16213a; --line:#243350; --line2:#1d2a44;
  --pri:#34d399; --pri-2:#6ee7b7; --pri-soft:rgba(52,211,153,.12); --pri-ink:#a7f3d0;
  --slate:#cbd5e1; --code-bg:#060b16; --code-ink:#67e8f9;
  --ok:#4ade80; --err:#f87171;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 14px 34px rgba(0,0,0,.5);
}
.jl *{box-sizing:border-box;}
.jl-wrap{max-width:1180px;margin:0 auto;}
.jl input,.jl select,.jl textarea,.jl code,.jl pre{font-family:"JetBrains Mono",ui-monospace,Consolas,monospace;}

.jl-hero{margin-top:22px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 24px;box-shadow:var(--shadow);}
.jl-hero h1{margin:0 0 4px;font-size:clamp(21px,3vw,27px);font-weight:900;}
.jl-hero h1 em{font-style:normal;color:var(--pri);}
.jl-hero p{margin:0;color:var(--sub);font-size:14px;max-width:840px;}
.jl-hero p b{color:var(--pri-ink);}

.jl-desk{display:grid;grid-template-columns:190px 1fr 1fr;gap:14px;margin-top:16px;}
@media (max-width:1060px){.jl-desk{grid-template-columns:1fr;}.jl-rail{display:flex;flex-wrap:wrap;gap:8px;}}
.jl-rail{display:flex;flex-direction:column;gap:8px;}
@media (max-width:1060px){.jl-rail{flex-direction:row;}}
.jl-tab{border:1.5px solid var(--line);background:var(--card);color:var(--sub);border-radius:var(--r);padding:10px 12px;font-size:13px;font-weight:800;cursor:pointer;text-align:left;transition:all .15s;}
.jl-tab small{display:block;font-weight:600;font-size:11px;color:var(--faint);}
.jl-tab:hover{border-color:var(--pri-2);}
.jl-tab.on{border-color:var(--pri);background:var(--pri-soft);color:var(--pri-ink);}
.jl-tab.on small{color:var(--pri-ink);}

.jl-form,.jl-out{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow);}
.jl-form h2,.jl-out h2{margin:0 0 12px;font-size:12.5px;font-weight:900;letter-spacing:.12em;color:var(--slate);}
.jl-field{margin-bottom:11px;}
.jl-field label{display:block;font-size:12px;font-weight:800;color:var(--sub);margin-bottom:4px;}
.jl-field label i{color:var(--err);font-style:normal;}
.jl-in{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card2);color:var(--ink);font-size:13px;outline:none;}
.jl-in:focus{border-color:var(--pri-2);box-shadow:0 0 0 3px var(--pri-soft);}
.jl-in.bad{border-color:var(--err);}
textarea.jl-in{min-height:64px;resize:vertical;font-family:inherit;}
.jl-pair{border:1px dashed var(--line);border-radius:8px;padding:10px;margin-bottom:8px;position:relative;}
.jl-pair .jl-del{position:absolute;right:6px;top:6px;border:none;background:none;color:var(--faint);font-size:15px;cursor:pointer;}
.jl-pair .jl-del:hover{color:var(--err);}
.jl-add{border:1px dashed var(--pri-2);background:transparent;color:var(--pri-ink);border-radius:8px;padding:6px 14px;font-size:12.5px;font-weight:800;cursor:pointer;}
.jl-add:hover{background:var(--pri-soft);}
.jl-code{background:var(--code-bg);color:var(--code-ink);border-radius:10px;padding:14px 16px;font-size:12px;line-height:1.65;min-height:300px;max-height:420px;overflow:auto;white-space:pre;margin:0;}
.jl-msg{font-size:13px;font-weight:700;min-height:20px;margin-top:10px;}
.jl-msg.err{color:var(--err);}
.jl-msg.ok{color:var(--ok);}
.jl-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.jl-btn{border:none;background:var(--pri);color:#fff;border-radius:9px;padding:8px 16px;font-size:13px;font-weight:800;cursor:pointer;}
.jl-btn:hover{background:var(--pri-2);}
.jl-btn-ghost{background:var(--card2);color:var(--pri-ink);border:1.5px solid var(--line);}
.jl-btn-ghost:hover{border-color:var(--pri-2);}

/* ---------- 实体结构 / 校验报告 ---------- */
.jl-extra{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px;}
@media (max-width:900px){.jl-extra{grid-template-columns:1fr;}}
.jl-extra-col{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow);min-width:0;}
.jl-extra-col h2{margin:0 0 8px;font-size:12.5px;font-weight:900;letter-spacing:.12em;color:var(--slate);}
.jl-hint{margin:0 0 12px;font-size:12.5px;color:var(--sub);line-height:1.7;}
.jl-viz{background:var(--card2);border:1px solid var(--line2);border-radius:9px;padding:8px 10px;overflow-x:auto;}
.jl-viz svg{display:block;width:100%;height:auto;min-width:520px;}
.jl-viz .jl-vt{fill:var(--sub);font-size:12px;font-weight:800;font-family:inherit;}
.jl-viz .jl-vl{fill:var(--ink);font-size:11.5px;font-weight:800;font-family:inherit;}
.jl-viz .jl-vn{fill:var(--sub);font-size:11px;font-family:inherit;}
.jl-viz .jl-vroot{fill:#fff;font-size:12px;font-weight:900;font-family:inherit;}
:root[data-theme="dark"] .jl-viz .jl-vroot{fill:#0b1120;}
.jl-issues{list-style:none;margin:0 0 4px;padding:0;display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;}
.jl-issue{border-left:4px solid var(--line);background:var(--card2);border-radius:0 8px 8px 0;padding:8px 12px;font-size:13px;line-height:1.65;}
.jl-issue b{display:block;font-weight:800;color:var(--ink);}
.jl-issue em{display:block;font-style:normal;font-size:12px;color:var(--sub);margin-top:2px;}
.jl-issue .jl-lv{display:inline-block;font-size:11px;font-weight:900;padding:0 7px;border-radius:999px;margin-bottom:4px;background:var(--pri-soft);color:var(--pri-ink);}
.jl-issue.lv-err{border-left-color:var(--err);}
.jl-issue.lv-err .jl-lv{background:rgba(220,38,38,.14);color:var(--err);}
.jl-issue.lv-warn{border-left-color:#d97706;}
.jl-issue.lv-warn .jl-lv{background:rgba(217,119,6,.14);color:#d97706;}
.jl-issue.lv-info{border-left-color:#2563eb;}
.jl-issue.lv-info .jl-lv{background:rgba(37,99,235,.14);color:#2563eb;}
.jl-issue.lv-ok{border-left-color:var(--ok);}
.jl-issue.lv-ok .jl-lv{background:rgba(21,128,61,.14);color:var(--ok);}
:root[data-theme="dark"] .jl-issue.lv-warn{border-left-color:#fbbf24;}
:root[data-theme="dark"] .jl-issue.lv-warn .jl-lv{color:#fbbf24;}
:root[data-theme="dark"] .jl-issue.lv-info{border-left-color:#60a5fa;}
:root[data-theme="dark"] .jl-issue.lv-info .jl-lv{color:#60a5fa;}
.jl-empty{color:var(--faint);font-size:12.5px;padding:18px 4px;text-align:center;}

.jl-faq{margin-top:32px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px 26px;box-shadow:var(--shadow);}
.jl-faq h2{margin:0 0 10px;font-size:19px;font-weight:900;color:var(--pri-ink);}
.jl-faq h3{margin:16px 0 4px;font-size:15px;font-weight:800;}
.jl-faq p{margin:0;color:var(--sub);font-size:14px;}
.jl-faq p b{color:var(--ink);}
