@layer reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}img,picture,video{max-width:100%;height:auto;display:block}svg{flex-shrink:0}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,h4,p{overflow-wrap:break-word}ul[role=list],ol[role=list]{padding:0;list-style:none}}@layer tokens{:root{--c-ink-950:#07080b;--c-ink-900:#0c0e13;--c-ink-850:#11141a;--c-ink-800:#171b23;--c-fog-100:#eceef4;--c-fog-300:#a4aabb;--c-fog-500:#7c8397;--c-periwinkle:#717aff;--c-violet:#aa6aff;--c-magenta:#f953ff;--c-violet-text:#c4a6ff;--c-signal-ok:#4ade80;--c-signal-err:#f87171;--c-bg:var(--c-ink-950);--c-surface:var(--c-ink-900);--c-surface-2:var(--c-ink-850);--c-surface-3:var(--c-ink-800);--c-text:var(--c-fog-100);--c-text-muted:var(--c-fog-300);--c-text-subtle:var(--c-fog-500);--c-accent:var(--c-violet);--c-focus:var(--c-periwinkle);--c-line:color-mix(in oklab, var(--c-fog-100) 9%, transparent);--c-line-strong:color-mix(in oklab, var(--c-fog-100) 18%, transparent);--c-line-accent:color-mix(in oklab, var(--c-violet) 55%, transparent);--c-grid:color-mix(in oklab, var(--c-fog-100) 4.5%, transparent);--gradient-brand:linear-gradient(90deg, var(--c-periwinkle), var(--c-violet) 50%, var(--c-magenta));--glow-accent:0 0 0 1px var(--c-line-accent), 0 0 3rem -1rem color-mix(in oklab, var(--c-violet) 45%, transparent);--ff-sans:var(--font-geist);--ff-mono:var(--font-geist-mono);--fs-2xs:.6875rem;--fs-xs:.75rem;--fs-sm:.875rem;--fs-base:1rem;--fs-md:1.125rem;--fs-lg:clamp(1.25rem, 1.16rem + .4vw, 1.5rem);--fs-xl:clamp(1.5rem, 1.28rem + .95vw, 2.125rem);--fs-2xl:clamp(2rem, 1.55rem + 1.9vw, 3.25rem);--fs-3xl:clamp(2.6rem, 1.6rem + 4.2vw, 5rem);--lh-tight:1.04;--lh-snug:1.25;--lh-body:1.65;--tracking-display:-.04em;--tracking-heading:-.025em;--tracking-label:.08em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-8:3rem;--space-10:4rem;--space-12:6rem;--section-pad:clamp(4rem, 2.5rem + 5vw, 7rem);--container:76rem;--container-narrow:44rem;--gutter:clamp(1rem, .5rem + 3vw, 2.5rem);--header-h:3.75rem;--radius-sm:4px;--radius:8px;--crop:.625rem;--crop-offset:5px;--grid-size:4rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-fast:.12s;--dur:.22s;--dur-slow:.48s;--z-header:50;--z-skip:200}}@layer base{html{color-scheme:dark;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--space-5));background:var(--c-bg)}body{background:var(--c-bg);min-height:100dvh;color:var(--c-text);font-family:var(--ff-sans);font-size:var(--fs-base);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01", "cv11"}h1,h2,h3,h4{font-weight:600;line-height:var(--lh-snug);letter-spacing:var(--tracking-heading);text-wrap:balance}p,li,dd{text-wrap:pretty}a{color:inherit;text-decoration-color:var(--c-line-strong);text-underline-offset:.22em;transition:color var(--dur-fast), text-decoration-color var(--dur-fast);text-decoration-thickness:1px}a:hover{text-decoration-color:currentColor}code,kbd,samp{font-family:var(--ff-mono);font-size:.92em}strong{color:var(--c-text);font-weight:600}:focus-visible{outline:2px solid var(--c-focus);outline-offset:3px;border-radius:2px}::selection{background:color-mix(in oklab, var(--c-violet) 45%, transparent);color:var(--c-text)}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}::view-transition-old(root),::view-transition-new(root){animation-duration:.18s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}}@layer layout{.container{width:min(100% - 2 * var(--gutter), var(--container));margin-inline:auto}.container--narrow{--container:var(--container-narrow)}.section{isolation:isolate;padding-block:var(--section-pad);border-top:1px solid var(--c-line);position:relative}.section--raised{background:linear-gradient(180deg, var(--c-surface) 0%, var(--c-bg) 100%)}.stack{gap:var(--stack-gap,var(--space-4));flex-direction:column;display:flex}.stack--sm{--stack-gap:var(--space-2)}.stack--lg{--stack-gap:var(--space-8)}.cluster{align-items:center;gap:var(--cluster-gap,var(--space-3));flex-wrap:wrap;display:flex}.cluster--sm{--cluster-gap:var(--space-2)}.split{gap:var(--space-8) var(--space-10);display:grid}@media (width>=60rem){.split{grid-template-columns:1fr 1fr;align-items:center}.split--start{align-items:start}.split--wide-left{grid-template-columns:1.15fr .85fr}.split--wide-right{grid-template-columns:.85fr 1.15fr}}.grid-auto{gap:var(--grid-gap,var(--space-5));grid-template-columns:repeat(auto-fill, minmax(min(100%, var(--grid-min,17rem)), 1fr));display:grid}.grid-auto--fit{grid-template-columns:repeat(auto-fit, minmax(min(100%, var(--grid-min,17rem)), 1fr))}}@layer components{.btn{border-radius:var(--radius);background:var(--c-text);min-height:2.75rem;color:var(--c-bg);font-size:var(--fs-sm);white-space:nowrap;transition:background-color var(--dur-fast), border-color var(--dur-fast), box-shadow var(--dur) var(--ease-out), color var(--dur-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:.55em;padding:.7em 1.2em;font-weight:550;line-height:1;text-decoration:none;display:inline-flex;& .icon{width:1.1em;height:1.1em}& .btn__icon-end{transition:translate var(--dur) var(--ease-out)}&:hover{box-shadow:var(--glow-accent);background:#fff}&:hover .btn__icon-end{translate:3px}&:active{translate:0 1px}&:disabled{cursor:progress;opacity:.6;box-shadow:none}}.btn--ghost{border-color:var(--c-line-strong);color:var(--c-text);background:0 0;&:hover{border-color:var(--c-text-subtle);background:var(--c-surface-2);box-shadow:none}}.btn--small{min-height:2.25rem;font-size:var(--fs-xs);padding:.5em .9em}.label{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:.6em;font-weight:500;display:inline-flex;&:before{content:"//";content:"//" / "";color:var(--c-violet-text)}}.label__index{color:var(--c-text)}.section-heading{gap:var(--space-4);margin-block-end:var(--space-10);display:grid}.section-heading__title{max-width:22ch;font-size:var(--fs-2xl);line-height:var(--lh-tight);letter-spacing:var(--tracking-display)}.section-heading__lead{max-width:38rem;color:var(--c-text-muted);font-size:var(--fs-md)}@media (width>=60rem){.section-heading{align-items:end;column-gap:var(--space-10);grid-template-columns:1fr 1fr}.section-heading__label{grid-column:1/-1}}.subheading{align-items:center;gap:var(--space-3);color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;margin-block-end:var(--space-5);font-weight:500;line-height:1.4;display:flex;&:after{content:"";background:var(--c-line);flex:1;height:1px}}.site-header{z-index:var(--z-header);border-bottom:1px solid var(--c-line);background:color-mix(in oklab, var(--c-bg) 78%, transparent);backdrop-filter:blur(16px)saturate(1.4);view-transition-name:site-header;position:sticky;top:0}.site-header__inner{align-items:center;gap:var(--space-4);min-height:var(--header-h);display:flex}.site-header__actions{align-items:center;gap:var(--space-3);display:flex}.site-header__cta{display:none}@media (width>=40rem){.site-header__cta{display:inline-flex}}.brand{padding-block:var(--space-2);border-radius:var(--radius-sm);flex:none;align-items:center;margin-inline-end:auto;display:inline-flex}.brand__logo{width:7rem}@media (width>=60rem){.brand{margin-inline-end:0}}.icon-link{border-radius:var(--radius);width:2.75rem;height:2.75rem;color:var(--c-text);transition:border-color var(--dur-fast);background:0 0;border:1px solid #0000;place-items:center;display:inline-grid;& .icon{width:1.4rem;height:1.4rem}&:hover{border-color:var(--c-line-strong)}}.main-nav{display:none}.main-nav__list{justify-content:center;gap:var(--space-6);display:flex}.nav-toggle{order:3}.main-nav__link{padding-block:var(--space-2);color:var(--c-text-muted);font-size:var(--fs-sm);text-decoration:none;position:relative;&:after{content:"";background:var(--gradient-brand);transform-origin:0;height:1px;transition:scale var(--dur) var(--ease-out);position:absolute;inset:auto 0 -.35rem;scale:0 1}&:hover{color:var(--c-text)}&:hover:after{scale:1}}@media (width>=60rem){.main-nav{flex:1;display:block}.nav-toggle{display:none}}.mobile-nav{width:100%;max-width:none;height:100dvh;max-height:none;padding:var(--space-2) var(--gutter) var(--space-8);background:var(--c-bg);color:var(--c-text);opacity:0;transition:opacity var(--dur) var(--ease-out), translate var(--dur) var(--ease-out), overlay var(--dur) allow-discrete, display var(--dur) allow-discrete;border:0;margin:0;position:fixed;inset:0;translate:0 -.5rem;&:popover-open{opacity:1;flex-direction:column;display:flex;translate:0}&::backdrop{background:0 0}}@starting-style{.mobile-nav:popover-open{opacity:0;translate:0 -.5rem}}.mobile-nav__top{min-height:calc(var(--header-h) - var(--space-2));justify-content:space-between;align-items:center;display:flex}.mobile-nav__nav{margin-block:auto}.mobile-nav__list{counter-reset:mobile-nav;display:grid}.mobile-nav__link{align-items:baseline;gap:var(--space-4);padding-block:var(--space-3);border-bottom:1px solid var(--c-line);letter-spacing:var(--tracking-display);font-size:clamp(1.75rem,8vw,2.75rem);font-weight:600;line-height:1.2;text-decoration:none;display:flex;&:before{counter-increment:mobile-nav;content:counter(mobile-nav, decimal-leading-zero);content:counter(mobile-nav, decimal-leading-zero) / "";color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-label);font-weight:400}}.mobile-nav__footer{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;padding-block-start:var(--space-6);display:flex}.lang-switch{border:1px solid var(--c-line);border-radius:calc(var(--radius-sm) + 2px);font-family:var(--ff-mono);padding:2px;display:inline-flex}.lang-switch__link{border-radius:var(--radius-sm);color:var(--c-text-subtle);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;padding:.35em .6em;line-height:1.4;text-decoration:none;&:hover{color:var(--c-text)}&[aria-current=page]{background:var(--c-surface-3);color:var(--c-text)}}.site-footer{padding-block:var(--space-10) var(--space-6);border-top:1px solid var(--c-line);background:var(--c-surface);font-size:var(--fs-sm)}.site-footer__grid{gap:var(--space-8);grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));display:grid}@media (width>=60rem){.site-footer__grid{grid-template-columns:2fr 1fr 1fr 1fr}}.site-footer__brand{gap:var(--space-4);max-width:22rem;color:var(--c-text-muted);justify-items:start;display:grid}.site-footer__heading{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;margin-block-end:var(--space-3);font-weight:500}.site-footer__list{gap:var(--space-2);color:var(--c-text-muted);display:grid;& a{text-decoration:none}& a:hover{color:var(--c-text)}}.site-footer__icon-link{align-items:center;gap:var(--space-2);display:inline-flex;& .icon{width:1.1em;height:1.1em}}.site-footer__bottom{justify-content:space-between;align-items:center;gap:var(--space-4);border-top:1px solid var(--c-line);color:var(--c-text-subtle);font-size:var(--fs-xs);flex-wrap:wrap;margin-block-start:var(--space-8);padding-block-start:var(--space-5);display:flex}.site-footer__build{font-size:var(--fs-2xs);flex-wrap:wrap;gap:.5em;display:flex;&>span:not(.visually-hidden)~span:before{content:"·";content:"·" / "";margin-inline-end:.5em}}.grid-backdrop{z-index:-1;pointer-events:none;background-image:linear-gradient(to right, var(--c-line) 1px, transparent 1px), linear-gradient(to bottom, var(--c-line) 1px, transparent 1px);background-position:top;background-size:var(--grid-size) var(--grid-size);position:absolute;inset:0;mask-image:radial-gradient(90% 85% at 55% 0,#000 35%,#0000 80%)}.grid-backdrop--hero{background-image:radial-gradient(ellipse 42% 38% at 78% 22%, color-mix(in oklab, var(--c-violet) 22%, transparent), transparent 70%), radial-gradient(ellipse 30% 28% at 62% 6%, color-mix(in oklab, var(--c-periwinkle) 14%, transparent), transparent 70%), linear-gradient(to right, var(--c-line) 1px, transparent 1px), linear-gradient(to bottom, var(--c-line) 1px, transparent 1px);background-position:0 0,0 0,top,top;background-size:auto, auto, var(--grid-size) var(--grid-size), var(--grid-size) var(--grid-size)}.spec-card{--crop-color:var(--c-line-strong);border:1px solid var(--c-line);border-radius:var(--radius);background:var(--c-surface);padding:clamp(1.25rem,1rem + 1vw,1.75rem);position:relative;&:before{content:"";inset:calc(var(--crop-offset) * -1);pointer-events:none;background:linear-gradient(var(--crop-color) 0 0) left top / var(--crop) 1px no-repeat, linear-gradient(var(--crop-color) 0 0) left top / 1px var(--crop) no-repeat, linear-gradient(var(--crop-color) 0 0) right top / var(--crop) 1px no-repeat, linear-gradient(var(--crop-color) 0 0) right top / 1px var(--crop) no-repeat, linear-gradient(var(--crop-color) 0 0) left bottom / var(--crop) 1px no-repeat, linear-gradient(var(--crop-color) 0 0) left bottom / 1px var(--crop) no-repeat, linear-gradient(var(--crop-color) 0 0) right bottom / var(--crop) 1px no-repeat, linear-gradient(var(--crop-color) 0 0) right bottom / 1px var(--crop) no-repeat;transition:inset var(--dur) var(--ease-out), --crop-color var(--dur);position:absolute}}.spec-card--interactive{transition:border-color var(--dur), background-color var(--dur);&:hover,&:focus-within{--crop-color:var(--c-violet);border-color:var(--c-line-strong);background:var(--c-surface-2);&:before{inset:calc(var(--crop-offset) * -1.8)}}}.spec-card--accent:after{content:"";inset:-1px var(--radius) auto;pointer-events:none;background:linear-gradient(90deg, transparent, var(--c-periwinkle) 20%, var(--c-violet) 50%, var(--c-magenta) 80%, transparent);height:1px;position:absolute}.spec-list{font-size:var(--fs-sm);display:grid}.spec-list__row{gap:var(--space-3);border-top:1px dashed var(--c-line);grid-template-columns:4.5rem 1fr;padding-block:.55rem;display:grid}.spec-list__key{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;padding-block-start:.2em}.spec-list__value{color:var(--c-text-muted)}.chip{border:1px solid var(--c-line);border-radius:var(--radius-sm);background:color-mix(in oklab, var(--c-fog-100) 3%, transparent);color:var(--c-text-muted);font-family:var(--ff-mono);font-size:var(--fs-2xs);white-space:nowrap;align-items:center;gap:.5em;padding:.3em .6em;line-height:1.3;display:inline-flex}.chip--status:before{content:"";background:var(--c-signal-ok);width:.45rem;height:.45rem;box-shadow:0 0 0 3px color-mix(in oklab, var(--c-signal-ok) 18%, transparent);border-radius:50%}.chip--accent{border-color:var(--c-line-accent);color:var(--c-violet-text)}.chip-list{gap:var(--space-2);flex-wrap:wrap;display:flex}.terminal{background:var(--c-surface);font-family:var(--ff-mono);font-size:var(--fs-xs);padding:0;box-shadow:0 2.5rem 5rem -2.5rem #000000e6}@media (width>=30rem){.terminal{font-size:var(--fs-sm)}}.terminal__bar{align-items:center;gap:var(--space-4);border-bottom:1px solid var(--c-line);color:var(--c-text-subtle);font-size:var(--fs-2xs);padding:.7rem 1rem;display:flex}.terminal__dots{gap:6px;display:flex;& span{border:1px solid var(--c-line-strong);background:var(--c-surface-3);border-radius:50%;width:9px;height:9px}}.terminal__lines{gap:.4rem;padding:1.1rem 1.25rem 1.25rem;display:grid}.terminal__line{color:var(--c-text-muted);grid-template-columns:1.4rem 6.5rem 1fr;align-items:baseline;display:grid}@media (width>=30rem){.terminal__line{grid-template-columns:1.5rem 7.5rem 1fr}}.terminal__line--command,.terminal__line--caret{grid-template-columns:1.4rem 1fr}@media (width>=30rem){.terminal__line--command,.terminal__line--caret{grid-template-columns:1.5rem 1fr}}.terminal__line--command{color:var(--c-text);margin-block-end:.35rem;& code{font-size:inherit}}.terminal__prompt{color:var(--c-violet-text)}.terminal__mark--ok{color:var(--c-signal-ok)}.terminal__mark--run{color:var(--c-violet-text)}.terminal__mark--err{color:var(--c-signal-err)}.terminal__key{color:var(--c-text-subtle)}.terminal__value{color:var(--c-text);font-variant-numeric:tabular-nums}.terminal__value--pending{color:var(--c-text-subtle);font-style:italic}.terminal__caret{background:var(--c-text-muted);align-self:center;width:.55em;height:1.1em;animation:1.1s steps(2,jump-none) infinite terminal-caret}.terminal__footer{border-top:1px solid var(--c-line);color:var(--c-text-subtle);font-size:var(--fs-2xs);padding:.7rem 1.25rem}@media (prefers-reduced-motion:no-preference){.terminal__line{animation:terminal-line .3s var(--ease-out) both}.terminal__line:nth-child(2){animation-delay:.45s}.terminal__line:nth-child(3){animation-delay:.65s}.terminal__line:nth-child(4){animation-delay:.85s}.terminal__line:nth-child(5){animation-delay:1.05s}.terminal__line:nth-child(6){animation-delay:1.25s}.terminal__line:nth-child(7){animation-delay:1.45s}.terminal__line:nth-child(8){animation-delay:1.65s}.terminal__line:nth-child(9){animation-delay:1.95s}}@keyframes terminal-line{0%{opacity:0;translate:-.25rem}}@keyframes terminal-caret{to{opacity:0}}.hero{isolation:isolate;padding-block:clamp(3rem, 1.5rem + 6vw, 7rem) var(--space-8);position:relative;overflow:clip}.hero__grid{gap:var(--space-10);align-items:center;display:grid}@media (width>=64rem){.hero__grid{gap:var(--space-12);grid-template-columns:1.1fr .9fr}}.hero__content{gap:var(--space-5);justify-items:start;display:grid}.hero__title{max-width:13ch;font-size:var(--fs-3xl);line-height:var(--lh-tight);letter-spacing:var(--tracking-display)}.hero__accent{background:var(--gradient-brand) no-repeat left bottom / 100% .07em;padding-block-end:.04em}.hero__lead{max-width:36rem;color:var(--c-text-muted);font-size:var(--fs-md)}.hero__actions{margin-block-start:var(--space-2)}.hero__visual{min-width:0}.hero-facts{border:1px solid var(--c-line);border-radius:var(--radius);background:var(--c-line);grid-template-columns:repeat(2,1fr);gap:1px;margin-block-start:var(--space-10);display:grid;overflow:hidden}@media (width>=48rem){.hero-facts{grid-template-columns:repeat(4,1fr)}}.hero-facts__item{justify-content:flex-end;gap:var(--space-1);padding:var(--space-4) var(--space-5);background:var(--c-bg);flex-direction:column-reverse;display:flex}.hero-facts__value{font-size:var(--fs-lg);letter-spacing:var(--tracking-heading);font-weight:600;line-height:var(--lh-snug)}.hero-facts__label{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase}.services-grid{gap:var(--space-5);display:grid}@media (width>=48rem){.services-grid{grid-template-columns:1fr 1fr}}.service-card{gap:var(--space-4);flex-direction:column;display:flex}.service-card__head{justify-content:space-between;align-items:flex-start;margin-block-end:var(--space-2);display:flex}.service-card__icon{border:1px solid var(--c-line-strong);border-radius:var(--radius);background:var(--c-surface-2);width:2.75rem;height:2.75rem;color:var(--c-violet-text);flex:none;place-items:center;display:inline-grid;& .icon{width:1.35rem;height:1.35rem}}.service-card__index{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label)}.service-card__title{font-size:var(--fs-xl);letter-spacing:var(--tracking-display);line-height:var(--lh-tight)}.service-card__text{color:var(--c-text-muted)}.service-card__facts{gap:var(--space-2);color:var(--c-text-muted);font-size:var(--fs-sm);display:grid;& li{gap:.65em;display:flex}& li:before{content:"+";content:"+" / "";color:var(--c-violet-text);font-family:var(--ff-mono)}}.service-card__link{font-size:var(--fs-sm);align-items:center;gap:.4em;margin-block-start:auto;padding-block-start:var(--space-3);font-weight:550;text-decoration:none;display:inline-flex;&:after{content:"";border-radius:inherit;position:absolute;inset:0}& .icon{width:1.1em;height:1.1em;transition:translate var(--dur) var(--ease-out)}}.service-card:hover .service-card__link .icon{translate:3px}.work-grid{gap:var(--space-5);display:grid}@media (width>=40rem){.work-grid{grid-template-columns:repeat(2,1fr)}.project-card--featured{grid-column:span 2}}@media (width>=64rem){.work-grid{grid-template-columns:repeat(3,1fr)}}.project-card{gap:var(--space-5);flex-direction:column;display:flex}.project-card__plate{aspect-ratio:16/9;padding:var(--space-5);border:1px solid var(--c-line);border-radius:var(--radius-sm);background-color:var(--c-bg);background-image:radial-gradient(var(--c-line-strong) 1px, transparent 1px);background-position:50%;background-size:1rem 1rem;place-items:center;display:grid}.project-card__logo{width:auto;max-height:100%;transition:scale var(--dur-slow) var(--ease-out)}.project-card:hover .project-card__logo{scale:1.04}@media (width>=64rem){.project-card--featured{gap:var(--space-6);grid-template-columns:1fr 1fr;display:grid;& .project-card__plate{aspect-ratio:auto}& .project-card__logo{width:12rem}}}.project-card__body{gap:var(--space-4);flex-direction:column;flex:1;display:flex}.project-card__head{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.project-card__title{font-size:var(--fs-lg)}.project-card__text{color:var(--c-text-muted);font-size:var(--fs-sm)}.project-card__links{gap:var(--space-3) var(--space-5);flex-wrap:wrap;margin-block-start:auto;display:flex}.project-card__link{z-index:1;font-size:var(--fs-sm);align-items:center;gap:.35em;font-weight:550;text-decoration:none;display:inline-flex;position:relative;& .icon{width:1.1em;height:1.1em}&:hover{color:var(--c-violet-text)}}.project-card__link--primary{position:static;&:after{content:"";z-index:0;border-radius:inherit;position:absolute;inset:0}}.process{gap:var(--space-8) 0;display:grid}@media (width>=40rem){.process{grid-template-columns:repeat(2,1fr)}}@media (width>=64rem){.process{grid-template-columns:repeat(4,1fr)}}.process__step{gap:var(--space-3);border-top:1px solid var(--c-line-strong);align-content:start;justify-items:start;padding-block-start:var(--space-6);padding-inline-end:var(--space-6);display:grid;position:relative}.process__node{border:1px solid var(--c-violet);background:var(--c-bg);width:9px;height:9px;position:absolute;top:-5px;left:0;rotate:45deg}.process__index{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-xl);line-height:1}.process__title{font-size:var(--fs-lg)}.process__text{color:var(--c-text-muted);font-size:var(--fs-sm)}.process__note{color:var(--c-text-muted);font-family:var(--ff-mono);font-size:var(--fs-sm);margin-block-start:var(--space-10);&:before{content:"→ ";content:"→ " / "";color:var(--c-violet-text)}}.principles{display:grid}.principle{gap:var(--space-4);padding-block:var(--space-5);border-top:1px solid var(--c-line);grid-template-columns:3.5rem 1fr;display:grid;&:first-child{border-top:0;padding-block-start:0}&:last-child{border-bottom:1px solid var(--c-line)}}.principle__index{color:var(--c-violet-text);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);padding-block-start:.4em}.principle__title{font-size:var(--fs-md)}.principle__text{color:var(--c-text-muted);font-size:var(--fs-sm);margin-block-start:var(--space-1)}.stack-aside{gap:var(--space-6);align-self:start;display:grid}@media (width>=60rem){.stack-aside{top:calc(var(--header-h) + var(--space-6));position:sticky}}.infrastructure{gap:var(--space-4);display:grid}.infrastructure__head{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.infrastructure__title{font-size:var(--fs-lg)}.infrastructure__text{color:var(--c-text-muted);font-size:var(--fs-sm)}.infrastructure__list .spec-list__row{grid-template-columns:7.5rem 1fr}.stack-table__list{display:grid}.stack-table__row{gap:var(--space-2);padding-block:var(--space-4);border-top:1px dashed var(--c-line);display:grid;&:first-child{border-top:0;padding-block-start:0}&:last-child{padding-block-end:0}}@media (width>=30rem){.stack-table__row{grid-template-columns:7.5rem 1fr;align-items:baseline}}.stack-table__key{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase}.contact-details{gap:var(--space-4);display:grid}.contact-details__item{align-items:center;gap:var(--space-4);text-decoration:none;display:flex;&:is(a):hover .contact-details__icon{border-color:var(--c-line-accent)}}.contact-details__icon{border:1px solid var(--c-line-strong);border-radius:var(--radius);background:var(--c-surface-2);width:2.75rem;height:2.75rem;color:var(--c-violet-text);transition:border-color var(--dur-fast);flex:none;place-items:center;display:grid;& .icon{width:1.25rem;height:1.25rem}}.contact-details__text{line-height:1.35;display:grid}.contact-details__label{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase}.contact-details__value{overflow-wrap:anywhere;font-weight:550}.next-steps{gap:var(--space-3);color:var(--c-text-muted);display:grid}.next-steps__item{grid-template-columns:2.25rem 1fr;display:grid}.next-steps__index{color:var(--c-violet-text);font-family:var(--ff-mono);font-size:var(--fs-xs);padding-block-start:.25em}.contact-card{padding:clamp(1.25rem,1rem + 2vw,2.25rem)}.form{gap:var(--space-5);display:grid}@media (scripting:none){.form{display:none}}.form__row{gap:var(--space-5);display:grid}.field{align-content:start;gap:var(--space-2);display:grid}@media (width>=40rem){.form__row--2{grid-template-rows:auto auto auto;grid-template-columns:1fr 1fr;row-gap:0}.form__row--2>.field{grid-row:span 3;grid-template-rows:subgrid}}.field__label{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;align-self:end}.field__required{color:var(--c-violet-text)}.field__control{border:1px solid var(--c-line-strong);border-radius:var(--radius-sm);background:var(--c-bg);width:100%;color:var(--c-text);transition:border-color var(--dur-fast), box-shadow var(--dur-fast);padding:.8em .95em;&::placeholder{color:var(--c-text-subtle)}&:hover{border-color:var(--c-text-subtle)}&:focus-visible{border-color:var(--c-focus);box-shadow:0 0 0 3px color-mix(in oklab, var(--c-focus) 30%, transparent);outline:none}&:user-invalid{border-color:var(--c-signal-err)}}textarea.field__control{resize:vertical;min-height:9rem}select.field__control{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23a4aabb' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-position:right .75em center;background-repeat:no-repeat;background-size:1.25em;padding-inline-end:2.5em}.field__hint{color:var(--c-text-subtle);font-size:var(--fs-xs)}.form__honeypot{width:1px;height:1px;position:absolute;left:-100vw;overflow:hidden}.form__cap{display:none}.form__footer{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.form__legend{max-width:24rem;color:var(--c-text-subtle);font-size:var(--fs-xs)}.form__progress{inset:auto var(--radius) -1px;opacity:0;height:2px;transition:opacity var(--dur);border-radius:1px;position:absolute}.form[aria-busy=true] .form__progress{background-image:var(--gradient-brand);opacity:1;background-repeat:no-repeat;background-size:40% 100%;animation:1.1s ease-in-out infinite form-progress}@keyframes form-progress{0%{background-position:-40% 0}to{background-position:140% 0}}.form__status{color:var(--c-text-muted);font-size:var(--fs-sm);&:empty{display:none}}.form[data-state=verifying] .form__status,.form[data-state=sending] .form__status{font-family:var(--ff-mono);font-size:var(--fs-xs)}.form[data-state=success] .form__status,.form[data-state=error] .form__status{padding:var(--space-4);border-radius:var(--radius-sm);color:var(--c-text);border:1px solid}.form[data-state=success] .form__status{border-color:color-mix(in oklab, var(--c-signal-ok) 45%, transparent);background:color-mix(in oklab, var(--c-signal-ok) 8%, transparent)}.form[data-state=error] .form__status{border-color:color-mix(in oklab, var(--c-signal-err) 45%, transparent);background:color-mix(in oklab, var(--c-signal-err) 8%, transparent)}.form__notice{padding:var(--space-4);border:1px solid var(--c-line-strong);border-radius:var(--radius-sm);color:var(--c-text-muted);font-size:var(--fs-sm)}.prose{gap:var(--space-4);max-width:42rem;color:var(--c-text-muted);line-height:1.75;display:grid;& h2{color:var(--c-text);font-size:var(--fs-lg);margin-block-start:var(--space-6)}& a{color:var(--c-text);text-decoration-color:var(--c-line-accent)}& a:hover{text-decoration-color:currentColor}& ul,& ol{gap:var(--space-2);padding-inline-start:1.2em;display:grid}}.legal{gap:var(--space-3);padding-block:var(--space-12) var(--section-pad);display:grid;& .prose{margin-block-start:var(--space-6)}}.legal__title{font-size:var(--fs-2xl);line-height:var(--lh-tight);letter-spacing:var(--tracking-display)}.legal__updated{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase}.page-hero{isolation:isolate;padding-block:var(--space-10);position:relative;overflow:clip}.breadcrumb ol{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-xs);flex-wrap:wrap;gap:.45em;display:flex;& li+li:before{content:"/";content:"/" / "";color:var(--c-violet-text);margin-inline-end:.45em}& a{text-decoration:none}& a:hover,& [aria-current=page]{color:var(--c-text)}}.page-hero__title-row{align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-block-start:var(--space-8);display:flex}.page-hero__title{font-size:var(--fs-3xl);line-height:var(--lh-tight);letter-spacing:var(--tracking-display)}.page-hero__lead{max-width:40rem;color:var(--c-text-muted);font-size:var(--fs-md);margin-block-start:var(--space-5)}.service-page{padding-block-start:var(--space-10)}.service-page__grid{gap:var(--space-10);display:grid}@media (width>=60rem){.service-page__grid{grid-template-columns:1fr 22rem;align-items:start}.service-page__aside{top:calc(var(--header-h) + var(--space-6));position:sticky}}.service-page__card{gap:var(--space-4);display:grid}.service-page__heading{color:var(--c-text-subtle);font-family:var(--ff-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:500}.service-page__cta{gap:var(--space-3);border-top:1px solid var(--c-line);justify-items:start;margin-block-start:var(--space-3);padding-block-start:var(--space-5);display:grid}.service-page__cta-title{font-weight:600}.service-others{padding-block:var(--space-10)}.service-others__list{gap:var(--space-3);display:grid}@media (width>=48rem){.service-others__list{grid-template-columns:repeat(3,1fr)}}.service-others__link{align-items:center;gap:var(--space-4);height:100%;padding:var(--space-4);border:1px solid var(--c-line);border-radius:var(--radius);background:var(--c-surface);transition:border-color var(--dur-fast), background-color var(--dur-fast);text-decoration:none;display:flex;&:hover{border-color:var(--c-line-strong);background:var(--c-surface-2)}&:hover .service-others__arrow{color:var(--c-text);translate:3px}}.service-others__title{font-weight:550}.service-others__arrow{color:var(--c-text-subtle);transition:translate var(--dur) var(--ease-out), color var(--dur-fast);margin-inline-start:auto}.not-found{isolation:isolate;padding-block:var(--space-12) var(--section-pad);position:relative;overflow:clip}.not-found__inner{gap:var(--space-5);justify-items:start;display:grid;& .terminal{width:100%;margin-block-end:var(--space-5)}}.not-found__title{font-size:var(--fs-2xl);line-height:var(--lh-tight);letter-spacing:var(--tracking-display)}}@layer utilities{.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.text-muted{color:var(--c-text-muted)}.mono{font-family:var(--ff-mono);font-variant-numeric:tabular-nums}.icon{width:1.25em;height:1.25em}.skip-link{top:var(--space-2);left:var(--space-2);z-index:var(--z-skip);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);background:var(--c-text);color:var(--c-bg);transition:translate var(--dur);font-weight:600;position:fixed;translate:0 -200%}.skip-link:focus-visible{translate:0}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.reveal{animation:linear both reveal view();animation-range:entry entry 60%}}}@keyframes reveal{0%{opacity:0;translate:0 1rem}}}@property --crop-color{syntax:"<color>";inherits:true;initial-value:#eceef42e}
