:root{--color-paper: oklch(97% .008 75);--color-paper-2: oklch(94.5% .012 75);--color-surface: oklch(99% .004 80);--color-rule: oklch(87% .012 70);--color-neutral: oklch(48% .015 60);--color-ink: oklch(22% .015 45);--color-accent: oklch(62% .19 38);--color-accent-ink: oklch(50% .17 38);--color-accent-glow: oklch(70% .17 45);--color-focus: oklch(48% .17 38);--color-success: oklch(56% .14 150);--color-error: oklch(52% .19 25);--color-note-bg: oklch(93% .06 95);--color-note-ink: oklch(32% .05 85);--color-canvas-dot: oklch(84% .016 70);--color-connector: oklch(68% .02 60);--color-veil: oklch(97% .008 75 / .75);color-scheme:light;--font-display: "Bricolage Grotesque", "Avenir Next", "Trebuchet MS", sans-serif;--font-body: "Geist", "Segoe UI", "Helvetica Neue", sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.25rem;--text-lg: 1.5625rem;--text-xl: 1.9531rem;--text-2xl: 2.4414rem;--text-display: clamp(2.5rem, 4.5vw + 1rem, 4.6rem);--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--space-2xl: 4rem;--space-3xl: 6rem;--space-4xl: 9rem;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-micro: .12s;--dur-short: .22s;--dur-long: .42s;--radius-node: 14px;--radius-card: 10px;--radius-pill: 999px;--header-h: 4.75rem;--shadow-whisper: 0 1px 2px oklch(20% .01 60 / .05);--shadow-hairline: 0 0 0 1px oklch(30% .01 60 / .06);--z-base: 1;--z-raised: 10;--z-sticky: 200;--z-toast: 500}:root[data-theme=dark]{--color-paper: oklch(15% .012 45);--color-paper-2: oklch(17.5% .014 45);--color-surface: oklch(21% .016 45);--color-rule: oklch(30% .015 45);--color-neutral: oklch(72% .015 55);--color-ink: oklch(94% .008 75);--color-accent: oklch(68% .165 42);--color-accent-ink: oklch(72% .15 45);--color-accent-glow: oklch(74% .15 48);--color-focus: oklch(72% .15 42);--color-success: oklch(68% .13 150);--color-error: oklch(66% .17 25);--color-note-bg: oklch(31% .05 90);--color-note-ink: oklch(90% .06 95);--color-canvas-dot: oklch(27% .016 45);--color-connector: oklch(44% .02 50);--color-veil: oklch(15% .012 45 / .72);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0}html{overflow-x:clip;scroll-behavior:smooth}body{overflow-x:clip;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;-webkit-font-smoothing:antialiased}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}h1,h2,h3{font-family:var(--font-display);font-weight:700;letter-spacing:-.025em;line-height:1.12;overflow-wrap:anywhere;min-width:0}p{max-width:65ch}a{color:var(--color-accent-ink);text-decoration-thickness:1px;text-underline-offset:.2em}img,svg{max-width:100%}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:2px}::selection{background:var(--color-accent);color:var(--color-paper)}[id]{scroll-margin-top:var(--header-h)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;top:var(--space-xs);left:var(--space-xs);z-index:var(--z-toast);padding:var(--space-xs) var(--space-md);background:var(--color-ink);color:var(--color-paper);border-radius:var(--radius-pill);transform:translateY(-300%)}.skip-link:focus-visible{transform:none}.btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:.7rem 1.4rem;border:1px solid transparent;border-radius:var(--radius-pill);font-weight:600;font-size:var(--text-sm);text-decoration:none;white-space:nowrap;cursor:pointer;transition:transform var(--dur-micro) var(--ease-out),background-color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out)}.btn-primary{background:var(--color-ink);color:var(--color-paper)}.btn-ghost{border-color:var(--color-rule);color:var(--color-ink);background:transparent}@media(hover:hover)and (pointer:fine){.btn:hover{transform:translateY(-1px)}.btn-ghost:hover{border-color:var(--color-neutral)}}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn[data-state=loading]{cursor:progress}.btn[data-state=loading]:after{content:"";width:.9em;height:.9em;border:2px solid currentcolor;border-inline-end-color:transparent;border-radius:50%;animation:btn-spin .7s linear infinite}@keyframes btn-spin{to{transform:rotate(1turn)}}@media(pointer:coarse){.btn{min-height:48px}}.site-head{position:fixed;top:var(--space-sm);inset-inline:0;z-index:var(--z-sticky);display:flex;justify-content:center;padding-inline:max(var(--space-md),env(safe-area-inset-left));pointer-events:none}.pill-nav{pointer-events:auto;display:flex;align-items:center;gap:var(--space-lg);padding:var(--space-xs) var(--space-xs) var(--space-xs) var(--space-md);border:1px solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-veil);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow-whisper);max-width:100%}.wordmark{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--color-ink);text-decoration:none}.wordmark-mark{color:var(--color-accent);flex:none}.wordmark-text{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;letter-spacing:-.02em;white-space:nowrap}.pill-links{display:flex;gap:var(--space-md);list-style:none;padding:0}.pill-link{color:var(--color-neutral);font-size:var(--text-sm);font-weight:500;text-decoration:none;white-space:nowrap;transition:color var(--dur-micro) var(--ease-out)}.pill-link:hover,.pill-link:focus-visible{color:var(--color-ink)}.pill-controls{display:flex;align-items:center;gap:var(--space-xs)}.ctrl-btn{display:inline-grid;place-items:center;width:2.1rem;height:2.1rem;border:1px solid var(--color-rule);border-radius:50%;background:transparent;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:border-color var(--dur-micro) var(--ease-out)}.ctrl-btn:hover{border-color:var(--color-neutral)}:root[data-theme=light] .icon-sun,:root[data-theme=dark] .icon-moon{display:none}.pill-cta{padding:.5rem 1rem;border-radius:var(--radius-pill);background:var(--color-ink);color:var(--color-paper);font-size:var(--text-sm);font-weight:600;text-decoration:none;white-space:nowrap;transition:transform var(--dur-micro) var(--ease-out)}.pill-cta:hover{transform:translateY(-1px)}.pill-cta:active{transform:none}@media(max-width:47.99rem){.pill-links{display:none}}@media(max-width:25rem){.wordmark-text{display:none}}.hero{display:flex;flex-direction:column;justify-content:flex-end;min-height:min(88svh,54rem);padding:calc(var(--header-h) + var(--space-2xl)) clamp(1.25rem,5vw,5rem) var(--space-xl)}.hero-inner{display:grid;gap:var(--space-xl);align-items:end;max-width:72rem}@media(min-width:60rem){.hero-inner{grid-template-columns:1.25fr .75fr;gap:var(--space-3xl)}}.hero h1{font-size:var(--text-display);max-width:14ch}.hero-stack{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-lg)}.hero-stack span{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-neutral);border:1px solid var(--color-rule);border-radius:var(--radius-pill);padding:.15rem .6rem}.hero-lede{color:var(--color-neutral);font-size:var(--text-lg);line-height:1.5;max-width:42ch}.hero-lede-name{color:var(--color-accent-ink);font-weight:600}.hero-ctas{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-lg)}.hero-hint{display:flex;align-items:center;gap:var(--space-xs);margin-top:var(--space-3xl);color:var(--color-neutral);font-family:var(--font-mono);font-size:var(--text-sm)}.hero-hint svg{flex:none;animation:hint-nudge 1.8s var(--ease-in-out) infinite}@keyframes hint-nudge{0%,to{transform:translate(0)}50%{transform:translate(6px)}}@media(prefers-reduced-motion:reduce){.hero-hint svg{animation:none}}.canvas-section{position:relative;background:var(--color-paper-2);border-block:1px solid var(--color-rule);overflow:hidden}.canvas-section[data-mode=h]{height:100vh;height:100dvh}.canvas-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(var(--color-canvas-dot) 1.5px,transparent 1.5px);background-size:24px 24px;pointer-events:none}.canvas-section[data-mode=h] .canvas-grid{width:160%}.canvas-track{position:relative;list-style:none;margin:0;counter-reset:wf-step}.canvas-section[data-mode=h] .canvas-track{display:flex;align-items:center;width:max-content;height:100%;padding-inline:12vw 18vw;gap:clamp(6rem,9.5vw,10rem);will-change:transform}.canvas-section[data-mode=v] .canvas-track{display:flex;flex-direction:column;align-items:center;gap:var(--space-2xl);padding:var(--space-2xl) var(--space-md) var(--space-3xl)}.wf-connectors{position:absolute;top:0;left:0;overflow:visible;pointer-events:none;z-index:var(--z-base)}.wf-step{position:relative;counter-increment:wf-step;z-index:var(--z-raised)}.canvas-section[data-mode=h] .wf-step{flex:none;transform:translateY(var(--dy, 0px))}.canvas-section[data-mode=v] .wf-step{display:grid;justify-items:center;gap:var(--space-md);width:100%;max-width:24rem}.wf-node-wrap{display:grid;justify-items:center;gap:var(--space-xs);width:10rem}.wf-node{position:relative;display:grid;place-items:center;width:6.5rem;height:6.5rem;background:var(--color-surface);border:2px solid var(--color-rule);border-radius:var(--radius-node);box-shadow:var(--shadow-whisper);transition:border-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}.wf-step[data-shape=trigger] .wf-node{border-start-start-radius:3.25rem;border-end-start-radius:3.25rem}.wf-node-icon{color:var(--color-neutral);transition:color var(--dur-short) var(--ease-out)}.wf-node-icon svg{display:block;width:2.1rem;height:2.1rem}.wf-step.is-active .wf-node{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent);box-shadow:0 0 0 1px var(--color-accent),0 0 26px oklch(from var(--color-accent-glow) l c h / .28)}.wf-step.is-active .wf-node-icon{color:var(--color-accent-ink)}.wf-badge{position:absolute;top:-.55rem;right:-.55rem;display:grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--color-success);color:#f4faf5;transform:scale(0);transition:transform var(--dur-short) var(--ease-out)}.wf-badge svg{width:.85rem;height:.85rem}.wf-step.is-active .wf-badge{transform:scale(1)}.wf-port{position:absolute;width:.7rem;height:.7rem;border-radius:50%;background:var(--color-connector);transition:background-color var(--dur-short) var(--ease-out)}.wf-step.is-active .wf-port{background:var(--color-accent)}.canvas-section[data-mode=h] .wf-port-in{left:-.35rem;top:50%;translate:0 -50%}.canvas-section[data-mode=h] .wf-port-out{right:-.35rem;top:50%;translate:0 -50%}.canvas-section[data-mode=v] .wf-port-in{top:-.35rem;left:50%;translate:-50% 0}.canvas-section[data-mode=v] .wf-port-out{bottom:-.35rem;left:50%;translate:-50% 0}.wf-node-title{font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;letter-spacing:0;text-align:center;line-height:1.3}.wf-node-title:before{content:counter(wf-step,decimal-leading-zero) " ";font-family:var(--font-mono);font-weight:400;color:var(--color-neutral)}.wf-node-type{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-neutral)}.wf-note{background:var(--color-note-bg);color:var(--color-note-ink);padding:var(--space-md) 1.1rem;border-radius:8px;box-shadow:var(--shadow-whisper);font-size:var(--text-sm);line-height:1.55;white-space:pre-line}.canvas-section[data-mode=h] .wf-note{position:absolute;width:16.5rem;left:calc(50% - 8.25rem + var(--note-dx, 0px));opacity:0;translate:0 10px;transition:opacity var(--dur-long) var(--ease-out),translate var(--dur-long) var(--ease-out)}.canvas-section[data-mode=h] .wf-step[data-note=above] .wf-note{bottom:calc(100% + var(--space-lg))}.canvas-section[data-mode=h] .wf-step[data-note=below] .wf-note{top:calc(100% + var(--space-md))}.canvas-section[data-mode=h] .wf-step.is-active .wf-note{opacity:1;translate:0 0}.canvas-section[data-mode=v] .wf-note{max-width:21rem}.wf-link{fill:none;stroke:var(--color-connector);stroke-width:2;transition:stroke var(--dur-short) var(--ease-out)}.wf-link.is-active{stroke:var(--color-accent)}.wf-link-loop{stroke-dasharray:4 6}.wf-flow{fill:none;stroke:var(--color-accent-glow);stroke-width:2;stroke-dasharray:7 9;stroke-linecap:round;opacity:0;transition:opacity var(--dur-short) var(--ease-out)}.wf-flow.is-active{opacity:1;animation:wf-flow-dash .9s linear infinite}@keyframes wf-flow-dash{to{stroke-dashoffset:-16}}.wf-pulse{fill:var(--color-accent-glow);filter:url(#wf-glow);opacity:0;transition:opacity var(--dur-short) var(--ease-out)}.wf-pulse.is-active{opacity:1}.wf-exit-label{font-family:var(--font-mono);font-size:.8rem;fill:var(--color-neutral)}@media(prefers-reduced-motion:reduce){.wf-flow.is-active{animation:none}.wf-pulse{display:none}}.canvas-progress{position:absolute;bottom:var(--space-lg);left:clamp(1.25rem,5vw,5rem);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-neutral)}.canvas-section[data-mode=v] .canvas-progress{display:none}.section{padding:clamp(2.75rem,7vw,4rem) clamp(1.25rem,5vw,5rem)}.section-head{max-width:72rem;margin-bottom:var(--space-xl)}.section-head h2{font-size:var(--text-2xl);max-width:22ch}.section-lede{margin-top:var(--space-sm);color:var(--color-neutral);font-size:var(--text-md);max-width:48ch}.service-rows{list-style:none;padding:0;max-width:72rem;counter-reset:service}.service-row{counter-increment:service;display:grid;gap:var(--space-2xs) var(--space-lg);padding-block:var(--space-lg);border-block-start:1px solid var(--color-rule)}.service-row:last-child{border-block-end:1px solid var(--color-rule)}@media(min-width:60rem){.service-row{grid-template-columns:3.5rem 1fr 1.4fr;align-items:baseline;padding-block:var(--space-xl)}}.service-row:before{content:counter(service,decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-accent-ink)}.service-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:-.02em}.service-desc{color:var(--color-neutral);font-size:var(--text-md);max-width:52ch}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(14rem,100%),1fr));gap:var(--space-md);list-style:none;padding:0;max-width:72rem}.tool-card{position:relative;padding:var(--space-lg) var(--space-lg) var(--space-lg) calc(var(--space-lg) + .4rem);background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-card);transition:border-color var(--dur-short) var(--ease-out)}@media(hover:hover)and (pointer:fine){.tool-card:hover{border-color:var(--color-neutral)}}.tool-card-featured{grid-column:span 2;border-color:var(--color-accent)}@media(max-width:40rem){.tool-card-featured{grid-column:auto}}.tool-port{position:absolute;left:-.3rem;top:1.9rem;width:.6rem;height:.6rem;border-radius:50%;background:var(--color-connector)}.tool-card-featured .tool-port{background:var(--color-accent)}.tool-name{font-family:var(--font-body);font-size:var(--text-base);font-weight:600;letter-spacing:0}.tool-use{margin-top:var(--space-2xs);color:var(--color-neutral);font-size:var(--text-base)}.project-grid{display:grid;gap:var(--space-lg);list-style:none;padding:0;max-width:72rem}@media(min-width:60rem){.project-grid{grid-template-columns:1.1fr .9fr 1fr;align-items:stretch}}.project-card{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-lg);background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-card);transition:border-color var(--dur-short) var(--ease-out)}@media(hover:hover)and (pointer:fine){.project-card:hover{border-color:var(--color-neutral)}}.project-name{font-family:var(--font-body);font-size:var(--text-md);font-weight:600;letter-spacing:0}.project-desc{color:var(--color-neutral);font-size:var(--text-base)}.project-facts{color:var(--color-accent-ink);font-size:var(--text-base);font-weight:500}.project-stack{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:auto;padding-top:var(--space-sm);border-top:1px solid var(--color-rule)}.project-stack span{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-neutral);border:1px solid var(--color-rule);border-radius:var(--radius-pill);padding:.15rem .6rem}.quote-row{display:grid;gap:var(--space-lg);max-width:72rem}@media(min-width:60rem){.quote-row{grid-template-columns:1.15fr .85fr 1fr;align-items:stretch}}.quote-card{padding:var(--space-lg);background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-card)}.quote-card blockquote p{font-size:var(--text-md);line-height:1.55;color:var(--color-ink)}.quote-card figcaption{display:flex;flex-direction:column;margin-top:var(--space-md);padding-top:var(--space-sm);border-top:1px solid var(--color-rule)}.quote-name{font-weight:600}.quote-role{color:var(--color-neutral);font-size:var(--text-base)}.contact{border-top:1px solid var(--color-rule);background:var(--color-paper-2)}.contact-inner{display:grid;gap:var(--space-2xl);max-width:72rem}@media(min-width:60rem){.contact-inner{grid-template-columns:.9fr 1.1fr;gap:var(--space-3xl)}}.contact-left h2{font-size:var(--text-2xl)}.contact-alt{margin-top:var(--space-xl);color:var(--color-neutral);font-size:var(--text-base)}.contact-alt a{font-family:var(--font-mono)}.contact-form{display:grid;gap:var(--space-lg)}.field{display:grid;gap:var(--space-2xs)}.field label{font-size:var(--text-sm);font-weight:500}.field input,.field textarea{font:inherit;color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-card);padding:.7rem .9rem;transition:border-color var(--dur-micro) var(--ease-out)}.field textarea{resize:vertical;min-height:8rem}.field input:hover,.field textarea:hover{border-color:var(--color-neutral)}.field input:focus-visible,.field textarea:focus-visible{outline:2px solid var(--color-focus);outline-offset:0;border-color:transparent}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--color-error)}.hp-field{position:absolute;left:-9999px;height:0;width:0;opacity:0}.btn-submit{justify-self:start}.form-status{min-height:1.5em;font-size:var(--text-sm)}.form-status[data-kind=success]{color:var(--color-success)}.form-status[data-kind=error]{color:var(--color-error)}.site-foot{border-top:1px solid var(--color-rule);padding:var(--space-lg) clamp(1.25rem,5vw,5rem)}.foot-line{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-lg);align-items:baseline;color:var(--color-neutral);font-size:var(--text-sm);max-width:none}.foot-wordmark{font-family:var(--font-mono);font-weight:600;color:var(--color-ink)}.foot-line a{color:var(--color-neutral)}
