.jf-tool{display:flex;flex-direction:column;gap:1rem}.jf-editor-card{border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 1px 3px #0000000a;overflow:hidden}.jf-editor-header{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-sans);font-size:14px;font-weight:600;color:#94a3b8;padding:10px 16px;letter-spacing:.5px}.jf-counter{font-family:var(--font-mono);font-size:11px;color:#94a3b8;font-weight:400}.jf-editor-body{display:flex;position:relative}.jf-line-gutter{width:44px;min-height:200px;padding:1rem 8px 1rem 0;text-align:right;font-family:var(--font-mono);font-size:13px;line-height:1.5;color:#94a3b8;background:#f8fafc;border-right:1px solid #e2e8f0;overflow:hidden;white-space:pre;user-select:none;flex-shrink:0}.jf-line-error{display:inline-block;width:100%;background:#ef444426;color:#dc2626;font-weight:700;border-radius:2px;padding:0 2px}.jf-textarea{flex:1;min-height:200px;padding:1rem;font-family:var(--font-mono);font-size:14px;line-height:1.5;border:none;outline:none;resize:vertical;background:#fff;color:#0f172a;box-sizing:border-box;tab-size:2;white-space:pre;overflow-x:auto}.jf-textarea::placeholder{color:#94a3b8}.jf-actions{display:flex;gap:.5rem;flex-wrap:wrap}.jf-file-label{cursor:pointer}.jf-indent-section{display:flex;align-items:center;gap:.75rem}.jf-indent-label{font-family:var(--font-sans);font-size:13px;font-weight:600;color:#64748b}.jf-indent-bar{display:flex;background:#f1f5f9;border-radius:8px;padding:3px;gap:2px}.jf-indent-opt{font-family:var(--font-mono);font-size:13px;font-weight:500;padding:4px 14px;border:none;border-radius:6px;background:transparent;color:#64748b;cursor:pointer;transition:all .15s ease}.jf-indent-opt:hover{color:#334155}.jf-indent-opt.active{background:#fff;color:#e07203;box-shadow:0 1px 3px #00000014;font-weight:600}.jf-validation{font-family:var(--font-sans);font-size:.8rem;font-weight:700;padding:.75rem 1rem;border:1px solid #e2e8f0;border-radius:8px;letter-spacing:.5px}.jf-validation.valid{background:#dcfce7;color:#166534}.jf-validation.invalid{background:#fef2f2;color:#991b1b}.jf-stats{font-family:var(--font-mono);font-size:12px;font-weight:500;padding:8px 14px;border-radius:8px;background:#10b98114;color:#059669;letter-spacing:.3px}.jf-output-body{max-height:500px;overflow:auto}.jf-output-pre{flex:1;margin:0;padding:1rem;font-family:var(--font-mono);font-size:14px;line-height:1.5;white-space:pre;overflow-x:auto;background:transparent;color:#0f172a}.jf-output-pre code{font-family:inherit;font-size:inherit;line-height:inherit}.jf-key{color:#c2410c}.jf-str{color:#15803d}.jf-num{color:#1d4ed8}.jf-bool{color:#7c3aed}.jf-brace{color:#64748b}.jf-output-actions{padding:.75rem 1rem;display:flex;gap:.5rem;border-top:1px solid #e2e8f0}html[data-theme=dark] .jf-editor-card{border-color:#3f3f46;box-shadow:0 1px 3px #0003}html[data-theme=dark] .jf-editor-header,html[data-theme=dark] .jf-counter{color:#71717a}html[data-theme=dark] .jf-line-gutter{background:#1a1a1a;color:#52525b;border-right-color:#3f3f46}html[data-theme=dark] .jf-textarea{background:#1a1a1a;color:#d4d4d8}html[data-theme=dark] .jf-textarea::placeholder{color:#52525b}html[data-theme=dark] .jf-indent-label{color:#a1a1aa}html[data-theme=dark] .jf-indent-bar{background:#27272a}html[data-theme=dark] .jf-indent-opt{color:#a1a1aa}html[data-theme=dark] .jf-indent-opt:hover{color:#d4d4d8}html[data-theme=dark] .jf-indent-opt.active{background:#3f3f46;color:#fb923c}html[data-theme=dark] .jf-validation{border-color:#3f3f46}html[data-theme=dark] .jf-validation.valid{background:#052e16;color:#86efac}html[data-theme=dark] .jf-validation.invalid{background:#450a0a;color:#fca5a5}html[data-theme=dark] .jf-stats{background:#10b9811f;color:#34d399}html[data-theme=dark] .jf-output-pre{color:#d4d4d8}html[data-theme=dark] .jf-key{color:#fb923c}html[data-theme=dark] .jf-str{color:#4ade80}html[data-theme=dark] .jf-num{color:#60a5fa}html[data-theme=dark] .jf-bool{color:#a78bfa}html[data-theme=dark] .jf-brace{color:#a1a1aa}html[data-theme=dark] .jf-output-actions{border-top-color:#3f3f46}html[data-theme=dark] .jf-line-error{background:#ef444433;color:#f87171}@media(max-width:640px){.jf-actions{gap:.375rem}.jf-actions .tool-btn{font-size:12px;padding:6px 10px}.jf-line-gutter{width:36px;font-size:11px}.jf-output-body{max-height:350px}.jf-textarea,.jf-output-pre{font-size:13px}.jf-indent-opt{padding:4px 10px;font-size:12px}}
