@font-face{font-family:GeistSans;src:url(../media/Geist_Variable-s.p.2f6gsmzeok7d9.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}._4pjfra_className{font-family:GeistSans,GeistSans Fallback}._4pjfra_variable{--font-geist-sans:"GeistSans", "GeistSans Fallback"}
@font-face{font-family:GeistMono;src:url(../media/GeistMono_Variable.p.3x4ptlur59b2g.woff2)format("woff2");font-display:swap;font-weight:100 900}.iOl5pW_className{font-family:GeistMono,ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}.iOl5pW_variable{--font-geist-mono:"GeistMono", ui-monospace, SFMono-Regular, Roboto Mono, Menlo, Monaco, Liberation Mono, DejaVu Sans Mono, Courier New, monospace}
:root{--bg:#faf8f4;--band:#f1ede4;--card:#fdfcfa;--fg:#121419;--mu:#6b665e;--line:#ddd7ca;--soft:#e4dfd2;--ac:#0475a4;--ac-t:#04668c;--ac-h:#045e8c;--on:#fff;--f1:#0475a4;--f2:#6b4fd0;--f3:#b7791f;--spot:#ffffffbf;--hi:#fff9;--tip-bg:#121419;--tip-fg:#faf8f4;--tip-shadow:0 6px 18px -6px #00000059;--n-bg:#07080a;--n-fg:#ededf0;--n-mu:#a6a8b2;--n-ac:#3ea1cc;--n-hi:#ffffff17;--n-edge:#07080a;--r-xl:28px;--r-lg:20px;--r-md:14px;--ease:cubic-bezier(.23,1,.32,1);--io:cubic-bezier(.77,0,.175,1);--spring:cubic-bezier(.23,1,.32,1);--sans:var(--font-geist-sans),"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--mono:var(--font-geist-mono),"Geist Mono",ui-monospace,Menlo,monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#08090c;--band:#0d0e13;--card:#12141a;--fg:#ededf0;--mu:#9a9ca6;--line:#1e2028;--soft:#1b1d24;--ac:#3ea1cc;--ac-t:#3ea1cc;--ac-h:#85cff3;--on:#08090c;--f1:#3ea1cc;--f2:#9d8cff;--f3:#e5a93d;--spot:#3ea1cc24;--hi:#ffffff0d;--tip-bg:#1c1e26;--tip-fg:#ededf0;--tip-shadow:inset 0 0 0 1px #ffffff1a,0 8px 20px -6px #0009;--n-edge:#ffffff2e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#08090c;--band:#0d0e13;--card:#12141a;--fg:#ededf0;--mu:#9a9ca6;--line:#1e2028;--soft:#1b1d24;--ac:#3ea1cc;--ac-t:#3ea1cc;--ac-h:#85cff3;--on:#08090c;--f1:#3ea1cc;--f2:#9d8cff;--f3:#e5a93d;--spot:#3ea1cc24;--hi:#ffffff0d;--tip-bg:#1c1e26;--tip-fg:#ededf0;--tip-shadow:inset 0 0 0 1px #ffffff1a,0 8px 20px -6px #0009;--n-edge:#ffffff2e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;scroll-padding-top:72px}a[href],button,summary,select,label[for],[role=button],[role=tab]{cursor:pointer}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]),textarea{cursor:text}:disabled,[aria-disabled=true]{cursor:not-allowed}body{background:var(--bg);color:var(--fg);font:100%/1.5 var(--sans);-webkit-font-smoothing:antialiased;font-feature-settings:"ss05";margin:0;transition:background-color .3s,color .3s}@media (prefers-contrast:more){:root{--mu:#4a463f;--line:#8f8778;--soft:#d3ccbc;--ac-t:#034a68}.bx,.g-detail,.surface{box-shadow:inset 0 0 0 1px var(--line)}}@media (prefers-contrast:more) and (prefers-color-scheme:dark){:root:not([data-theme=light]){--mu:#c9cbd4;--line:#5a5e6b;--soft:#2a2d36;--ac-t:#7cc4e6}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-contrast:more){:root[data-theme=dark]{--mu:#c9cbd4;--line:#5a5e6b;--soft:#2a2d36;--ac-t:#7cc4e6}}::selection{background:color-mix(in srgb,var(--ac) 28%,transparent)}input,textarea{caret-color:var(--ac)}:root{accent-color:var(--ac)}.wrap{width:100%;max-width:1100px;padding-inline:max(20px,env(safe-area-inset-left,0px)) max(20px,env(safe-area-inset-right,0px));margin:0 auto}section{outline:none;transition:background-color .3s}h1,h2,h3,p{margin:0}.skip{z-index:50;background:var(--fg);color:var(--bg);transition:top .2s var(--ease);border-radius:980px;padding:10px 16px;text-decoration:none;position:absolute;top:-60px;left:12px}.skip:focus{top:12px}:focus-visible{outline:2px solid var(--ac);outline-offset:3px}.hdr{top:calc(12px + env(safe-area-inset-top,0px));z-index:16;pointer-events:none;height:44px;position:fixed;left:0;right:0}.hdr .logo,.hdr .hr{pointer-events:auto}.hdr:before{content:"";inset:calc(-12px - env(safe-area-inset-top,0px)) 0 -36px 0;z-index:-1;pointer-events:none;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);position:absolute;-webkit-mask-image:linear-gradient(#000 45%,#0000);mask-image:linear-gradient(#000 45%,#0000)}@media (prefers-reduced-transparency:reduce){.hdr:before{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none}}.hdr .wrap{justify-content:space-between;align-items:center;gap:16px;height:100%;display:flex}.logo{min-width:44px;min-height:44px;color:var(--fg);letter-spacing:.005em;align-items:center;gap:10px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.logo svg{flex:none;width:36px;height:36px;display:block}.logo .tl{fill:#121419}.logo .rg{fill:none;stroke:#fff;stroke-opacity:0}:root[data-theme=dark] .logo .tl{fill:#1b1d24}:root[data-theme=dark] .logo .rg{stroke-opacity:.14}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .logo .tl{fill:#1b1d24}:root:not([data-theme=light]) .logo .rg{stroke-opacity:.14}}@keyframes cur{0%,49%{opacity:1}50%,99%{opacity:0}}.logo .cur{animation:1s step-end 3 cur}@media (prefers-reduced-motion:reduce){.logo .cur{animation:none}}.hr{align-items:center;gap:6px;display:flex}.tt{all:unset;box-sizing:border-box;cursor:pointer;width:44px;height:44px;color:var(--mu);-webkit-tap-highlight-color:transparent;border-radius:50%;place-items:center;transition:color .2s,background-color .2s,transform .1s ease-out;display:grid;position:relative}.tt svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px;transition:transform .3s var(--ease),opacity .2s ease;grid-area:1/1}.tt .moon{opacity:0;transform:rotate(-70deg)scale(.6)}:root[data-theme=light] .tt .sun{opacity:0;transform:rotate(70deg)scale(.6)}:root[data-theme=light] .tt .moon{opacity:1;transform:none}.mi{width:44px;height:44px;color:var(--ac-t);border-radius:50%;place-items:center;text-decoration:none;transition:color .2s,background-color .2s,transform .1s ease-out;display:none}.mi svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.mi:active{transform:scale(.92)}.mi:focus-visible{outline:2px solid var(--ac);outline-offset:1px}@media (max-width:520px){.mi{display:grid}}.tt:active{transform:scale(.92)}.tt:focus-visible{outline:2px solid var(--ac);outline-offset:1px}@media (hover:hover) and (pointer:fine){.tt:hover{color:var(--fg);background:var(--band)}}@media (prefers-reduced-motion:reduce){.tt svg{transition:opacity .15s linear}.tt .moon,:root[data-theme=light] .tt .sun,.tt:active{transform:none}}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}:root[data-vt=active]::view-transition-new(root){clip-path:var(--vt-from)}:root[data-vt=active] *,:root[data-vt=active] :before,:root[data-vt=active] :after{transition:none!important}.btn,.ghost{font:inherit;letter-spacing:.01em;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:980px;justify-content:center;align-items:center;min-height:44px;padding:0 24px;font-size:16px;font-weight:500;line-height:1;text-decoration:none;transition:background-color .15s,color .15s,transform .1s ease-out;display:inline-flex}.btn{background:var(--ac);color:var(--on);border:0}.ghost{border:1px solid var(--ac);color:var(--ac);background:0 0;padding:0 20px;font-size:15px}.btn:active,.ghost:active{transform:scale(.97)}@media (hover:hover) and (pointer:fine){.btn:hover{background:var(--ac-h)}.ghost:hover{background:var(--ac);color:var(--on)}}@media (max-width:700px){.logo span{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}}@media (max-width:520px){.hdr .ghost{display:none}}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.js .act:not(.in) .asvg rect{opacity:0}.js .act.in .asvg rect{transition:opacity .35s var(--ease) calc(var(--c)*5ms)}@media (prefers-reduced-motion:reduce){.js .act.in .asvg rect{transition:none}}.g-tip{z-index:5;pointer-events:none;opacity:0;transform-origin:50% 100%;background:var(--tip-bg);color:var(--tip-fg);box-shadow:var(--tip-shadow);font:500 12.5px var(--mono);white-space:nowrap;transition:opacity .125s ease,transform .125s var(--ease);border-radius:10px;padding:7px 11px;position:absolute;transform:translate(-50%,calc(4px - 100%))scale(.97)}.g-tip.on{opacity:1;transform:translate(-50%,-100%)}.g-tip.instant{transition:none}@media (max-width:760px){.g-axis,.g-row{grid-template-columns:minmax(0,1fr)}.g-axis{height:20px}.g-axis>div:first-child{display:none}.g-grid{inset:0}.g-track{height:40px}.g-bar{top:6px}.g-lab{min-height:0;padding:8px 10px 0}.gantt{padding:18px 16px}.skills .g{grid-template-columns:minmax(0,1fr);gap:8px}}.g-ticks span,.g-tip,.acap,.aleg,.wlist .m,.bx .n,.chip.d,.g-detail .meta{font-variant-numeric:tabular-nums}
.zone{width:260px;height:calc(68px + env(safe-area-inset-top,0px));z-index:15;position:fixed;top:0;left:50%;translate:-50%}@media (hover:none),(pointer:coarse){.zone{display:none}}.notch{--cl:40px;--cr:40px;--eh:300px;--bw:1px;top:calc(12px + env(safe-area-inset-top,0px));z-index:20;width:248px;height:var(--eh);color:var(--n-fg);background:var(--n-edge);clip-path:inset(0 var(--cr) calc(var(--eh) - 44px) var(--cl) round 22px);transition:clip-path .35s var(--spring),opacity .3s ease,transform .35s var(--ease);position:fixed;left:50%;translate:-50%}.notch[data-open=true]{clip-path:inset(0 round 26px);transition-duration:.45s,.3s,.35s}.notch[data-focus=true]{--bw:2px;--n-edge:var(--n-ac)}.notch.away{opacity:0;pointer-events:none;transform:translateY(-14px)scale(.96)}.nfill{background:var(--n-bg);clip-path:inset(var(--bw) calc(var(--cr) + var(--bw)) calc(var(--eh) - 44px + var(--bw)) calc(var(--cl) + var(--bw)) round 21px);transition:clip-path .35s var(--spring);position:absolute;inset:0}.notch[data-open=true] .nfill{clip-path:inset(var(--bw) var(--bw) var(--bw) var(--bw) round 25px);transition-duration:.45s}.bar{all:unset;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;letter-spacing:.01em;width:248px;height:44px;font-size:15px;font-weight:500;position:absolute;top:0;left:0}.bar>*{position:absolute;top:0}.ring{width:20px;height:20px;transform:translateX(var(--cl));transition:transform .35s var(--spring);top:12px;left:16px}.ring circle{fill:none;stroke-width:2.5px;transform-origin:10px 10px;transform:rotate(-90deg)}.ring .track{stroke:#fff3}.ring .prog{stroke:var(--n-ac);stroke-linecap:round}.lab{width:160px;height:44px;transform:translateX(var(--cl));transition:transform .35s var(--spring);line-height:44px;left:46px}.lab>span{white-space:nowrap;position:absolute;top:0;left:0}.chev{color:var(--n-mu);transform:translateX(calc(var(--cr)*-1));transition:transform .35s var(--spring);top:15px;right:16px}.notch[data-open=true] .ring,.notch[data-open=true] .lab{transition-duration:.45s;transform:none}.notch[data-open=true] .chev{transition-duration:.45s;transform:rotate(180deg)}.panel{opacity:0;filter:blur(4px);width:248px;transition:opacity .16s ease,transform .2s var(--ease),filter .16s ease;overscroll-behavior:contain;max-height:calc(100svh - 84px);padding:4px 8px 8px;position:absolute;top:44px;left:0;overflow-y:auto;transform:translateY(-6px)}.notch[data-open=true] .panel{opacity:1;filter:none;transition-duration:.26s;transition-delay:60ms;transform:none}.panel ul{gap:2px;margin:0;padding:0;list-style:none;display:grid}.panel a.item{border-radius:var(--r-md);min-height:44px;color:var(--n-mu);letter-spacing:.01em;align-items:center;gap:12px;padding:0 12px;font-size:15px;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s,transform .1s ease-out;display:flex}.panel a.item .dot{background:var(--n-ac);opacity:0;border-radius:50%;width:6px;height:6px;margin-left:auto}.panel a.item[aria-current=location]{background:var(--n-hi);color:var(--n-fg)}.panel a.item[aria-current=location] .dot{opacity:1}.panel a.item:active{transform:scale(.98)}.panel a.item:focus-visible{outline:2px solid var(--n-ac);outline-offset:-2px}.cta{background:var(--n-ac);color:#07080a;letter-spacing:.02em;border-radius:980px;justify-content:center;align-items:center;min-height:44px;margin:6px 4px 4px;font-size:16px;font-weight:600;text-decoration:none;transition:background-color .15s,transform .1s ease-out;display:flex}.cta:active{transform:scale(.97)}.cta:focus-visible{outline:2px solid var(--n-fg);outline-offset:2px}@media (hover:hover) and (pointer:fine){.panel a.item:hover{color:var(--n-fg);background:var(--n-hi)}.cta:hover{background:#85cff3}}
.hero{flex-direction:column;justify-content:center;min-height:100svh;padding-block:120px 96px;display:flex}.hin{flex-direction:column;align-items:flex-start;gap:18px;display:flex}h1{letter-spacing:-.025em;text-wrap:balance;font-size:clamp(2.75rem,9.2vw,6rem);font-weight:600;line-height:1.05}.role{letter-spacing:-.01em;color:var(--mu);font-size:clamp(1.15rem,2.4vw,1.6rem);font-weight:500;line-height:1.3}.sub{max-width:34ch;color:var(--mu);text-wrap:balance;margin-top:-4px;font-size:clamp(1rem,1.7vw,1.1875rem);line-height:1.45}.hin .btn{margin-top:18px}.ai{white-space:pre;vertical-align:bottom;display:inline-block;overflow:clip}.r{animation:rise .45s var(--ease) both;animation-delay:calc(var(--i,0)*50ms)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}.ai{animation:fade .6s var(--ease) .9s both}@supports (animation-timeline:scroll()){.hin{animation:linear both heroOut;animation-timeline:scroll(root);animation-range:0 70vh}}@keyframes heroOut{to{opacity:0;transform:translateY(-36px)scale(.97)}}.sec{padding-block:112px 120px}.sec>.wrap>h2{letter-spacing:-.022em;margin-bottom:12px;font-size:clamp(2rem,5.4vw,3.5rem);font-weight:600;line-height:1.08}.lede{color:var(--mu);max-width:56ch;margin-bottom:48px}.band{background:var(--band)}
.proj{padding-block:48px 64px}.proj+.proj{border-top:1px solid var(--line)}.proj .top{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:40px;margin-bottom:36px;display:grid}.proj.rev .top{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}.proj.rev .top .side{order:-1}.tag{font-family:var(--mono);color:var(--mu);letter-spacing:.01em;font-size:12.5px}.proj h3{letter-spacing:-.028em;text-wrap:balance;margin-top:10px;font-size:clamp(1.75rem,4.8vw,3.3rem);font-weight:600;line-height:1.05}.side p{color:var(--mu);max-width:36ch;font-size:1.0625rem}.side dl{margin:18px 0 0}.side dl div{border-top:1px solid var(--line);justify-content:space-between;gap:16px;padding:9px 0;font-size:.95rem;display:flex}.side dt{color:var(--mu);flex:none}.side dd{text-align:right;text-wrap:balance;margin:0}.more{min-height:44px;color:var(--ac-t);letter-spacing:.01em;align-items:center;gap:6px;margin-top:18px;font-weight:500;text-decoration:none;transition:color .15s,transform .1s ease-out;display:inline-flex}.more svg{transition:transform .2s var(--ease)}.more:active{transform:scale(.98)}@media (hover:hover) and (pointer:fine){.more:hover{color:var(--ac-h)}.more:hover svg{transform:translate(3px)}}.tabrow{flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:14px;display:flex}.tabs{background:var(--band);border-radius:980px;padding:4px;display:inline-flex;position:relative}.pp{all:unset;box-sizing:border-box;cursor:pointer;width:44px;height:44px;color:var(--mu);border-radius:50%;place-items:center;transition:color .2s,background-color .2s,transform .1s ease-out;display:grid}.pp svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.pp[data-on=true] .pl,.pp[data-on=false] .ps{display:none}.pp[data-on=false] .pl{fill:currentColor}.pp:active{transform:scale(.94)}.pp:focus-visible{outline:2px solid var(--ac);outline-offset:1px}@media (hover:hover) and (pointer:fine){.pp:hover{color:var(--fg);background:var(--band)}}.band .tabs{background:var(--bg)}.tl{gap:2px;display:flex}.tl.over{background:var(--card);pointer-events:none;clip-path:inset(4px 0 round 980px);transition:clip-path .5s var(--ease);padding:4px;position:absolute;inset:0}.tb{all:unset;box-sizing:border-box;letter-spacing:.01em;white-space:nowrap;border-radius:980px;align-items:center;min-height:36px;padding:0 16px;font-size:14px;font-weight:500;display:inline-flex}@media (pointer:coarse){.tb{min-height:44px}}@media (max-width:560px){.tb{padding:0 11px;font-size:13.5px}}@media (max-width:359px){.tb{padding:0 8px;font-size:13px}}.tl.base .tb{cursor:pointer;color:var(--mu);transition:transform .1s ease-out,color .2s}.tl.base .tb:active{transform:scale(.97)}.tl.over .tb{color:var(--fg)}.tl.base .tb:focus-visible{outline:2px solid var(--ac);outline-offset:1px}.surface{background:var(--band);border-radius:var(--r-xl);isolation:isolate;height:clamp(700px,62vw,740px);position:relative;overflow:hidden}.band .surface{background:var(--bg)}@media (max-width:560px){.surface{height:740px}}.surface:before{content:"";z-index:0;pointer-events:none;opacity:0;background:radial-gradient(440px circle at var(--mx,50%) var(--my,50%),var(--spot),transparent 65%);transition:opacity .4s;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){:root:not([data-glow=off]) .surface:hover:before{opacity:1}}.view{z-index:1;opacity:0;visibility:hidden;transform:translateX(var(--tx,0px)) translateY(10px);filter:blur(4px);transition:opacity .18s ease,transform .28s var(--ease),filter .18s ease,visibility 0s .2s;justify-content:center;align-items:flex-start;padding:36px 32px 0;display:flex;position:absolute;inset:0}.view[data-on=true]{opacity:1;visibility:visible;filter:none;transition:opacity .42s var(--ease) 70ms,transform .6s var(--ease) 50ms,filter .42s var(--ease) 70ms,visibility 0s;transform:none}.crop{width:100%;max-width:760px;-webkit-mask-image:linear-gradient(#000 62%,#0000);mask-image:linear-gradient(#000 62%,#0000)}.win{background:var(--card);border-radius:var(--r-lg) var(--r-lg) 0 0;min-height:680px;box-shadow:0 0 0 1px color-mix(in srgb,var(--fg) 7%,transparent),0 12px 32px -10px color-mix(in srgb,var(--fg) 20%,transparent),inset 0 1px 0 var(--hi);align-content:start;gap:12px;padding:18px;display:grid}.band .win{background:var(--card)}.row{align-items:flex-start;gap:12px;display:flex}.av{background:var(--soft);border-radius:50%;flex:none;width:28px;height:28px}.b{background:var(--band);letter-spacing:.005em;border-radius:16px;max-width:70%;padding:10px 14px;font-size:14px}.band .b{background:var(--soft)}.b.me{background:var(--ac);color:var(--on);margin-left:auto}.sk{background:var(--soft);border-radius:5px;height:10px}.chat{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:18px;width:100%;display:grid}.chat .win:first-child{justify-self:end;max-width:340px;min-height:640px}.bars{align-items:flex-end;gap:10px;height:120px;margin-top:6px;display:flex}.bars i{background:var(--soft);border-radius:8px 8px 4px 4px;flex:1}.bars i.hi{background:var(--ac)}.search{background:var(--band);color:var(--mu);border-radius:12px;align-items:center;gap:10px;padding:10px 14px;font-size:14px;display:flex}.res{border-top:1px solid var(--line);align-items:center;gap:12px;padding:12px 4px;display:flex}.res .sk:first-child{width:36%}.res .sk:nth-child(2){opacity:.6;width:22%}.lock{color:var(--mu);flex:none;margin-left:auto}.res.off{opacity:.45}.swap{display:grid}.swap>*{grid-area:1/1}.b.dots{align-items:center;gap:4px;height:36px;display:inline-flex}.b.dots i{background:var(--mu);opacity:.6;border-radius:50%;width:6px;height:6px}.view.archv{flex-direction:column;justify-content:center;align-items:stretch;gap:8px;padding:18px 20px 14px}.arch{flex-direction:column;gap:10px;height:100%;min-height:0;display:flex}.arch .scroll{flex:1;align-items:center;min-height:0;display:flex;overflow-x:auto}.arch svg{width:100%;min-width:720px;height:100%;display:block}.arch .scroll{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),#0000)}.arch .scroll[data-end=true],.arch .scroll[data-fit=true]{-webkit-mask-image:none;mask-image:none}.zone-r{fill:none;stroke:var(--line);stroke-width:1.2px;stroke-dasharray:4 6}.zone-t{font:500 10.5px var(--mono);fill:var(--mu);letter-spacing:.1em}.f1{--c:var(--f1)}.f2{--c:var(--f2)}.f3{--c:var(--f3)}.e{fill:none;stroke:var(--c);stroke-width:1.5px;stroke-dasharray:3 6;opacity:.3}.lit{fill:none;stroke:var(--c);stroke-width:2.2px;stroke-linecap:round;opacity:0;transition:opacity .7s}.node{filter:drop-shadow(0 8px 12px color-mix(in srgb,var(--fg) 12%,transparent))}.node rect{fill:var(--card);stroke:var(--line);stroke-width:1px}.node .ic{color:var(--ac)}.node .ic path{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.node .l{font:600 13.5px var(--sans);fill:var(--fg)}.node .s{font:400 11.5px var(--sans);fill:var(--mu)}.cap{flex-wrap:wrap;align-items:center;gap:8px 14px;min-height:52px;font-size:14px;display:flex}.dots{gap:5px;display:flex}.dots i{background:var(--line);width:6px;height:6px;transition:background-color .3s,transform .3s var(--ease);border-radius:50%}.dots i.on{background:var(--ac)}.dots i.cur{transform:scale(1.6)}.cap .txt{flex:200px;min-width:0}.tbx{flex-wrap:wrap;gap:8px;padding-bottom:6px;display:flex}.tbx .chip{background:var(--band)}.st{background:var(--f1);border-radius:50%;flex:none;width:10px;height:10px;margin-left:auto}.st.pend{background:var(--f3)}.scn{scrollbar-width:none;flex:none;gap:8px;padding:2px 2px 4px;display:flex;overflow-x:auto}.scn::-webkit-scrollbar{display:none}.sc{all:unset;box-sizing:border-box;cursor:pointer;letter-spacing:.01em;min-height:36px;color:var(--mu);box-shadow:inset 0 0 0 1px var(--line);border-radius:980px;flex:none;align-items:center;padding:0 14px;font-size:13.5px;font-weight:500;transition:color .2s,box-shadow .2s,transform .1s ease-out;display:inline-flex;position:relative;overflow:hidden}.sc[aria-selected=true]{color:var(--fg);background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ac) 55%,var(--line)),0 1px 3px color-mix(in srgb,var(--fg) 10%,transparent)}.sc .pr{background:var(--ac);transform-origin:0;height:2px;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.sc:active{transform:scale(.97)}.sc:focus-visible{outline:2px solid var(--ac);outline-offset:2px}@media (pointer:coarse){.sc{min-height:44px}}@media (hover:hover) and (pointer:fine){.sc:hover{color:var(--fg)}}.e.faint{opacity:.1}.e.f1{stroke-dasharray:3 6}.e.f2{stroke-dasharray:9 5}.e.f3{stroke-dasharray:1.5 5}.arch[data-focus] .e{opacity:.05}.arch[data-focus] .e.hv{opacity:.8;stroke-dasharray:none}.arch[data-focus] .node{opacity:.35}.arch[data-focus] .node.hvn{opacity:1}.scn.fr{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 32px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 32px),#0000)}.scn.fl{-webkit-mask-image:linear-gradient(90deg,#0000,#000 32px);mask-image:linear-gradient(90deg,#0000,#000 32px)}.scn.fl.fr{-webkit-mask-image:linear-gradient(90deg,#0000,#000 32px calc(100% - 32px),#0000);mask-image:linear-gradient(90deg,#0000,#000 32px calc(100% - 32px),#0000)}.arch[data-scene] .e{opacity:.07;transition:opacity .35s var(--ease)}.arch[data-scene] .e.es{opacity:.3}.arch[data-scene] .node{opacity:.4;transition:opacity .35s var(--ease)}.arch[data-scene] .node.inv{opacity:1}.node.act rect:first-child{stroke:var(--hc,var(--ac));stroke-width:1.6px;transition:stroke .3s var(--ease)}.node .rg{fill:none;stroke:var(--hc,var(--ac));stroke-width:2px;opacity:0;transform-box:fill-box;transform-origin:50%}.node .rg.go{animation:ring .8s var(--ease)}@keyframes ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.14,1.28)}}.pk{opacity:0}.pk circle{fill:var(--c)}.pk .pg{opacity:.25}.pk.resp circle:not(.pg){fill:var(--card);stroke:var(--c);stroke-width:2px}.pk.resp .pg{opacity:.18}.cap .txt.in{animation:capin .32s var(--ease)}@keyframes capin{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.legend{color:var(--mu);gap:14px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.legend li:before{content:"";background:var(--c);border-radius:50%;width:8px;height:8px}@media (max-width:800px){.proj .top,.proj.rev .top{grid-template-columns:minmax(0,1fr);gap:24px}.proj.rev .top .side{order:0}.chat{grid-template-columns:minmax(0,1fr)}.chat .win:last-child{display:none}.chat .win:first-child{justify-self:stretch;max-width:none}.view{padding:22px 16px 0}.view.archv{padding:14px 12px 10px}}.tl.base .tb{position:relative}.tl.base .tb:after,.sc:after{content:"";position:absolute;inset:-4px 0}
.cs-main{padding-top:64px}.cs-hero{outline:none;padding-block:24px 96px}.cs-back{min-height:44px;color:var(--ac-t);letter-spacing:.01em;align-items:center;gap:6px;font-weight:500;text-decoration:none;transition:color .15s,transform .1s ease-out;display:inline-flex}.cs-back svg{transition:transform .2s var(--ease)}.cs-back:active{transform:scale(.98)}.cs-back:focus-visible,.cs .ghost:focus-visible{outline:2px solid var(--ac);outline-offset:3px;border-radius:6px}@media (hover:hover) and (pointer:fine){.cs-back:hover{color:var(--ac-h)}.cs-back:hover svg{transform:translate(-3px)}}.cs-head{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:48px;padding-top:32px;display:grid}.cs-meta{flex-wrap:wrap;align-items:center;gap:8px 14px;display:flex}.cs-status{border:1px solid var(--line);letter-spacing:.01em;border-radius:980px;align-items:center;gap:8px;min-height:28px;padding:0 12px;font-size:.8125rem;font-weight:500;display:inline-flex}.cs-status i{background:var(--ac);border-radius:50%;width:7px;height:7px}.cs-head h1{letter-spacing:-.03em;text-wrap:balance;margin-top:12px;font-size:clamp(2rem,4.6vw,3.5rem);font-weight:600;line-height:1.05}.cs-lede{color:var(--mu);text-wrap:pretty;max-width:40ch;margin-top:20px;font-size:1.1875rem;line-height:1.5}.cs-role{padding-inline:12px}.cs-shot{background:var(--band);border-radius:var(--r-xl);gap:14px;padding:22px 22px 14px;display:grid}.cs-mini{width:100%;height:auto;max-height:260px;display:block}.cs-explore{min-height:44px;color:var(--ac-t);letter-spacing:.01em;justify-self:start;align-items:center;gap:6px;font-weight:500;text-decoration:none;transition:color .15s,transform .1s ease-out;display:inline-flex}.cs-explore svg{transition:transform .2s var(--ease)}.cs-explore:active{transform:scale(.98)}.cs-explore:focus-visible{outline:2px solid var(--ac);outline-offset:3px;border-radius:6px}@media (hover:hover) and (pointer:fine){.cs-explore:hover{color:var(--ac-h)}.cs-explore:hover svg{transform:translateY(3px)}}.cs-sec{outline:none}.cs-sec>.wrap>h2{margin-bottom:8px;font-size:clamp(1.75rem,3.8vw,2.75rem);line-height:1.1}.cs-p{color:var(--mu);text-wrap:pretty;max-width:58ch;margin-bottom:40px;font-size:1.1875rem}.sec>.wrap>h2.cs-outcome{text-wrap:balance;max-width:20ch;margin:0 0 56px}.cs-outs{grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;margin:0 0 20px;padding:0;list-style:none;display:grid}.cs-outs li{border-radius:var(--r-lg);background:var(--bg);grid-column:span 2;padding:26px 24px 28px}.cs-outs li:nth-child(-n+2){border-radius:var(--r-xl);grid-column:span 3;padding:36px 32px 40px}.cs-outs li:nth-child(3):last-child{grid-column:span 6}.cs-outs h3{letter-spacing:-.018em;text-wrap:balance;margin-bottom:10px;font-size:clamp(1.1875rem,2vw,1.375rem);font-weight:600;line-height:1.2}.cs-outs li:nth-child(-n+2) h3{letter-spacing:-.025em;margin-bottom:14px;font-size:clamp(1.5rem,3vw,2.125rem)}.cs-outs p{color:var(--mu);text-wrap:pretty;margin:0;font-size:1rem;line-height:1.5}.cs-outs li:nth-child(-n+2) p{max-width:34ch;font-size:1.125rem}.cs-ba{background:var(--bg);border-radius:var(--r-xl);grid-template-columns:minmax(0,1fr) auto minmax(0,2fr);align-items:stretch;gap:20px;padding:28px;display:grid}.cs-cap{font:500 .8125rem var(--mono);letter-spacing:.01em;color:var(--mu);margin-bottom:12px;display:block}.cs-mono{border-radius:var(--r-md);border:1px dashed var(--line);background:var(--band);letter-spacing:-.01em;place-items:center;min-height:168px;font-size:1.0625rem;font-weight:600;display:grid}.cs-arrow{color:var(--mu);align-self:center}.cs-svcs{grid-template-columns:repeat(auto-fill,minmax(min(100%,120px),1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.cs-svcs li{text-align:center;background:var(--band);border-radius:12px;place-items:center;min-height:44px;padding:6px 10px;font-size:.875rem;font-weight:500;line-height:1.25;display:grid}.cs-base{border:1px dashed var(--line);min-height:40px;color:var(--mu);border-radius:12px;place-items:center;margin-top:8px;font-size:.875rem;font-weight:500;display:grid}.cs-stack{grid-template-columns:repeat(3,minmax(0,1fr));gap:44px 32px;margin-top:56px;display:grid}.cs-stack h3{color:var(--mu);border-bottom:1px solid var(--line);margin-bottom:12px;padding-bottom:10px;font-size:.9375rem;font-weight:500}.cs-stack ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.cs-stack li{letter-spacing:-.022em;font-size:clamp(1.375rem,2.8vw,2rem);font-weight:600;line-height:1.2}.cs-arch{background:var(--bg);border-radius:var(--r-xl);padding:20px 22px 18px}.cs-arch .arch{gap:12px;height:auto}.cv-mode{background:var(--band);border-radius:980px;align-self:flex-start;gap:2px;padding:4px;display:inline-flex}.cv-mode button{all:unset;box-sizing:border-box;cursor:pointer;min-height:36px;color:var(--mu);border-radius:980px;align-items:center;padding:0 16px;font-size:14px;font-weight:500;transition:color .2s,background-color .2s,transform .1s ease-out;display:inline-flex;position:relative}.cv-mode button[aria-pressed=true]{background:var(--bg);color:var(--fg);box-shadow:0 1px 3px color-mix(in srgb,var(--fg) 10%,transparent)}.cv-mode button:after{content:"";position:absolute;inset:-4px 0}.cv-mode button:active{transform:scale(.97)}.cv-mode button:focus-visible{outline:2px solid var(--ac);outline-offset:2px}@media (pointer:coarse){.cv-mode button{min-height:44px}}@media (hover:hover) and (pointer:fine){.cv-mode button:hover{color:var(--fg)}}.cv .cv-svg{width:100%;min-width:0;max-width:100%;height:540px;display:block;-webkit-mask-image:linear-gradient(90deg,#0000,#000 22px calc(100% - 22px),#0000);mask-image:linear-gradient(90deg,#0000,#000 22px calc(100% - 22px),#0000)}.cv .cv-svg.moving .node{filter:none}.cv-cap{gap:10px;display:grid}.cv .sc[aria-pressed=true]{color:var(--fg);background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ac) 55%,var(--line)),0 1px 3px color-mix(in srgb,var(--fg) 10%,transparent)}.cv-row{flex-wrap:wrap;align-items:center;gap:6px 14px;min-height:20px;display:flex}.cv-n{color:var(--mu);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:.8125rem;display:inline-flex}.cv-kind{box-shadow:inset 0 0 0 1px var(--line);color:var(--mu);white-space:nowrap;border-radius:980px;padding:1px 8px;font-size:.75rem;display:inline-block}.cv-txt{max-width:70ch;min-height:3em;margin:0;font-size:1rem;line-height:1.5}.cv-nav{flex-wrap:wrap;align-items:center;gap:10px 12px;display:flex}.cv-nav .legend{margin-inline-start:auto}.cv-btn{all:unset;box-sizing:border-box;cursor:pointer;min-height:40px;color:var(--fg);box-shadow:inset 0 0 0 1px var(--line);border-radius:980px;align-items:center;padding:0 18px;font-size:.9375rem;font-weight:500;transition:background-color .2s,color .2s,transform .1s ease-out,box-shadow .2s;display:inline-flex;position:relative}.cv-btn:after{content:"";position:absolute;inset:-2px 0}.cv-btn.cv-primary{background:var(--ac);color:var(--on);box-shadow:none}.cv-btn:active:not(:disabled){transform:scale(.97)}.cv-btn:focus-visible{outline:2px solid var(--ac);outline-offset:2px}.cv-btn:disabled{opacity:.4;cursor:not-allowed}@media (pointer:coarse){.cv-btn{min-height:44px}}@media (hover:hover) and (pointer:fine){.cv-btn:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--ac)}.cv-btn.cv-primary:not(:disabled):hover{background:var(--ac-h)}}.cv-chips{flex-wrap:wrap;gap:8px;display:flex}.cv-chip{all:unset;box-sizing:border-box;cursor:pointer;min-height:36px;color:var(--mu);box-shadow:inset 0 0 0 1px var(--line);border-radius:980px;align-items:center;padding:0 14px;font-size:13.5px;font-weight:500;transition:color .2s,box-shadow .2s,transform .1s ease-out;display:inline-flex;position:relative}.cv-chip:after{content:"";position:absolute;inset:-4px 0}.cv-chip[aria-pressed=true]{color:var(--fg);background:var(--card);box-shadow:inset 0 0 0 1px var(--f3)}.cv-chip:active{transform:scale(.97)}.cv-chip:focus-visible{outline:2px solid var(--ac);outline-offset:2px}@media (pointer:coarse){.cv-chip{min-height:44px}}@media (hover:hover) and (pointer:fine){.cv-chip:hover{color:var(--fg)}}.cv-use{border-top:1px solid var(--line);gap:10px;padding-top:14px;display:grid}.cv-use h3{margin:0;font-size:1rem;font-weight:600}.cv-use ul,.cv-use ol{gap:8px;margin:0;padding:0;list-style:none;display:grid}.cv-use>ul{gap:14px}.cv-use ol li{color:var(--mu);font-size:.9375rem;line-height:1.45;display:block}.cv-use strong{margin-bottom:4px;font-size:.9375rem;display:block}.cv-fine{color:var(--mu);max-width:62ch;margin:0;font-size:.8125rem}.cv-link{all:unset;cursor:pointer;color:var(--ac-t);text-underline-offset:3px;min-height:24px;margin-inline-start:8px;font-size:.875rem;font-weight:500;text-decoration:underline;display:inline-block}.cv-link:focus-visible{outline:2px solid var(--ac);outline-offset:2px;border-radius:4px}.cv-use>.cv-link{justify-self:start;margin:0}.node.pick{cursor:pointer}.node.pick:focus-visible rect:first-child{stroke:var(--ac);stroke-width:2px}.node.down rect:first-child{stroke:var(--f3);stroke-width:1.8px;stroke-dasharray:5 3}.node .xb circle{fill:var(--card);stroke:var(--f3);stroke-width:1.6px}.node .xb path{fill:none;stroke:var(--f3);stroke-width:1.8px;stroke-linecap:round}.cs-dec{gap:20px;margin:56px 0 0;padding:0;list-style:none;display:grid}.cs-card{border-radius:var(--r-xl);background:var(--band);grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:20px 40px;padding:32px;display:grid}.cs-area{font:500 .8125rem var(--mono);letter-spacing:.01em;color:var(--ac-t);margin-bottom:10px;display:block}.cs-card h3{letter-spacing:-.015em;text-wrap:balance;font-size:clamp(1.25rem,2.4vw,1.5rem);font-weight:600;line-height:1.2}.cs-card h4{color:var(--mu);margin:0 0 6px;font-size:.8125rem;font-weight:500}.cs-card p{text-wrap:pretty;margin:0;font-size:1rem;line-height:1.5}.cs-card-b{gap:20px;display:grid}.cs-two{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 28px;display:grid}.cs-why{border-top:1px solid var(--line);padding-top:20px}.cs-end{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;margin-top:64px;padding-top:24px;display:flex}.cs-end .ghost{display:inline-flex}@media (max-width:900px){.cs-stack{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 24px;margin-top:40px}.cs-head{grid-template-columns:minmax(0,1fr);gap:28px}.cs-hero{padding-bottom:72px}.cs-card{grid-template-columns:minmax(0,1fr);padding:24px}}@media (max-width:720px){.cs-ba{grid-template-columns:minmax(0,1fr);padding:18px}.cs-arrow{justify-self:start;transform:rotate(90deg)}.cs-mono{min-height:96px}}@media (max-width:800px){.cs-arch{padding:14px 12px 12px}}@media (max-width:640px){.cv .cv-svg{height:320px}}@media (max-width:900px){.cs-outs{grid-template-columns:repeat(2,minmax(0,1fr))}.cs-outs li:nth-child(3):last-child{grid-column:span 2}.cs-outs li,.cs-outs li:nth-child(-n+2){grid-column:span 1;padding:24px}.cs-outs li:first-child,.cs-outs li:last-child{grid-column:span 2}}@media (max-width:560px){.cs-outs li:nth-child(3):last-child{grid-column:span 1}.cs-outs{grid-template-columns:minmax(0,1fr)}.cs-outs li:first-child,.cs-outs li:last-child{grid-column:span 1}.cs-stack{gap:28px 18px;margin-top:32px}.cs-stack h3{margin-bottom:8px;padding-bottom:8px;font-size:.8125rem}.cs-stack ul{gap:2px}.cs-stack li{letter-spacing:-.012em;font-size:1.0625rem;line-height:1.3}.cs-two{grid-template-columns:minmax(0,1fr)}.cv-nav .legend{width:100%;margin-inline-start:0}}@media (prefers-reduced-motion:reduce){.cs-back,.cs-back svg{transition:color .15s}.cs-back:active{transform:none}}.cs-end-only{padding-bottom:24px}.cs-end-only .cs-end{margin-top:0}
.gantt{background:var(--bg);border-radius:var(--r-xl);padding:26px 28px 22px;position:relative}.g-axis,.g-row{grid-template-columns:minmax(0,230px) minmax(0,1fr);align-items:center;column-gap:28px;display:grid}.g-axis{height:26px;margin-bottom:6px}.g-ticks{height:100%;position:relative}.g-ticks span{font:500 11.5px var(--mono);color:var(--mu);white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.g-ticks span:first-child{transform:none}.g-rows{position:relative}.g-grid{pointer-events:none;position:absolute;inset:0 0 0 258px}.g-grid i{background:var(--line);opacity:.7;width:1px;position:absolute;top:0;bottom:0}.g-row{transition:opacity .3s var(--ease);position:relative}.g-lab{all:unset;box-sizing:border-box;cursor:pointer;border-radius:var(--r-md);min-height:56px;transition:background-color .36s var(--io),transform .1s ease-out;flex-direction:column;justify-content:center;padding:11px 12px;display:flex}.g-lab:active{transform:scale(.98)}.g-lab:focus-visible{outline:2px solid var(--ac);outline-offset:1px}.g-lab .t{letter-spacing:.005em;font-size:15px;font-weight:500;line-height:1.25}.g-lab .o{color:var(--mu);letter-spacing:.01em;font-size:13px}.g-row[data-sel=true] .g-lab{background:var(--band)}@media (hover:hover) and (pointer:fine){.g-row:hover .g-lab{background:var(--band)}}.g-track{height:56px;position:relative}@media (max-width:700px){.g-axis{grid-template-columns:minmax(0,1fr)}.g-axis>div:first-child{display:none}.g-row{grid-template-columns:minmax(0,1fr);row-gap:0;margin-bottom:6px}.g-lab{min-height:48px;padding:8px 12px}.g-track{height:30px}.g-grid{display:none}}.g-bar{height:28px;top:14px;left:calc(var(--l)*1%);width:calc(var(--w)*1%);background:var(--bb);border-radius:10px;min-width:8px;position:absolute}.g-bar .rg{box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 24%,transparent);opacity:0;transition:opacity .36s var(--io);pointer-events:none;border-radius:14px;position:absolute;inset:-4px}.g-row[data-sel=true] .g-bar .rg{opacity:1}.g-bar.s3{--bb:var(--ac)}.g-bar.work{--bb:color-mix(in srgb,var(--mu) 60%,var(--bg))}.g-bar.edu{--bb:var(--soft);box-shadow:inset 0 0 0 1px var(--line)}.g-bar.clip:before{content:attr(data-from);font:500 11px var(--mono);color:var(--mu);white-space:nowrap;position:absolute;top:50%;left:8px;transform:translateY(-50%)}.g-bar.now:after{content:"";background:var(--ac);border-radius:50%;width:10px;height:10px;margin-top:-5px;position:absolute;top:50%;right:-5px}.g-bar.now .pulse{background:var(--ac);opacity:0;pointer-events:none;border-radius:50%;width:10px;height:10px;margin-top:-5px;position:absolute;top:50%;right:-5px}.g-detail{background:var(--band);border-radius:var(--r-lg);margin-top:18px;padding:22px 24px;display:grid}.dp{opacity:0;visibility:hidden;transform:translateY(var(--y,0));transition:opacity .36s var(--io),transform .36s var(--io),visibility 0s .36s;flex-direction:column;grid-area:1/1;gap:14px;display:flex}.dp[data-on=true]{opacity:1;visibility:visible;transition:opacity .36s var(--io),transform .36s var(--io),visibility 0s}.dp .top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;display:flex}.dp .h{letter-spacing:-.01em;font-size:1.2rem;font-weight:600;line-height:1.25}.dp .h span{color:var(--mu);font-weight:500}.dp .meta,.dp .tech{flex-wrap:wrap;gap:8px;display:flex}.chip{letter-spacing:.01em;background:var(--bg);min-height:30px;color:var(--fg);box-shadow:inset 0 0 0 1px var(--line);border-radius:980px;align-items:center;padding:0 12px;font-size:13px;display:inline-flex}.chip.d{font-family:var(--mono);color:var(--mu);font-size:12.5px}.chip.now{color:var(--ac);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ac) 45%,transparent)}.dp ul{gap:8px;max-width:68ch;margin:0;padding:0;list-style:none;display:grid}.dp li{color:var(--mu);padding-left:18px;position:relative}.dp li:before{content:"";background:var(--ac);border-radius:50%;width:5px;height:5px;position:absolute;top:.62em;left:2px}.dp .lk{color:var(--mu);flex-wrap:wrap;align-items:center;gap:2px 10px;font-size:.92rem;display:flex}.dp .lk a{min-height:28px;color:var(--ac-t);align-items:center;gap:6px;text-decoration:none;transition:color .2s;display:inline-flex}.dp .lk a:focus-visible{outline:2px solid var(--ac);outline-offset:2px;border-radius:4px}.dp .lk a svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:12px;height:12px}@media (hover:hover) and (pointer:fine){.dp .lk a:hover{text-underline-offset:3px;text-decoration:underline}}.act{--a0:var(--soft);--a1:color-mix(in srgb,var(--ac) 28%,var(--soft));--a2:color-mix(in srgb,var(--ac) 52%,var(--soft));--a3:color-mix(in srgb,var(--ac) 76%,var(--soft));--a4:var(--ac);margin-top:48px;position:relative}.alab{font:500 12.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mu);margin:0}.acap{color:var(--fg);margin:6px 0 0;font-size:.95rem}.ascroll{overscroll-behavior-x:contain;scrollbar-width:none;max-width:880px;margin-top:18px;overflow-x:auto}.ascroll::-webkit-scrollbar{display:none}.ascroll.fl{-webkit-mask-image:linear-gradient(90deg,#0000,#000 28px);mask-image:linear-gradient(90deg,#0000,#000 28px)}.ascroll.fr{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),#0000)}.ascroll.fl.fr{-webkit-mask-image:linear-gradient(90deg,#0000,#000 28px calc(100% - 28px),#0000);mask-image:linear-gradient(90deg,#0000,#000 28px calc(100% - 28px),#0000)}.asvg{width:100%;min-width:740px;height:auto;display:block}.asvg text{font:500 12px var(--mono);fill:var(--mu);letter-spacing:.04em}.asvg rect{fill:var(--a0)}.asvg .l1{fill:var(--a1)}.asvg .l2{fill:var(--a2)}.asvg .l3{fill:var(--a3)}.asvg .l4{fill:var(--a4)}.asvg rect.h{stroke:var(--fg);stroke-width:1.6px}.aleg{max-width:880px;font:500 12px var(--mono);color:var(--mu);justify-content:flex-end;align-items:center;gap:5px;margin-top:12px;display:flex}.aleg i{background:var(--a0);border-radius:3px;width:11px;height:11px}.aleg i.l1{background:var(--a1)}.aleg i.l2{background:var(--a2)}.aleg i.l3{background:var(--a3)}.aleg i.l4{background:var(--a4)}.aleg span{margin-inline:3px}.wr{margin-top:56px}.wrh{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;display:flex}.wrh a{min-height:32px;color:var(--ac-t);align-items:center;gap:6px;font-size:.92rem;text-decoration:none;display:inline-flex}.wrh a:focus-visible{outline:2px solid var(--ac);outline-offset:3px;border-radius:4px}.wrh a svg,.wlist .m svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:14px;height:14px}@media (hover:hover) and (pointer:fine){.wrh a:hover{text-underline-offset:3px;text-decoration:underline}}.wlist{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0 0;padding:0;list-style:none;display:grid}.wlist a{border-radius:var(--r-lg);background:var(--card);height:100%;min-height:118px;box-shadow:inset 0 0 0 1px var(--line);color:var(--fg);transition:box-shadow .2s,transform .16s var(--ease);align-content:space-between;gap:14px;padding:20px 22px;text-decoration:none;display:grid}.wlist .t{letter-spacing:-.01em;text-wrap:balance;font-size:1.08rem;font-weight:600;line-height:1.3}.wlist .m{font:500 12.5px var(--mono);letter-spacing:.01em;color:var(--mu);justify-content:space-between;align-items:center;gap:12px;display:flex}.wlist .m svg{transition:transform .2s var(--ease)}.wlist a:active{transform:scale(.97)}.wlist a:focus-visible{outline:2px solid var(--ac);outline-offset:3px}@media (hover:hover) and (pointer:fine){.wlist a:hover{box-shadow:inset 0 0 0 1px var(--ac)}.wlist a:hover .m svg{transform:translate(2px,-2px)}}@media (pointer:coarse){.wrh a{min-height:44px}}@media (max-width:700px){.wlist{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.wlist a,.wlist .m svg{transition:box-shadow .2s}.wlist a:active,.wlist a:hover .m svg{transform:none}}
.bento{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:16px;display:grid}.bento .col{flex-direction:column;gap:16px;min-width:0;display:flex}.bx{isolation:isolate;background:var(--bg);border-radius:var(--r-xl);box-shadow:inset 0 0 0 1px var(--line);flex-direction:column;gap:18px;padding:24px;display:flex;position:relative;overflow:hidden}.bx:before{content:"";z-index:-1;pointer-events:none;opacity:0;background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%),var(--spot),transparent 65%);transition:opacity .4s;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){:root:not([data-glow=off]) .bx:hover:before{opacity:1}}.bx .hd{align-items:center;gap:12px;display:flex}.bx .ic{background:var(--tb);width:36px;height:36px;color:var(--ti);border-radius:11px;flex:none;place-items:center;display:grid}.bx{--tb:color-mix(in srgb,var(--ac) 14%,var(--card));--ti:var(--ac-t)}.bx[data-t=violet]{--tb:color-mix(in srgb,var(--f2) 16%,var(--card));--ti:var(--f2)}.bx .ic svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:19px;height:19px}.bx h3{letter-spacing:-.005em;font-size:1.05rem;font-weight:600}.bx .n{font:500 12.5px var(--mono);color:var(--mu);margin-left:auto}.bx .tg{color:var(--mu);max-width:38ch;margin-top:-8px}.bx .pl{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.bx .chip{background:var(--card)}.bx .ft{letter-spacing:.01em;color:var(--mu);margin-top:auto;font-size:13px;line-height:1.45}@media (max-width:1100px) and (min-width:901px){.bx{padding:20px}.bx.big{padding:24px}}.bx.big{gap:20px;padding:30px}.bx.big h3{letter-spacing:-.012em;font-size:1.35rem}.bx.big .ic{border-radius:13px;width:44px;height:44px}.bx.big .ic svg{width:22px;height:22px}.bx.big .pl{gap:10px}.bx.big .chip{min-height:40px;padding:0 17px;font-size:15.5px}.js .bento:not(.in) .bx{opacity:0;transform:translateY(16px)}.js .bento.in .bx{transition:opacity .7s var(--ease) calc(var(--i)*70ms),transform .8s var(--ease) calc(var(--i)*70ms)}.js .bento:not(.in) .bx .chip{opacity:0}.js .bento.in .bx .chip{transition:opacity .45s var(--ease) calc(var(--i)*70ms + .18s + var(--k)*28ms)}@media (max-width:900px){.bento{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.bento .col{display:contents}.bx.big{grid-column:span 2}}@media (max-width:560px){.bento{grid-template-columns:minmax(0,1fr)}.bx.big{grid-column:span 1}.bx,.bx.big{padding:22px}}
.sr{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.avl{letter-spacing:.01em;background:var(--bg);min-height:30px;box-shadow:inset 0 0 0 1px var(--line);border-radius:980px;align-items:center;gap:8px;margin:16px 0 26px;padding:0 12px;font-size:13.5px;display:inline-flex}.avl .dot{background:#30a46c;border-radius:50%;width:8px;height:8px}.mail{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.addr{letter-spacing:-.015em;overflow-wrap:break-word;font-size:clamp(1.05rem,4.6vw,1.85rem);font-weight:600;line-height:1.2}.cp{all:unset;box-sizing:border-box;cursor:pointer;background:var(--bg);min-height:44px;box-shadow:inset 0 0 0 1px var(--line);letter-spacing:.01em;border-radius:980px;align-items:center;gap:8px;padding:0 16px;font-size:14px;transition:background-color .2s,box-shadow .2s,transform .1s ease-out;display:inline-flex}.cp:active{transform:scale(.97)}.cp:focus-visible{outline:2px solid var(--ac);outline-offset:2px}@media (hover:hover) and (pointer:fine){.cp:hover{box-shadow:inset 0 0 0 1px var(--ac)}}.cp .ci{width:18px;height:18px;display:block;position:relative}.cp .ci svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px;transition:opacity .2s var(--ease),transform .25s var(--ease);position:absolute;inset:0}.cp .ci svg+svg{opacity:0;color:var(--ac);transform:scale(.6)}.cp[data-done=true] .ci svg:first-child{opacity:0;transform:scale(.6)}.cp[data-done=true] .ci svg+svg{opacity:1;transform:none}.cp .cl{min-width:3.6em}@media (hover:hover) and (pointer:fine){.btn2:hover{background:color-mix(in srgb,var(--ac) 9%,transparent)}}.links{flex-wrap:wrap;gap:10px;margin:22px 0 0;padding:0;list-style:none;display:flex}.links a{border-radius:var(--r-md);background:var(--bg);min-height:48px;box-shadow:inset 0 0 0 1px var(--line);color:var(--fg);letter-spacing:.01em;align-items:center;gap:10px;padding:0 16px;font-size:15px;font-weight:500;text-decoration:none;transition:box-shadow .2s,transform .1s ease-out;display:inline-flex}.links a:active{transform:scale(.97)}.links a:focus-visible{outline:2px solid var(--ac);outline-offset:2px}@media (hover:hover) and (pointer:fine){.links a:hover{box-shadow:inset 0 0 0 1px var(--ac)}}.links svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.links a svg:last-child{width:15px;height:15px;color:var(--mu)}[data-form]{gap:16px;display:grid}.f2{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.fld label{color:var(--mu);letter-spacing:.01em;margin-bottom:6px;font-size:13px;display:block}.fld input,.fld textarea{box-sizing:border-box;width:100%;font:inherit;color:var(--fg);background:var(--bg);border-radius:var(--r-md);box-shadow:inset 0 0 0 1px var(--line);resize:vertical;border:0;min-height:48px;padding:13px 14px;font-size:16px;transition:box-shadow .2s}.fld textarea{min-height:128px;line-height:1.5}.fld input:focus,.fld textarea:focus{box-shadow:inset 0 0 0 2px var(--ac);outline:none}.fld [aria-invalid=true]{box-shadow:inset 0 0 0 1.5px #d4574a}.er{color:#b2372b;min-height:0;margin-top:6px;font-size:13px}.er:empty{display:none}:root[data-theme=dark] .er{color:#ff8a7a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .er{color:#ff8a7a}}.hp{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.send{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex;position:relative}[data-form] .btn[disabled]{opacity:.65;cursor:progress}.fm{opacity:0;align-items:center;gap:8px;font-size:14.5px;display:none}.fm svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;color:#218358;width:18px;height:18px}:root[data-theme=dark] .fm svg{color:#3dd68c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fm svg{color:#3dd68c}}[data-form][data-s=ok] .fm.ok,[data-form][data-s=err] .fm.bad{animation:fmin .35s var(--ease) both;display:inline-flex}.fm.bad{color:#b2372b}:root[data-theme=dark] .fm.bad{color:#ff8a7a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fm.bad{color:#ff8a7a}}@keyframes fmin{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (max-width:560px){.f2{grid-template-columns:minmax(0,1fr)}.links a{flex:auto}}.cvb{--ink:#121419;--ink-fg:#faf8f4;--ink-mu:#a9abb4;--ink-line:#2c2f39;--ink-fill:#ffffff0f;background:var(--ink);color:var(--ink-fg);border-radius:var(--r-xl);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:start;gap:clamp(28px,5vw,72px);padding:clamp(24px,4.5vw,56px);display:grid}:root[data-theme=dark] .cvb{--ink:#15171d}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .cvb{--ink:#15171d}}.cvb .l,.cvb .r{min-width:0}.cvb .l{justify-items:start;gap:22px;display:grid}.cvb .big{letter-spacing:-.03em;text-wrap:balance;font-size:clamp(1.9rem,4.4vw,3.2rem);font-weight:600;line-height:1.06}.cvb .avl{background:var(--ink-fill);box-shadow:none;color:var(--ink-fg);margin:0}.cvb .addr{color:var(--ink-fg);font-size:clamp(1.1rem,2.4vw,1.6rem)}.cvb .cp{background:var(--ink-fill);box-shadow:none;color:var(--ink-fg)}.cvb .cp .ci svg+svg{color:#7cc4e6}.cvb .links{margin:0}.cvb .links a{background:var(--ink-fill);box-shadow:none;color:var(--ink-fg)}.cvb .links a svg:last-child{color:var(--ink-mu)}@media (hover:hover) and (pointer:fine){.cvb .cp:hover,.cvb .links a:hover{background:#ffffff1f}}.cvb .fld label{color:var(--ink-mu)}.cvb .fld input,.cvb .fld textarea{background:var(--ink-fill);color:var(--ink-fg);box-shadow:inset 0 0 0 1px var(--ink-line);caret-color:#7cc4e6}.cvb .fld ::placeholder{color:#7d808b}.cvb .btn{color:#121419;background:#faf8f4}.cvb .er,.cvb .fm.bad{color:#ff9d8f}.cvb .fm svg{color:#5fe0a1}.cve{padding:clamp(28px,5vw,64px);display:block}.cve .ctop{text-align:center;border-bottom:1px solid var(--ink-line);justify-items:center;gap:18px;margin-bottom:clamp(26px,4.5vw,48px);padding-bottom:clamp(26px,4.5vw,48px);display:grid}.cve .big{letter-spacing:-.034em;text-wrap:balance;max-width:15ch;font-size:clamp(2.2rem,6.2vw,4.6rem);font-weight:600;line-height:1.04}.cve .cols{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:start;gap:clamp(28px,5vw,72px);display:grid}.cve .l,.cve .r{min-width:0}.cve .l{justify-items:start;gap:22px;display:grid}.cve .addr{font-size:clamp(1.15rem,2.6vw,1.8rem)}@media (max-width:900px){.cvb,.cve .cols{grid-template-columns:minmax(0,1fr)}}@media (max-width:560px){.cvb{padding:22px}}.js .reveal{opacity:0;transform:translateY(16px)}.js .reveal.in{opacity:1;transition:opacity .7s var(--ease),transform .8s var(--ease);transform:none}.surface:not(.seen) .view *{animation-play-state:paused!important}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.crop{animation:linear both par;animation-timeline:view();animation-range:entry exit 70%}}@keyframes par{0%{transform:translateY(44px)}to{transform:translateY(-16px)}}.view[data-on=true] .chat .win:first-child .row,.view[data-on=true] .chat .win:first-child .search{animation:rise .5s var(--ease) both}.view[data-on=true] .chat .win:first-child>.row:first-child{animation-delay:.25s}.view[data-on=true] .chat .win:first-child>.row:nth-child(2){animation-delay:1.1s}.view[data-on=true] .chat .win:first-child>.swap{animation:none}.view[data-on=true] .swap .row.msg{animation:rise .5s var(--ease) 2.6s both}.view[data-on=true] .swap .row.typ{animation:rise .3s var(--ease) 1.7s both,gone .25s ease 2.5s forwards}@keyframes gone{to{opacity:0;transform:translateY(-4px)}}.view[data-on=true] .bars i{transform-origin:bottom;animation:grow .9s var(--ease) both}.bars i:nth-child(2){animation-delay:60ms!important}.bars i:nth-child(3){animation-delay:.12s!important}.bars i:nth-child(4){animation-delay:.18s!important}.bars i:nth-child(5){animation-delay:.24s!important}.bars i:nth-child(6){animation-delay:.3s!important}.bars i:nth-child(7){animation-delay:.36s!important}.bars i:nth-child(8){animation-delay:.42s!important}@keyframes grow{0%{transform:scaleY(.04)}to{transform:none}}.view[data-on=true] .crop .win>.sk,.view[data-on=true] .crop .search{animation:rise .5s var(--ease) both}.win>.sk:nth-child(odd){animation-delay:.1s!important}.win>.sk:nth-child(2n){animation-delay:.3s!important}.view[data-on=true] .crop .res{animation:rise .5s var(--ease) both}.crop .res:nth-child(2){animation-delay:.18s!important}.crop .res:nth-child(3){animation-delay:.28s!important}.crop .res:nth-child(4){animation-delay:.38s!important}.crop .res:nth-child(5){animation-delay:.48s!important}.view[data-on=true] .crop .res.off{animation-name:riseOff}@keyframes riseOff{0%{opacity:0;transform:translateY(8px)}to{opacity:.45;transform:none}}.res.off .lock{transform-box:fill-box;transform-origin:50%}.view[data-on=true] .res.off .lock{animation:pop .5s var(--ease) .95s both}@keyframes pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}.js .split .w{vertical-align:top;margin-bottom:-.1em;padding-bottom:.1em;display:inline-block;overflow:hidden}.js .split .w>span{transition:transform .8s var(--ease);transition-delay:calc(var(--k)*50ms);display:inline-block;transform:translateY(108%)}.js .split.in .w>span{transform:none}.js .g-bar{clip-path:inset(0 100% 0 0 round 10px)}.js .g-lab{opacity:0;transform:translateY(8px)}.js .gantt.in .g-bar{clip-path:inset(-10px -14px round 10px);transition:clip-path 1s var(--ease) calc(var(--i)*.12s + .12s)}.js .gantt.in .g-lab{opacity:1;transition:opacity .6s var(--ease) calc(var(--i)*.12s),transform .7s var(--ease) calc(var(--i)*.12s),background-color .2s;transform:none}.js .g-bar:before,.js .g-bar:after{opacity:0}.js .gantt.in .g-bar:before,.js .gantt.in .g-bar:after{opacity:1;transition:opacity .4s ease calc(var(--i)*.12s + .9s)}.js .gantt.in .g-bar.now .pulse{animation:ping 1.5s ease-out calc(var(--i)*.12s + 1.4s) 2 both}@keyframes ping{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(3.4)}}}@media (prefers-reduced-motion:reduce){.r,.ai{animation:.2s both fade}.hin{animation:none}.js .reveal{opacity:1;transform:none}.cp .ci svg{transition:none}[data-form][data-s] .fm{opacity:1;animation:none}.js .bento:not(.in) .bx,.js .bento:not(.in) .bx .chip{opacity:1;transform:none}.js .bento.in .bx,.js .bento.in .bx .chip{transition:none}.view{filter:none;transition:opacity .2s;transform:none}.notch,.nfill,.ring,.lab,.chev{transition:none}.panel{filter:none;transition:opacity .2s;transform:none}.pp:active,.btn:active,.ghost:active,.more:active,.tb:active,.replay:active,.g-lab:active,.panel a.item:active,.cta:active{transform:none}.tl.over{transition:none}.dp,.dp[data-on=true]{transition:opacity .15s linear,visibility;transform:none}.g-tip{transition:none}.node .rg.go,.cap .txt.in{animation:none}*{scroll-behavior:auto!important}}.cvb{--ink-field:#767a89}.cvb .fld input,.cvb .fld textarea{box-shadow:inset 0 0 0 1px var(--ink-field)}.cvb .fld input:focus,.cvb .fld textarea:focus{box-shadow:inset 0 0 0 2px #7cc4e6}html:not(.js) .needs-js{display:none}
.contact .lede{margin-bottom:36px}.foot{border-top:1px solid var(--line);color:var(--mu);grid-template-columns:minmax(0,1fr) minmax(0,34rem) minmax(0,1fr);align-items:center;gap:16px 32px;margin-top:8px;padding-block:28px 40px;font-size:.9rem;display:grid}.foot .fc{justify-self:start}.foot .fb{justify-self:end}.fq{text-align:center;transition:opacity .22s var(--ease),filter .22s var(--ease);align-content:center;margin:0;line-height:1.5;display:grid}.fq q{quotes:"“" "”";text-wrap:balance}.fq cite{font-style:normal;font:500 .75rem/1.4 var(--mono);letter-spacing:.04em;text-transform:uppercase;opacity:.8;margin-top:4px;display:block}.fq.out{opacity:0;filter:blur(2px);transition-duration:.18s}.foot a{min-height:44px;color:var(--mu);transition:color .2s,transform .16s var(--ease);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.foot a:active{transform:scale(.97)}.foot a:focus-visible{outline:2px solid var(--ac);outline-offset:3px;border-radius:6px}.foot a svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}@media (hover:hover) and (pointer:fine){.foot a:hover{color:var(--fg)}}@media (max-width:900px){.foot{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"q q""c b";gap:12px 16px}.fq{grid-area:q}.foot .fc{grid-area:c}.foot .fb{grid-area:b}}@media (prefers-reduced-motion:reduce){.fq,.fq.out{filter:none;transition:none}.foot a{transition:color .2s}.foot a:active{transform:none}}.fqc{grid-area:1/1;align-self:center;display:block}.fqg{visibility:hidden;pointer-events:none}

