*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;background:#0f0f0f;color:#e0e0e0;height:100vh;overflow:hidden}#app{height:100vh;display:flex;flex-direction:column;padding:.75rem;gap:.25rem;contain:layout style}.header{display:flex;gap:1rem;align-items:center;justify-content:space-between}.controls-right{display:flex;gap:.5rem;margin-left:auto}h1{font-size:1.1rem;font-weight:600;letter-spacing:-.02em;color:#fff;line-height:1;white-space:nowrap}#json-input{flex:1;width:100%;padding:.75rem;background:#1a1a1a;border:1.5px solid #333;border-radius:6px;color:#e0e0e0;font-family:JetBrains Mono,SF Mono,Monaco,Menlo,monospace;font-size:11px;line-height:1.5;letter-spacing:.01em;resize:none;outline:none;transition:border-color .2s,box-shadow .2s,background .2s}#json-input:focus{border-color:#0a84ff;box-shadow:0 0 0 3px #0a84ff26}#json-input:not(:placeholder-shown){background:#1c1c1c}#json-input::placeholder{color:#666;opacity:1}#json-input:focus::placeholder{opacity:.5}.controls{display:flex;gap:.5rem}button{position:relative;padding:.35rem .75rem;background:#2a2a2a;border:1px solid #444;border-radius:4px;color:#fff;font-size:12px;font-weight:600;letter-spacing:-.01em;cursor:pointer;transition:all .15s cubic-bezier(.25,.46,.45,.94);white-space:nowrap}button:hover{background:#3a3a3a;border-color:#555}button:active{transform:scale(.96);transition:transform .1s cubic-bezier(.25,.46,.45,.94)}#format-btn{background:#0a84ff;border-color:#0a84ff}#format-btn:hover{background:#0070e0;box-shadow:0 2px 8px #0a84ff4d}#minify-btn{background:#ff453a;border-color:#ff453a}#minify-btn:hover{background:#e53d32;box-shadow:0 2px 8px #ff453a4d}#copy-btn:hover{background:#3a3a3a;border-color:#555}button.success{background:#32d74b!important;border-color:#32d74b!important}@keyframes checkmark{0%{opacity:0;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}button.success:before{content:"✓ ";animation:checkmark .3s cubic-bezier(.34,1.56,.64,1)}#error-msg{position:fixed;top:80px;right:20px;max-width:400px;padding:.75rem 1rem;color:#ff453a;font-size:12px;font-family:JetBrains Mono,SF Mono,Monaco,Menlo,monospace;font-weight:500;border-radius:8px;background:var(--bg-secondary);border:1px solid #ff453a;box-shadow:0 4px 12px #0000004d;opacity:0;transform:translate(100%);transition:opacity .3s,transform .3s;pointer-events:none;z-index:1000}#error-msg:not(:empty){opacity:1;transform:translate(0);pointer-events:auto}#error-msg:before{content:"⚠ "}.error-line-indicator{position:absolute;left:0;right:0;background:#ff453a26;border-left:3px solid #ff453a;pointer-events:none;z-index:10;opacity:1!important}.search-bar{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#1a1a1a;border:1.5px solid #333;border-radius:6px;transition:opacity .2s,transform .2s}.search-bar.hidden{display:none}#search-input{flex:1;padding:.35rem .5rem;background:#0f0f0f;border:1px solid #444;border-radius:4px;color:#e0e0e0;font-family:JetBrains Mono,SF Mono,Monaco,Menlo,monospace;font-size:12px;outline:none;transition:border-color .2s}#search-input:focus{border-color:#0a84ff}#search-input::placeholder{color:#666}#search-prev,#search-next{padding:.25rem .5rem;min-width:28px;font-size:14px}#search-prev:disabled,#search-next:disabled{opacity:.4;cursor:not-allowed}.search-option{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#2a2a2a;border:1px solid #444;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.search-option:hover{background:#3a3a3a}.search-option input[type=checkbox]{margin:0;cursor:pointer}.search-option span{font-size:11px;font-weight:600;color:#e0e0e0}#search-match-count{font-size:11px;color:#999;min-width:60px;text-align:center}#search-close{padding:.25rem .5rem;font-size:16px;font-weight:400;line-height:1}.json-editor-container{flex:1;width:100%;display:flex;flex-direction:column;background:#1a1a1a;border:1.5px solid #333;border-radius:6px;overflow:hidden;transition:border-color .2s,box-shadow .2s;contain:layout style paint;will-change:border-color,box-shadow}.json-editor-container:focus-within{border-color:#0a84ff;box-shadow:0 0 0 3px #0a84ff26}.json-editor-wrapper{flex:1;display:flex;overflow:hidden;position:relative}.line-numbers{width:48px;background:#151515;border-right:1px solid #2a2a2a;padding:.75rem 0;overflow:hidden;-webkit-user-select:none;user-select:none;flex-shrink:0;contain:layout style paint;will-change:scroll-position}.line-number{padding:0 .5rem;text-align:right;font-family:JetBrains Mono,SF Mono,Monaco,Menlo,monospace;font-size:12px;line-height:1.5;letter-spacing:.01em;color:#666;cursor:pointer;transition:color .15s,background .15s;will-change:background-color}.line-number:hover{color:#999;background:#1a1a1a}.line-number.current{color:#0a84ff;background:#0a84ff1a}.json-editor-content{flex:1;position:relative;overflow:hidden;contain:layout style paint}.json-editor-highlight,.json-editor-textarea{position:absolute;top:0;left:0;width:100%;height:100%;padding:.75rem;margin:0;font-family:JetBrains Mono,SF Mono,Monaco,Menlo,monospace;font-size:12px;line-height:1.5;letter-spacing:.01em;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;tab-size:2;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-font-smoothing:subpixel-antialiased}.json-editor-highlight{pointer-events:none;overflow-y:scroll;overflow-x:hidden;background:transparent;color:#e0e0e0;opacity:0;transition:none;scrollbar-gutter:stable;z-index:0}.json-editor-highlight.active{z-index:0}.json-editor-textarea{background:transparent;border:none;outline:none;color:#e0e0e0;resize:none;z-index:1;caret-color:#0a84ff;transition:none;overflow-y:scroll;overflow-x:auto;overflow-anchor:none;scrollbar-gutter:stable;text-shadow:0 0 0 #e0e0e0}.json-editor-textarea::placeholder{color:#666;opacity:1}.json-editor-textarea:focus::placeholder{opacity:.5}:root{transition:background-color .2s,color .2s}body{--bg-primary: #2B2B2B;--bg-secondary: #313335;--bg-tertiary: #3C3F41;--bg-hover: #4B4E52;--border-primary: #323232;--border-secondary: #4B4E52;--border-hover: #5C5F62;--text-primary: #A9B7C6;--text-secondary: #808080;--text-tertiary: #6C707B;--text-inverse: #BBBBBB;--editor-bg: #2B2B2B;--line-numbers-bg: #313335;--line-numbers-border: #323232}[data-theme=light] body{--bg-primary: #ffffff;--bg-secondary: #f5f5f5;--bg-tertiary: #e8e8e8;--bg-hover: #d8d8d8;--border-primary: #d2d2d7;--border-secondary: #c7c7cc;--border-hover: #b8b8bd;--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-tertiary: #8e8e93;--text-inverse: #1d1d1f;--editor-bg: #fafafa;--line-numbers-bg: #f0f0f0;--line-numbers-border: #e0e0e0}[data-theme=light] body{background:var(--bg-primary);color:var(--text-primary)}[data-theme=light] h1{color:var(--text-inverse)}[data-theme=light] #json-input,[data-theme=light] .json-editor-container{background:var(--bg-secondary);border-color:var(--border-primary);color:var(--text-primary)}[data-theme=light] .json-editor-textarea{color:var(--text-primary)}[data-theme=light] .json-editor-textarea::placeholder{color:var(--text-tertiary)}[data-theme=light] .json-editor-highlight{color:var(--text-primary)}[data-theme=light] .line-numbers{background:var(--line-numbers-bg);border-right-color:var(--line-numbers-border)}[data-theme=light] .line-number{color:var(--text-tertiary)}[data-theme=light] .line-number:hover{color:var(--text-secondary);background:var(--bg-secondary)}[data-theme=light] button{background:var(--bg-tertiary);border-color:var(--border-secondary);color:var(--text-inverse)}[data-theme=light] button:hover{background:var(--bg-hover);border-color:var(--border-hover)}[data-theme=light] #tree-container{background:var(--bg-secondary);border-color:var(--border-primary);color:var(--text-primary)}[data-theme=light] .search-bar{background:var(--bg-secondary);border-color:var(--border-primary)}[data-theme=light] #search-input{background:var(--bg-primary);border-color:var(--border-secondary);color:var(--text-primary)}.theme-toggle{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-tertiary);transition:background .2s,transform .2s}.theme-toggle:hover{background:var(--bg-hover)}.theme-icon:before{content:"☀️";font-size:18px;display:block;transition:transform .3s}[data-theme=light] .theme-icon:before{content:"🌙"}.theme-toggle:active .theme-icon:before{transform:rotate(180deg)}#tabs-container{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--border-primary);padding-bottom:0;margin-bottom:0;z-index:10;min-height:40px;height:40px;flex-shrink:0;contain:layout style}.tab-list{display:flex;align-items:center;gap:.25rem;flex:1;overflow-x:auto;scrollbar-width:none}.tab-list::-webkit-scrollbar{display:none}.tab{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:6px 6px 0 0;color:var(--text-secondary);font-size:12px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap;position:relative;top:1px;-webkit-user-select:none;user-select:none}[data-theme=light] .tab{border-color:var(--border-primary);border-bottom:1px solid var(--border-primary)}[data-theme=light] .tab.active{border-bottom-color:var(--bg-secondary)}.tab:hover{background:#ffffff0d;color:var(--text-primary)}[data-theme=light] .tab:hover{background:#0000000d}.tab.active{background:var(--bg-secondary);border-color:var(--border-primary);border-bottom-color:var(--bg-secondary);color:var(--text-inverse);font-weight:600}.tab-title{max-width:120px;overflow:hidden;text-overflow:ellipsis}.tab-close{all:unset;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;color:var(--text-secondary);font-size:18px;line-height:.9;cursor:pointer;transition:all .15s;padding:0;margin:0;box-sizing:border-box}.tab-close:hover{background:#ff453a33;color:#ff453a}.tab-new{all:unset;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary);border:1px solid var(--border-secondary);border-radius:4px;color:var(--text-secondary);font-size:18px;font-weight:400;line-height:1;cursor:pointer;transition:all .15s;flex-shrink:0}.tab-new:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-hover)}.tab-new:active{transform:scale(.95)}#history-panel{position:fixed;top:0;right:0;width:360px;height:100vh;background:var(--bg-secondary);border-left:1px solid var(--border-primary);box-shadow:-4px 0 16px #0000004d;transform:translate(100%);transition:none;z-index:1000;display:flex;flex-direction:column}#history-panel.transition-enabled{transition:transform .3s cubic-bezier(.25,.46,.45,.94)}[data-theme=light] #history-panel{box-shadow:-4px 0 16px #0000001a}#history-panel.open{transform:translate(0)}.history-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--border-primary)}.history-header h3{font-size:1rem;font-weight:600;color:var(--text-inverse);margin:0}.history-close{all:unset;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--text-secondary);font-size:24px;line-height:1;cursor:pointer;transition:all .15s}.history-close:hover{background:var(--bg-hover);color:var(--text-primary)}.history-content{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.history-empty{text-align:center;color:var(--text-secondary);font-size:14px;padding:2rem 1rem}.history-actions{display:flex;justify-content:flex-end}.history-clear-all{padding:.4rem .75rem;background:#ff453a;border:1px solid #ff453a;border-radius:4px;color:#fff;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s}.history-clear-all:hover{background:#e53d32;box-shadow:0 2px 8px #ff453a4d}.history-list{display:flex;flex-direction:column;gap:.5rem}.history-entry{padding:.75rem;background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:6px;cursor:pointer;transition:all .15s}.history-entry:hover{border-color:#0a84ff;box-shadow:0 2px 8px #0a84ff33;transform:translateY(-1px)}.history-entry-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.history-timestamp{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em}.history-delete{all:unset;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:3px;color:var(--text-secondary);font-size:18px;line-height:1;cursor:pointer;transition:all .15s}.history-delete:hover{background:#ff453a33;color:#ff453a}.history-preview{font-family:JetBrains Mono,SF Mono,Monaco,Menlo,monospace;font-size:12px;line-height:1.4;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#history-btn{background:var(--bg-tertiary);border-color:var(--border-secondary)}#history-btn:hover{background:var(--bg-hover);border-color:var(--border-hover)}#json-tree-view{flex:1;width:100%;padding:.75rem;background:#1a1a1a;border:1.5px solid #333;border-radius:6px;overflow:auto;transition:border-color .2s,box-shadow .2s,background .2s}.json-tree{font-family:JetBrains Mono,SF Mono,Monaco,Menlo,monospace;font-size:12px;line-height:1.6;color:var(--text-primary)}.json-tree-node{margin-left:0}.json-tree-header{display:flex;align-items:flex-start;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.json-tree-toggle{display:inline-block;width:16px;cursor:pointer;color:#888;-webkit-user-select:none;user-select:none;font-size:10px;margin-right:4px;transition:color .15s;flex-shrink:0}.json-tree-toggle:hover{color:#0a84ff}.json-tree-content{margin-left:20px;border-left:1px solid rgba(255,255,255,.1);padding-left:8px}.json-tree-child{margin:2px 0}.json-key{color:#9cdcfe;font-weight:500}.json-string{color:#ce9178}.json-number{color:#b5cea8}.json-boolean{color:#569cd6;font-weight:600}.json-null{color:#569cd6;font-style:italic}.json-collapsed-summary{color:#666;margin-left:2px}.json-count-badge{color:#888;font-size:10px;margin-left:4px}.line-number .collapse-toggle{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;cursor:pointer;color:#0a84ff;transition:all .2s;-webkit-user-select:none;user-select:none;font-size:9px;flex-shrink:0}.line-number .collapse-toggle:hover{color:#4da3ff;transform:scale(1.2)}.transparent-text{color:transparent;opacity:0}.collapsed-placeholder-bg{background:#0a84ff40;border-radius:3px;padding:2px 4px;box-shadow:0 0 8px #0a84ff4d;color:transparent}
