:root{--bg: #f4f6f8;--surface: #ffffff;--surface-2: #f7f9fb;--ink: #16202e;--ink-2: #4a5566;--muted: #6b7686;--line: #dde3ea;--line-strong: #c4ccd7;--accent: #0b6e69;--accent-ink: #ffffff;--accent-soft: #e2f2f0;--focus: #2b7fff;--err-bg: #fde8e8;--err-ink: #a11d1d;--ok-ink: #146c2e;--code-bg: #fbfcfd;--gutter: #f1f4f7;--f-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--f-display: "IBM Plex Sans Condensed", "IBM Plex Sans", "Arial Narrow", sans-serif;--f-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--radius: 10px;--logo-h: 48px;color-scheme:light}:root[data-theme=dark]{--bg: #0e141c;--surface: #151d28;--surface-2: #1a2330;--ink: #e6ebf2;--ink-2: #b4bfcd;--muted: #8c98a8;--line: #283343;--line-strong: #37445a;--accent: #3cc2b8;--accent-ink: #062422;--accent-soft: #123331;--focus: #6aa8ff;--err-bg: #3a1a1d;--err-ink: #ffb3b3;--ok-ink: #9fe3b1;--code-bg: #121922;--gutter: #18212c;color-scheme:dark}@media(prefers-color-scheme:dark){:root[data-theme=auto]{--bg: #0e141c;--surface: #151d28;--surface-2: #1a2330;--ink: #e6ebf2;--ink-2: #b4bfcd;--muted: #8c98a8;--line: #283343;--line-strong: #37445a;--accent: #3cc2b8;--accent-ink: #062422;--accent-soft: #123331;--focus: #6aa8ff;--err-bg: #3a1a1d;--err-ink: #ffb3b3;--ok-ink: #9fe3b1;--code-bg: #121922;--gutter: #18212c;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--f-body)}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}[hidden]{display:none!important}.wrap{max-width:1400px;margin:0 auto;padding-inline:20px}.site-header{background:var(--surface);border-bottom:1px solid var(--line)}.header-in{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-block:10px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}.brand img{height:var(--logo-h);width:auto;display:block;border-radius:6px}.brand-word{font:600 22px/1 var(--f-display)}.nav{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:14px}.nav a{color:var(--ink-2);text-decoration:none}.nav a:hover,.nav a[aria-current]{color:var(--accent)}.nav a[aria-current]{font-weight:600}.theme-switch{display:inline-flex;border:1px solid var(--line-strong);border-radius:99px;padding:2px;background:var(--surface-2)}.theme-switch button{appearance:none;border:0;background:none;color:var(--ink-2);font-size:13px;padding:4px 10px;border-radius:99px;cursor:pointer}.theme-switch button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 0 0 1px var(--line-strong);font-weight:600}.crumbs{padding-top:14px;font-size:13px;color:var(--muted)}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--accent)}.pg-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));padding-top:6px}.pg-card{display:flex;gap:14px;align-items:flex-start;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;color:inherit;transition:border-color .15s,transform .15s}.pg-card:hover{border-color:var(--accent);transform:translateY(-2px)}@media(prefers-reduced-motion:reduce){.pg-card,.pg-card:hover{transition:none;transform:none}}.pg-icon{flex:0 0 48px;height:48px;display:grid;place-items:center;font-size:26px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px}.pg-body{display:flex;flex-direction:column;gap:5px;min-width:0}.pg-body b{font:600 18px/1.25 var(--f-display);color:var(--ink)}.pg-body>span{color:var(--ink-2);font-size:14px}.pg-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.pg-meta em{font-style:normal;font-size:11.5px;font-weight:600;color:var(--muted);border:1px solid var(--line);background:var(--surface-2);border-radius:5px;padding:2px 6px}.top{display:flex;align-items:baseline;gap:6px 16px;flex-wrap:wrap;padding-block:6px 12px}h1{font:600 clamp(24px,3.2vw,32px)/1.1 var(--f-display);margin:0}.sub{margin:0;color:var(--ink-2);font-size:14.5px}.sub b{color:var(--accent);font-weight:600}.app{display:grid;grid-template-columns:240px minmax(0,1fr);gap:14px;align-items:start}.app.drag{outline:2px dashed var(--accent);outline-offset:6px;border-radius:var(--radius)}.side{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);position:sticky;top:12px;max-height:calc(100vh - 24px);display:flex;flex-direction:column;min-width:0}.side-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}#schema{overflow:auto;padding:6px 4px 10px;font-size:13.5px}#schema details{padding:2px 6px}#schema summary{cursor:pointer;padding:4px;border-radius:6px;display:flex;gap:6px;align-items:center;list-style:none}#schema summary:before{content:"\25b8";color:var(--muted);font-size:11px;width:10px}#schema details[open]>summary:before{content:"\25be"}#schema summary:hover{background:var(--surface-2)}#schema .tname{font-weight:600;font-family:var(--f-mono);font-size:13px;cursor:copy;overflow:hidden;text-overflow:ellipsis}#schema em{font-style:normal;color:var(--muted);font-size:11.5px}#schema .cnt{margin-left:auto;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}#schema ul{list-style:none;margin:0 0 4px;padding:0 0 0 24px}#schema li{display:flex;justify-content:space-between;gap:8px;padding:1px 4px;font-family:var(--f-mono);font-size:12.5px}#schema li span{cursor:copy;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#schema li span:hover,#schema .tname:hover{color:var(--accent)}#schema li em{white-space:nowrap}#schema .empty{color:var(--muted);padding:8px 10px;margin:0}.side-foot{border-top:1px solid var(--line);padding:10px;display:flex;flex-wrap:wrap;gap:6px}.work{display:flex;flex-direction:column;gap:12px;min-width:0}.ed-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 10px;border-bottom:1px solid var(--line)}.toolbar .grow{flex:1}.btn{appearance:none;border:1px solid var(--line-strong);background:var(--surface);border-radius:7px;padding:6px 12px;font-size:13.5px;cursor:pointer;line-height:1.3;white-space:nowrap}.btn:hover{border-color:var(--ink-2)}.btn:disabled{opacity:.6;cursor:progress}.btn.run{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600;padding:7px 16px}.btn.small{padding:4px 9px;font-size:12.5px}select.btn{padding-right:26px}kbd{font:11.5px var(--f-mono);color:var(--muted)}.status{font-size:12.5px;color:var(--muted);display:inline-flex;gap:6px;align-items:center}.status.ok:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ok-ink)}.status.fail{color:var(--err-ink)}.ed{display:flex;height:280px;min-height:140px;resize:vertical;overflow:hidden;background:var(--code-bg)}#gutter{margin:0;padding:10px 8px 10px 10px;min-width:3.2em;text-align:right;color:var(--muted);background:var(--gutter);font:13px/20px var(--f-mono);overflow:hidden;user-select:none;white-space:pre;border-right:1px solid var(--line)}#editor{flex:1;min-width:0;border:0;margin:0;padding:10px 12px;resize:none;background:transparent;font:13px/20px var(--f-mono);tab-size:2;white-space:pre;overflow:auto;color:var(--ink)}#editor:focus-visible{outline:none}.ed-box:focus-within{border-color:var(--accent)}#results{display:flex;flex-direction:column;gap:10px}.res{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;min-width:0}.res.err{border-color:var(--err-ink)}.res-head{display:flex;gap:8px 12px;align-items:center;padding:7px 10px;border-bottom:1px solid var(--line);background:var(--surface-2);flex-wrap:wrap}.res-head:last-child{border-bottom:0}.stmt{font:12.5px var(--f-mono);color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 240px;min-width:0}.meta{font-size:12.5px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.res.err .meta{color:var(--err-ink);font-weight:600}.tools{display:flex;gap:4px}.tools button{appearance:none;border:1px solid var(--line);background:var(--surface);border-radius:5px;padding:2px 8px;font-size:12px;cursor:pointer;color:var(--ink-2)}.tools button:hover{border-color:var(--ink-2);color:var(--ink)}.tools button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.tbl{overflow:auto;max-height:460px}table{border-collapse:collapse;font:12.5px/1.45 var(--f-mono);min-width:100%}th{position:sticky;top:0;background:var(--surface-2);text-align:left;font-weight:600;padding:6px 10px;border-bottom:1px solid var(--line-strong);white-space:nowrap;z-index:1}td{padding:5px 10px;border-bottom:1px solid var(--line);vertical-align:top;white-space:pre;max-width:460px;overflow:hidden;text-overflow:ellipsis}td.num{text-align:right;font-variant-numeric:tabular-nums}td.null{color:var(--muted);font-style:italic}.rn{color:var(--muted);text-align:right;background:var(--surface-2);width:1%}tbody tr:hover td:not(.rn){background:var(--accent-soft)}.more,.msg{padding:8px 12px;font-size:13px;color:var(--muted)}pre{margin:0;padding:10px 12px;font:12.5px/1.5 var(--f-mono);overflow:auto;max-height:460px;white-space:pre}pre.errtext{color:var(--err-ink);background:var(--err-bg);white-space:pre-wrap}pre.print{color:var(--ink-2)}.total{font-size:12.5px;color:var(--muted);text-align:right}.site-footer{margin-top:36px;border-top:1px solid var(--line);background:var(--surface);font-size:13px;color:var(--muted)}.footer-in{display:flex;justify-content:space-between;gap:8px 18px;flex-wrap:wrap;padding-block:16px}.footer-in a{color:var(--ink-2)}.toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:8px;font-size:14px;z-index:9;max-width:calc(100% - 32px)}.spin{display:inline-block;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .7s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin{animation:none}}@media(max-width:860px){.wrap{padding-inline:16px}.app{grid-template-columns:minmax(0,1fr)}.side{position:static;max-height:260px;order:2}.ed{height:220px}kbd{display:none}}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{border-color:var(--line-strong);color:var(--ink)}.btn.help{width:32px;height:32px;padding:0;border-radius:50%;font-weight:600}.side-foot{justify-content:flex-end}.steps{list-style:none;margin:0;padding:8px 10px 8px 14px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--radius);font-size:14px}.steps li{display:flex;align-items:center;gap:8px;color:var(--ink)}.steps li b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-size:12px;flex:none}.steps em{font-style:normal;font-weight:600}.steps .steps-x{margin-left:auto}.steps .steps-x button{appearance:none;border:0;background:none;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}.steps .steps-x button:hover{color:var(--ink);background:var(--surface)}body.noscroll{overflow:hidden}.drawer{position:fixed;inset:0;z-index:20}.drawer-bg{position:absolute;inset:0;background:#0a101861}.drawer-panel{position:absolute;top:0;right:0;bottom:0;width:min(480px,100%);background:var(--surface);border-left:1px solid var(--line);display:flex;flex-direction:column;box-shadow:-10px 0 30px #0000001f;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}.dtabs{display:flex;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:3px}.dtabs button{appearance:none;border:0;background:none;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:14px;color:var(--ink-2)}.dtabs button[aria-selected=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 0 0 1px var(--line-strong)}.dclose{appearance:none;border:0;background:none;font-size:22px;line-height:1;cursor:pointer;color:var(--muted);padding:4px 8px;border-radius:6px}.dclose:hover{color:var(--ink);background:var(--surface-2)}.drawer-body{overflow:auto;padding:14px 16px 24px;flex:1}.exlist{display:flex;flex-direction:column;gap:8px}.ex{appearance:none;text-align:left;display:flex;flex-direction:column;gap:6px;width:100%;padding:10px 12px;border:1px solid var(--line);background:var(--surface);border-radius:8px;cursor:pointer}.ex:hover{border-color:var(--accent);background:var(--accent-soft)}.ex b{font-size:14.5px;color:var(--ink)}.ex code{font:12px/1.5 var(--f-mono);color:var(--muted);white-space:pre;overflow:hidden;text-overflow:ellipsis;display:block}.howto{list-style:none;counter-reset:s;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.howto li{counter-increment:s;display:grid;grid-template-columns:28px 1fr;gap:2px 10px}.howto li:before{content:counter(s);grid-row:span 2;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:13px}.howto b{font-size:15px}.howto span{color:var(--ink-2);font-size:14px}.howto kbd,.notes kbd{display:inline-block;border:1px solid var(--line-strong);border-radius:4px;padding:0 5px;font:12px var(--f-mono);color:var(--ink);background:var(--surface-2)}.drawer-body h3{font:600 15px/1.3 var(--f-body);margin:22px 0 8px}.notes{margin:0;padding-left:18px;color:var(--ink-2);font-size:14px;display:flex;flex-direction:column;gap:6px}@media(max-width:860px){.nav .dbl{display:none}.status{order:9;width:100%}.steps{font-size:13.5px}}.about{max-width:820px;margin-top:36px;color:var(--ink-2);font-size:14.5px}.about h2{font:600 20px/1.3 var(--f-display);color:var(--ink);margin:0 0 8px;text-wrap:balance}.about h3{font:600 15px/1.3 var(--f-body);color:var(--ink);margin:20px 0 6px}.about p{margin:0 0 10px;max-width:70ch}.faq{border-top:1px solid var(--line)}.faq details{border-bottom:1px solid var(--line);padding:9px 0}.faq summary{cursor:pointer;color:var(--ink);font-weight:600}.faq details p{margin:6px 0 2px}.more-links a{color:var(--accent)}.limit{margin:14px 0 0;font-size:13.5px;color:var(--muted)}
