@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-ui);background:var(--color-bg);color:var(--color-text);height:100vh;transition:background-color .3s,color .3s;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex}:root{--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-code:"JetBrains Mono", "Fira Code", "Cascadia Code", "Consolas", monospace;--font-size-xs:11px;--font-size-sm:12px;--font-size-base:14px;--font-size-lg:16px;--font-size-xl:20px;--font-size-2xl:24px;--font-size-3xl:32px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:24px;--spacing-2xl:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.35s ease;--shadow-sm:0 1px 3px #0000001f;--shadow-md:0 4px 12px #00000026;--shadow-lg:0 8px 30px #0003;--shadow-glow:0 0 20px #6c5ce74d}[data-theme=dark]{--color-bg:#08080d;--color-bg-secondary:#0e0e16;--color-surface:#14141f;--color-surface-hover:#1a1a2e;--color-surface-active:#22223a;--color-card:#141423b3;--color-card-border:#ffffff0f;--color-primary:#6c5ce7;--color-primary-light:#a29bfe;--color-primary-dark:#5a3fd6;--color-primary-glow:#6c5ce726;--color-accent:#00cec9;--color-accent-glow:#00cec926;--color-text:#e8e8f0;--color-text-secondary:#8888a0;--color-text-tertiary:#55556a;--color-border:#ffffff14;--color-border-hover:#ffffff26;--color-divider:#ffffff0d;--color-success:#00b894;--color-success-bg:#00b8941a;--color-warning:#fdcb6e;--color-warning-bg:#fdcb6e1a;--color-error:#ff6b6b;--color-error-bg:#ff6b6b1a;--color-info:#74b9ff;--color-info-bg:#74b9ff1a;--json-key:#a29bfe;--json-string:#55efc4;--json-number:#fd79a8;--json-boolean:#74b9ff;--json-null:#636e72;--json-bracket:#dfe6e9;--scrollbar-bg:transparent;--scrollbar-thumb:#ffffff26;--scrollbar-thumb-hover:#ffffff40;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--color-bg:#f0f0f8;--color-bg-secondary:#e8e8f2;--color-surface:#fff;--color-surface-hover:#f5f5fa;--color-surface-active:#eeeef5;--color-card:#ffffffd9;--color-card-border:#00000014;--color-primary:#5f3dc4;--color-primary-light:#7c5ce7;--color-primary-dark:#4c2da0;--color-primary-glow:#5f3dc41a;--color-accent:#00a8a3;--color-accent-glow:#00a8a31a;--color-text:#1a1a2e;--color-text-secondary:#6c6c8a;--color-text-tertiary:#9999ad;--color-border:#0000001a;--color-border-hover:#0000002e;--color-divider:#0000000f;--color-success:#00a884;--color-success-bg:#00a88414;--color-warning:#e6a700;--color-warning-bg:#e6a70014;--color-error:#e05555;--color-error-bg:#e0555514;--color-info:#0984e3;--color-info-bg:#0984e314;--json-key:#5f3dc4;--json-string:#00b894;--json-number:#e17055;--json-boolean:#0984e3;--json-null:#b2bec3;--json-bracket:#2d3436;--scrollbar-bg:transparent;--scrollbar-thumb:#00000026;--scrollbar-thumb-hover:#00000040;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--scrollbar-bg)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(16px)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.glass{background:var(--color-card);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-card-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.toolbar{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-xl);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);flex-shrink:0;height:48px;display:flex;overflow-x:auto}.toolbar::-webkit-scrollbar{height:0}.toolbar-group{align-items:center;gap:2px;display:flex}.toolbar-divider{background:var(--color-divider);width:1px;height:24px;margin:0 var(--spacing-sm);flex-shrink:0}.toolbar-btn{color:var(--color-text-secondary);font-family:var(--font-ui);font-size:var(--font-size-sm);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;align-items:center;gap:6px;padding:6px 12px;font-weight:500;display:flex;position:relative}.toolbar-btn:hover{background:var(--color-surface-hover);color:var(--color-text)}.toolbar-btn:active{transform:scale(.97)}.toolbar-btn--primary{background:var(--color-primary);color:#fff}.toolbar-btn--primary:hover{background:var(--color-primary-dark);color:#fff;box-shadow:var(--shadow-glow)}.toolbar-btn--danger:hover{color:var(--color-error)}.toolbar-btn .toolbar-btn-icon{flex-shrink:0}.toolbar-btn .toolbar-shortcut{font-size:10px;font-family:var(--font-code);color:var(--color-text-tertiary);opacity:.7}.toolbar-btn--primary .toolbar-shortcut{color:#fff9}.toolbar-select-group{align-items:center;gap:6px;display:flex}.toolbar-select-label{font-size:var(--font-size-xs);color:var(--color-text-tertiary);white-space:nowrap}.toolbar-select{appearance:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:var(--font-ui);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238888a0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;padding:4px 24px 4px 8px}.toolbar-select:hover{border-color:var(--color-border-hover)}.toolbar-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-glow);outline:none}@media (width<=768px){.toolbar{padding:var(--spacing-sm) var(--spacing-lg);gap:2px}.toolbar-btn span:not(.toolbar-btn-icon),.toolbar-btn .toolbar-shortcut,.toolbar-select-label{display:none}.toolbar-divider{margin:0 var(--spacing-xs)}}.editor-container{border-right:1px solid var(--color-border);flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.editor-tab{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);flex-shrink:0;height:36px;display:flex}.editor-tab-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-tertiary);font-weight:600}.editor-tab-dot{background:var(--color-success);width:6px;height:6px;transition:background var(--transition-fast);border-radius:50%}.editor-tab-dot--error{background:var(--color-error);animation:1.5s infinite pulse}.editor-wrapper{flex:1;min-height:0}.editor-drop-overlay{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:2px dashed var(--color-primary);border-radius:var(--radius-md);background:#6c5ce714;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:absolute;inset:0}.editor-drop-content{align-items:center;gap:var(--spacing-md);color:var(--color-primary-light);flex-direction:column;display:flex}.editor-drop-content svg{opacity:.8}.editor-drop-text{font-size:var(--font-size-lg);font-weight:600}@media (width<=768px){.editor-container{border-right:none;border-bottom:1px solid var(--color-border)}}.tree-container{background:var(--color-bg-secondary);flex-direction:column;flex:1;min-width:0;display:flex}.tree-tab{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);flex-shrink:0;height:36px;display:flex}.tree-tab-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-tertiary);font-weight:600}.tree-tab-count{background:var(--color-primary-glow);color:var(--color-primary-light);border-radius:10px;padding:1px 6px;font-size:10px;font-weight:600}.tree-content{padding:var(--spacing-md) var(--spacing-lg);font-family:var(--font-code);font-size:var(--font-size-sm);flex:1;line-height:1.7;overflow:auto}.tree-empty{justify-content:center;align-items:center;gap:var(--spacing-lg);height:100%;color:var(--color-text-tertiary);flex-direction:column;display:flex}.tree-empty-icon{opacity:.3}.tree-empty-text{font-family:var(--font-ui);font-size:var(--font-size-base);font-weight:500}.tree-empty-hint{font-family:var(--font-ui);font-size:var(--font-size-sm);opacity:.6}.tree-node{position:relative}.tree-node-row{border-radius:var(--radius-sm);cursor:default;transition:background var(--transition-fast);align-items:center;gap:4px;padding:1px 4px;display:flex}.tree-node-row:hover{background:var(--color-surface-hover)}.tree-node-toggle{width:16px;height:16px;color:var(--color-text-tertiary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.tree-node-toggle:hover{background:var(--color-surface-active);color:var(--color-text-secondary)}.tree-node-toggle svg{transition:transform var(--transition-fast)}.tree-node-toggle--expanded svg{transform:rotate(90deg)}.tree-node-toggle--placeholder{visibility:hidden}.tree-node-key{color:var(--json-key);font-weight:500}.tree-node-separator{color:var(--color-text-tertiary);margin:0 2px}.tree-node-value{word-break:break-all}.tree-node-value--string{color:var(--json-string)}.tree-node-value--number{color:var(--json-number)}.tree-node-value--boolean{color:var(--json-boolean);font-style:italic}.tree-node-value--null{color:var(--json-null);font-style:italic}.tree-node-bracket{color:var(--json-bracket);font-weight:500}.tree-node-info{color:var(--color-text-tertiary);font-size:var(--font-size-xs);margin-left:4px;font-style:italic}.tree-node-children{border-left:1px solid var(--color-divider);margin-left:7px;padding-left:18px}.tree-node-path{background:var(--color-surface-active);color:var(--color-text-tertiary);white-space:nowrap;text-overflow:ellipsis;border-radius:3px;max-width:200px;padding:2px 6px;font-size:10px;display:none;position:absolute;top:50%;right:8px;overflow:hidden;transform:translateY(-50%)}.tree-node-row:hover .tree-node-path{display:block}.tree-node-path-btn{font-size:10px;font-family:var(--font-code);background:var(--color-surface-active);color:var(--color-text-tertiary);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);border:none;border-radius:3px;padding:2px 6px;display:none;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.tree-node-row:hover .tree-node-path-btn{display:block}.tree-node-path-btn:hover{background:var(--color-primary-glow);color:var(--color-primary-light)}@media (width<=768px){.tree-content{font-size:var(--font-size-xs)}.tree-node-path-btn{display:none!important}}.statusbar{padding:0 var(--spacing-xl);background:var(--color-bg-secondary);border-top:1px solid var(--color-border);height:28px;font-size:var(--font-size-xs);color:var(--color-text-tertiary);font-family:var(--font-code);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.statusbar-left,.statusbar-right{align-items:center;gap:var(--spacing-lg);display:flex}.statusbar-item{white-space:nowrap;align-items:center;gap:4px;display:flex}.statusbar-error{color:var(--color-error);align-items:center;gap:4px;font-weight:500;display:flex}.statusbar-valid{color:var(--color-success);align-items:center;gap:4px;display:flex}.statusbar-dot{border-radius:50%;flex-shrink:0;width:5px;height:5px}.statusbar-dot--success{background:var(--color-success)}.statusbar-dot--error{background:var(--color-error);animation:1.5s infinite pulse}@media (width<=768px){.statusbar{padding:0 var(--spacing-lg);font-size:10px}.statusbar-right{display:none}}.toast-container{top:var(--spacing-xl);right:var(--spacing-xl);z-index:9999;gap:var(--spacing-sm);pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:auto;min-width:280px;max-width:420px;animation:.3s forwards slideInRight;display:flex}.toast.exiting{animation:.3s forwards slideOutRight}.toast-icon{flex-shrink:0;width:20px;height:20px}.toast-message{font-size:var(--font-size-sm);color:var(--color-text);flex:1;font-weight:500;line-height:1.4}.toast-close{width:24px;height:24px;color:var(--color-text-tertiary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toast-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.toast--success{border-left:3px solid var(--color-success)}.toast--success .toast-icon{color:var(--color-success)}.toast--error{border-left:3px solid var(--color-error)}.toast--error .toast-icon{color:var(--color-error)}.toast--info{border-left:3px solid var(--color-info)}.toast--info .toast-icon{color:var(--color-info)}.toast--warning{border-left:3px solid var(--color-warning)}.toast--warning .toast-icon{color:var(--color-warning)}.header{padding:0 var(--spacing-xl);background:var(--color-card);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--color-card-border);z-index:100;flex-shrink:0;justify-content:space-between;align-items:center;height:56px;display:flex}.header-left{align-items:center;gap:var(--spacing-xl);display:flex}.header-nav{align-items:center;gap:var(--spacing-sm);display:flex}.header-nav-link{color:var(--color-text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-sm);transition:all var(--transition-fast);padding:6px 12px;font-weight:500;text-decoration:none}.header-nav-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.header-nav-link.active{color:var(--color-primary-light);background:var(--color-primary-glow)}.header-logo{align-items:center;gap:var(--spacing-sm);color:var(--color-text);min-width:0;text-decoration:none;display:flex}.header-logo-icon{width:34px;height:34px;filter:drop-shadow(0 6px 16px var(--color-primary-glow));border-radius:var(--radius-sm);cursor:pointer;transition:transform var(--transition-fast), filter var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.header-logo-icon:hover{filter:drop-shadow(0 8px 18px var(--color-accent-glow));transform:translateY(-1px)}.header-logo-icon svg{width:100%;height:100%;display:block}.header-logo-text{font-size:var(--font-size-lg);letter-spacing:0;background:linear-gradient(135deg, var(--color-primary-light), var(--color-accent));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-weight:700}.header-right{align-items:center;gap:var(--spacing-sm);display:flex}.header-btn{width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:relative}.header-btn:hover{background:var(--color-surface-hover);color:var(--color-text)}.header-btn:hover .header-shortcut{opacity:1}.header-btn:active{transform:scale(.95)}.header-btn--active{color:var(--color-primary-light);background:var(--color-primary-glow)}.header-github{border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary);transition:all var(--transition-fast);align-items:center;gap:6px;padding:6px 12px;font-weight:500;text-decoration:none;display:flex}.header-github:hover{background:var(--color-surface-hover);color:var(--color-text)}.header-shortcut{font-size:10px;font-family:var(--font-code);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-tertiary);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast);border-radius:4px;padding:2px 6px;position:absolute;bottom:-24px;left:50%;transform:translate(-50%)}.shortcuts-overlay{z-index:200;padding:64px var(--spacing-xl) var(--spacing-xl);background:#00000047;justify-content:flex-end;align-items:flex-start;display:flex;position:fixed;inset:0}.shortcuts-dialog{border:1px solid var(--color-card-border);border-radius:var(--radius-md);background:var(--color-surface);width:min(360px,100vw - 32px);box-shadow:var(--shadow-lg);animation:fadeInDown var(--transition-normal)}.shortcuts-header{padding:var(--spacing-lg);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.shortcuts-header h2{font-size:var(--font-size-base);color:var(--color-text);margin:0;font-weight:600}.shortcuts-close{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.shortcuts-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.shortcuts-list{padding:var(--spacing-md);gap:2px;display:grid}.shortcuts-list div{min-height:36px;padding:4px var(--spacing-sm);border-radius:var(--radius-sm);grid-template-columns:auto auto auto 1fr;align-items:center;gap:6px;display:grid}.shortcuts-list div:hover{background:var(--color-surface-hover)}.shortcuts-list kbd{border:1px solid var(--color-border);background:var(--color-bg-secondary);min-width:28px;color:var(--color-text);font-family:var(--font-code);text-align:center;border-radius:4px;padding:3px 6px;font-size:10px;font-weight:600}.shortcuts-list span{margin-left:var(--spacing-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm)}@media (width<=768px){.header{padding:0 var(--spacing-sm);height:48px}.header-left{gap:var(--spacing-sm)}.header-nav{gap:2px}.header-nav-link{white-space:nowrap;padding:6px 8px}.header-logo-text{display:none}.header-right{gap:2px}.header-github{justify-content:center;width:36px;padding:6px}.header-shortcut,.header-github span{display:none}.shortcuts-overlay{padding:56px var(--spacing-lg) var(--spacing-lg);justify-content:center}}.app{background:var(--color-bg);flex-direction:column;height:100vh;animation:.4s fadeIn;display:flex}.app-main{flex:1;min-height:0;display:flex;position:relative}.app-panel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.panel-resizer{cursor:col-resize;background:var(--color-border);width:4px;transition:background var(--transition-fast);z-index:10;flex-shrink:0;position:relative}.panel-resizer:hover,.panel-resizer--active{background:var(--color-primary)}.panel-resizer:after{content:"";position:absolute;inset:0 -4px}.mobile-tabs{background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);flex-shrink:0;height:40px;display:none}.mobile-tabs-inner{height:100%;display:flex}.mobile-tab{color:var(--color-text-secondary);font-family:var(--font-ui);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;justify-content:center;align-items:center;gap:6px;font-weight:500;display:flex}.mobile-tab--active{color:var(--color-primary-light);border-bottom-color:var(--color-primary);background:var(--color-primary-glow)}@media (width<=768px){.app-main{flex-direction:column}.panel-resizer{display:none}.mobile-tabs{display:block}.app-panel--hidden{display:none}.app-panel--editor,.app-panel--viewer{flex:1;min-height:0}}.app:before{content:"";background:radial-gradient(circle, var(--color-primary-glow) 0%, transparent 70%);pointer-events:none;z-index:0;border-radius:50%;width:500px;height:500px;position:fixed;top:-30%;right:-10%}.app:after{content:"";background:radial-gradient(circle, var(--color-accent-glow) 0%, transparent 70%);pointer-events:none;z-index:0;border-radius:50%;width:400px;height:400px;position:fixed;bottom:-20%;left:-5%}.app>*{z-index:1;position:relative}
