.jsn-page-header{max-width:1000px;margin:0 auto;padding:24px 16px 8px;text-align:center}.jsn-layout{max-width:1000px;margin:0 auto;padding:0 16px;display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.jsn-input-col{display:flex;flex-direction:column;gap:12px}.jsn-output-col{display:flex;flex-direction:column;gap:12px;position:sticky;top:16px}.jsn-indent-row{max-width:1000px;margin:0 auto;padding:0 16px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.jsn-indent-row label{font-size:13px;color:var(--swp-ink-muted)}.jsn-indent-btn{padding:6px 12px;min-height:44px;border:1px solid var(--swp-border);border-radius:var(--r-pill);font-size:13px;font-family:var(--font-mono);background:var(--swp-surface);cursor:pointer}.jsn-indent-btn--active,.jsn-indent-btn[aria-pressed=true]{background:var(--swp-surface-alt);font-weight:700;border-color:var(--swp-ink-muted)}.jsn-presets{max-width:1000px;margin:0 auto 4px;padding:0 16px;display:flex;flex-wrap:wrap;gap:6px}.jsn-chip{display:flex;flex-direction:column;padding:6px 10px;min-height:44px;border:1px solid var(--swp-border);border-radius:var(--r-md);background:var(--swp-surface);font-size:12px;cursor:pointer;text-align:left;justify-content:center;transition:background .15s}.jsn-chip:hover{background:var(--swp-surface-alt)}.jsn-chip-label{font-weight:600;font-size:13px;color:var(--swp-ink)}.jsn-chip-desc{font-size:11px;color:var(--swp-ink-muted);margin-top:2px}.jsn-textarea{width:100%;min-height:320px;padding:14px 16px;font-family:var(--font-mono);font-size:13px;line-height:1.6;background:var(--swp-surface-code);color:var(--swp-ink);border:1px solid var(--swp-border);border-radius:var(--r-lg);resize:vertical;tab-size:2;white-space:pre;overflow-wrap:normal;overflow-x:auto;display:block;box-sizing:border-box}.jsn-textarea:focus{outline:2px solid var(--color-primary);outline-offset:1px}.jsn-btn-row{display:flex;gap:8px;flex-wrap:wrap}.jsn-format-btn{padding:10px 20px;min-height:44px;border-radius:var(--r-pill);font-weight:700;font-size:14px;background:var(--color-primary);color:var(--color-primary-content);border:none;cursor:pointer}.jsn-minify-btn,.jsn-copy-btn,.jsn-clear-btn{padding:8px 16px;min-height:44px;border-radius:var(--r-pill);font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--swp-border);background:var(--swp-surface)}.jsn-output-wrap{display:flex;flex-direction:column;gap:6px}.jsn-output-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--swp-ink-muted)}.jsn-output-pre{background:var(--swp-surface-code);border:1px solid var(--swp-border);border-radius:var(--r-lg);padding:14px 16px;font-family:var(--font-mono);font-size:13px;line-height:1.6;min-height:320px;max-height:600px;overflow:auto;white-space:pre;tab-size:2;margin:0}.jsn-key{color:#0d9488}.jsn-string{color:#ea580c}.jsn-number{color:#2563eb}.jsn-boolean{color:#7c3aed}.jsn-null{color:#64748b}.jsn-error-box{display:flex;align-items:flex-start;gap:8px;padding:12px 14px;background:#fee2e2;border:1px solid #fca5a5;border-radius:var(--r-md)}.jsn-error-icon{font-size:16px;flex-shrink:0;margin-top:2px}.jsn-error-body{display:flex;flex-direction:column;gap:2px}.jsn-error-location{font-size:12px;font-weight:700;color:#991b1b;font-family:var(--font-mono)}.jsn-error-message{font-size:12px;color:#7f1d1d;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;margin:0}.jsn-section-title{font-size:16px;font-weight:700;color:var(--swp-ink);margin:0 0 12px}.jsn-how-to,.jsn-related-section{max-width:1000px;margin:48px auto 0;padding:0 16px}.jsn-steps{padding-left:1.4em}.jsn-steps li{margin-bottom:8px;line-height:1.6}.jsn-related-list{list-style:none;padding:0}.jsn-related-list li{margin-bottom:6px}.jsn-related-tools{display:flex;flex-direction:column;gap:6px}.jsn-related-link{color:var(--color-primary);text-decoration:none}.jsn-related-link:hover{text-decoration:underline}@media(prefers-reduced-motion:reduce){.jsn-chip{transition:none}}@media(max-width:639px){.jsn-layout{grid-template-columns:1fr;gap:20px;overflow-x:hidden}.jsn-input-col{order:1}.jsn-output-col{order:2;position:static}.jsn-textarea,.jsn-output-pre{min-height:200px;font-size:12px}.jsn-btn-row{gap:6px}.jsn-format-btn,.jsn-minify-btn,.jsn-copy-btn,.jsn-clear-btn{font-size:12px;padding:8px 12px}.jsn-chip-desc{display:none}}
