:root{--bg: #fcfcfa;--bg-alt: #f1f1ee;--surface: #fff;--surface-inverse: #0d0d0d;--ink: #0d0d0d;--ink-soft: #6d6d6a;--ink-inverse: #fcfcfa;--ink-inverse-soft: #b3b3af;--line: #e4e4e0;--line-strong: #767672;--accent: #cdff4d;--accent-text: #547a00;--accent-ink: #0d0d0d;--iso-lattice-source: var(--ink);--iso-lattice-k: .42;--iso-shape-source: var(--accent-text);--iso-shape-k: .62;--font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;--font-body: "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--step--1: clamp(.82rem, .8rem + .1vw, .88rem);--step-0: clamp(1rem, .97rem + .15vw, 1.06rem);--step-1: clamp(1.15rem, 1.08rem + .35vw, 1.35rem);--step-2: clamp(1.35rem, 1.2rem + .75vw, 1.75rem);--step-3: clamp(1.75rem, 1.4rem + 1.75vw, 2.9rem);--step-4: clamp(2.6rem, 1.6rem + 5vw, 6.5rem);--leading-tight: .98;--leading-body: 1.55;--tracking-display: -.02em;--tracking-mono: .12em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 18px;--space-5: 26px;--space-6: 38px;--space-7: 56px;--space-8: 80px;--space-9: 112px;--radius-sm: 8px;--radius: 22px;--radius-lg: 28px;--border-hairline: 1px solid var(--line);--shadow-lift: 0 20px 40px -24px rgb(13 13 13 / 18%);--container: 1240px;--gutter: clamp(18px, 5vw, 32px);--dur-entrance: 1.2s;--dur-micro: .18s;--dur-press: 60ms;--stagger-step: 80ms;--stagger-cap: 4;--ease-entrance: cubic-bezier(.65, 0, .35, 1);--ease-micro: ease-out;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0c0c0b;--bg-alt: #151514;--surface: #171716;--surface-inverse: #f1f1ee;--ink: #f4f4f1;--ink-soft: #a3a39e;--ink-inverse: #0d0d0d;--ink-inverse-soft: #6d6d6a;--line: #292927;--line-strong: #686868;--accent: #cdff4d;--accent-text: #b8e63f;--iso-lattice-source: var(--accent);--iso-lattice-k: 1;--iso-shape-source: var(--accent);--iso-shape-k: 1;--shadow-lift: none;color-scheme:dark}}:root[data-theme=dark]{--bg: #0c0c0b;--bg-alt: #151514;--surface: #171716;--surface-inverse: #f1f1ee;--ink: #f4f4f1;--ink-soft: #a3a39e;--ink-inverse: #0d0d0d;--ink-inverse-soft: #6d6d6a;--line: #292927;--line-strong: #686868;--accent: #cdff4d;--accent-text: #b8e63f;--iso-lattice-source: var(--accent);--iso-lattice-k: 1;--iso-shape-source: var(--accent);--iso-shape-k: 1;--shadow-lift: none;color-scheme:dark}:root[data-theme=light]{--bg: #fcfcfa;--bg-alt: #f1f1ee;--surface: #fff;--surface-inverse: #0d0d0d;--ink: #0d0d0d;--ink-soft: #6d6d6a;--ink-inverse: #fcfcfa;--ink-inverse-soft: #b3b3af;--line: #e4e4e0;--line-strong: #767672;--accent: #cdff4d;--accent-text: #547a00;--accent-ink: #0d0d0d;--iso-lattice-source: var(--ink);--iso-lattice-k: .42;--iso-shape-source: var(--accent-text);--iso-shape-k: .62;--shadow-lift: 0 20px 40px -24px rgb(13 13 13 / 18%);color-scheme:light}*,*:before,*:after{box-sizing:border-box}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}:target{scroll-margin-top:calc(var(--space-8) + env(safe-area-inset-top,0px))}@font-face{font-family:Space Grotesk;src:url("./media/space-grotesk-variable-subset-2RGWVCE7.woff2") format("woff2");font-weight:300 700;font-style:normal;font-display:optional;unicode-range:U+0000-007F,U+0080-00FF,U+0106-0107,U+010C-010D,U+0110-0111,U+0160-0161,U+017D-017E,U+2013-2014,U+2192}@font-face{font-family:Inter;src:url("./media/inter-variable-subset-SZGKNW6Y.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:optional;unicode-range:U+0000-007F,U+0080-00FF,U+0106-0107,U+010C-010D,U+0110-0111,U+0160-0161,U+017D-017E,U+2013-2014,U+2192}@font-face{font-family:JetBrains Mono;src:url("./media/jetbrains-mono-variable-subset-2WXKWH73.woff2") format("woff2");font-weight:100 800;font-style:normal;font-display:optional;unicode-range:U+0000-007F,U+00B7,U+2014,U+2192,U+25C6}body{font-family:var(--font-body);font-size:var(--step-0);line-height:var(--leading-body);color:var(--ink);background:var(--bg)}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:var(--tracking-display);line-height:var(--leading-tight);font-weight:700}h1{font-size:var(--step-4)}h2{font-size:var(--step-3)}h3{font-size:var(--step-2)}h4{font-size:var(--step-1)}code,kbd,samp,.mono{font-family:var(--font-mono);letter-spacing:var(--tracking-mono)}p,li{max-width:70ch}:where(a,button,input,textarea,select,[tabindex]):focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:var(--radius-sm)}[data-surface=inverse]{--ink: var(--ink-inverse);--ink-soft: var(--ink-inverse-soft)}[data-surface=accent]{--ink: var(--accent-ink);--ink-soft: var(--accent-ink)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.tap-target{position:relative}.tap-target:after{content:"";position:absolute;inset:-10px 0}html:not([data-js]) .contact-form,html:not([data-js]) .contact-form__submit{display:none!important}.wrap{max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}.band{border-block:var(--border-hairline);background:var(--bg-alt)}.cq{container-type:inline-size}.full-bleed-height{min-height:100dvh}@supports not (height: 100dvh){.full-bleed-height{min-height:100svh}}.safe-top{padding-top:max(env(safe-area-inset-top,0px),0px)}.safe-bottom{padding-bottom:max(env(safe-area-inset-bottom,0px),0px)}.grid-auto{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}.aspect-box{position:relative;overflow:hidden;aspect-ratio:var(--aspect, 16 / 9)}.aspect-box img,.aspect-box picture,.aspect-box picture>img{display:block;width:100%;height:100%;object-fit:cover}[data-reveal=pending]{opacity:0;transform:translateY(20px)}[data-reveal=pending][data-reveal-variant=grid]{transform:translateY(26px) scale(.985)}[data-reveal=revealed]{opacity:1;transform:none;transition:opacity var(--dur-entrance) var(--ease-entrance) calc(min(var(--reveal-i, 0),var(--stagger-cap)) * var(--stagger-step)),transform var(--dur-entrance) var(--ease-entrance) calc(min(var(--reveal-i, 0),var(--stagger-cap)) * var(--stagger-step));will-change:opacity,transform}.hero-line{overflow:clip}.hero-line>*{display:block;transition:transform var(--dur-entrance) var(--ease-entrance),opacity var(--dur-entrance) var(--ease-entrance)}.hero-line[data-reveal=pending]>*{transform:translateY(100%);opacity:0}.hero-line[data-reveal=revealed]>*{transform:translateY(0);opacity:1}.hero-line:nth-of-type(2)>*{transition-delay:90ms}.custom-cursor{position:fixed;top:0;left:0;width:34px;height:34px;pointer-events:none;z-index:999;transform:translate(-50%,-50%);will-change:transform}.custom-cursor__inner{display:block;width:100%;height:100%;border-radius:50%;background:var(--accent);transform:scale(.294);transition:transform var(--dur-micro) var(--ease-micro),background-color var(--dur-micro) var(--ease-micro)}.custom-cursor--active .custom-cursor__inner{transform:scale(1)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}[data-reveal],[data-reveal=pending],[data-reveal=revealed],.hero-line>*{opacity:1!important;transform:none!important;transition:none!important}.custom-cursor{display:none}.btn:hover,.btn:focus-visible,.tile--interactive:hover,.tile--interactive:focus-visible,.project-tile-link:hover app-browser-frame img,.project-tile-link:focus-visible app-browser-frame img{transform:none!important;transition:none!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@media(pointer:coarse){.custom-cursor{display:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-width:44px;min-height:44px;padding:var(--space-3) var(--space-5);border-radius:9999px;border:none;font-family:var(--font-body);font-size:var(--step-0);font-weight:600;text-decoration:none;cursor:pointer;transition:background-color .25s var(--ease-micro),color .25s var(--ease-micro),transform var(--dur-press) var(--ease-micro),border-color .25s var(--ease-micro)}.btn+.btn{margin-inline-start:var(--space-2)}.btn--primary{background:var(--ink);color:var(--ink-inverse)}.btn--primary:hover,.btn--primary:focus-visible{background:color-mix(in srgb,var(--ink) 82%,var(--bg));transform:translateY(-2px)}.btn--primary:active{transform:translateY(0)}.btn--secondary{background:transparent;color:var(--ink);border:var(--border-hairline);border-color:var(--line-strong)}.btn--secondary:hover,.btn--secondary:focus-visible{transform:translateY(-2px);background:var(--bg-alt)}.btn--secondary:active{transform:translateY(0)}.btn--on-inverse{background:var(--accent);color:var(--accent-ink)}.btn--on-inverse:hover,.btn--on-inverse:focus-visible{background:color-mix(in srgb,var(--accent) 80%,var(--ink-inverse));transform:translateY(-2px)}.btn--on-inverse:active{transform:translateY(0)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}.btn--pending{cursor:progress;opacity:.75}[href^="#hb-"][href$=-shell],[href^="#hb-"][href$=-otl]{stroke:var(--line-strong)}[href^="#hb-"][href$=-ca],[href^="#hb-"][href$=-cb]{stroke:var(--line)}[href^="#hb-"][href$=-rule],[href^="#hb-"][href$=-nav],[href^="#hb-"][href$=-rows]{fill:var(--line)}[href^="#hb-"][href$=-rail]{fill:var(--line);stroke:var(--line)}[href^="#hb-"][href$=-brand],[href^="#hb-"][href$=-la],[href^="#hb-"][href$=-lb]{fill:var(--line-strong)}[href^="#hb-"][href$=-accent]{fill:var(--accent)}.hero-build{display:block;inline-size:min(100%,clamp(224px,57.6dvh,520px));margin-inline:auto;aspect-ratio:480 / 150;--build-dur: .7s;--build-stagger: .22s;--build-offset: calc(var(--dur-entrance) + 90ms)}.hb-stage>:not(.hb-m){display:none}@media(width>=744px){.hero-build{inline-size:min(100%,clamp(280px,calc(34dvh * 1.6),480px));aspect-ratio:480 / 300}.hb-stage>:not(.hb-m){display:revert}.hb-stage>.hb-m{display:none}}.hb-stage>*{--build-i: 0;transform-box:fill-box;transform-origin:left center}app-hero-build[data-build=pending] .hb-stage>*{transform:scaleX(0)}app-hero-build[data-build=running] .hb-stage>*{transform:scaleX(1);transition:transform var(--build-dur) var(--ease-entrance) calc(var(--build-offset) + var(--build-i) * var(--build-stagger))}.hb-stage>:nth-child(1){--build-i: 0}.hb-stage>:nth-child(2){--build-i: 1}.hb-stage>:nth-child(3){--build-i: 2}.hb-stage>:nth-child(4){--build-i: 3}.hb-stage>:nth-child(5){--build-i: 4}.hb-stage>:nth-child(6){--build-i: 5}.hb-stage>:nth-child(7){--build-i: 6}.hb-stage>:nth-child(8){--build-i: 7}.hb-stage>:nth-child(9){--build-i: 8}.hb-stage>:nth-child(10){--build-i: 9}.hb-stage>:nth-child(11){--build-i: 10}.hb-stage>:nth-child(12){--build-i: 11}.hb-stage>:nth-child(13){--build-i: 0}.hb-stage>:nth-child(14){--build-i: 1}.hb-stage>:nth-child(15){--build-i: 2}.hb-stage>:nth-child(16){--build-i: 3}.hb-stage>:nth-child(17){--build-i: 4}.hb-stage>:nth-child(18){--build-i: 5}.hb-stage>:nth-child(19){--build-i: 6}app-iso-field{--iso-scale: 1.2;--iso-gap: calc(46px * var(--iso-scale));--iso-a-lattice: .145;--iso-a-cube: .6;--iso-a-cube-faint: .28;--iso-a-tile: .3;--iso-i: .35;--iso-shape-i: var(--iso-i);--iso-lattice: color-mix(in srgb, var(--iso-lattice-source) calc(var(--iso-a-lattice) * var(--iso-i) * var(--iso-lattice-k) * 100%), transparent);position:fixed;inset:0;display:block;z-index:-1;pointer-events:none;background-image:repeating-linear-gradient(30deg,var(--iso-lattice) 0 1px,transparent 1px var(--iso-gap)),repeating-linear-gradient(-30deg,var(--iso-lattice) 0 1px,transparent 1px var(--iso-gap)),repeating-linear-gradient(90deg,var(--iso-lattice) 0 1px,transparent 1px calc(var(--iso-gap) * 1.732))}app-iso-field svg{inline-size:100%;block-size:100%;fill:none;stroke-width:1.15;stroke-linejoin:round}app-iso-field use{transform-box:view-box;transform-origin:50% 100%;transform:scale(var(--iso-scale))}app-iso-field [href$=-cubes]{stroke:color-mix(in srgb,var(--iso-shape-source) calc(var(--iso-a-cube) * var(--iso-shape-i) * var(--iso-shape-k) * 100%),transparent)}app-iso-field [href$=-cubes-faint]{stroke:color-mix(in srgb,var(--iso-shape-source) calc(var(--iso-a-cube-faint) * var(--iso-shape-i) * var(--iso-shape-k) * 100%),transparent)}app-iso-field [href$=-tiles]{stroke:color-mix(in srgb,var(--iso-shape-source) calc(var(--iso-a-tile) * var(--iso-shape-i) * var(--iso-shape-k) * 100%),transparent)}app-iso-field [href$=-tile-insets]{stroke:color-mix(in srgb,var(--iso-shape-source) calc(var(--iso-a-tile) * var(--iso-shape-i) * var(--iso-shape-k) * 100%),transparent);stroke-dasharray:3 5}
