:root{--bg:#0D1117;--bg2:#161B22;--bg3:#21262D;--border:rgba(66,133,244,0.15);--border2:rgba(66,133,244,0.35);--t1:#F0F6FC;--t2:#8B949E;--t3:#6E7681;--primary:#4285F4;--secondary:#58A6FF;--accent:#34A853;--yellow:#FBBC04;--green:#4ADE80;--orange:#F0883E;--red:#F85149;--r:8px;--tr:0.2s ease;--f:'Inter',-apple-system,sans-serif;--m:'SF Mono','Fira Code',monospace}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}
body{font-family:var(--f);background:var(--bg);color:var(--t1);-webkit-font-smoothing:antialiased}
.app-container{display:flex;flex-direction:column;height:100vh}
.app-header{background:rgba(22,27,34,0.7);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:12px 20px;z-index:10;flex-shrink:0}
.header-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
.logo-group{display:flex;align-items:center;gap:12px}
.logo-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:linear-gradient(135deg,rgba(66,133,244,0.12),rgba(52,168,83,0.08));border-radius:var(--r);border:1px solid var(--border)}
h1{font-size:1.1rem;font-weight:700;background:linear-gradient(135deg,var(--primary),var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.header-actions{display:flex;gap:6px;align-items:center}
.schema-select{padding:6px 10px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--t2);font-family:var(--f);font-size:0.8rem;cursor:pointer}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:none;border-radius:var(--r);font-family:var(--f);font-size:0.8rem;font-weight:600;cursor:pointer;transition:all var(--tr)}
.btn-primary{background:linear-gradient(135deg,var(--primary),#5B9BFF);color:#fff;box-shadow:0 2px 12px rgba(66,133,244,0.3)}
.btn-primary:hover{box-shadow:0 4px 20px rgba(66,133,244,0.5);transform:translateY(-1px)}
.btn-accent{background:linear-gradient(135deg,var(--accent),#5EC76D);color:#fff;box-shadow:0 2px 12px rgba(52,168,83,0.3)}
.btn-accent:hover{transform:translateY(-1px)}
.main-content{display:flex;flex:1;overflow:hidden}
.editor-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}
.panel-header{padding:8px 16px;background:var(--bg2);border-bottom:1px solid var(--border)}
.panel-title{font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:var(--t3)}
.json-editor{flex:1;padding:16px;background:var(--bg);color:var(--t1);font-family:var(--m);font-size:0.82rem;line-height:1.7;border:none;resize:none;outline:none;overflow:auto;tab-size:2}
.json-editor::placeholder{color:var(--t3)}
.preview-panel{width:380px;min-width:300px;display:flex;flex-direction:column;border-left:1px solid var(--border);flex-shrink:0}
.preview-body{flex:1;overflow-y:auto;padding:12px}
.empty-state{padding:40px 20px;text-align:center;color:var(--t3);font-size:0.85rem}
.validation-results{margin-bottom:16px}
.val-item{padding:8px 12px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);margin-bottom:6px;font-size:0.82rem;display:flex;align-items:flex-start;gap:8px}
.val-icon{flex-shrink:0;font-size:0.9rem}
.val-pass{color:var(--green)}
.val-fail{color:var(--red)}
.val-warn{color:var(--yellow)}
.val-msg{color:var(--t2)}
.rich-preview{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:16px;display:none}
.rich-preview.active{display:block}
.rp-title{font-size:1rem;font-weight:700;color:var(--primary);margin-bottom:4px;cursor:pointer}
.rp-url{font-size:0.78rem;color:var(--accent);margin-bottom:6px}
.rp-desc{font-size:0.82rem;color:var(--t2);line-height:1.5}
.rp-meta{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.rp-badge{padding:2px 8px;background:rgba(66,133,244,0.1);border-radius:4px;font-size:0.72rem;color:var(--primary)}
@media(max-width:768px){.main-content{flex-direction:column}.preview-panel{width:100%;min-width:unset;max-height:40vh;border-left:none;border-top:1px solid var(--border)}}
