pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--c-bg:#f8f9fa;--c-surface:#fff;--c-border:#dee2e6;--c-text:#212529;--c-text-muted:#6c757d;--c-primary:#2563eb;--c-primary-hover:#1d4ed8;--c-success:#059669;--c-success-hover:#047857;--c-error:#dc2626;--c-error-bg:#fef2f2;--c-code-bg:#f1f3f5;--c-badge:#e9ecef;--c-tab-active:#2563eb;--shadow:0 1px 3px #00000014, 0 1px 2px #0000000f;--shadow-lg:0 4px 12px #0000001a;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", ui-monospace, monospace}@media (prefers-color-scheme:dark){:root{--c-bg:#0f1117;--c-surface:#1a1d27;--c-border:#2d3148;--c-text:#e4e6eb;--c-text-muted:#8b8fa3;--c-primary:#3b82f6;--c-primary-hover:#60a5fa;--c-success:#10b981;--c-success-hover:#34d399;--c-error:#ef4444;--c-error-bg:#1c1012;--c-code-bg:#252836;--c-badge:#2d3148;--c-tab-active:#3b82f6;--shadow:0 1px 3px #0000004d;--shadow-lg:0 4px 12px #0006}}html{font-size:15px}body{background:var(--c-bg);color:var(--c-text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6}.app{max-width:960px;margin:0 auto;padding:0 1.25rem 2rem}.header{border-bottom:1px solid var(--c-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding:1.5rem 0 1rem;display:flex}.header-left{flex-wrap:wrap;align-items:baseline;gap:.75rem;display:flex}.title-link{color:inherit;text-decoration:none}.title{letter-spacing:-.02em;font-size:1.5rem;font-weight:700}.subtitle{color:var(--c-text-muted);font-size:.875rem}.header-right{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.header-link{min-height:2.4rem;box-shadow:var(--shadow);border:1px solid #0000;border-radius:0;align-items:center;gap:.5rem;padding:.55rem .85rem;font-size:.875rem;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}.header-link-icon{flex:0 0 1rem;justify-content:center;align-items:center;width:1rem;height:1rem;display:inline-flex}.header-link-icon svg{width:1rem;height:1rem;display:block}.npm-link{color:#fff;background:#cb3837;border-color:#a62b2b}.npm-link:hover{color:#fff;background:#b73131}.github-link{color:#fff;background:#24292f;border-color:#1b1f23}.github-link:hover{color:#fff;background:#1b1f23}.lang-select-wrap{align-items:center;display:inline-flex;position:relative}.lang-select-icon{color:var(--c-text-muted);pointer-events:none;justify-content:center;align-items:center;display:inline-flex;position:absolute;left:.75rem}.lang-select-icon svg{width:1rem;height:1rem;display:block}.lang-select-wrap:after{content:"";border-right:2px solid var(--c-text-muted);border-bottom:2px solid var(--c-text-muted);pointer-events:none;width:.5rem;height:.5rem;position:absolute;right:.75rem;transform:translateY(-25%)rotate(45deg)}.lang-switch{border:1px solid var(--c-border);background:var(--c-surface);min-width:6.5rem;min-height:2.4rem;color:var(--c-text);cursor:pointer;box-shadow:var(--shadow);appearance:none;border-radius:0;padding:.6rem 2rem .6rem 2.1rem;font-size:.875rem;font-weight:600;line-height:1.3}.lang-switch:hover{border-color:var(--c-primary);color:var(--c-primary)}.lang-switch:focus{border-color:var(--c-primary);outline:none}.tabs{border-bottom:2px solid var(--c-border);gap:0;margin-bottom:1.5rem;display:flex}.tab{color:var(--c-text-muted);cursor:pointer;background:0 0;border:none;padding:.625rem 1.25rem;font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-block;position:relative}.tab:hover{color:var(--c-text);background:var(--c-code-bg)}.tab.active,.tab.router-link-exact-active{color:var(--c-tab-active)}.tab.active:after,.tab.router-link-exact-active:after{content:"";background:var(--c-tab-active);height:2px;position:absolute;bottom:-2px;left:0;right:0}.sub-tabs{border-bottom:1px solid var(--c-border);gap:0;margin-bottom:1.25rem;display:flex}.sub-tab{color:var(--c-text-muted);cursor:pointer;background:0 0;border:none;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:color .15s;position:relative}.sub-tab:hover{color:var(--c-text);background:var(--c-code-bg)}.sub-tab.active{color:var(--c-tab-active)}.sub-tab.active:after{content:"";background:var(--c-tab-active);height:2px;position:absolute;bottom:-1px;left:0;right:0}.tab-content{animation:.15s fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.demo-section h2{margin-bottom:.25rem;font-size:1.375rem;font-weight:600}.desc{color:var(--c-text-muted);margin-bottom:1.25rem;font-size:.9375rem}.panel{background:var(--c-surface);border:1px solid var(--c-border);box-shadow:var(--shadow);padding:1.25rem}.panel h3{margin-bottom:.75rem;font-size:1rem;font-weight:600}.panel h4{margin:.75rem 0 .375rem;font-size:.875rem;font-weight:600}.code-input{width:100%;font-family:var(--font-mono);border:1px solid var(--c-border);background:var(--c-code-bg);color:var(--c-text);resize:vertical;tab-size:2;padding:.75rem;font-size:.8125rem;line-height:1.5}.code-input:focus{border-color:var(--c-primary);outline:none;box-shadow:0 0 0 3px #2563eb1f}.code-output{font-family:var(--font-mono);background:var(--c-code-bg);white-space:pre;padding:.75rem;font-size:.8125rem;line-height:1.5;overflow-x:auto}.input-small{border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text);min-width:80px;padding:.3rem .5rem;font-size:.8125rem}.input-small:focus{border-color:var(--c-primary);outline:none}select.input-small{cursor:pointer}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;align-items:center;gap:.375rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--c-primary);color:#fff}.btn.primary:hover:not(:disabled){background:var(--c-primary-hover)}.btn.success{background:var(--c-success);color:#fff}.btn.success:hover:not(:disabled){background:var(--c-success-hover)}.btn.outline{background:var(--c-surface);color:var(--c-text);border-color:var(--c-border)}.btn.outline:hover:not(:disabled){border-color:var(--c-primary);color:var(--c-primary)}.btn.small{border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text-muted);padding:.3rem .625rem;font-size:.8125rem}.btn.small.active{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}.btn-row{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.file-upload{cursor:pointer;display:inline-block}.file-upload input[type=file]{opacity:0;width:0;height:0;position:absolute;overflow:hidden}.options-row{flex-wrap:wrap;align-items:center;gap:1rem;margin-top:.75rem;display:flex}.options-row label{color:var(--c-text-muted);align-items:center;gap:.375rem;font-size:.8125rem;display:flex}.options-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.625rem;margin-top:.75rem;display:grid}.options-grid label{color:var(--c-text-muted);align-items:center;gap:.375rem;font-size:.8125rem;display:flex}.options-stack{margin-top:.75rem}.stacked-label{color:var(--c-text-muted);flex-direction:column;gap:.375rem;font-size:.8125rem;display:flex}.code-input.compact{min-height:0}.checkbox-label{cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{accent-color:var(--c-primary)}.mode-switch{color:var(--c-text-muted);align-items:center;gap:.375rem;margin-bottom:.75rem;font-size:.8125rem;display:flex}.file-list{margin-top:.75rem;font-size:.8125rem}.file-list p{margin-bottom:.25rem;font-weight:500}.file-list ul{padding-left:.5rem;list-style:none}.file-list li{color:var(--c-text-muted);padding:.125rem 0}.muted{color:var(--c-text-muted);margin-top:.5rem;font-size:.8125rem}.error-box{background:var(--c-error-bg);border:1px solid var(--c-error);color:var(--c-error);word-break:break-word;margin-top:.75rem;padding:.75rem 1rem;font-size:.875rem}.warning-box{color:#9a3412;background:#fff7ed;border:1px solid #f59e0b;margin-top:.75rem;padding:.9rem 1rem}.warning-box h3{margin-bottom:.5rem;font-size:.9375rem}.warning-list{padding-left:1.25rem}.warning-list li+li{margin-top:.35rem}.result-section{margin-top:1.25rem}.result-section h3{margin-bottom:.5rem;font-size:1rem;font-weight:600}.table-wrapper{border:1px solid var(--c-border);box-shadow:var(--shadow);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.8125rem}thead{background:var(--c-code-bg)}th{text-align:left;color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--c-border);padding:.625rem .75rem;font-size:.75rem;font-weight:600}td{border-bottom:1px solid var(--c-border);padding:.5rem .75rem}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--c-code-bg)}code{font-family:var(--font-mono);font-size:.8125rem}.badge{background:var(--c-badge);padding:.125rem .5rem;font-size:.75rem;font-weight:500;display:inline-block}.badge.written{color:#065f46;background:#d1fae5}@media (prefers-color-scheme:dark){.badge.written{color:#6ee7b7;background:#064e3b}.warning-box{color:#fdba74;background:#27180a;border-color:#d97706}}.output-block{margin-top:.75rem}.page-block{margin-bottom:1rem}.page-block h3{margin-bottom:.5rem;font-size:.9375rem}.kv-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;display:grid}.kv-item{border:1px solid var(--c-border);background:var(--c-surface);box-shadow:var(--shadow);padding:.75rem}.kv-label{color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.35rem;font-size:.75rem;display:block}.footer{border-top:1px solid var(--c-border);text-align:center;color:var(--c-text-muted);margin-top:3rem;padding-top:1.25rem;font-size:.8125rem}.footer-link{color:var(--c-text-muted);font-size:.8125rem;text-decoration:none}.readme-content{line-height:1.7}.readme-content h1{border-bottom:1px solid var(--c-border);margin:0 0 .75rem;padding-bottom:.5rem;font-size:1.75rem;font-weight:700}.readme-content h2{border-bottom:1px solid var(--c-border);margin:2rem 0 .5rem;padding-bottom:.375rem;font-size:1.375rem;font-weight:600}.readme-content h3{margin:1.5rem 0 .375rem;font-size:1.125rem;font-weight:600}.readme-content p{margin:.75rem 0}.readme-content a{color:var(--c-primary);text-decoration:none}.readme-content a:hover{text-decoration:underline}.readme-content code{font-family:var(--font-mono);background:var(--c-code-bg);padding:.15em .35em;font-size:.85em}.readme-content pre{background:var(--c-code-bg);border:1px solid var(--c-border);margin:.75rem 0;padding:1rem;font-size:.8125rem;line-height:1.5;overflow-x:auto}.readme-content pre code{background:0 0;padding:0}.readme-content ul,.readme-content ol{margin:.5rem 0;padding-left:1.5rem}.readme-content li{margin:.25rem 0}.readme-content table{border:1px solid var(--c-border);margin:.75rem 0}.readme-content blockquote{border-left:3px solid var(--c-border);color:var(--c-text-muted);background:var(--c-code-bg);margin:.75rem 0;padding:.5rem 1rem}.readme-content hr{border:none;border-top:1px solid var(--c-border);margin:1.5rem 0}@media (prefers-color-scheme:dark){.hljs{color:#c9d1d9;background:var(--c-code-bg)}.hljs-keyword,.hljs-selector-tag{color:#ff7b72}.hljs-string,.hljs-attr{color:#a5d6ff}.hljs-comment,.hljs-quote{color:#8b949e}.hljs-number,.hljs-literal{color:#79c0ff}.hljs-title,.hljs-section{color:#d2a8ff}.hljs-built_in,.hljs-type,.hljs-params,.hljs-variable,.hljs-template-variable{color:#ffa657}.hljs-meta{color:#79c0ff}.hljs-punctuation{color:#c9d1d9}}@media (width<=700px){.tabs{flex-wrap:wrap}.tab{padding:.5rem .75rem;font-size:.8125rem}}
