/* JSON 三件套通用样式：Formatter / Diff / Schema */
.j3-wrap { background:#fff; border:1px solid #e5e7eb; border-radius:12px; padding:14px; }
.j3-toolbar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:10px; }
.j3-toolbar label { font-size:13px; color:#475569; margin-right:4px; }
.j3-toolbar select, .j3-toolbar input[type=number] { padding:4px 8px; border:1px solid #d1d5db; border-radius:6px; font-size:13px; }
.j3-toolbar .btn { padding:5px 12px; font-size:13px; }
.j3-grid { display:grid; gap:12px; }
.j3-grid.cols-2 { grid-template-columns:1fr 1fr; }
@media (max-width: 768px) { .j3-grid.cols-2 { grid-template-columns: 1fr; } }
.j3-pane { display:flex; flex-direction:column; }
.j3-pane label { font-size:12px; color:#64748b; margin-bottom:4px; font-weight:600; }
.j3-pane textarea, .j3-pane pre {
    flex:1; min-height:360px;
    font-family:'Fira Code', Consolas, Monaco, monospace; font-size:13px; line-height:1.55;
    border:1px solid #d1d5db; border-radius:8px; padding:10px;
    background:#fafafa; color:#1f2937;
    white-space:pre; overflow:auto; resize:vertical;
}
.j3-pane textarea:focus { outline:none; border-color:#6366f1; box-shadow:0 0 0 3px rgba(99,102,241,.15); }

.j3-msg { margin-top:8px; padding:8px 12px; border-radius:6px; font-size:13px; display:none; }
.j3-msg.ok    { display:block; background:#dcfce7; color:#166534; border:1px solid #86efac; }
.j3-msg.err   { display:block; background:#fee2e2; color:#991b1b; border:1px solid #fca5a5; }
.j3-msg.info  { display:block; background:#dbeafe; color:#1e40af; border:1px solid #93c5fd; }

.j3-stats { margin-top:6px; font-size:12px; color:#64748b; }
.j3-stats strong { color:#1e293b; }

/* Diff 视图 */
.j3-diff-row { padding:2px 6px; font-family:'Fira Code', monospace; font-size:12.5px; line-height:1.5; white-space:pre; }
.j3-diff-row.add    { background:#dcfce7; color:#14532d; }
.j3-diff-row.del    { background:#fee2e2; color:#7f1d1d; }
.j3-diff-row.change { background:#fef3c7; color:#78350f; }
.j3-diff-row.same   { color:#94a3b8; }
.j3-diff-pre { max-height:520px; overflow:auto; border:1px solid #e5e7eb; border-radius:8px; padding:6px 0; background:#fafafa; }

/* Schema 推导 */
.j3-tree { font-family:'Fira Code', monospace; font-size:13px; line-height:1.65; }
.j3-tree .key { color:#7c3aed; font-weight:600; }
.j3-tree .type { color:#0891b2; }
.j3-tree .req { color:#dc2626; font-weight:600; margin-left:4px; font-size:11px; }
.j3-tree .opt { color:#94a3b8; font-size:11px; margin-left:4px; }
.j3-tree .desc { color:#64748b; font-style:italic; }
