@font-face{font-family:Inter;src:url(/fonts/inter-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-500.woff2)format("woff2");font-weight:500;font-display:swap}:root,[data-theme=dark]{--ground:#0f0e0c;--ground-2:#181613;--hairline:#2b2824;--ink-faint:#4c4741;--ink-muted:#a29c92;--ink:#ece7df;--live:#3fd3f0;--signal:#f7c531}[data-theme=light]{--ground:#f5f3ef;--ground-2:#ebe8e2;--hairline:#d4cfc7;--ink-faint:#b4aea4;--ink-muted:#5e584f;--ink:#15130f;--live:#00708a;--signal:#866000}:root{--sans:"Inter", "Noto Sans JP", system-ui, sans-serif;--mono:"Geist Mono", "Noto Sans JP", ui-monospace, monospace;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--space-7:72px;--radius-0:0;--radius-input:2px;--radius-code:4px;--measure-prose:680px;--measure-wide:880px;--page:1180px}*{box-sizing:border-box}html{background:var(--ground);scroll-padding-top:76px}body{background:var(--ground);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6}a{color:var(--live);border-bottom:1px solid #0000;text-decoration:none}a:hover{border-bottom-color:var(--live)}:focus-visible{outline:2px solid var(--live);outline-offset:2px}.wrap{max-width:var(--page);padding:0 var(--space-5);margin:0 auto}.mono{font-family:var(--mono)}.key{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-size:12px;font-weight:500}.muted{color:var(--ink-muted)}h1,h2,h3{font-family:var(--sans);letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:44px;line-height:1.1}h1.display{font-size:56px;font-weight:700;line-height:60px}h2{margin:var(--space-2) 0 var(--space-3);font-size:30px;line-height:1.2}h3{margin:0 0 var(--space-2);font-size:18px;line-height:1.3}p{max-width:var(--measure-prose);margin:0}p+p{margin-top:var(--space-3)}.lead{color:var(--ink-muted);max-width:var(--measure-prose);font-size:19px;line-height:1.6}.lead b,p b{color:var(--ink);font-weight:600}code{font-family:var(--mono);background:var(--ground-2);border:1px solid var(--hairline);border-radius:var(--radius-input);padding:1px 4px;font-size:.92em}ul,ol{padding-left:var(--space-4);max-width:var(--measure-prose);margin:0}li+li{margin-top:var(--space-2)}section.sec{padding:var(--space-7) 0;border-top:1px solid var(--hairline)}.grid2{gap:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.grid3{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.rule{border-top:1px solid var(--ink);color:var(--ink-muted);padding-top:12px;font-size:14px;line-height:1.55}.rule b{font-family:var(--mono);color:var(--ink);margin-bottom:var(--space-1);font-size:13px;font-weight:500;display:block}.cap{font-family:var(--mono);color:var(--ink-muted);margin-top:var(--space-2);font-size:12px}svg{display:block}.ic{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:square;stroke-linejoin:miter;flex:none;width:20px;height:20px}.skip{position:absolute;left:-9999px}.skip:focus{left:var(--space-3);top:var(--space-3);z-index:10;background:var(--ground);padding:var(--space-2) var(--space-3);border:1px solid var(--ink)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-5{margin-top:var(--space-5)}.mt-6{margin-top:var(--space-6)}.wide{max-width:var(--measure-wide)}.top{z-index:5;background:var(--ground);border-bottom:1px solid var(--hairline);position:sticky;top:0}.top .wrap{align-items:baseline;gap:28px;padding-block:10px;display:flex}.brand{color:var(--ink);border:none;align-items:baseline;gap:.3em;font-size:21px;display:flex}.brand:hover{border:none}.brand svg{flex:none;width:1.1em;height:1.1em;position:relative;top:.1833em}.brand span{font-family:var(--sans);letter-spacing:-.015em;font-weight:700}.top .brand{gap:6px}.top .brand svg{width:28px;height:28px;top:4.667px}.top nav{white-space:nowrap;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;flex:1;align-items:center;gap:0;min-width:0;font-size:13px;font-weight:500;display:flex}.top nav a{height:40px;color:var(--ink-muted);border:none;align-items:center;padding:0 10px;display:flex}.top nav a:hover,.top nav a[aria-current]{color:var(--ink);background:var(--hairline);border:none}.top .wrap>.mono{flex:1;font-size:13px}.top #themeBtn{margin-left:auto}.btn{align-items:center;gap:var(--space-2);height:40px;padding:0 var(--space-3);font-family:var(--mono);border:1px solid var(--ink);color:var(--ink);cursor:pointer;background:0 0;border-radius:0;font-size:14px;font-weight:500;display:inline-flex}.btn:hover{background:var(--ground-2);border-bottom-color:var(--ink)}.btn.primary{background:var(--live);border-color:var(--live);color:var(--ground)}.btn.primary:hover{filter:brightness(1.08);background:var(--live)}.btn.sm{height:32px;padding:0 12px;font-size:13px}.hero{padding:var(--space-7) 0 var(--space-6)}.hero .lead{margin-top:18px}.hero h1{max-width:880px;margin-top:14px}.hero-grid{gap:var(--space-6);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=1100px){.hero-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:end}.hero-grid h1.display{font-size:44px;line-height:48px}}pre{font-family:var(--mono);background:var(--ground-2);border:1px solid var(--hairline);border-radius:var(--radius-code);padding:var(--space-3) 18px;color:var(--ink);max-width:var(--measure-wide);margin:0;font-size:13.5px;line-height:1.6;overflow-x:auto}pre .c{color:var(--ink-muted)}pre .k{color:var(--live)}pre .w{color:var(--signal)}pre .inv{background:var(--ink);color:var(--ground)}pre b{font-weight:500}.codehd{justify-content:space-between;align-items:center;gap:var(--space-3);font-family:var(--mono);color:var(--ink-muted);border:1px solid var(--hairline);background:var(--ground-2);border-radius:var(--radius-code) var(--radius-code) 0 0;max-width:var(--measure-wide);border-bottom:none;padding:6px 12px;font-size:12px;display:flex}.codehd+pre{border-radius:0 0 var(--radius-code) var(--radius-code)}.copy-ok{color:var(--live);font-family:var(--mono);font-size:12px}.tbl{max-width:var(--measure-wide);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);text-align:left;padding:var(--space-2) 12px;border-bottom:1px solid var(--ink);font-size:12px;font-weight:500}td{border-bottom:1px solid var(--hairline);vertical-align:top;padding:10px 12px}td.n{font-family:var(--mono);text-align:right;white-space:nowrap}td.m{font-family:var(--mono);white-space:nowrap}th.n{text-align:right}.call{padding:14px var(--space-3);border:1px solid var(--hairline);max-width:var(--measure-wide);grid-template-columns:20px minmax(0,1fr);gap:12px;font-size:14px;line-height:1.5;display:grid}.call+.call{margin-top:12px}.call b{font-family:var(--sans);font-weight:600}.call.warn{border-color:var(--signal)}.call.warn .ic{color:var(--signal)}.status{align-items:center;gap:var(--space-2);font-family:var(--mono);font-size:13px;display:inline-flex}.pulse{background:var(--live);width:8px;height:8px;animation:2.4s step-end infinite pulse}@keyframes pulse{0%,70%{opacity:1}71%,to{opacity:.35}}@media (prefers-reduced-motion:reduce){.pulse{animation:none}}.flow{max-width:var(--measure-wide);margin:0;overflow-x:auto}.flow svg{width:100%;min-width:720px;height:auto;color:var(--ink)}.flow .box{fill:var(--ground-2);stroke:var(--hairline)}.flow .edge{stroke:var(--ink-muted);stroke-width:1.5px;fill:none}.flow .arrow{fill:var(--ink-muted)}.flow .t{fill:var(--ink);font-family:var(--mono);font-size:13px;font-weight:500}.flow .s{fill:var(--ink-muted);font-family:var(--sans);font-size:11px}.flow .k{fill:var(--ink-muted);font-family:var(--mono);letter-spacing:.08em;font-size:12px}.flow .b{fill:var(--ink);font-family:var(--sans);font-size:13px;font-weight:600}footer.site{border-top:1px solid var(--hairline);padding:var(--space-5) 0;font-family:var(--mono);color:var(--ink-muted);font-size:13px}footer.site .wrap{gap:var(--space-3) var(--space-5);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}footer.site nav{gap:var(--space-3);flex-wrap:wrap;display:flex}footer.site .lockup{align-items:baseline;gap:var(--space-3);display:flex}footer.site .brand{font-size:15px}body.og{width:1200px;height:630px;margin:0;overflow:hidden}.og-card{width:1200px;height:630px;padding:var(--space-7);border:1px solid var(--hairline);flex-direction:column;display:flex}.og-key{font-size:16px}.og-lock{margin-top:var(--space-6);color:var(--ink);align-items:baseline;gap:34px;display:flex}.og-lock svg{flex:none;position:relative;top:26.667px}.og-lock span{font-family:var(--sans);letter-spacing:-.015em;font-size:120px;font-weight:700;line-height:1}.og-lead{color:var(--ink);max-width:960px;margin-top:var(--space-6);font-size:30px;line-height:1.35}.og-foot{margin-top:auto;font-size:16px}@media (width<=900px){.grid2,.grid3{grid-template-columns:minmax(0,1fr)}h1{font-size:34px}h1.display{font-size:40px;line-height:44px}.top nav a:not(.keep){display:none}.wrap{padding:0 var(--space-3)}}
