:root{--bg:#0b0d10;--fg:rgba(245,248,250,0.92);--fg-dim:rgba(245,248,250,0.66);--hairline:rgba(245,248,250,0.14);--shadow:rgba(0,0,0,0.55);--danger:rgba(255,112,112,0.75)}body,html{margin:0;min-height:100%;background:radial-gradient(1200px 1200px at 50% 40%,#0f1217 0,#080a0d 60%,#050608 100%);color:var(--fg);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Apple Color Emoji,Segoe UI Emoji}body{overflow:auto;padding:22px}.jsonApp{width:min(1100px,100%);margin:0 auto;display:grid;gap:14px}.jsonHeader{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.jsonBrand{display:flex;align-items:baseline;gap:12px}.jsonLogo{letter-spacing:.08em;text-transform:uppercase;font-size:12px;line-height:1;color:var(--fg);text-decoration:none}.jsonLogo:hover{text-decoration:underline;text-decoration-color:var(--hairline);text-underline-offset:3px}.jsonTitle{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-dim)}.jsonActions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.jsonButton{background:rgba(10,12,14,.5);border:1px solid var(--hairline);color:var(--fg);font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:10px 12px;border-radius:999px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);cursor:pointer}.jsonButton:hover{border-color:rgba(245,248,250,.24)}.jsonButton:active{transform:translateY(1px)}.jsonButton:disabled{opacity:.6;cursor:default}.jsonButton--danger{border-color:rgba(255,112,112,.3);color:rgba(255,182,182,.9)}.jsonButton--danger:hover{border-color:rgba(255,112,112,.55)}.jsonButton--file{display:inline-flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none}.jsonUpload{display:flex;flex-wrap:wrap}.jsonUpload,.jsonUrl{gap:10px;align-items:center}.jsonUrl{display:grid;grid-template-columns:auto 1fr auto;width:min(680px,100%)}.jsonUrl__label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-dim)}.jsonUrl__input{width:100%;min-width:240px;background:rgba(10,12,14,.45);border:1px solid var(--hairline);color:var(--fg);padding:10px 12px;border-radius:12px;outline:none;font-size:13px}.jsonUrl__input:focus{border-color:rgba(245,248,250,.28)}.jsonEditor{display:grid;gap:10px}.jsonMeta{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;border:1px solid rgba(245,248,250,.1);background:rgba(10,12,14,.35);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.jsonMeta__group{display:flex;align-items:center;gap:10px;min-width:0}.jsonMeta__label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-dim)}.jsonMeta__value{display:block;flex:1 1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:rgba(245,248,250,.92);white-space:nowrap;overflow:auto;padding:2px 0}.jsonMeta__range{width:160px;accent-color:rgba(245,248,250,.72)}.jsonMeta__hint{min-width:2ch;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:rgba(245,248,250,.92)}.jsonEditor__label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-dim)}.jsonEditor__textarea{width:100%;min-height:clamp(420px,66vh,72vh);resize:vertical;padding:14px;border-radius:14px;border:1px solid rgba(245,248,250,.12);background:rgba(10,12,14,.5);color:rgba(245,248,250,.92);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.45;tab-size:2;outline:none;box-shadow:0 12px 60px var(--shadow)}.jsonEditor__textarea:focus{border-color:rgba(245,248,250,.22)}.jsonStatus{min-height:1.5em;font-size:12px;color:var(--fg-dim)}.jsonStatus[data-kind=ok]{color:rgba(184,255,208,.9)}.jsonStatus[data-kind=error]{color:rgba(255,182,182,.92)}@media (max-width:720px){body{padding:16px}.jsonUrl{grid-template-columns:1fr}.jsonUrl__input{min-width:0}.jsonMeta{grid-template-columns:1fr;align-items:start}.jsonMeta__value{white-space:normal}.jsonMeta__range{width:100%}}@media (prefers-reduced-motion:reduce){.jsonButton:active{transform:none}}