@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff")}:root{color-scheme:light dark;--page:#f3f4f6;--panel:#fff;--strip:#f7f8f9;--well:#e7e9ec;--line:#d9dce0;--line-strong:#b8bdc4;--ink:#15181c;--ink-2:#3a4047;--muted:#5a626b;--faint:#c9cdd3;--accent:#0b6b4d;--accent-ink:#fff;--select:#dcefe5;--select-ink:#0a4f39;--focus:#0b6b4d;--sans:"IBM Plex Sans Variable", "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--radius:4px;--gutter:24px;--side:32px}@media (prefers-color-scheme:dark){:root{--page:#141619;--panel:#1b1e22;--strip:#20242a;--well:#101215;--line:#2d3238;--line-strong:#434a52;--ink:#e7e9ec;--ink-2:#c4c9cf;--muted:#99a1ab;--faint:#353b42;--accent:#5cc99c;--accent-ink:#0b1a14;--select:#183a2d;--select-ink:#b9ecd5;--focus:#5cc99c}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--page);color:var(--ink);font-family:var(--sans);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.55}a{color:inherit}a:focus-visible,.btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0;padding:0}ul,ol{list-style:none}.skip{background:var(--panel);color:var(--ink);border:1px solid var(--line-strong);z-index:10;padding:6px 10px;font-size:14px;position:absolute;top:-40px;left:8px}.skip:focus{top:8px}.wrap{max-width:1376px;padding:0 var(--side);margin:0 auto}.grid{column-gap:var(--gutter);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11.5px;font-weight:500;line-height:1.3}.toolbar{background:var(--panel);border-bottom:1px solid var(--line)}.toolbar .wrap{align-items:center;gap:40px;height:52px;display:flex}.wordmark{color:var(--ink);align-items:center;text-decoration:none;display:flex}.wordmark svg{fill:currentColor;width:auto;height:20px;display:block}.wordmark .cursor{fill:var(--accent)}.nav{flex:1;gap:4px;display:flex}.nav a{color:var(--ink-2);border-radius:3px;padding:6px 10px;font-size:14px;text-decoration:none}.nav a:hover{background:var(--strip);color:var(--ink)}.seg{border:1px solid var(--line-strong);border-radius:var(--radius);font-size:12px;font-weight:500;line-height:1;display:inline-flex;overflow:hidden}.seg>*{color:var(--muted);padding:6px 9px;text-decoration:none}.seg>*+*{border-left:1px solid var(--line-strong)}.seg [aria-current]{background:var(--strip);color:var(--ink)}.seg a:hover{color:var(--ink)}.hero{padding:88px 0 80px}.hero .grid{align-items:end;row-gap:48px}.hero-main{grid-column:1/9}h1{letter-spacing:-.035em;text-wrap:balance;max-width:11.5em;font-size:clamp(2.6rem,1.1rem + 4.6vw,5.25rem);font-weight:500;line-height:1.02}.lede{max-width:34em;color:var(--ink-2);margin-top:32px;font-size:19px;line-height:1.5}.cta{flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:36px;display:flex}.btn{background:var(--accent);height:40px;color:var(--accent-ink);border:1px solid var(--accent);border-radius:var(--radius);align-items:center;padding:0 18px;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{filter:brightness(1.08)}.btn.ghost{background:var(--panel);color:var(--ink);border-color:var(--line-strong)}.btn.ghost:hover{filter:none;border-color:var(--accent)}.reply{color:var(--muted);font-size:14px}.sheet{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.sheet-title{background:var(--strip);border-bottom:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;justify-content:space-between;align-items:center;padding:9px 14px;display:flex}.props{grid-template-columns:max-content 1fr;font-size:14px;display:grid}.props dt,.props dd{border-top:1px solid var(--line);padding:8px 14px}.props dt:first-of-type,.props dt:first-of-type+dd{border-top:0}.props dt{color:var(--muted);padding-right:6px}.props dd{color:var(--ink)}.props a{text-underline-offset:3px;text-decoration-color:var(--line-strong)}.props a:hover{text-decoration-color:var(--accent)}.props .mono{font-family:var(--mono);font-size:13px}.hero-aside{grid-column:9/13}.promises li{border-top:1px solid var(--line);padding:12px 14px}.promises li:first-child{border-top:0}.promises b{font-size:14.5px;font-weight:600;line-height:1.35;display:block}.promises span{color:var(--muted);margin-top:3px;font-size:13.5px;line-height:1.45;display:block}.section{border-top:1px solid var(--line);padding:64px 0 72px}.sec-head{grid-column:1/4}.sec-head-inner{position:sticky;top:24px}@media (width>=1101px){.section{padding:0}.section .sec-head,.section .sec-body{padding-top:64px;padding-bottom:72px}.section .sec-head{border-right:1px solid var(--line);padding-right:24px}}h2{letter-spacing:-.02em;align-items:baseline;gap:10px;font-size:28px;font-weight:500;line-height:1.15;display:flex}.sec-note{color:var(--muted);max-width:18em;margin-top:12px;font-size:14px}.sec-body{grid-column:4/13;min-width:0}.list{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.list-head,.svc{grid-template-columns:minmax(0,4fr) minmax(0,5fr) minmax(0,3.2fr);column-gap:28px;padding:0 24px;display:grid}.list-head{background:var(--strip);border-bottom:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;padding-top:10px;padding-bottom:10px}.svc{padding-top:24px;padding-bottom:26px}.svc+.svc{border-top:1px solid var(--line)}.svc h3{letter-spacing:-.01em;font-size:18px;font-weight:600;line-height:1.3}.svc p{color:var(--ink-2);max-width:36em;font-size:15.5px}.svc ul{color:var(--muted);font-size:14px;line-height:1.5}.svc li+li{margin-top:3px}.svc li:before,.brief li:before{content:"";border:1px solid var(--line-strong);vertical-align:middle;width:5px;height:5px;margin:0 9px 2px 0;display:inline-block}.project{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.project-bar{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;padding:14px 24px;display:flex}.project-bar h3{letter-spacing:-.015em;font-size:22px;font-weight:600;line-height:1.2}.project-bar .kind{color:var(--muted);font-size:14px}.well{background:var(--well);border-bottom:1px solid var(--line);padding:40px 48px;overflow:hidden}.project-info{grid-template-columns:minmax(0,5fr) minmax(0,4fr);align-items:start;gap:28px 40px;padding:28px 24px 30px;display:grid}.case p{color:var(--ink-2);max-width:36em;font-size:16px}.case p+p{margin-top:16px}.case .label{margin-bottom:4px;display:block}.project-info .props{border:1px solid var(--line);border-radius:var(--radius)}figcaption{color:var(--muted);text-align:center;margin-top:14px;font-size:13px}.others-title{margin:32px 0 12px}.others{gap:var(--gutter);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.other{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:10px;padding:18px 20px 20px;display:flex}.other-bar{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.other h4{letter-spacing:-.01em;font-size:18px;font-weight:600;line-height:1.25}.other .kind{color:var(--muted);font-size:13px}.other p{color:var(--ink-2);flex:1;font-size:15px}.other a{font-family:var(--mono);text-underline-offset:3px;text-decoration-color:var(--line-strong);align-self:flex-start;font-size:13px}.other a:hover{text-decoration-color:var(--accent)}.shot{background:var(--panel);border:1px solid var(--line-strong);color:var(--ink);border-radius:6px;max-width:880px;margin:0 auto;font-size:12px;line-height:1.35;overflow:hidden;container-type:inline-size}.shot-bar{border-bottom:1px solid var(--line);background:var(--strip);justify-content:center;align-items:center;height:34px;display:flex}.shot-url{font-family:var(--mono);color:var(--muted);border:1px solid var(--line);background:var(--panel);border-radius:3px;padding:2px 40px;font-size:11px}.shot-body{grid-template-columns:168px minmax(0,1fr);min-height:300px;display:grid}.shot-side{border-right:1px solid var(--line);background:var(--strip);padding:12px 8px}.shot-brand{padding:2px 8px 12px;font-size:13px;font-weight:600}.shot-side li{color:var(--ink-2);border-radius:3px;padding:5px 8px}.shot-side li.on{background:var(--select);color:var(--select-ink);font-weight:500}.shot-main{min-width:0;padding:14px 18px 18px}.shot-tools{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.shot-tools b{font-size:15px;font-weight:600}.shot-btns{gap:6px;display:flex}.fake-btn{border:1px solid var(--line-strong);color:var(--ink-2);white-space:nowrap;border-radius:3px;padding:3px 9px;font-size:11px}.fake-btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.shot-search{border:1px solid var(--line);border-radius:3px;align-items:center;height:24px;margin-bottom:10px;padding:0 8px;display:flex}.shot-table{border:1px solid var(--line);border-radius:3px}.shot-row{border-top:1px solid var(--line);grid-template-columns:52px minmax(0,1fr) 96px;align-items:center;gap:12px;padding:7px 10px;display:grid}.shot-row:first-child{background:var(--strip);border-top:0}.shot-row:first-child span{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:500}.shot-row.sel{background:var(--select);color:var(--select-ink);box-shadow:inset 2px 0 0 var(--accent)}.shot-row code{font-family:var(--mono);font-size:11px;font-weight:500}.shot-row .d{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bar{background:var(--faint);border-radius:2px;height:7px;display:block}.shot-row.sel .bar{background:color-mix(in srgb, var(--accent) 35%, transparent)}@container (width<=560px){.shot-body{grid-template-columns:1fr}.shot-side{display:none}.shot-row{grid-template-columns:44px minmax(0,1fr)}.shot-row>:nth-child(3){display:none}}.steps{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.steps li{padding:20px 20px 24px}.steps li+li{border-left:1px solid var(--line)}.step-n{font-family:var(--mono);color:var(--accent);font-size:13px}.steps h3{letter-spacing:-.01em;margin-top:8px;font-size:16.5px;font-weight:600;line-height:1.3}.steps p{color:var(--ink-2);margin-top:6px;font-size:14.5px}.faq details+details{border-top:1px solid var(--line)}.faq summary{cursor:pointer;justify-content:space-between;gap:16px;padding:16px 24px;font-size:16.5px;font-weight:500;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font-family:var(--mono);color:var(--muted)}.faq details[open] summary:after{content:"−"}.faq summary:hover{background:var(--strip)}.faq summary:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.faq details p{color:var(--ink-2);max-width:44em;padding:0 24px 20px;font-size:15.5px}.about{max-width:40em}.about p+p{margin-top:18px}.about p{color:var(--ink-2);font-size:17px}.about p:first-child{color:var(--ink);letter-spacing:-.01em;font-size:22px;line-height:1.45}.contact{grid-template-columns:minmax(0,5fr) minmax(0,4fr);align-items:start;gap:32px 40px;display:grid}.contact-lead{color:var(--ink-2);font-size:17px}.mail{letter-spacing:-.025em;text-decoration:underline 2px;text-decoration-color:var(--accent);text-underline-offset:.16em;overflow-wrap:anywhere;margin-top:14px;font-size:clamp(1.6rem,.9rem + 2.6vw,3.1rem);font-weight:500;line-height:1.1;display:inline-block}.mail:hover{color:var(--accent)}.brief-title{color:var(--muted);margin-top:28px;font-size:14px}.brief{color:var(--ink-2);margin-top:8px;font-size:15px}.brief li+li{margin-top:4px}.status{border-top:1px solid var(--line);background:var(--strip);color:var(--muted);font-size:12px}.status .wrap{justify-content:space-between;align-items:stretch;min-height:34px;display:flex}.status-left{flex-wrap:wrap;display:flex}.status-left>*{border-left:1px solid var(--line);align-items:center;padding:0 14px;display:flex}.status-left>:first-child{border-left:0;padding-left:0}.status a{color:var(--ink-2);text-underline-offset:2px}.status a:hover{color:var(--accent)}.status-right{align-items:center;gap:14px;display:flex}@media (width<=1100px){.hero-main{grid-column:1/-1}.hero-aside{grid-column:1/8}.sec-head{grid-column:1/-1;margin-bottom:28px}.sec-head-inner{position:static}.sec-note{max-width:32em}.sec-body{grid-column:1/-1}.steps{grid-template-columns:repeat(2,minmax(0,1fr))}.steps li:nth-child(3){border-left:0}.steps li:nth-child(n+3){border-top:1px solid var(--line)}}@media (width<=760px){:root{--side:16px;--gutter:16px}.toolbar .wrap{flex-wrap:wrap;gap:12px;height:auto;padding-top:10px;padding-bottom:10px}.wordmark{flex:1}.nav{flex-wrap:wrap;flex-basis:100%;order:3;margin-left:-10px}.hero{padding:48px 0}.hero-aside{grid-column:1/-1}.lede{margin-top:22px;font-size:17px}.section{padding:44px 0 52px}h2{font-size:24px}.list-head{display:none}.svc{grid-template-columns:1fr;row-gap:10px;padding:20px 16px 22px}.project-bar{padding:12px 16px}.well{padding:20px 14px}.project-info{grid-template-columns:1fr;padding:20px 16px 22px}.contact,.others,.steps{grid-template-columns:1fr}.steps li+li{border-left:0;border-top:1px solid var(--line)}.steps li{padding:18px 16px 20px}.faq summary{padding:14px 16px}.faq details p{padding:0 16px 18px}.about p:first-child{font-size:19px}.status .wrap{flex-direction:column;align-items:flex-start;gap:4px;padding-top:8px;padding-bottom:8px}.status-left>*{padding:2px 10px}}@media (width<=400px){.props{grid-template-columns:1fr}.props dt{padding-bottom:0}.props dd{border-top:0;padding-top:2px}.props dt:first-of-type{border-top:0}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.status .mono{font-family:var(--mono);font-size:11.5px}.status .placeholder{color:var(--accent)}.todo{color:#3d3000;font-family:var(--mono);background:#ffe066;border-radius:2px;padding:0 4px;font-size:.85em}.oss{white-space:nowrap}.oss-heart{color:var(--accent)}.oss-words{vertical-align:bottom;display:inline-grid}.oss-words>span{visibility:hidden;animation:oss-cycle var(--oss-total) infinite;animation-delay:calc(var(--i) * var(--oss-step));grid-area:1/1}@media (prefers-reduced-motion:reduce){.oss-words>span{animation:none}.oss-words>span:first-child{visibility:visible}}.picker{min-height:100vh;padding:32px var(--side);place-content:center;gap:28px;display:grid}.picker h1{max-width:none;font-size:clamp(2rem,1.4rem + 2.4vw,3.2rem)}.picker p{color:var(--muted);font-size:15px}.picker .cta{margin-top:0}.notfound{width:min(100%,560px);margin:0 auto}.term{background:var(--panel);border:1px solid var(--line-strong);border-radius:6px;overflow:hidden}.term-bar{background:var(--strip);border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:8px 12px;display:flex}.term-bar span{background:var(--faint);border-radius:50%;width:9px;height:9px}.term-bar b{font-family:var(--mono);color:var(--muted);margin-left:8px;font-size:11.5px;font-weight:400}.term-body{font-family:var(--mono);color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:16px 18px 18px;font-size:13.5px;line-height:1.7}.term-body .ps1{color:var(--accent)}.term-body .err{color:var(--muted)}.term-body a{color:var(--ink);text-underline-offset:3px;text-decoration-color:var(--accent)}.term-body a:hover{color:var(--accent)}.caret{vertical-align:text-bottom;background:var(--accent);width:.6em;height:1.15em;animation:1.1s step-end infinite caret-blink;display:inline-block}@keyframes caret-blink{50%{visibility:hidden}}@media (prefers-reduced-motion:reduce){.caret{animation:none}}
