:root{--bg: #0a0a0a;--bg-surface: #141414;--bg-hover: #1a1a1a;--bg-input: #111;--border: #262626;--border-focus: #404040;--text: #e5e5e5;--text-dim: #737373;--text-bright: #f5f5f5;--accent: #f59e0b;--accent-dim: #78350f;--success: #22c55e;--error: #ef4444;--warning: #f59e0b;--blue: #60a5fa;--purple: #c084fc;--font-mono: "SF Mono", "Cascadia Code", "Fira Code", "Consolas", monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:14px}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}#app{max-width:1200px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}header h1{font-size:16px;font-weight:700;color:var(--accent)}header .icon{font-size:14px}.cmd-k-btn{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-mono);font-size:11px;padding:4px 10px;cursor:pointer;border-radius:4px}.cmd-k-btn:hover{border-color:var(--accent);color:var(--accent)}.kbd{font-size:11px}.layout{display:grid;grid-template-columns:180px 1fr;flex:1;min-height:0}.sidebar{border-right:1px solid var(--border);padding:8px 0;overflow-y:auto;display:flex;flex-direction:column}.nav-item{display:flex;align-items:center;gap:6px;padding:8px 14px;font-size:12px;color:var(--text-dim);text-decoration:none;border-left:2px solid transparent;transition:all .1s}.nav-item:hover{color:var(--text);background:var(--bg-hover);text-decoration:none}.nav-item.active{color:var(--accent);border-left-color:var(--accent);background:var(--bg-surface)}.nav-icon{font-size:13px;width:18px;text-align:center}.tool-area{padding:20px 32px 20px 28px;overflow-y:auto;max-height:calc(100vh - 90px)}.tool-header h2{font-size:18px;font-weight:700;color:var(--text-bright);margin-bottom:4px}.tool-desc{font-size:12px;color:var(--text-dim);font-family:var(--font-sans);margin-bottom:16px}.tool-body{display:flex;flex-direction:column;gap:12px}.tool-loading,.tool-error{color:var(--text-dim);padding:40px;text-align:center;font-size:13px}.tool-error{color:var(--error)}.input-group{display:flex;flex-direction:column;gap:4px}.input-group label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px}.input-row{display:flex;gap:12px}.flex-1{flex:1}.mono-input{background:var(--bg-input);border:1px solid var(--border);color:var(--text-bright);font-family:var(--font-mono);font-size:12px;padding:8px 10px;outline:none;width:100%;resize:vertical}.mono-input:focus{border-color:var(--border-focus)}.mono-input[readonly]{color:var(--text-dim)}select.mono-input{cursor:pointer}.status-line{font-size:11px;min-height:16px}.mode-tabs{display:flex;gap:0;margin-bottom:12px}.mode-btn{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-mono);font-size:11px;padding:6px 12px;cursor:pointer;border-right:none}.mode-btn:last-child{border-right:1px solid var(--border)}.mode-btn.active{background:var(--bg-surface);color:var(--accent);border-color:var(--accent)}.mode-btn:hover:not(.active){color:var(--text)}.btn{background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:var(--font-mono);font-size:12px;padding:8px 16px;cursor:pointer;transition:all .15s}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-primary{background:var(--accent-dim);border-color:var(--accent);color:var(--text-bright)}.btn-primary:hover{background:var(--accent);color:#000}.btn-copy{background:none;border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-mono);font-size:10px;padding:2px 8px;cursor:pointer;margin-left:8px;vertical-align:middle}.btn-copy:hover{border-color:var(--accent);color:var(--accent)}.btn-copy.copied{border-color:var(--success);color:var(--success)}.output-area{margin-top:4px}.result-card{background:var(--bg-surface);border:1px solid var(--border);padding:14px;margin-bottom:8px}.result-card.error{border-color:#3a1515}.selector-badge{display:inline-block;background:var(--bg);border:1px solid var(--border);padding:2px 8px;font-size:11px;color:var(--text-dim);margin-bottom:8px}.fn-signature{font-size:13px;margin-bottom:10px;word-break:break-all}.params-table{width:100%;border-collapse:collapse;font-size:12px}.params-table th{text-align:left;padding:4px 8px;border-bottom:1px solid var(--border);color:var(--text-dim);font-weight:500;font-size:10px;text-transform:uppercase}.params-table td{padding:5px 8px;border-bottom:1px solid #1a1a1a;vertical-align:top;max-width:400px;word-break:break-all}.copyable{position:relative}.copyable .btn-copy{position:absolute;top:2px;right:2px}.raw-words-header{font-size:10px;color:var(--text-dim);text-transform:uppercase;margin-top:10px;margin-bottom:4px}.raw-word{font-size:11px;font-family:var(--font-mono);color:var(--text-dim);padding:1px 0;word-break:break-all}.sig-result{padding:4px 0;display:flex;align-items:center;gap:8px}.inline-pre{font-family:var(--font-mono);font-size:11px;white-space:pre-wrap;word-break:break-all}.badge{display:inline-block;font-size:10px;padding:1px 6px;border:1px solid;margin-left:4px}.payable-badge{border-color:var(--accent);color:var(--accent)}.view-badge{border-color:var(--blue);color:var(--blue)}.error-badge{border-color:var(--error);color:var(--error);background:#1a0a0a}.text-dim{color:var(--text-dim)}.text-bright{color:var(--text-bright)}.text-blue{color:var(--blue)}.text-purple{color:var(--purple)}.mono{font-family:var(--font-mono)}.loading{color:var(--accent);animation:pulse 1.5s ease-in-out infinite}.success{color:var(--success)}.error{color:var(--error)}.warning{color:var(--warning)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.hidden{display:none!important}.abi-stats{font-size:12px;color:var(--text-dim);margin-bottom:12px}.abi-section{margin-bottom:12px}.abi-section-header{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);padding:4px 0;border-bottom:1px solid var(--border);margin-bottom:4px;cursor:pointer}.abi-item{padding:4px 0;border-bottom:1px solid #1a1a1a;font-size:12px}.abi-item-header{word-break:break-all}.abi-selector{font-size:11px;display:flex;align-items:center;margin-top:2px}.bc-stats{display:flex;gap:8px;font-size:12px;color:var(--text);margin-bottom:8px;flex-wrap:wrap}.bc-selectors{margin:8px 0}.selector-list{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.bc-listing{max-height:500px;overflow-y:auto;border:1px solid var(--border);background:var(--bg);padding:8px;font-size:11px}.bc-op{display:flex;gap:12px;padding:1px 0}.bc-offset{color:var(--text-dim);min-width:40px}.bc-name{min-width:100px}.bc-operand{color:var(--text-dim);word-break:break-all}.bc-storage .bc-name{color:var(--error);font-weight:600}.bc-memory .bc-name{color:var(--blue)}.bc-call .bc-name{color:var(--warning);font-weight:600}.bc-control .bc-name{color:var(--purple)}.bc-stack .bc-name{color:var(--text-dim)}.diff-inputs{display:grid;grid-template-columns:1fr 1fr;gap:16px}.diff-summary{display:flex;gap:12px;font-size:12px;margin-bottom:16px;flex-wrap:wrap}.diff-summary span{padding:3px 10px;border:1px solid var(--border);background:var(--bg)}.diff-summary .diff-added{border-color:var(--success);color:var(--success);background:#0a1a0a}.diff-summary .diff-removed{border-color:var(--error);color:var(--error);background:#1a0a0a}.diff-summary .diff-changed{border-color:var(--warning);color:var(--warning);background:#1a1400}.diff-added{color:var(--success)}.diff-removed{color:var(--error)}.diff-changed{color:var(--warning)}.diff-section{margin-bottom:16px;border:1px solid var(--border);background:var(--bg-surface)}.diff-section-header{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px;background:var(--bg);border-bottom:1px solid var(--border);cursor:pointer}.diff-item{font-size:12px;padding:6px 12px;border-bottom:1px solid #1e1e1e;font-family:var(--font-mono);display:flex;align-items:flex-start;gap:8px}.diff-item:last-child{border-bottom:none}.diff-item:before{flex-shrink:0;font-weight:700;width:16px;text-align:center}.diff-item-added{background:#0d1f0d;border-left:3px solid var(--success)}.diff-item-added:before{content:"+";color:var(--success)}.diff-item-removed{background:#1f0d0d;border-left:3px solid var(--error)}.diff-item-removed:before{content:"−";color:var(--error)}.diff-item-changed{background:#1f1a0d;border-left:3px solid var(--warning);flex-direction:column;gap:2px}.diff-item-changed:before{content:"u0394";color:var(--warning)}.diff-old{color:#f87171;font-size:11px;padding-left:24px;position:relative}.diff-old:before{content:"−";color:var(--error);position:absolute;left:8px}.diff-new{color:#86efac;font-size:11px;padding-left:24px;position:relative}.diff-new:before{content:"+ ";color:var(--success);position:absolute;left:8px}.diff-bc-row{display:grid;grid-template-columns:50px 1fr 1fr;gap:8px;font-size:11px;font-family:var(--font-mono);padding:2px 8px;border-bottom:1px solid #1a1a1a}.diff-bc-row.diff-bc-changed{background:#1f1a0d}.diff-bc-row .bc-offset{color:var(--text-dim)}.diff-bc-chunk{word-break:break-all}.diff-bc-header{display:grid;grid-template-columns:50px 1fr 1fr;gap:8px;font-size:10px;color:var(--text-dim);padding:6px 8px;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0}.diff-byte-changed{color:var(--warning);background:#f59e0b26;font-weight:600}.converter-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.converter-card{background:var(--bg-surface);border:1px solid var(--border);padding:14px;display:flex;flex-direction:column;gap:8px}.converter-card h3{font-size:12px;color:var(--accent);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.ide-fullwidth{padding:0!important;max-height:calc(100vh - 90px)!important;overflow:hidden!important}.ide-layout{display:flex;flex-direction:column;height:calc(100vh - 90px)}.ide-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#252526;border-bottom:1px solid #3c3c3c;flex-shrink:0}.ide-toolbar-left,.ide-toolbar-right{display:flex;align-items:center;gap:10px}.ide-toolbar-select{background:#3c3c3c;border:1px solid #555;color:#d4d4d4;font-family:Consolas,monospace;font-size:12px;padding:3px 8px;outline:none}.ide-main{flex:1;display:flex;flex-direction:column;min-height:0}.ide-editor-pane{flex:1;display:flex;min-height:200px;overflow:hidden}.ide-gutter{width:48px;background:#1e1e1e;border-right:1px solid #3c3c3c;padding:10px 0;overflow:hidden;user-select:none;flex-shrink:0}.ide-line-num{height:19.5px;line-height:19.5px;text-align:right;padding-right:12px;font-size:13px;font-family:Consolas,Courier New,monospace;color:#858585}.ide-editor{flex:1;background:#1e1e1e;color:#d4d4d4;font-family:Consolas,Courier New,monospace;font-size:13px;line-height:19.5px;tab-size:4;padding:10px 16px;border:none;outline:none;resize:none;white-space:pre;overflow:auto}.ide-editor::selection{background:#264f78}.ide-resize-handle{height:4px;background:#252526;cursor:ns-resize;flex-shrink:0;border-top:1px solid #3c3c3c;border-bottom:1px solid #3c3c3c}.ide-resize-handle:hover{background:var(--accent)}.ide-terminal-pane{height:220px;display:flex;flex-direction:column;flex-shrink:0;background:#1e1e1e}.ide-terminal-tabs{display:flex;background:#252526;border-bottom:1px solid #3c3c3c;flex-shrink:0}.ide-term-tab{background:none;border:none;border-bottom:2px solid transparent;color:#858585;font-family:Consolas,monospace;font-size:11px;padding:6px 14px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px}.ide-term-tab:hover{color:#d4d4d4}.ide-term-tab.active{color:#d4d4d4;border-bottom-color:var(--accent)}.ide-terminal{flex:1;overflow:auto;padding:8px 12px;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.6}.term-line{padding:1px 0;white-space:pre-wrap;word-break:break-all}.term-error{color:#f48771}.term-warning{color:#cca700}.term-warn-dim{color:#e0a030}.term-success{color:#89d185}.term-info{color:#9cdcfe}.term-dim{color:#858585}.term-bright{color:#d4d4d4;font-weight:600}.term-severity{font-weight:700;margin-right:4px}.term-artifact{padding:8px 0;border-bottom:1px solid #3c3c3c}.term-actions{display:flex;gap:6px;margin-top:6px}.ide-checkbox{font-size:11px;display:flex;align-items:center;gap:4px;color:#b0b0b0;cursor:pointer}.analyzer-card{border-color:#3c3c3c}.analyzer-header{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin-bottom:8px}.analyzer-summary{display:flex;gap:10px;margin-bottom:10px;flex-wrap:wrap}.analyzer-count{font-size:11px;font-weight:600;padding:2px 8px;border:1px solid}.analyzer-count.critical{color:#f44;border-color:#f44;background:#1a0a0a}.analyzer-count.high{color:#ff8c00;border-color:#ff8c00;background:#1a1000}.analyzer-count.medium{color:#f59e0b;border-color:#f59e0b;background:#1a1400}.analyzer-count.info{color:#60a5fa;border-color:#60a5fa;background:#0a1020}.analyzer-finding{border-left:3px solid;padding:6px 10px;margin-bottom:4px;font-size:12px}.analyzer-critical{border-color:#f44;background:#1a0a0a}.analyzer-high{border-color:#ff8c00;background:#1a1000}.analyzer-medium{border-color:#f59e0b;background:#1a1400}.analyzer-info{border-color:#60a5fa;background:#0a1020}.analyzer-finding-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.analyzer-severity{font-size:10px;font-weight:700;letter-spacing:.5px}.analyzer-critical .analyzer-severity{color:#f44}.analyzer-high .analyzer-severity{color:#ff8c00}.analyzer-medium .analyzer-severity{color:#f59e0b}.analyzer-info .analyzer-severity{color:#60a5fa}.analyzer-title{font-weight:600;color:var(--text-bright)}.analyzer-line{font-size:10px;color:var(--text-dim);margin-left:auto}.analyzer-message{color:#b0b0b0;font-size:11px;line-height:1.5;font-family:var(--font-sans)}.diag-section{margin-top:10px;border:1px solid var(--border);background:var(--bg)}.diag-header{padding:4px 10px;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);background:var(--bg-surface);border-bottom:1px solid var(--border)}.diag-row{display:flex;align-items:baseline;gap:8px;padding:4px 10px;font-size:11px;border-bottom:1px solid #1a1a1a}.diag-icon{flex-shrink:0;width:14px;text-align:center}.diag-label{font-weight:500;white-space:nowrap}.diag-detail{color:var(--text-dim);word-break:break-all}.diag-ok .diag-icon,.diag-ok .diag-label{color:var(--success)}.diag-warn .diag-icon,.diag-warn .diag-label{color:var(--warning)}.diag-error .diag-icon,.diag-error .diag-label{color:var(--error)}.cmd-palette{position:fixed;inset:0;z-index:100;display:flex;justify-content:center;padding-top:20vh}.cmd-overlay{position:absolute;inset:0;background:#0009}.cmd-modal{position:relative;width:500px;max-width:90vw;background:var(--bg-surface);border:1px solid var(--border);box-shadow:0 20px 60px #00000080}.cmd-input{width:100%;background:transparent;border:none;border-bottom:1px solid var(--border);color:var(--text-bright);font-family:var(--font-mono);font-size:14px;padding:14px 16px;outline:none}.cmd-results{max-height:300px;overflow-y:auto}.cmd-item{padding:10px 16px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:10px;color:var(--text)}.cmd-item:hover{background:var(--bg-hover);color:var(--accent)}.cmd-active{color:var(--accent)}.cmd-suggestion{background:var(--accent-dim);border-bottom:1px solid var(--border)}.cmd-icon{font-size:14px;width:20px;text-align:center}footer{padding:8px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;gap:6px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border)}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}@media(max-width:700px){.layout{grid-template-columns:1fr}.sidebar{flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border);padding:0}.nav-item{white-space:nowrap;border-left:none;border-bottom:2px solid transparent;padding:8px 10px;font-size:11px}.nav-item.active{border-left:none;border-bottom-color:var(--accent)}.tool-area{max-height:none;padding:16px}.converter-grid,.diff-inputs{grid-template-columns:1fr}.input-row{flex-direction:column}}
