:root{--bg: #f7f8fa;--ink: rgba(10, 14, 20, .86);--ink-2: rgba(10, 14, 20, .6);--ink-3: rgba(10, 14, 20, .44);--rule: rgba(10, 14, 20, .09);--rule-mid: rgba(10, 14, 20, .18);--rule-ink: rgba(10, 14, 20, .82);--link: #2f5ea8;--sans: "Inter Tight", Pretendard, -apple-system, system-ui, sans-serif;--mono: "Google Sans Code", ui-monospace, SFMono-Regular, Menlo, monospace;--page: 76rem;--gut: 2.5rem;--base: 15.5px;--measure: 40rem;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #111318;--ink: rgba(233, 238, 245, .9);--ink-2: rgba(233, 238, 245, .62);--ink-3: rgba(233, 238, 245, .44);--rule: rgba(233, 238, 245, .12);--rule-mid: rgba(233, 238, 245, .24);--rule-ink: rgba(233, 238, 245, .82);--link: #93b7ec}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--base);line-height:1.72;font-variant-numeric:tabular-nums}a{color:inherit}.wrap{max-width:var(--page);margin:0 auto;padding:2.25rem var(--gut) 6rem}.masthead{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding-bottom:.7rem;border-bottom:2px solid var(--rule-ink)}.masthead .site{font-size:1rem;font-weight:600;letter-spacing:-.01em;text-decoration:none}.masthead nav{display:flex;gap:1.1rem;font-size:.8125rem;color:var(--ink-3)}.masthead nav a{text-decoration:none}.masthead nav a:hover{color:var(--ink-2)}.lede{margin:1.6rem 0 2.9rem;max-width:44rem;color:var(--ink-2);text-wrap:pretty}.sec{font-size:.8125rem;font-weight:500;color:var(--ink-3);margin:0 0 1.1rem;padding-bottom:.45rem;border-bottom:1px solid var(--rule-mid)}.sec .n{margin-left:.5rem;font-family:var(--mono);font-size:.75rem}.note{margin:-.5rem 0 1.4rem;font-size:.8125rem;color:var(--ink-3)}.wrap>section+section{margin-top:3.75rem}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(23rem,27rem));gap:1rem}.card{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:0 1.05rem;align-items:start;padding:1.15rem 1.25rem 1.1rem;border-radius:11px;box-shadow:inset 0 0 0 1px var(--rule-mid);text-decoration:none;transition:box-shadow .15s ease}.card:hover{box-shadow:inset 0 0 0 1px var(--ink-3)}.card .icon{display:block;width:3rem;height:3rem;border-radius:50%;grid-row:span 3}.card .kd{font-family:var(--mono);font-size:.6875rem;color:var(--ink-3);margin-bottom:.15rem}.card .nm{font-size:1rem;font-weight:600;letter-spacing:-.01em}.card:hover .nm{color:var(--link)}.card .ds{margin:.2rem 0 0;font-size:.875rem;color:var(--ink-2);text-wrap:pretty}.card .mt{margin-top:.75rem;font-family:var(--mono);font-size:.75rem;color:var(--ink-3)}.tl{position:relative}.tl:before{content:"";position:absolute;left:6.5rem;top:.4rem;bottom:.4rem;width:1px;background:var(--rule)}.tl .yr{position:relative;margin:1.9rem 0 .7rem;font-family:var(--mono);font-size:.8125rem;color:var(--ink-3)}.tl .yr:first-child{margin-top:0}.tl .ev{position:relative;display:grid;grid-template-columns:5.25rem 11rem minmax(0,1fr);gap:0 1.25rem;align-items:baseline;padding:.42rem 0}.tl .ev:before{content:"";position:absolute;left:calc(6.5rem - 4px);top:1.05em;width:8px;height:8px;border-radius:50%;background:var(--bg);box-shadow:inset 0 0 0 1px var(--rule-mid)}.tl .dt{text-align:right;font-family:var(--mono);font-size:.75rem;color:var(--ink-3)}.tl .nm{padding-left:1.25rem;color:var(--ink-2)}.tl .ds{font-size:.875rem;color:var(--ink-3)}.doc-head{margin:2.25rem 0 2rem}.doc-head h1{font-size:2rem;font-weight:600;letter-spacing:-.02em;line-height:1.25;margin:0 0 .55rem}.doc-head .tagline{margin:0;max-width:var(--measure);font-size:1.0625rem;color:var(--ink-2)}.doc-body{display:grid;grid-template-columns:13rem minmax(0,1fr);gap:0 3.5rem;border-top:1px solid var(--rule-mid);padding-top:1.75rem}.rail{font-size:.8125rem;color:var(--ink-3);line-height:1.7;position:sticky;top:1.75rem;align-self:start}.rail dl{margin:0}.rail dt{color:var(--ink-3);margin-top:.9rem}.rail dt:first-child{margin-top:0}.rail dd{margin:0;color:var(--ink-2)}.rail dd.when{font-family:var(--mono)}.rail a{color:var(--link);text-decoration:none}.rail a:hover{text-decoration:underline}.rail ul{list-style:none;margin:1.4rem 0 0;padding:1.1rem 0 0;border-top:1px solid var(--rule)}.rail li{display:flex;gap:.45rem;margin-bottom:.3rem}.rail li:before{content:"—";color:var(--ink-3);flex-shrink:0}.prose>p,.prose>ul,.prose>ol,.prose>blockquote,.prose>h2,.prose>h3{max-width:var(--measure)}.prose>p,.prose>ul,.prose>ol{margin:0 0 1.15rem}.prose>:first-child{margin-top:0}.prose h2{font-size:1.0625rem;font-weight:600;letter-spacing:-.01em;margin:3.1rem 0 .9rem}.prose h3{font-size:.9375rem;font-weight:600;margin:2.1rem 0 .6rem}.prose ul,.prose ol{padding-left:1.15rem}.prose li{margin-bottom:.4rem}.prose li::marker{color:var(--ink-3)}.prose a{color:var(--link);text-decoration-color:var(--rule-mid);text-underline-offset:2px}.prose strong{font-weight:600}.prose code{font-family:var(--mono);font-size:.875em;color:var(--ink-2)}.prose pre{font-family:var(--mono);font-size:.8125rem;line-height:1.6;padding:.9rem 1rem;overflow-x:auto;border:1px solid var(--rule);max-width:var(--measure)}.prose blockquote{margin:0 0 1.15rem;padding-left:1rem;border-left:2px solid var(--rule-mid);color:var(--ink-2)}.tabs{display:flex;gap:1.6rem;margin-top:1.5rem;border-bottom:1px solid var(--rule-mid)}.tabs a{margin-bottom:-1px;padding:0 0 .55rem;border-bottom:2px solid transparent;font-size:.875rem;color:var(--ink-3);text-decoration:none}.tabs a:hover{color:var(--ink-2)}.tabs a.on{color:var(--ink);font-weight:600;border-bottom-color:var(--rule-ink)}.doc-head:has(.tabs)+.doc-body{border-top:0}.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(7rem,8.5rem));gap:1.4rem 1.3rem;margin:2.1rem 0 2.5rem}.strip figure{margin:0;max-width:none}.strip img{width:100%;border:1px solid var(--rule);border-radius:4px}.strip figcaption{margin-top:.55rem;max-width:none}.strip figcaption b{color:var(--ink-2);font-weight:600}.matrix{max-width:none;margin:2.1rem 0 2.5rem;overflow-x:auto}.matrix table{width:100%;border-collapse:collapse}.matrix th,.matrix td{text-align:left;vertical-align:top;font-weight:400;padding:.75rem 1.1rem .75rem 0;border-top:1px solid var(--rule);font-size:.8125rem;line-height:1.55}.matrix thead th{border-top:0;border-bottom:1px solid var(--rule-mid);padding-top:0;color:var(--ink-3)}.matrix tbody th{width:9rem;font-weight:600;color:var(--ink)}.matrix tbody th .nt{display:block;font-weight:400;font-size:.75rem;color:var(--ink-3)}.matrix td{color:var(--ink-2)}.matrix td:last-child{padding-right:0}.cases{display:grid;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));gap:1.5rem 2.5rem;margin:1.6rem 0 2.4rem}.cases section{padding-top:.85rem;border-top:1px solid var(--rule-mid)}.cases h3{margin:0 0 .35rem;font-size:.9375rem;font-weight:600;letter-spacing:-.005em}.cases p{margin:0;font-size:.875rem;color:var(--ink-2);text-wrap:pretty}.cases b{color:var(--ink);font-weight:600}.flow{max-width:none;margin:2.3rem 0 2.6rem}.flow ol{list-style:none;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;margin:0;padding:0}.flow li{position:relative;padding:1rem 1.1rem 0 0;border-top:1px solid var(--rule-mid)}.flow li:before{content:"";position:absolute;top:-4.5px;left:0;width:8px;height:8px;border-radius:50%;background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--rule-mid)}.flow li.key:before{background:var(--link);box-shadow:none}.flow .at{display:block;font-family:var(--mono);font-size:.6875rem;color:var(--ink-3)}.flow .nm{display:block;margin-top:.15rem;font-size:.875rem;font-weight:500}.flow li.key .nm{color:var(--link)}.flow .nt{display:block;margin-top:.1rem;font-size:.75rem;color:var(--ink-3);line-height:1.5}figure{margin:2.1rem 0 2.4rem;max-width:44rem}figure.wide{max-width:none}figure img,figure video{display:block;width:100%;height:auto}figure.phone img,figure.phone video{max-width:19rem}figcaption{font-size:.8125rem;color:var(--ink-3);margin-top:.6rem;line-height:1.6;max-width:34rem}.shots{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:1.6rem 1.3rem;margin:2.1rem 0 2.4rem}.shots figure{margin:0}.shots img{width:100%;aspect-ratio:3 / 4;object-fit:cover;object-position:top;border:1px solid var(--rule)}.shots figcaption{margin-top:.45rem}.dg{display:flex;align-items:flex-start;flex-wrap:wrap;gap:.9rem;margin:2rem 0 2.2rem;padding-top:.9rem;border-top:1px solid var(--rule);max-width:var(--measure)}.dg-node{flex:1;min-width:6.5rem;display:flex;flex-direction:column;font-size:.8125rem;line-height:1.55}.dg-node b{font-weight:600}.dg-node span{color:var(--ink-3)}.dg-node.key b{color:var(--link)}.dg-arr{color:var(--ink-3);font-size:.8125rem}.dg-stack{display:flex;flex-direction:column;gap:.5rem;flex:1}.only-dark{display:none}@media(prefers-color-scheme:dark){.only-dark{display:block}.only-light{display:none}}.foot{margin-top:5rem;padding-top:1.1rem;border-top:1px solid var(--rule);display:flex;gap:1.2rem;font-size:.8125rem}.foot a{color:var(--ink-3);text-decoration:none}.foot a:hover{color:var(--ink-2)}@media(max-width:900px){:root{--gut: 1.5rem}.doc-body{grid-template-columns:1fr;gap:0}.rail{position:static;margin-bottom:2rem}.rail ul{margin-top:1rem}}@media(max-width:640px){:root{--base: 14px;--gut: 1.15rem;--measure: 100%}body{line-height:1.68}.wrap{padding-top:1.5rem;padding-bottom:3.5rem}.masthead{padding-bottom:.55rem}.masthead .site{font-size:.9375rem}.masthead nav{gap:.85rem;font-size:.75rem}.lede{margin:1.15rem 0 1.9rem}.cards{grid-template-columns:1fr;gap:.7rem}.card{padding:.95rem 1rem}.card .icon{width:2.25rem;height:2.25rem;margin-bottom:.6rem}.card .nm{font-size:.9375rem}.card .ds{font-size:.8125rem}.card .mt{margin-top:.7rem;font-size:.6875rem}.wrap>section+section{margin-top:2.6rem}.note{font-size:.75rem}.tl:before{left:3px}.tl .yr{margin:1.5rem 0 .5rem;font-size:.75rem}.tl .ev{display:block;padding:.42rem 0 .42rem 1.1rem}.tl .ev:before{left:0;top:.95em}.tl .dt{display:block;text-align:left;font-size:.6875rem}.tl .nm{display:block;padding-left:0;font-size:.875rem}.tl .ds{display:block;font-size:.75rem}.tabs{gap:1.2rem;margin-top:1.1rem}.tabs a{font-size:.8125rem}.strip{grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));gap:1rem .8rem}.strip figcaption{font-size:.6875rem}.matrix thead{display:none}.matrix table,.matrix tbody,.matrix tr,.matrix th,.matrix td{display:block}.matrix tr{padding:.7rem 0;border-top:1px solid var(--rule-mid)}.matrix th,.matrix td{border:0;padding:0}.matrix tbody th{width:auto;margin-bottom:.3rem}.matrix td{font-size:.75rem;padding-left:5.5rem;position:relative;margin-top:.15rem}.matrix td:before{content:attr(data-col);position:absolute;left:0;width:5rem;color:var(--ink-3)}.cases{grid-template-columns:1fr;gap:1.1rem;margin:1.2rem 0 1.8rem}.cases h3{font-size:.875rem}.cases p{font-size:.8125rem}.flow{margin:1.7rem 0 1.9rem}.flow ol{grid-auto-flow:row}.flow li{padding:0 0 .95rem 1.05rem;border-top:0;border-left:1px solid var(--rule-mid)}.flow li:last-child{padding-bottom:0}.flow li:before{top:.25rem;left:-4.5px}.flow .nm{font-size:.8125rem}.doc-head{margin:1.5rem 0 1.4rem}.doc-head h1{font-size:1.4rem}.doc-head .tagline{font-size:.9375rem}.doc-body{padding-top:1.15rem}.rail{font-size:.75rem;margin-bottom:1.5rem}.prose h2{font-size:.9375rem;margin:2.2rem 0 .65rem}.prose h3{font-size:.875rem}figure{margin:1.5rem 0 1.7rem}figure.phone img,figure.phone video{max-width:14rem}figcaption{font-size:.75rem;margin-top:.45rem}.shots{grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:1.1rem .9rem}.shots figcaption{font-size:.6875rem}.foot{margin-top:3rem;font-size:.75rem}}
