:root{--bg:#fff;--bg-secondary:#f5f5f5;--text:#1a1a1a;--text-secondary:#666;--border:#ddd;--accent:#3b82f6;--accent-hover:#2563eb;--error:#ef4444;--string:#16a34a;--number:#d97706;--boolean:#7c3aed;--null:#9ca3af;--bracket:#374151;--key:#1d4ed8;--scrollbar-bg:#f0f0f0;--scrollbar-thumb:#ccc;--tree-bg:#fafafa}.app--dark{--bg:#1a1a2e;--bg-secondary:#16213e;--text:#e0e0e0;--text-secondary:#a0a0a0;--border:#2a2a4a;--accent:#60a5fa;--accent-hover:#3b82f6;--error:#f87171;--string:#4ade80;--number:#fbbf24;--boolean:#a78bfa;--null:#6b7280;--bracket:#9ca3af;--key:#93c5fd;--scrollbar-bg:#1a1a2e;--scrollbar-thumb:#333;--tree-bg:#16213e}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;transition:background .2s,color .2s}.app{min-height:100vh;color:var(--text);background:var(--bg);flex-direction:column;display:flex}.app-header{border-bottom:1px solid var(--border);background:var(--bg-secondary);justify-content:space-between;align-items:center;padding:12px 24px;display:flex}.app-header h1{font-size:1.25rem;font-weight:600}.theme-btn{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px;font-size:1.1rem;transition:background .15s}.theme-btn:hover{background:var(--border)}.app-main{flex:1;gap:0;display:flex}.input-section{border-right:1px solid var(--border);flex-direction:column;flex:0 0 40%;display:flex}.output-section{flex-direction:column;flex:1;display:flex}.json-input-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;height:44px;padding:8px 16px;display:flex}.json-input-header label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;padding:6px 0;font-size:.85rem;font-weight:600;line-height:1}.json-input-error{color:var(--error);text-overflow:ellipsis;white-space:nowrap;background:#ef44441a;border-radius:4px;flex:1;padding:4px 8px;font-size:.8rem;overflow:hidden}.json-textarea{resize:none;background:var(--bg);width:100%;color:var(--text);tab-size:2;border:none;outline:none;padding:16px;font-family:Cascadia Code,Fira Code,JetBrains Mono,Consolas,monospace;font-size:.85rem;line-height:1.6;overflow:hidden}.json-textarea:focus{background:var(--bg)}.json-textarea--error{background:#ef444408}.scroll-to-top-btn{border:1px solid var(--border);background:var(--bg);width:40px;height:40px;color:var(--text);cursor:pointer;z-index:100;border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;transition:all .15s;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 2px 12px #0003}.scroll-to-top-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.output-content{background:var(--tree-bg);flex-direction:column;flex:1;padding:16px;display:flex}.output-placeholder{color:var(--text-secondary);flex:1;justify-content:center;align-items:center;font-size:.9rem;font-style:italic;display:flex}.toolbar{border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-wrap:wrap;align-items:center;gap:8px;height:44px;padding:8px 16px;display:flex}.toolbar-btn{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;padding:6px 12px;font-size:.8rem;transition:all .15s}.toolbar-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.json-tree{font-family:Cascadia Code,Fira Code,JetBrains Mono,Consolas,monospace;font-size:.85rem;line-height:1.7}.json-node{position:relative}.json-key{color:var(--key)}.json-colon{color:var(--text)}.json-value--string{color:var(--string)}.json-value--number{color:var(--number)}.json-value--boolean{color:var(--boolean)}.json-value--null,.json-value--undefined{color:var(--null)}.json-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-secondary);text-align:center;width:12px;margin-right:4px;font-size:.7rem;display:inline-block}.json-toggle:hover{color:var(--accent)}.json-preview{cursor:pointer;color:var(--text-secondary);font-size:.8rem}.json-preview:hover{color:var(--accent)}.json-collapsed{cursor:pointer}.json-children{border-left:1px dashed var(--border);margin-left:6px;padding-left:20px}.json-bracket{color:var(--bracket)}.json-ellipsis{color:var(--text-secondary);font-size:.8rem}@media (width<=768px){.app-main{flex-direction:column}.input-section{border-right:none;border-bottom:1px solid var(--border);flex:0 0 40vh}.output-section{flex:1}}
