:root{--kan-breakpoint-sm:640px;--kan-breakpoint-md:768px;--kan-breakpoint-lg:1024px;--kan-breakpoint-xl:1280px;--kan-color-cyan-50:oklch(98.5% .018 200);--kan-color-cyan-100:oklch(96% .048 200);--kan-color-cyan-200:oklch(93% .086 200);--kan-color-cyan-300:oklch(90% .124 200);--kan-color-cyan-400:oklch(87% .144 200);--kan-color-cyan-500:oklch(84% .14 205);--kan-color-cyan-600:oklch(74% .124 208);--kan-color-cyan-700:oklch(62% .105 211);--kan-color-cyan-800:oklch(51% .087 214);--kan-color-cyan-900:oklch(41% .071 217);--kan-color-cyan-950:oklch(30% .053 220);--kan-color-neutral-50:oklch(98.5% .003 220);--kan-color-neutral-100:oklch(96.5% .005 220);--kan-color-neutral-200:oklch(92.5% .008 220);--kan-color-neutral-300:oklch(87% .011 220);--kan-color-neutral-400:oklch(71% .016 220);--kan-color-neutral-500:oklch(56% .02 220);--kan-color-neutral-600:oklch(45% .02 220);--kan-color-neutral-700:oklch(37% .019 220);--kan-color-neutral-800:oklch(28% .016 220);--kan-color-neutral-900:oklch(21% .014 220);--kan-color-neutral-950:oklch(15.5% .012 220);--kan-color-green-50:oklch(98% .03 150);--kan-color-green-100:oklch(95.5% .06 150);--kan-color-green-200:oklch(91% .1 150);--kan-color-green-300:oklch(86% .14 150);--kan-color-green-400:oklch(80% .17 150);--kan-color-green-500:oklch(72% .18 150);--kan-color-green-600:oklch(63% .16 150);--kan-color-green-700:oklch(53% .135 150);--kan-color-green-800:oklch(44% .11 150);--kan-color-green-900:oklch(37% .09 150);--kan-color-green-950:oklch(27% .065 150);--kan-color-amber-50:oklch(98.5% .011 75);--kan-color-amber-100:oklch(96% .031 75);--kan-color-amber-200:oklch(92.5% .06 75);--kan-color-amber-300:oklch(88% .099 75);--kan-color-amber-400:oklch(84% .135 75);--kan-color-amber-500:oklch(80% .165 75);--kan-color-amber-600:oklch(70% .144 75);--kan-color-amber-700:oklch(58% .119 75);--kan-color-amber-800:oklch(48% .099 75);--kan-color-amber-900:oklch(40% .082 75);--kan-color-amber-950:oklch(29% .06 75);--kan-color-red-50:oklch(97% .014 25);--kan-color-red-100:oklch(94% .029 25);--kan-color-red-200:oklch(89% .056 25);--kan-color-red-300:oklch(82% .098 25);--kan-color-red-400:oklch(73% .162 25);--kan-color-red-500:oklch(64% .21 25);--kan-color-red-600:oklch(57% .21 25);--kan-color-red-700:oklch(50% .185 25);--kan-color-red-800:oklch(43% .155 25);--kan-color-red-900:oklch(37% .125 25);--kan-color-red-950:oklch(26% .09 25);--kan-color-white:oklch(100% 0 0);--kan-color-black:oklch(0% 0 0);--kan-color-bg-canvas:var(--kan-color-neutral-50);--kan-color-bg-surface:var(--kan-color-white);--kan-color-bg-raised:var(--kan-color-neutral-100);--kan-color-bg-inset:var(--kan-color-neutral-200);--kan-color-text-default:var(--kan-color-neutral-900);--kan-color-text-muted:var(--kan-color-neutral-700);--kan-color-text-subtle:var(--kan-color-neutral-600);--kan-color-text-inverse:var(--kan-color-neutral-50);--kan-color-text-accent:var(--kan-color-cyan-800);--kan-color-text-on-accent:var(--kan-color-white);--kan-color-border-subtle:var(--kan-color-neutral-100);--kan-color-border-default:var(--kan-color-neutral-200);--kan-color-border-strong:var(--kan-color-neutral-500);--kan-color-border-focus:var(--kan-color-cyan-700);--kan-color-accent-default:var(--kan-color-cyan-800);--kan-color-accent-hover:var(--kan-color-cyan-900);--kan-color-accent-active:var(--kan-color-cyan-950);--kan-color-accent-subtle:var(--kan-color-cyan-50);--kan-color-status-success-fg:var(--kan-color-green-800);--kan-color-status-success-bg:var(--kan-color-green-50);--kan-color-status-success-border:var(--kan-color-green-300);--kan-color-status-warning-fg:var(--kan-color-amber-800);--kan-color-status-warning-bg:var(--kan-color-amber-50);--kan-color-status-warning-border:var(--kan-color-amber-300);--kan-color-status-danger-fg:var(--kan-color-red-700);--kan-color-status-danger-bg:var(--kan-color-red-50);--kan-color-status-danger-border:var(--kan-color-red-300);--kan-color-status-info-fg:var(--kan-color-cyan-800);--kan-color-status-info-bg:var(--kan-color-cyan-50);--kan-color-status-info-border:var(--kan-color-cyan-300);--kan-font-family-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--kan-font-family-sans:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--kan-font-size-xs:.75rem;--kan-font-size-sm:.875rem;--kan-font-size-md:1rem;--kan-font-size-lg:1.25rem;--kan-font-size-xl:1.5625rem;--kan-font-size-2xl:1.9375rem;--kan-font-size-3xl:2.4375rem;--kan-font-size-4xl:3.0625rem;--kan-font-size-5xl:3.8125rem;--kan-font-weight-regular:400;--kan-font-weight-medium:500;--kan-font-weight-bold:700;--kan-font-line-height-tight:1.15;--kan-font-line-height-normal:1.5;--kan-font-line-height-relaxed:1.7;--kan-duration-fast:.12s;--kan-duration-normal:.2s;--kan-duration-slow:.32s;--kan-easing-standard:cubic-bezier(.2, 0, 0, 1);--kan-easing-emphasized:cubic-bezier(.05, .7, .1, 1);--kan-radius-none:0px;--kan-radius-sm:2px;--kan-radius-md:4px;--kan-radius-lg:8px;--kan-radius-full:9999px;--kan-border-width-thin:1px;--kan-border-width-thick:2px;--kan-space-0:0px;--kan-space-1:4px;--kan-space-2:8px;--kan-space-3:12px;--kan-space-4:16px;--kan-space-6:24px;--kan-space-8:32px;--kan-space-12:48px;--kan-space-16:64px;--kan-space-24:96px;--kan-space-0-5:2px;--kan-space-inset-sm:var(--kan-space-2);--kan-space-inset-md:var(--kan-space-4);--kan-space-inset-lg:var(--kan-space-6);--kan-space-stack-sm:var(--kan-space-2);--kan-space-stack-md:var(--kan-space-4);--kan-space-stack-lg:var(--kan-space-8);--kan-space-inline-sm:var(--kan-space-1);--kan-space-inline-md:var(--kan-space-2);--kan-space-inline-lg:var(--kan-space-4);--kan-typography-heading-1-font-family:var(--kan-font-family-mono);--kan-typography-heading-1-font-size:var(--kan-font-size-4xl);--kan-typography-heading-1-font-weight:var(--kan-font-weight-bold);--kan-typography-heading-1-line-height:var(--kan-font-line-height-tight);--kan-typography-heading-2-font-family:var(--kan-font-family-mono);--kan-typography-heading-2-font-size:var(--kan-font-size-2xl);--kan-typography-heading-2-font-weight:var(--kan-font-weight-bold);--kan-typography-heading-2-line-height:var(--kan-font-line-height-tight);--kan-typography-heading-3-font-family:var(--kan-font-family-mono);--kan-typography-heading-3-font-size:var(--kan-font-size-xl);--kan-typography-heading-3-font-weight:var(--kan-font-weight-bold);--kan-typography-heading-3-line-height:var(--kan-font-line-height-tight);--kan-typography-body-lg-font-family:var(--kan-font-family-sans);--kan-typography-body-lg-font-size:var(--kan-font-size-lg);--kan-typography-body-lg-font-weight:var(--kan-font-weight-regular);--kan-typography-body-lg-line-height:var(--kan-font-line-height-relaxed);--kan-typography-body-md-font-family:var(--kan-font-family-sans);--kan-typography-body-md-font-size:var(--kan-font-size-md);--kan-typography-body-md-font-weight:var(--kan-font-weight-regular);--kan-typography-body-md-line-height:var(--kan-font-line-height-normal);--kan-typography-body-sm-font-family:var(--kan-font-family-sans);--kan-typography-body-sm-font-size:var(--kan-font-size-sm);--kan-typography-body-sm-font-weight:var(--kan-font-weight-regular);--kan-typography-body-sm-line-height:var(--kan-font-line-height-normal);--kan-typography-label-font-family:var(--kan-font-family-mono);--kan-typography-label-font-size:var(--kan-font-size-xs);--kan-typography-label-font-weight:var(--kan-font-weight-medium);--kan-typography-label-line-height:var(--kan-font-line-height-normal);--kan-typography-code-font-family:var(--kan-font-family-mono);--kan-typography-code-font-size:var(--kan-font-size-sm);--kan-typography-code-font-weight:var(--kan-font-weight-regular);--kan-typography-code-line-height:var(--kan-font-line-height-normal);--kan-layout-gutter:var(--kan-space-6);--kan-layout-section-gap:var(--kan-space-24);--kan-layout-content-max-width:var(--kan-breakpoint-lg);--kan-layout-prose-max-width:var(--kan-breakpoint-sm);--kan-focus-ring-color:var(--kan-color-border-focus);--kan-focus-ring-width:var(--kan-border-width-thick);--kan-focus-ring-offset:var(--kan-space-0-5);--kan-motion-duration-fast:var(--kan-duration-fast);--kan-motion-duration-normal:var(--kan-duration-normal);--kan-motion-duration-slow:var(--kan-duration-slow);--kan-motion-easing-standard:var(--kan-easing-standard);--kan-motion-easing-emphasized:var(--kan-easing-emphasized)}[data-theme=dark]{--kan-color-bg-canvas:var(--kan-color-neutral-950);--kan-color-bg-surface:var(--kan-color-neutral-900);--kan-color-bg-raised:var(--kan-color-neutral-800);--kan-color-bg-inset:var(--kan-color-black);--kan-color-text-default:var(--kan-color-neutral-50);--kan-color-text-muted:var(--kan-color-neutral-300);--kan-color-text-subtle:var(--kan-color-neutral-400);--kan-color-text-inverse:var(--kan-color-neutral-900);--kan-color-text-accent:var(--kan-color-cyan-400);--kan-color-text-on-accent:var(--kan-color-neutral-950);--kan-color-border-subtle:var(--kan-color-neutral-800);--kan-color-border-default:var(--kan-color-neutral-700);--kan-color-border-focus:var(--kan-color-cyan-500);--kan-color-accent-default:var(--kan-color-cyan-500);--kan-color-accent-hover:var(--kan-color-cyan-400);--kan-color-accent-active:var(--kan-color-cyan-300);--kan-color-accent-subtle:var(--kan-color-cyan-950);--kan-color-status-success-fg:var(--kan-color-green-300);--kan-color-status-success-bg:var(--kan-color-green-950);--kan-color-status-success-border:var(--kan-color-green-700);--kan-color-status-warning-fg:var(--kan-color-amber-300);--kan-color-status-warning-bg:var(--kan-color-amber-950);--kan-color-status-warning-border:var(--kan-color-amber-700);--kan-color-status-danger-fg:var(--kan-color-red-300);--kan-color-status-danger-bg:var(--kan-color-red-950);--kan-color-status-danger-border:var(--kan-color-red-700);--kan-color-status-info-fg:var(--kan-color-cyan-300);--kan-color-status-info-bg:var(--kan-color-cyan-950);--kan-color-status-info-border:var(--kan-color-cyan-700)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--kan-color-bg-canvas:var(--kan-color-neutral-950);--kan-color-bg-surface:var(--kan-color-neutral-900);--kan-color-bg-raised:var(--kan-color-neutral-800);--kan-color-bg-inset:var(--kan-color-black);--kan-color-text-default:var(--kan-color-neutral-50);--kan-color-text-muted:var(--kan-color-neutral-300);--kan-color-text-subtle:var(--kan-color-neutral-400);--kan-color-text-inverse:var(--kan-color-neutral-900);--kan-color-text-accent:var(--kan-color-cyan-400);--kan-color-text-on-accent:var(--kan-color-neutral-950);--kan-color-border-subtle:var(--kan-color-neutral-800);--kan-color-border-default:var(--kan-color-neutral-700);--kan-color-border-focus:var(--kan-color-cyan-500);--kan-color-accent-default:var(--kan-color-cyan-500);--kan-color-accent-hover:var(--kan-color-cyan-400);--kan-color-accent-active:var(--kan-color-cyan-300);--kan-color-accent-subtle:var(--kan-color-cyan-950);--kan-color-status-success-fg:var(--kan-color-green-300);--kan-color-status-success-bg:var(--kan-color-green-950);--kan-color-status-success-border:var(--kan-color-green-700);--kan-color-status-warning-fg:var(--kan-color-amber-300);--kan-color-status-warning-bg:var(--kan-color-amber-950);--kan-color-status-warning-border:var(--kan-color-amber-700);--kan-color-status-danger-fg:var(--kan-color-red-300);--kan-color-status-danger-bg:var(--kan-color-red-950);--kan-color-status-danger-border:var(--kan-color-red-700);--kan-color-status-info-fg:var(--kan-color-cyan-300);--kan-color-status-info-bg:var(--kan-color-cyan-950);--kan-color-status-info-border:var(--kan-color-cyan-700)}}@media (prefers-reduced-motion:reduce){:root{--kan-motion-duration-fast:0s;--kan-motion-duration-normal:0s;--kan-motion-duration-slow:0s}}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--kan-space-inset-lg)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--kan-color-bg-canvas);color:var(--kan-color-text-default);font-family:var(--kan-typography-body-md-font-family);font-size:var(--kan-typography-body-md-font-size);font-weight:var(--kan-typography-body-md-font-weight);line-height:var(--kan-typography-body-md-line-height);overflow-wrap:break-word;grid-template-rows:auto 1fr auto;min-height:100dvh;margin:0;display:grid}main{gap:var(--kan-space-stack-lg);max-width:var(--kan-layout-content-max-width);padding:var(--kan-space-inset-lg) var(--kan-layout-gutter) var(--kan-layout-section-gap);margin-inline:auto;display:grid}section{gap:var(--kan-space-stack-md);min-width:0;display:grid}@media (width>=768px){main{gap:var(--kan-layout-section-gap)}}h1,h3,p,ul{margin:0}ul{padding:0;list-style:none}.skip-link{z-index:10;padding:var(--kan-space-inset-sm) var(--kan-space-inset-md);background:var(--kan-color-accent-default);color:var(--kan-color-text-on-accent);font-family:var(--kan-typography-label-font-family);position:absolute;inset-block-start:var(--kan-space-inset-sm);inset-inline-start:var(--kan-space-inset-sm);transform:translateY(-300%)}.skip-link:focus{outline:var(--kan-focus-ring-width) solid var(--kan-focus-ring-color);outline-offset:var(--kan-focus-ring-offset);transform:none}.hero,.not-found{gap:var(--kan-space-stack-md);padding-block:var(--kan-space-inset-md) 0}.hero-name{font-family:var(--kan-typography-heading-1-font-family);font-size:min(var(--kan-typography-heading-1-font-size), 10.5vw);font-weight:var(--kan-typography-heading-1-font-weight);line-height:var(--kan-typography-heading-1-line-height)}.hero-role{color:var(--kan-color-text-accent);font-family:var(--kan-typography-heading-3-font-family);font-size:var(--kan-typography-heading-3-font-size);font-weight:var(--kan-typography-heading-3-font-weight)}.hero-headline{max-width:var(--kan-layout-prose-max-width);color:var(--kan-color-text-muted);font-size:var(--kan-typography-body-lg-font-size);line-height:var(--kan-typography-body-lg-line-height)}.hero-links{gap:var(--kan-space-inline-md);flex-wrap:wrap;display:flex}.hero-session{max-width:var(--kan-layout-prose-max-width);margin-block-start:var(--kan-space-stack-sm)}.session-summary{font-family:var(--kan-typography-code-font-family);font-size:var(--kan-typography-code-font-size);line-height:var(--kan-typography-code-line-height);margin-block-start:var(--kan-space-stack-md)}.session-error{color:var(--kan-color-status-danger-fg);font-family:var(--kan-typography-code-font-family);font-size:var(--kan-typography-code-font-size);margin:0}.prose{gap:var(--kan-space-stack-md);max-width:var(--kan-layout-prose-max-width);font-size:var(--kan-typography-body-lg-font-size);line-height:var(--kan-typography-body-lg-line-height);display:grid}kan-plan{max-width:var(--kan-layout-prose-max-width)}.stack-groups{gap:var(--kan-space-stack-lg);display:grid}.stack-group{gap:var(--kan-space-stack-sm);display:grid}.group-name{color:var(--kan-color-text-muted);font-family:var(--kan-typography-label-font-family);font-size:var(--kan-typography-label-font-size);font-weight:var(--kan-typography-label-font-weight);line-height:var(--kan-typography-label-line-height)}.tags,.contact-links{gap:var(--kan-space-inline-sm);flex-wrap:wrap;display:flex}.contact-links{gap:var(--kan-space-inline-lg)}.projects{gap:var(--kan-space-stack-md);display:grid}@media (width>=1024px){.projects{grid-template-columns:repeat(3,minmax(0,1fr))}}.highlights{gap:var(--kan-space-stack-sm);color:var(--kan-color-text-muted);font-size:var(--kan-typography-body-sm-font-size);margin-block-start:var(--kan-space-stack-sm);padding-inline-start:var(--kan-space-inset-md);list-style:outside;display:grid}#about kan-section-heading[level="3"]{margin-block-start:var(--kan-space-stack-md)}@media (width>=1024px){.hero{column-gap:var(--kan-space-inline-lg);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:center;align-items:start}.hero>.hero-session{grid-area:1/2/span 4;max-width:none;margin-block-start:0}.hero>:not(.hero-session){grid-column:1}}.built-intro{gap:var(--kan-space-stack-md);padding-block:var(--kan-space-inset-md) 0}.built-counts{color:var(--kan-color-text-accent);font-family:var(--kan-typography-code-font-family);font-size:var(--kan-typography-code-font-size)}.intent{gap:var(--kan-space-stack-md)}.journey{gap:var(--kan-space-stack-sm);padding:var(--kan-space-inset-md);border:1px solid var(--kan-color-border-subtle);background:var(--kan-color-bg-surface);display:grid}.steps{gap:var(--kan-space-stack-md);margin:0;padding-inline-start:var(--kan-space-inset-lg);display:grid}.step-text{color:var(--kan-color-text-default);font-family:var(--kan-typography-label-font-family);font-size:var(--kan-typography-body-md-font-size);font-weight:var(--kan-typography-label-font-weight);line-height:var(--kan-typography-body-md-line-height)}.behaviors{gap:var(--kan-space-stack-sm);margin-block-start:var(--kan-space-stack-sm);display:grid}.behaviors>li{align-items:baseline;gap:var(--kan-space-inline-sm);font-size:var(--kan-typography-body-sm-font-size);line-height:var(--kan-typography-body-sm-line-height);flex-wrap:wrap;display:flex}.spec-id{font-family:var(--kan-typography-code-font-family)}@media (width>=1024px){.behaviors{grid-template-columns:repeat(2,minmax(0,1fr))}}
