:root{color-scheme:light;--bg: #ffffff;--bg-subtle: #fafafb;--surface: #ffffff;--surface-raised: #f6f7f9;--surface-hover: #f0f1f4;--surface-active: #e8eaee;--border: #e6e8ec;--border-strong: #d4d7dd;--text: #0d0f12;--text-secondary: #42474e;--text-muted: #6b727c;--text-disabled: #a0a6b0;--text-on-accent: #ffffff;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-active: #1e40af;--accent-subtle: #eff4ff;--accent-border: #bfd3fe;--success: #0e9f6e;--success-bg: #e7f8f1;--success-border: #a7e8ce;--warning: #b45309;--warning-bg: #fef6e7;--error: #dc2626;--error-bg: #fdecec;--error-border: #f6bfbf;--focus-ring: #3b82f6;--selection-bg: #d6e4ff;--gutter-bg: #fafafb;--gutter-text: #9aa1ac;--line-highlight: #f4f6fa;--error-line-bg: #fdecec;--syntax-key: #1f6feb;--syntax-string: #0a7e4e;--syntax-number: #9a3dd1;--syntax-boolean: #c2410c;--syntax-null: #6b727c;--syntax-punctuation: #6b727c;--syntax-tag: #1f6feb;--syntax-attr: #9a3dd1;--syntax-comment: #8a9099;--shadow-sm: 0 1px 2px rgba(13, 15, 18, .06);--shadow-md: 0 4px 16px rgba(13, 15, 18, .1);--shadow-popover: 0 8px 28px rgba(13, 15, 18, .14);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-mono: ui-monospace, "SF Mono", "Cascadia Code", "Cascadia Mono", Menlo, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace;--code-fs: 13px;--code-lh: 20px;--r-sm: 6px;--r-md: 8px;--r-lg: 10px;--r-xl: 16px;--maxw: 1200px}[data-theme=dark]{color-scheme:dark;--bg: #0b0d10;--bg-subtle: #0e1116;--surface: #121519;--surface-raised: #181c22;--surface-hover: #1f242b;--surface-active: #272d35;--border: #23282f;--border-strong: #333a43;--text: #f2f4f7;--text-secondary: #b8bfc9;--text-muted: #828a95;--text-disabled: #565e69;--text-on-accent: #ffffff;--accent: #4d8dff;--accent-hover: #6ba0ff;--accent-active: #3d7bee;--accent-subtle: #15233d;--accent-border: #2c4a78;--success: #34d399;--success-bg: #102a22;--success-border: #1f5544;--warning: #fbbf47;--warning-bg: #2b2310;--error: #f87171;--error-bg: #2a1414;--error-border: #5c2a2a;--focus-ring: #5b9bff;--selection-bg: #1e3a66;--gutter-bg: #0e1116;--gutter-text: #5a626b;--line-highlight: #161a20;--error-line-bg: #2a1414;--syntax-key: #7fb0ff;--syntax-string: #5fd49b;--syntax-number: #c792ea;--syntax-boolean: #f0935c;--syntax-null: #828a95;--syntax-punctuation: #828a95;--syntax-tag: #7fb0ff;--syntax-attr: #c792ea;--syntax-comment: #6b7480;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 18px rgba(0, 0, 0, .5);--shadow-popover: 0 10px 34px rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100dvh;display:flex;flex-direction:column}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{line-height:1.25;letter-spacing:-.01em;font-weight:600;color:var(--text)}button{font-family:inherit;cursor:pointer}::selection{background:var(--selection-bg)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:3px}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid transparent;background-clip:padding-box;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted);border:3px solid transparent;background-clip:padding-box}.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:20px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:12px;top:-48px;z-index:100;background:var(--accent);color:var(--text-on-accent);padding:8px 14px;border-radius:var(--r-md);transition:top .15s ease-out}.skip-link:focus{top:12px;text-decoration:none}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--border)}.site-header .container{display:flex;align-items:center;gap:16px;height:56px}.wordmark{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:16px;letter-spacing:-.02em;color:var(--text)}.wordmark:hover{text-decoration:none}.wordmark svg{width:26px;height:26px;border-radius:7px}.nav{display:flex;align-items:center;gap:2px;margin-left:8px}.nav a{color:var(--text-secondary);font-size:14px;font-weight:500;padding:7px 11px;border-radius:var(--r-sm)}.nav a:hover{background:var(--surface-hover);color:var(--text);text-decoration:none}.nav a[aria-current=page]{color:var(--accent);background:var(--accent-subtle)}.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}.privacy-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);padding:4px 9px;border:1px solid var(--border);border-radius:999px;white-space:nowrap}.privacy-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--success)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);border-radius:var(--r-md);transition:background .12s ease-out,color .12s ease-out,border-color .12s ease-out}.icon-btn:hover{background:var(--surface-hover);color:var(--text)}.icon-btn svg{width:18px;height:18px}.theme-toggle .moon,[data-theme=dark] .theme-toggle .sun{display:none}[data-theme=dark] .theme-toggle .moon{display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 13px;font-size:13px;font-weight:500;color:var(--text-secondary);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);transition:background .12s ease-out,color .12s ease-out,border-color .12s ease-out,transform .05s ease-out;white-space:nowrap}.btn svg{width:16px;height:16px;flex-shrink:0}.btn:hover{background:var(--surface-hover);color:var(--text)}.btn:active{background:var(--surface-active);transform:translateY(.5px)}.btn:disabled{opacity:.45;pointer-events:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--text-on-accent)}.btn-primary:active{background:var(--accent-active)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--surface-hover)}.btn-lg{height:44px;padding:0 22px;font-size:15px;border-radius:var(--r-lg)}.btn[aria-pressed=true]{background:var(--accent-subtle);border-color:var(--accent-border);color:var(--accent)}.btn.is-copied{background:var(--success-bg);border-color:var(--success-border);color:var(--success)}.tool-head{padding:26px 0 18px}.tool-head h1{font-size:clamp(1.5rem,1.2rem + 1.4vw,2.1rem)}.tool-head p{margin-top:8px;color:var(--text-secondary);max-width:70ch;font-size:1.02rem}.tool-shell{height:clamp(460px,72vh,820px)}.formatter{height:100%;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r-xl);background:var(--surface);overflow:hidden;box-shadow:var(--shadow-sm)}.toolbar{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--border);background:var(--surface-raised);flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:6px}.toolbar-right{margin-left:auto}.toolbar .divider{width:1px;height:22px;background:var(--border);margin:0 2px}.indent-control{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.indent-control select{font-family:inherit;font-size:13px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:5px 8px}.banner{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;font-size:13px;border-bottom:1px solid var(--border);animation:banner-in .16s ease-out}@keyframes banner-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.banner-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:12px;font-weight:700;flex-shrink:0;margin-top:1px}.banner-body{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.banner-body strong{font-weight:600}.banner-loc{color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums}.banner-snippet{font-family:var(--font-mono);font-size:12px;white-space:pre;overflow-x:auto;margin-top:4px;padding:6px 8px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--bg) 60%,transparent)}.banner-jump,.banner-close{border:1px solid transparent;background:transparent;color:inherit;border-radius:var(--r-sm);flex-shrink:0}.banner-jump{font-size:12px;font-weight:600;padding:4px 9px;border-color:currentColor;opacity:.85}.banner-jump:hover{opacity:1}.banner-close{font-size:18px;line-height:1;width:24px;height:24px}.banner-close:hover{background:color-mix(in srgb,var(--text) 8%,transparent)}.banner.is-error{background:var(--error-bg);color:var(--error);border-bottom-color:var(--error-border)}.banner.is-error .banner-icon{background:var(--error);color:#fff}.banner.is-success{background:var(--success-bg);color:var(--success);border-bottom-color:var(--success-border)}.banner.is-success .banner-icon{background:var(--success);color:#fff}.banner.is-info{background:var(--accent-subtle);color:var(--accent);border-bottom-color:var(--accent-border)}.banner.is-info .banner-icon{background:var(--accent);color:#fff}.workspace{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr}.pane{display:flex;flex-direction:column;min-width:0;min-height:0}.pane-input{border-right:1px solid var(--border)}.pane-head{display:flex;align-items:center;gap:10px;height:32px;padding:0 12px;border-bottom:1px solid var(--border);background:var(--surface-raised)}.pane-title{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.pane-meta{margin-left:auto;font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}.pane-copy{border:none;background:transparent;color:var(--text-muted);font-size:11px;font-weight:600;padding:3px 7px;border-radius:var(--r-sm)}.pane-copy:hover{background:var(--surface-hover);color:var(--text)}.editor{flex:1;min-height:0;display:flex;overflow:hidden;position:relative}.gutter{flex-shrink:0;overflow:hidden;padding:10px 8px 10px 0;text-align:right;background:var(--gutter-bg);border-right:1px solid var(--border);user-select:none}.gutter-inner span,.gutter span{display:block;height:var(--code-lh);line-height:var(--code-lh);font-family:var(--font-mono);font-size:var(--code-fs);color:var(--gutter-text);font-variant-numeric:tabular-nums;padding-left:14px}.gutter span.err{color:var(--error);font-weight:700;background:var(--error-line-bg)}.code-input{flex:1;min-width:0;resize:none;border:none;outline:none;background:var(--surface);color:var(--text);font-family:var(--font-mono);font-size:var(--code-fs);line-height:var(--code-lh);padding:10px 14px;white-space:pre;overflow:auto;tab-size:2;caret-color:var(--accent);font-variant-ligatures:none}.code-input::placeholder{color:var(--text-disabled)}.output{flex:1;min-height:0;overflow:auto;display:flex;align-items:flex-start;background:var(--surface)}.output:not(.has-content){align-items:stretch}.output .gutter{position:sticky;left:0;z-index:1;padding-top:10px;padding-bottom:10px;min-height:100%}.output .code{flex:1;margin:0;padding:10px 14px;font-family:var(--font-mono);font-size:var(--code-fs);line-height:var(--code-lh);white-space:pre;tab-size:2;font-variant-ligatures:none;min-height:max-content}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-disabled);font-size:14px;padding:24px}.empty-state kbd{font-family:var(--font-mono);font-size:12px;background:var(--surface-raised);border:1px solid var(--border);border-bottom-width:2px;border-radius:var(--r-sm);padding:2px 7px;color:var(--text-muted)}.formatter.is-dragover .pane-input{outline:2px dashed var(--accent);outline-offset:-6px;background:var(--accent-subtle)}.formatter.is-busy{cursor:progress}.formatter.flash-error .code-input{animation:flash .6s ease-out}@keyframes flash{0%,to{background:var(--surface)}30%{background:var(--error-line-bg)}}.tok-key{color:var(--syntax-key)}.tok-string{color:var(--syntax-string)}.tok-number{color:var(--syntax-number)}.tok-boolean{color:var(--syntax-boolean)}.tok-null{color:var(--syntax-null)}.tok-punct{color:var(--syntax-punctuation)}.tok-tag{color:var(--syntax-tag)}.tok-attr{color:var(--syntax-attr)}.tok-comment{color:var(--syntax-comment);font-style:italic}.tok-cdata{color:var(--syntax-string)}.tok-decl{color:var(--syntax-comment)}.tree{font-family:var(--font-mono);font-size:12.5px;line-height:1.7;padding:10px 14px;width:100%}.tree-branch{position:relative}.tree-children{padding-left:16px;margin-left:5px;border-left:1px solid var(--border)}.tree-row{display:flex;align-items:baseline;gap:6px;padding:1px 4px;border-radius:4px}summary.tree-row{cursor:pointer;list-style:none}summary.tree-row::-webkit-details-marker{display:none}summary.tree-row:before{content:"▸";color:var(--text-muted);font-size:10px;width:10px;display:inline-block;transition:transform .14s ease-out}details[open]>summary.tree-row:before{transform:rotate(90deg)}.tree-row:hover{background:var(--surface-hover)}.tree-key{color:var(--syntax-key)}.tree-sep{color:var(--text-muted)}.tree-summary{color:var(--text-muted);font-size:11px}.tree-value{word-break:break-word}main{flex:1}.prose{max-width:760px}.prose.wide{max-width:var(--maxw)}.section{padding:30px 0;border-top:1px solid var(--border)}.section:first-of-type{border-top:none}.section h2{font-size:1.45rem;margin-bottom:14px}.section h3{font-size:1.1rem;margin:22px 0 8px}.section p{color:var(--text-secondary);margin-bottom:12px}.section ul,.section ol{color:var(--text-secondary);padding-left:22px;margin-bottom:12px}.section li{margin-bottom:6px}.section code{font-family:var(--font-mono);font-size:.88em;background:var(--surface-raised);border:1px solid var(--border);border-radius:5px;padding:1px 5px}.section strong{color:var(--text)}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:8px 0 4px}.feature{border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;background:var(--surface)}.feature .ic{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:var(--r-md);background:var(--accent-subtle);color:var(--accent);margin-bottom:10px}.feature .ic svg{width:18px;height:18px}.feature h3{font-size:1rem;margin:0 0 4px}.feature p{font-size:.92rem;margin:0;color:var(--text-muted)}.faq details{border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:10px;background:var(--surface);overflow:hidden}.faq summary{cursor:pointer;padding:14px 16px;font-weight:600;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--text-muted);font-size:20px;font-weight:400;flex-shrink:0}.faq details[open] summary:after{content:"–"}.faq summary:hover{background:var(--surface-hover)}.faq .faq-body{padding:0 16px 14px;color:var(--text-secondary)}.hero{padding:56px 0 30px;text-align:center}.hero h1{font-size:clamp(2rem,1.4rem + 3vw,3.4rem);letter-spacing:-.03em;max-width:18ch;margin-inline:auto}.hero .lead{margin:18px auto 0;max-width:60ch;font-size:1.15rem;color:var(--text-secondary)}.hero-actions{margin-top:26px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.hero-badges{margin-top:22px;display:flex;gap:18px;justify-content:center;flex-wrap:wrap;color:var(--text-muted);font-size:.9rem}.hero-badges span{display:inline-flex;align-items:center;gap:7px}.hero-badges svg{width:16px;height:16px;color:var(--success)}.tool-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;padding:10px 0 40px}.tool-card{display:block;border:1px solid var(--border);border-radius:var(--r-xl);padding:22px;background:var(--surface);transition:border-color .14s ease-out,transform .14s ease-out,box-shadow .14s ease-out}.tool-card:hover{text-decoration:none;border-color:var(--accent-border);transform:translateY(-3px);box-shadow:var(--shadow-md)}.tool-card .badge{display:inline-block;font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--accent);background:var(--accent-subtle);border:1px solid var(--accent-border);padding:4px 10px;border-radius:999px;margin-bottom:12px}.tool-card h2{font-size:1.2rem;margin-bottom:6px}.tool-card p{color:var(--text-muted);font-size:.94rem}.tool-card .arrow{margin-top:12px;color:var(--accent);font-weight:600;font-size:.9rem}.related{display:flex;gap:10px;flex-wrap:wrap}.related a{border:1px solid var(--border);border-radius:999px;padding:8px 16px;font-weight:500;color:var(--text-secondary)}.related a:hover{text-decoration:none;background:var(--surface-hover);color:var(--text);border-color:var(--border-strong)}.site-footer{border-top:1px solid var(--border);background:var(--bg-subtle);margin-top:20px}.site-footer .container{display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;padding-block:28px}.site-footer .cols{display:flex;gap:48px;flex-wrap:wrap}.site-footer h4{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:10px}.site-footer a{display:block;color:var(--text-secondary);font-size:14px;padding:3px 0}.site-footer a:hover{color:var(--text)}.site-footer .legal{color:var(--text-muted);font-size:13px;max-width:320px}@media(max-width:860px){.nav,.privacy-chip{display:none}}@media(max-width:760px){.workspace{grid-template-columns:1fr;grid-template-rows:auto auto}.pane-input{border-right:none;border-bottom:1px solid var(--border)}.tool-shell{height:auto}.pane{height:60vh;min-height:280px}.toolbar .btn .btn-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}}@media(pointer:coarse){.btn,.icon-btn{min-height:40px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.code-block{font-family:var(--font-mono);font-size:13px;line-height:1.6;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r-md);padding:14px 16px;overflow-x:auto;margin:6px 0 16px;white-space:pre;-webkit-overflow-scrolling:touch}.code-block code{background:none;border:none;padding:0;font-size:inherit}.errors{list-style:none;padding-left:0!important}.errors li{border-left:3px solid var(--error);background:var(--error-bg);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:10px 14px;margin-bottom:10px;display:flex;flex-direction:column;gap:4px}.errors li strong{font-family:var(--font-mono);font-size:.86em}.errors li span{color:var(--text-secondary);font-size:.95em}.tool-shell{margin-bottom:8px}
