@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/kugiri/assets/Geist-Variable-Bj2R_7yk.woff2)format("woff2")}@font-face{font-family:Geist;font-style:italic;font-weight:100 900;font-display:swap;src:url(/kugiri/assets/Geist-VariableItalic-B73BBqMU.woff2)format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/kugiri/assets/GeistMono-Variable-Dispecij.woff2)format("woff2")}*,:before,:after{box-sizing:border-box}:root{--ink:#16181f;--ink-soft:#3b3e49;--muted:#6b6f7b;--rule:#e2e3ea;--fill:#ebecf4;--fill-accent:#e6e2f7;--accent:#5b3fd6;--paper:#fafafc;--plate:#fff;--ok:#1a7f4b;--fail:#b42318;--box-mask:#be185d;--shadow-border:0 0 0 1px #0000000f, 0 1px 2px -1px #0000000f, 0 2px 4px 0 #0000000a;--shadow-border-hover:0 0 0 1px #00000014, 0 1px 2px -1px #00000014, 0 2px 4px 0 #0000000f;--sans:"Geist", sans-serif;--mono:"Geist Mono", monospace}html{font-family:var(--sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.4}body{margin:0;padding:0 clamp(16px,4vw,32px) 240px}html.lenis,html.lenis body{height:auto}.lenis [data-lenis-prevent]{overscroll-behavior:contain}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip{inset-inline-start:-999px;z-index:2;background:var(--ink);color:var(--plate);border-radius:8px;padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none;position:absolute;top:16px}.skip:focus{inset-inline-start:16px}.page{display:grid}header{gap:40px;padding:56px 0 40px;display:grid}.masthead,.examples{align-content:start;gap:16px;max-width:64ch;display:grid}@media (width>=1025px){header{grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:start}.masthead{max-width:44ch}.examples{max-width:760px}}header h1{letter-spacing:-.02em;text-wrap:balance;margin:0;font-size:44px;font-weight:500;line-height:1.05}header h1 .ja{color:var(--muted);font-weight:400}header p{color:var(--muted);text-wrap:pretty;margin:0;line-height:1.5}header .lede{color:var(--ink);font-size:20px;line-height:1.4}header a{-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:3px}header pre{background:var(--plate);box-shadow:var(--shadow-border);font:12px / 1.6 var(--mono);color:var(--ink-soft);border-radius:12px;margin:0;padding:12px 16px;overflow-x:auto}.install{background:var(--plate);box-shadow:var(--shadow-border);border-radius:8px;justify-self:start;align-items:center;gap:6px;margin:0;padding:0 4px 0 12px;display:inline-flex}.install code{font:13px / 1.6 var(--mono);color:var(--ink);padding:6px 0}.install button{width:28px;height:28px;color:var(--muted);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px;place-items:center;margin:0;padding:0;transition-property:background-color,color,scale;transition-duration:.15s;transition-timing-function:ease-out;display:inline-grid}.install button:active{scale:.9}.install svg{grid-area:1/1;width:14px;height:14px;transition:opacity .15s ease-out,scale .3s cubic-bezier(.23,1,.32,1)}.install .copied-icon,.install [data-copied] .copy-icon{opacity:0;scale:.5}.install [data-copied] .copied-icon{opacity:1;scale:1}.install [data-copied]{color:var(--ok)}@media (hover:hover){.install button:hover{background:var(--fill);color:var(--ink)}.install [data-copied]:hover{color:var(--ok)}}.hidden-text{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.links{flex-wrap:wrap;gap:4px 20px;margin:0;padding:0;font-size:14px;font-weight:500;line-height:1.5;list-style:none;display:flex}.links a{color:var(--ink);-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:3px}.credit{font-size:14px}.credit a,.foot a{-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:3px}.showcase,.compare{border-top:1px solid var(--rule);gap:16px;margin-top:56px;padding-top:40px;display:grid}.showcase p{max-width:64ch;color:var(--muted);margin:0;font-size:14px;line-height:1.5}.compare p,.compare li{max-width:64ch;color:var(--muted);text-wrap:pretty;margin:0;line-height:1.5}.showcase a,.compare a{-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:3px}.points{gap:12px;margin:0;padding:0;list-style:none;display:grid}.points strong{color:var(--ink);font-weight:500}.compare code{font:.92em var(--mono)}.sites{gap:8px;margin:0;padding:0;font-size:18px;font-weight:500;line-height:1.4;list-style:none;display:grid}.sites a{color:var(--ink)}.foot{border-top:1px solid var(--rule);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px 32px;margin-top:40px;padding:24px 0;font-size:14px;line-height:1.5;display:flex}.foot p{margin:0}@media (hover:hover){.links a:hover,.credit a:hover,.showcase a:hover,.compare a:hover,.foot a:hover{text-decoration-color:currentColor}}main{min-width:0}nav{font-size:13px;line-height:1.5}.toc,.toc-cases{margin:0;padding:0;list-style:none}.toc{flex-wrap:wrap;gap:8px;display:flex}.toc-group{background:var(--plate);box-shadow:var(--shadow-border);border-radius:8px;padding:6px 10px;font-weight:500;text-decoration:none;display:inline-block}.toc-cases{display:none}.side{margin-bottom:40px}@media (width>=1025px){body{padding-bottom:0}.page{grid-template-columns:256px minmax(0,1fr);column-gap:48px}header{grid-column:1/-1}.side{flex-direction:column;align-self:start;max-height:100vh;margin-bottom:0;padding-block:24px;display:flex;position:sticky;top:0}nav{padding-inline-end:8px;overscroll-behavior:contain;flex:1;min-height:0;padding-bottom:24px;overflow-y:auto;-webkit-mask-image:linear-gradient(#000 calc(100% - 24px),#0000);mask-image:linear-gradient(#000 calc(100% - 24px),#0000)}.toc{gap:20px;display:grid}.toc-group{box-shadow:none;font:500 11px / 1.5 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:0 0;padding:0;display:block}.toc-cases{margin-top:4px;display:grid}.toc-cases a{color:var(--muted);padding:3px 0;text-decoration:none;display:block}}@media (hover:hover) and (width<=1024px){.toc-group:hover{box-shadow:var(--shadow-border-hover)}}@media (hover:hover) and (width>=1025px){.toc-group:hover,.toc-cases a:hover{color:var(--ink)}}section[data-group]+section[data-group]{margin-top:56px}.group-title{letter-spacing:-.01em;text-wrap:balance;margin:0 0 16px;scroll-margin-top:24px;font-size:24px;font-weight:500;line-height:1.2}section[data-case]{border-top:1px solid var(--rule);gap:16px;padding:40px 0;scroll-margin-top:24px;display:grid}@media (width>=1025px){section[data-case]{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:40px}}.case-title{margin:0;font-size:16px;font-weight:500;line-height:1.3}.case-meta{font:12px / 1.5 var(--mono);color:var(--muted);flex-wrap:wrap;gap:4px 10px;margin:6px 0 0;display:flex}.case-meta a{text-decoration:none}.case-expect{color:var(--muted);text-wrap:pretty;margin:10px 0 0;font-size:14px;line-height:1.5}.case-result{font:12px / 1.5 var(--mono);white-space:pre-line;overflow-wrap:anywhere;align-items:flex-start;gap:8px;margin:12px 0 0;display:flex}.case-result:empty{display:none}.case-result:before{content:"";background:var(--muted);border-radius:50%;flex:none;width:8px;height:8px;margin-top:5px}section[data-status=ok] .case-result:before{background:var(--ok)}section[data-status=mismatch] .case-result{color:var(--fail)}section[data-status=mismatch] .case-result:before{background:var(--fail)}@media (hover:hover){.case-meta a:hover{text-decoration:underline}}.sample{min-width:0;color:var(--ink-soft)}[data-target]{opacity:.001}[data-target][data-revealed]{opacity:1}[data-wipe]{clip-path:inset(-8px -8px 100%)}[data-wipe][data-revealed]{clip-path:none}.panel{inset-inline:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:1;background:color-mix(in srgb, var(--plate) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);max-width:480px;box-shadow:var(--shadow-border), 0 8px 24px -8px #00000029;border-radius:20px;gap:16px;margin-inline:auto;padding:12px;font-size:13px;line-height:1.5;display:grid;position:fixed}@media (width>=1025px){.panel{background:var(--plate);-webkit-backdrop-filter:none;backdrop-filter:none;max-width:none;box-shadow:var(--shadow-border);margin:16px 0 0;position:static}}.actions{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}@media (width>=1025px){.actions{grid-template-columns:1fr}}.label{color:var(--muted);font-size:12px;font-weight:500}.panel button{white-space:nowrap;background:var(--plate);min-width:0;min-height:36px;color:var(--ink);box-shadow:var(--shadow-border);font:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:0;border-radius:8px;align-items:center;gap:8px;margin:0;padding:6px 8px 6px 10px;font-weight:500;transition-property:background-color,box-shadow,color,scale;transition-duration:.15s;transition-timing-function:ease-out;display:inline-flex}.panel button:active{scale:.96}.panel .primary{background:var(--ink);color:var(--plate);box-shadow:none}.panel kbd{min-width:20px;font:500 10px / 1 var(--mono);color:var(--muted);text-align:center;background:#0000000f;border-radius:5px;flex:none;margin-inline-start:auto;padding:4px 5px}.panel .primary kbd{color:#ffffffbf;background:#ffffff29}@media (hover:none){.panel kbd{display:none}.panel button{justify-content:center;padding:6px 12px}}.panel [data-box]{font-size:12px}.panel [data-box]:before{content:"";border:1.5px solid var(--box);border-radius:3px;flex:none;width:10px;height:10px;transition:background-color .15s ease-out}.panel [data-box][aria-pressed=true]{background:color-mix(in srgb, var(--box) 10%, var(--plate));box-shadow:0 0 0 1px var(--box)}.panel [data-box][aria-pressed=true]:before{background:var(--box)}@media (hover:hover){.panel button:hover{box-shadow:var(--shadow-border-hover)}.panel .primary:hover{background:color-mix(in srgb, var(--ink) 88%, var(--plate))}.panel [data-box][aria-pressed=true]:hover{box-shadow:0 0 0 1px var(--box)}}.verdict{margin:0}.verdict:empty{display:none}.readout{font:11px / 1.6 var(--mono);font-variant-numeric:tabular-nums;white-space:pre-line;color:var(--muted);margin:0}@media (width<=1024px){.readout{display:none}}.headline{letter-spacing:-.02em;color:var(--ink);font-size:40px;font-weight:500;line-height:1.12}.title{letter-spacing:-.02em;color:var(--ink);font-size:28px;font-weight:500;line-height:1.2}.subtitle{color:var(--ink);font-size:20px;font-weight:500;line-height:1.25}.body{font-size:17px;line-height:1.45}.mono{font:12px / 1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.measure{max-width:60ch}.headline-measure{max-width:36ch}.narrow{max-width:240px}.wide{max-width:620px}.balance{text-wrap:balance}.pretty{text-wrap:pretty}.pre-line{white-space:pre-line}.pre-wrap{white-space:pre-wrap}.center{text-align:center}.right{text-align:right;margin-left:auto}.justify{text-align:justify}.anywhere{overflow-wrap:anywhere}.hyphens{-webkit-hyphens:auto;hyphens:auto}.indent{text-indent:2.5em}.first-letter:first-letter{color:var(--accent);font-size:3.2em;font-weight:600;line-height:.8}.drop-cap:first-letter{float:left;color:var(--accent);margin:6px 8px 0 0;font-size:3.6em;font-weight:600;line-height:.8}.first-line:first-line{text-transform:uppercase;letter-spacing:.04em;color:var(--ink);font-weight:600}.columns{columns:2;column-gap:32px}.vertical{writing-mode:vertical-rl;max-width:none;height:320px}.small-caps{font-variant:small-caps}.scaled{transform-origin:0 0;scale:.5}.link{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:4px;text-decoration-thickness:2px;transition:text-decoration-color .16s ease-out}.link:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.dashed{text-underline-offset:3px;text-decoration-style:dashed;text-decoration-thickness:1px}.mark{color:var(--accent)}sup{vertical-align:.4em;font-size:.6em;line-height:0}.chip{border:1px solid var(--rule);font:11px / 1.8 var(--mono);text-transform:uppercase;vertical-align:middle;border-radius:8px;padding:0 8px;display:inline-block}.icon{vertical-align:middle;width:16px;height:16px;display:inline-flex}.icon svg{width:100%;height:100%}.thumb{float:left;background:var(--fill-accent);border-radius:12px;width:120px;height:90px;margin:6px 16px 4px 0}.thumb.right{float:right;margin:6px 0 4px 16px}.rich{gap:20px;display:grid}.rich h3{color:var(--ink);margin:0;font-size:22px;font-weight:500}.rich p{margin:0}.rich ol,.rich ul{margin:0;padding-left:24px}.tile{aspect-ratio:16/9;background:var(--fill);border-radius:16px;max-width:620px}.buttons{flex-wrap:wrap;gap:12px;display:flex}.button{background:var(--ink);color:var(--plate);border-radius:12px;align-items:center;gap:8px;padding:10px 16px;font-size:15px;text-decoration:none;display:inline-flex}table{border-collapse:collapse;max-width:60ch;font-size:13px}td{border:1px solid var(--rule);padding:4px 8px}blockquote{border-left:2px solid var(--rule);margin:0;padding-left:16px}blockquote cite{font:11px / 1.4 var(--mono);text-transform:uppercase;margin-top:8px;font-style:normal;display:block}details summary{cursor:pointer;color:var(--ink)}.sample details p{margin:8px 0 0}[data-batch] .sample>p+p{margin-top:12px}ruby rt{color:var(--muted);font-size:.55em}.css-reveal [data-word]{opacity:0;transform:translateY(.6em)}.css-reveal[data-revealed=settled] [data-word]{opacity:1;transform:none}.css-reveal[data-revealed=""] [data-word]{animation:.8s cubic-bezier(.23,1,.32,1) forwards rise;animation-delay:calc(var(--word) * 30ms)}@keyframes rise{to{opacity:1;transform:none}}[data-box=masks],[data-boxes~=masks] [data-target] [data-mask]{--box:var(--box-mask)}[data-boxes~=masks] [data-target] [data-mask]{outline:1px dashed var(--box);outline-offset:-2px}
