:root{--bg:#0f1419;--bg-elevated:#161d24;--bg-editor:#0b1014;--border:#24303a;--text:#e7eef4;--text-muted:#8b9aab;--text-faint:#5c6b7a;--accent:#2ec9b3;--syntax:#e06b74;--lint:#d9a441;--schema-c:#6aa6e8;--ok:#5dba8c;--font:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);margin:0}#app{grid-template-rows:48px 40px 1fr 30px;height:100%;min-height:100%;display:grid}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tool{border:1px solid var(--border);height:28px;color:var(--text);background:#12181f;border-radius:6px;align-items:center;gap:6px;padding:0 9px;font-size:13px;display:inline-flex}.tool:hover{border-color:#334351}.tool svg{color:var(--text-muted);flex:none}.schema-toggle{border:1px solid var(--border);height:28px;color:var(--text);border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:13px;display:inline-flex}.schema-toggle[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#0b1014}.schema-toggle[aria-pressed=true] svg{color:#0b1014}.icon-only{width:28px;height:28px;color:var(--text-muted);border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.icon-only:hover{color:var(--text)}.text-btn{color:var(--text-muted);height:28px;padding:0 4px;font-size:13px}.text-btn:hover{color:var(--text)}.topbar{background:var(--bg-elevated);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;height:48px;padding:0 14px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.logo{font-family:var(--font-mono);color:var(--accent);letter-spacing:-.08em;font-size:15px;font-weight:600}.brand-text{flex-direction:column;line-height:1.15;display:flex}.brand h1{letter-spacing:-.01em;margin:0;font-size:14px;font-weight:600}.brand-site{color:var(--text-muted);font-size:12px}.topbar-right{align-items:center;gap:12px;display:flex}.lang{color:var(--text-faint);align-items:center;gap:6px;font-size:12px;display:inline-flex}.lang button{color:var(--text-faint);height:auto;padding:0;font-size:12px}.lang button[aria-pressed=true]{color:var(--text);font-weight:600}.lang-sep{color:var(--text-faint)}.toolbar{background:var(--bg-elevated);border-bottom:1px solid var(--border);align-items:center;gap:6px;height:40px;padding:0 14px;display:flex}.toolbar-spacer{flex:1}.filename{font-family:var(--font-mono);color:var(--text-faint);text-align:right;background:0 0;border:0;width:10rem;height:28px;padding:0 4px;font-size:12px}.filename:focus{color:var(--text-muted);outline:none}.main{background:var(--bg-editor);min-height:0;display:flex}.pane{flex-direction:column;min-width:0;min-height:0;display:flex}.pane-json{flex:1}.pane-schema{border-left:1px solid var(--border);background:var(--bg-editor);flex:0 0 36%;width:36%}.pane-schema[hidden]{display:none!important}.schema-head{background:var(--bg-elevated);border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:8px;padding:10px 12px 8px;display:flex}.schema-title-row{align-items:center;gap:8px;width:100%;display:flex}.schema-head h2{margin:0;font-size:13px;font-weight:600}.badge{letter-spacing:.06em;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:1px 7px;font-size:10px;font-weight:600}.schema-footer{border-top:1px solid var(--border);color:var(--text-faint);margin:0;padding:6px 12px;font-size:11px}.editor-wrap,.pane-schema .editor{flex:1;min-height:0;position:relative}.editor,.editor .cm-editor{height:100%}.empty-state{pointer-events:none;color:var(--text-muted);font-size:13px;position:absolute;top:14px;left:48px;right:16px}.empty-state p{margin:0 0 .2rem}.empty-state .hint{color:var(--text-faint)}.findings{border-left:1px solid var(--border);background:var(--bg-elevated);flex:0 0 320px;width:320px;overflow:auto}.findings-head{background:var(--bg-elevated);z-index:1;justify-content:space-between;align-items:center;padding:12px 14px 8px;display:flex;position:sticky;top:0}.findings-head h2{letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin:0;font-size:11px;font-weight:600}.findings-copy-all{opacity:0;color:var(--text-muted);font-size:11px}.findings-head:hover .findings-copy-all{opacity:1}.finding-group{border-left:2px solid var(--border);margin:0 0 10px;padding:0 0 2px 12px}.finding-group-syntax{border-left-color:var(--syntax)}.finding-group-lint{border-left-color:var(--lint)}.finding-group-schema{border-left-color:var(--schema-c)}.finding-group-head{justify-content:space-between;align-items:center;padding:0 12px 4px 0;display:flex}.finding-group-label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.finding-group-count{color:var(--text-faint);font-size:11px;font-family:var(--font-mono)}.finding-list{margin:0;padding:0 8px 4px 0;list-style:none}.finding{align-items:flex-start;gap:2px;margin:0 0 2px;display:flex}.finding-jump{text-align:left;height:auto;color:var(--text);border-radius:4px;flex:1;padding:6px 4px 6px 0}.finding-jump:hover{background:#ffffff08}.finding-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.finding-msg{font-size:13px;font-weight:500}.finding-msg:before{content:"";vertical-align:middle;background:var(--text-faint);border-radius:50%;width:7px;height:7px;margin-right:8px;display:inline-block}.finding-syntax .finding-msg:before{background:var(--syntax)}.finding-lint .finding-msg:before{background:var(--lint)}.finding-schema .finding-msg:before{background:var(--schema-c)}.finding-hint{color:var(--text-muted);margin:3px 0 0 15px;font-size:12px;line-height:1.35}.finding-loc{color:var(--text-faint);font-family:var(--font-mono);flex:none;font-size:11px}.icon-copy{opacity:0;color:var(--text-faint);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%238b9aab' stroke-width='1.5' viewBox='0 0 16 16'%3E%3Crect x='5.5' y='5.5' width='8' height='8' rx='1.2'/%3E%3Cpath d='M10.5 5.5V4.2A1.2 1.2 0 0 0 9.3 3H4.2A1.2 1.2 0 0 0 3 4.2v5.1A1.2 1.2 0 0 0 4.2 10.5H5.5'/%3E%3C/svg%3E") 50%/12px no-repeat;width:22px;height:22px;font-size:0}.finding:hover .icon-copy{opacity:1}.status{border-top:1px solid var(--border);background:var(--bg-elevated);height:30px;color:var(--text-faint);white-space:nowrap;align-items:center;gap:8px;padding:0 14px;font-size:12px;display:flex;overflow:hidden}.status-dot{background:var(--text-faint);border-radius:50%;flex:none;width:7px;height:7px}.status[data-state=ok]{color:var(--ok)}.status[data-state=ok] .status-dot{background:var(--ok)}.status[data-state=error]{color:var(--syntax)}.status[data-state=error] .status-dot{background:var(--syntax)}.status[data-state=warn]{color:var(--lint)}.status[data-state=warn] .status-dot{background:var(--lint)}.status-meta{color:var(--text-faint);font-family:var(--font-mono);font-size:11px}.file-input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.toast{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);z-index:5;border-radius:6px;padding:.4rem .75rem;font-size:13px;position:fixed;bottom:42px;left:50%;transform:translate(-50%)}@media (max-width:800px){.topbar,.toolbar{overflow-x:auto}.main{flex-direction:column}.pane-schema{border-left:0;border-top:1px solid var(--border);flex:0 0 28vh;width:100%}.findings{border-left:0;border-top:1px solid var(--border);flex:0 0 34vh;width:100%}.tool,.text-btn,.schema-toggle{height:36px;min-height:36px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
