@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--radius-lg:.5rem;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-geist), ui-sans-serif, system-ui, sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:0}.top-\[calc\(100\%\+0\.5rem\)\]{top:calc(100% + .5rem)}.top-\[calc\(100\%\+0\.75rem\)\]{top:calc(100% + .75rem)}.right-0{right:0}.isolate{isolation:isolate}.z-20{z-index:20}.z-40{z-index:40}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-auto{height:auto}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-20{min-height:calc(var(--spacing) * 20)}.w-11{width:calc(var(--spacing) * 11)}.w-80{width:calc(var(--spacing) * 80)}.w-\[min\(20rem\,calc\(100vw-2rem\)\)\]{width:min(20rem,100vw - 2rem)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.min-w-0{min-width:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-surface{border-radius:var(--surface-radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--border)}.bg-canvas\/90{background-color:var(--canvas)}@supports (color:color-mix(in lab, red, red)){.bg-canvas\/90{background-color:color-mix(in oklab, var(--canvas) 90%, transparent)}}.bg-surface{background-color:var(--surface)}.bg-surface-muted{background-color:var(--surface-muted)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.text-left{text-align:left}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-accent-green{color:var(--accent-green)}.text-accent-purple{color:var(--accent-purple)}.text-text-muted{color:var(--text-muted)}.text-text-primary{color:var(--text-primary)}.text-text-secondary{color:var(--text-secondary)}.uppercase{text-transform:uppercase}.no-underline{text-decoration-line:none}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-surface{--tw-shadow:var(--surface-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-surface:hover{background-color:var(--surface)}.hover\:bg-surface-muted:hover{background-color:var(--surface-muted)}}@media (min-width:40rem){.sm\:w-14{width:calc(var(--spacing) * 14)}.sm\:py-16{padding-block:calc(var(--spacing) * 16)}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}}}.project-intro-layout{grid-template-columns:minmax(0,1.15fr) minmax(20rem,.85fr);align-items:end;gap:clamp(3rem,8vw,9rem);display:grid}@media (max-width:63.99rem){.project-intro-layout{grid-template-columns:minmax(0,1fr);gap:2.5rem}}.project-intro-card{--intro-accent:var(--accent-blue);--intro-soft:var(--accent-blue-soft);border:1px solid var(--intro-accent);width:100%;max-width:42rem;padding:clamp(1.5rem,3vw,2.5rem);position:relative}@supports (color:color-mix(in lab, red, red)){.project-intro-card{border:1px solid color-mix(in srgb, var(--intro-accent) 32%, var(--border))}}.project-intro-card{border-radius:calc(var(--surface-radius) * 1.35);background:radial-gradient(circle at 100% 0%, var(--intro-soft), transparent 48%), var(--surface)}@supports (color:color-mix(in lab, red, red)){.project-intro-card{background:radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--intro-soft) 74%, transparent), transparent 48%), var(--surface)}}.project-intro-card{box-shadow:var(--surface-shadow)}.project-intro-card[data-accent=purple]{--intro-accent:var(--accent-purple);--intro-soft:var(--accent-purple-soft)}.project-intro-card[data-accent=green]{--intro-accent:var(--accent-green);--intro-soft:var(--accent-green-soft)}.project-intro-card:before{background:var(--intro-accent);content:"";inset-block:1.5rem;border-radius:999px;width:3px;position:absolute;left:-1px}.project-intro-card>span{color:var(--intro-accent);letter-spacing:.12em;font-size:.72rem;font-weight:700}.project-intro-card h2{color:var(--text-primary);letter-spacing:-.035em;margin:1rem 0 0;font-size:clamp(1.65rem,2.5vw,2.7rem);line-height:1.15}.project-intro-card p{color:var(--text-secondary);margin:1rem 0 0;font-size:1rem;line-height:1.65}.project-intro-card a{min-height:2.75rem;color:var(--intro-accent);border-radius:.5rem;align-items:center;gap:.55rem;margin-top:1.5rem;font-weight:650;text-decoration:none;display:inline-flex}.project-intro-card a:hover{text-underline-offset:.2em;text-decoration:underline}.project-intro-card a:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.project-intro-card .project-intro-card__disclosure{color:var(--text-muted);font-size:.75rem}:root{--canvas:#fbfaf7;--surface:#fffefa;--surface-muted:#f4f2ed;--text-primary:#101828;--text-secondary:#344054;--text-muted:#667085;--border:#dedfd8;--accent-purple:#6d5ce7;--accent-purple-soft:#efedff;--accent-blue:#2f7df4;--accent-blue-soft:#eaf2ff;--accent-green:#4f8f32;--accent-green-soft:#edf6e8;--focus-ring:#2563eb;--content-width:100rem;--page-gutter:clamp(1rem, 4vw, 3rem);--section-space:clamp(2rem, 4vw, 7rem);--surface-radius:1rem;--surface-shadow:0 16px 40px -28px #10182847}[data-theme=dark]{--canvas:#101722;--surface:#172131;--surface-muted:#1d2939;--text-primary:#f7f4ed;--text-secondary:#d0d5dd;--text-muted:#98a2b3;--border:#344054;--accent-purple:#a89cff;--accent-purple-soft:#292547;--accent-blue:#78adff;--accent-blue-soft:#1b3150;--accent-green:#8bcf70;--accent-green-soft:#223c2a;--focus-ring:#9cc2ff;--surface-shadow:0 18px 48px -30px #000000b8}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--canvas);scroll-behavior:smooth}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--canvas);min-height:100svh;color:var(--text-primary);font-family:var(--font-geist), ui-sans-serif, system-ui, sans-serif;text-rendering:optimizelegibility;font-size:1rem;line-height:1.6}h1,h2,h3{color:var(--text-primary);letter-spacing:-.025em;text-wrap:balance;font-weight:600}h1{font-size:clamp(2.5rem,6vw,4.5rem);line-height:1.05}h2{font-size:clamp(1.75rem,3vw,2.5rem);line-height:1.15}p{color:var(--text-secondary)}a{color:inherit;text-underline-offset:.2em;text-decoration-line:underline;text-decoration-thickness:.08em}.site-header a{text-decoration-line:none}:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}::selection{background:var(--accent-blue-soft);color:var(--text-primary)}.page-container{width:min(calc(100% - (var(--page-gutter) * 2)), var(--content-width));margin-inline:auto}.section-spacing{padding-block:var(--section-space)}.theme-toggle-sun{display:none}.hero{min-height:min(100svh - 5rem,50rem);overflow:clip}.hero__layout{align-items:start;gap:clamp(3.5rem,7vw,7rem);display:grid}.hero__copy{z-index:1;max-width:37rem;position:relative}.hero__label{border:1px solid var(--accent-purple);align-items:center;min-height:2rem;margin-bottom:1.25rem;padding-inline:.9rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.hero__label{border:1px solid color-mix(in srgb, var(--accent-purple) 42%, transparent)}}.hero__label{color:var(--accent-purple);letter-spacing:.09em;text-transform:uppercase;border-radius:999px;font-size:.75rem;font-weight:650;line-height:1}.hero__title{max-width:12ch;font-size:clamp(2.75rem,5vw,5.5rem);line-height:.98}.hero__title-line{display:inline}.hero__supporting-copy{max-width:35rem;margin-top:2rem;font-size:clamp(1.05rem,1.3vw,1.25rem);line-height:1.75}.project-canvas{--connector-purple-rest:var(--accent-purple)}@supports (color:color-mix(in lab, red, red)){.project-canvas{--connector-purple-rest:color-mix(in srgb, var(--accent-purple) 100%, var(--border))}}.project-canvas{--connector-blue-rest:var(--accent-blue)}@supports (color:color-mix(in lab, red, red)){.project-canvas{--connector-blue-rest:color-mix(in srgb, var(--accent-blue) 100%, var(--border))}}.project-canvas{--connector-green-rest:var(--accent-green)}@supports (color:color-mix(in lab, red, red)){.project-canvas{--connector-green-rest:color-mix(in srgb, var(--accent-green) 100%, var(--border))}}.project-canvas{gap:1rem;display:grid;position:relative}.project-canvas__network,.project-canvas__connectors{display:none}.project-canvas__mobile-notice{max-width:36rem;color:var(--text-muted);margin-bottom:.5rem;font-size:.82rem;line-height:1.55}.project-card{--project-accent:var(--accent-purple);--project-accent-soft:var(--accent-purple-soft);cursor:pointer;border:1px solid var(--project-accent);flex-direction:column;min-height:17.5rem;padding:clamp(1.35rem,2.5vw,2rem);display:flex;position:relative;overflow:visible}@supports (color:color-mix(in lab, red, red)){.project-card{border:1px solid color-mix(in srgb, var(--project-accent) 48%, var(--border))}}.project-card{border-radius:var(--surface-radius);background:var(--surface)}@supports (color:color-mix(in lab, red, red)){.project-card{background:color-mix(in srgb, var(--surface) 95%, transparent)}}.project-card{box-shadow:var(--surface-shadow);color:var(--text-primary);text-decoration-line:none;transition:border-color .2s,box-shadow .2s,transform .2s}.project-card:before{border-left:4px solid var(--project-accent);border-radius:inherit;content:"";opacity:.55;pointer-events:none;transition:opacity .2s;position:absolute;inset:-1px}.project-card:after{z-index:1;background:linear-gradient(to bottom, var(--project-accent), var(--next-project-accent));content:"";pointer-events:none;width:1.5px;height:1rem;position:absolute;top:100%;left:50%;transform:translate(-50%)}.project-card--purple{--project-accent:var(--accent-purple);--project-accent-soft:var(--accent-purple-soft);--next-project-accent:var(--accent-blue)}.project-card--blue{--project-accent:var(--accent-blue);--project-accent-soft:var(--accent-blue-soft);--next-project-accent:var(--accent-green)}.project-card--green{--project-accent:var(--accent-green);--project-accent-soft:var(--accent-green-soft)}.project-card--position-3:after{display:none}.project-card:hover,.project-card:focus-visible{border-color:var(--project-accent);box-shadow:0 20px 44px -28px var(--project-accent)}@supports (color:color-mix(in lab, red, red)){.project-card:hover,.project-card:focus-visible{box-shadow:0 20px 44px -28px color-mix(in srgb, var(--project-accent) 42%, transparent)}}.project-card:hover,.project-card:focus-visible{transform:translateY(-3px)scale(1.008)}.project-card:hover:before,.project-card:focus-visible:before{opacity:1}.project-card__icon{background:var(--project-accent-soft);width:3rem;height:3rem;color:var(--project-accent);border-radius:.75rem;place-items:center;margin-bottom:1.25rem;display:grid}.project-card__icon svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:1.9rem;height:1.9rem}.project-card__title{color:var(--text-primary);letter-spacing:.025em;text-transform:uppercase;font-size:.95rem;font-weight:650;line-height:1.3}.project-card__description{color:var(--text-secondary);margin-top:.8rem;font-size:.95rem;line-height:1.6}.project-card__tags{flex-wrap:wrap;gap:.45rem;margin-top:auto;padding-top:1.25rem;display:flex}.project-card__tags span{background:var(--project-accent-soft);color:var(--project-accent);letter-spacing:.045em;border-radius:999px;padding:.3rem .55rem;font-size:.68rem;font-weight:650;line-height:1}.project-card__action{color:var(--project-accent);opacity:1;margin-top:1rem;font-size:.8rem;font-weight:650}.strengths-strip{padding-block:clamp(3.5rem,2.5vw,2.75rem)}.strengths-strip__list{border:1px solid var(--border);border-radius:calc(var(--surface-radius) + .25rem);background:var(--surface);margin:0;padding:.4rem clamp(.35rem,1.5vw,1rem);display:grid;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.strengths-strip__list{background:color-mix(in srgb, var(--surface) 96%, transparent)}}.strengths-strip__list{list-style:none;box-shadow:0 16px 40px -36px #10182859}.strengths-strip__item{grid-template-columns:2.75rem minmax(0,1fr);align-items:center;gap:.9rem;min-width:0;padding:1.15rem .85rem;display:grid}.strengths-strip__item+.strengths-strip__item{border-top:1px solid var(--border)}.strengths-strip__icon{background:var(--accent-blue-soft);width:2.75rem;height:2.75rem;color:var(--accent-blue);border-radius:.8rem;place-items:center;display:grid}.strengths-strip__icon--purple{background:var(--accent-purple-soft);color:var(--accent-purple)}.strengths-strip__icon--green{background:var(--accent-green-soft);color:var(--accent-green)}.strengths-strip__icon svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:1.75rem;height:1.75rem}.strengths-strip__copy{gap:.2rem;display:grid}.strengths-strip__copy strong{color:var(--text-primary);font-size:.95rem;font-weight:650;line-height:1.35}.strengths-strip__copy>span{color:var(--text-secondary);font-size:.86rem;line-height:1.5}.about-snapshot__panel{border:1px solid var(--border);border-radius:calc(var(--surface-radius) + .35rem);background:var(--surface);gap:clamp(2rem,5vw,4rem);padding:clamp(1.25rem,3vw,3rem);display:grid}@supports (color:color-mix(in lab, red, red)){.about-snapshot__panel{background:color-mix(in srgb, var(--surface) 96%, transparent)}}.about-snapshot__panel{box-shadow:var(--surface-shadow)}.about-snapshot__portrait{aspect-ratio:3/4;border:1px solid var(--border);border-radius:var(--surface-radius);background:var(--surface-muted);width:min(100%,21rem);overflow:hidden}.about-snapshot__portrait img{object-fit:cover;object-position:center 30%;transform-origin:50% 44%;width:100%;height:100%;transform:scale(1.18)}.about-snapshot__copy{align-self:center}.about-snapshot__label{color:var(--accent-purple);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.85rem;font-size:.75rem;font-weight:650;line-height:1}.about-snapshot__copy h2{max-width:13ch}.about-snapshot__summary{max-width:36rem;margin-top:1.5rem;font-size:clamp(1rem,1.2vw,1.1rem);line-height:1.75}.about-snapshot__link{color:var(--accent-purple);align-items:center;gap:.45rem;margin-top:1.75rem;font-weight:650;text-decoration-line:none;display:inline-flex}.about-snapshot__link span{transition:transform .18s}.about-snapshot__link:hover span,.about-snapshot__link:focus-visible span{transform:translate(.2rem)}.about-capabilities{gap:1.25rem;margin:0;padding:0;list-style:none;display:grid;position:relative}.about-capabilities:before{background:linear-gradient(to bottom, var(--accent-purple), var(--accent-blue), var(--accent-green));width:1px;position:absolute;top:1.5rem;bottom:1.5rem;left:1.5rem}@supports (color:color-mix(in lab, red, red)){.about-capabilities:before{background:linear-gradient(to bottom, color-mix(in srgb, var(--accent-purple) 38%, var(--border)), color-mix(in srgb, var(--accent-blue) 32%, var(--border)), color-mix(in srgb, var(--accent-green) 34%, var(--border)))}}.about-capabilities:before{content:""}.about-capabilities__item{grid-template-columns:3rem minmax(0,1fr);align-items:center;gap:1rem;display:grid;position:relative}.about-capabilities__icon{z-index:1;border:1px solid var(--accent-purple);place-items:center;width:3rem;height:3rem;display:grid}@supports (color:color-mix(in lab, red, red)){.about-capabilities__icon{border:1px solid color-mix(in srgb, var(--accent-purple) 32%, var(--border))}}.about-capabilities__icon{background:var(--surface);color:var(--accent-purple);border-radius:50%}.about-capabilities__icon svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:1.55rem;height:1.55rem}.about-capabilities__copy{gap:.2rem;display:grid}.about-capabilities__copy strong{color:var(--text-primary);font-size:.95rem;font-weight:650;line-height:1.35}.about-capabilities__copy>span{color:var(--text-secondary);font-size:.88rem;line-height:1.5}.contact-banner{scroll-margin-top:6rem}#work{scroll-margin-top:5rem}.contact-banner__panel{isolation:isolate;border:1px solid var(--accent-purple);position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.contact-banner__panel{border:1px solid color-mix(in srgb, var(--accent-purple) 22%, var(--border))}}.contact-banner__panel{border-radius:calc(var(--surface-radius) + .5rem);background:linear-gradient(118deg, var(--accent-purple-soft) 0%, var(--accent-blue-soft) 52%, var(--accent-green-soft) 100%)}@supports (color:color-mix(in lab, red, red)){.contact-banner__panel{background:linear-gradient(118deg, color-mix(in srgb, var(--accent-purple-soft) 70%, var(--surface)) 0%, color-mix(in srgb, var(--accent-blue-soft) 56%, var(--surface)) 52%, color-mix(in srgb, var(--accent-green-soft) 64%, var(--surface)) 100%)}}.contact-banner__panel{box-shadow:var(--surface-shadow)}.contact-banner__network{z-index:-1;opacity:.5;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.contact-banner__paths{fill:none;stroke:var(--accent-purple)}@supports (color:color-mix(in lab, red, red)){.contact-banner__paths{stroke:color-mix(in srgb, var(--accent-purple) 24%, transparent)}}.contact-banner__paths{stroke-linecap:round;stroke-width:1.2px;vector-effect:non-scaling-stroke}.contact-banner__paths path:nth-child(2){stroke:var(--accent-blue)}@supports (color:color-mix(in lab, red, red)){.contact-banner__paths path:nth-child(2){stroke:color-mix(in srgb, var(--accent-blue) 25%, transparent)}}.contact-banner__paths path:nth-child(n+3){stroke:var(--accent-green)}@supports (color:color-mix(in lab, red, red)){.contact-banner__paths path:nth-child(n+3){stroke:color-mix(in srgb, var(--accent-green) 22%, transparent)}}.contact-banner__nodes{fill:var(--accent-purple)}@supports (color:color-mix(in lab, red, red)){.contact-banner__nodes{fill:color-mix(in srgb, var(--accent-purple) 45%, transparent)}}.contact-banner__nodes circle:nth-child(2n){fill:var(--accent-blue)}@supports (color:color-mix(in lab, red, red)){.contact-banner__nodes circle:nth-child(2n){fill:color-mix(in srgb, var(--accent-blue) 42%, transparent)}}.contact-banner__nodes circle:nth-child(n+4){fill:var(--accent-green)}@supports (color:color-mix(in lab, red, red)){.contact-banner__nodes circle:nth-child(n+4){fill:color-mix(in srgb, var(--accent-green) 42%, transparent)}}.contact-banner__content{z-index:1;gap:2rem;padding:clamp(2rem,5vw,4.75rem);display:grid;position:relative}.contact-banner__label{color:var(--accent-purple);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.9rem;font-size:.75rem;font-weight:650;line-height:1}.contact-banner__content h2{max-width:17ch;font-size:clamp(2rem,4.3vw,3.75rem)}.contact-banner__copy{max-width:43rem;margin-top:1.25rem;font-size:clamp(1rem,1.2vw,1.12rem);line-height:1.7}.contact-banner__actions{flex-wrap:wrap;align-items:center;gap:.8rem;display:flex}.contact-banner__action{border:1px solid #0000;border-radius:.75rem;justify-content:center;align-items:center;gap:.55rem;min-height:3rem;padding:.75rem 1.1rem;font-size:.92rem;font-weight:650;line-height:1;text-decoration-line:none;transition:background-color .18s,border-color .18s,box-shadow .18s,transform .18s;display:inline-flex}.contact-banner__action svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:1.15rem;height:1.15rem}.contact-banner__action--primary{background:var(--text-primary);color:var(--canvas);box-shadow:0 12px 26px -20px #101828cc}.contact-banner__action--secondary{border-color:var(--text-primary)}@supports (color:color-mix(in lab, red, red)){.contact-banner__action--secondary{border-color:color-mix(in srgb, var(--text-primary) 18%, var(--border))}}.contact-banner__action--secondary{background:var(--surface)}@supports (color:color-mix(in lab, red, red)){.contact-banner__action--secondary{background:color-mix(in srgb, var(--surface) 78%, transparent)}}.contact-banner__action--secondary{color:var(--text-primary)}.contact-banner__action:hover,.contact-banner__action:focus-visible{transform:translateY(-2px)}.contact-banner__action--primary:hover,.contact-banner__action--primary:focus-visible{box-shadow:0 16px 30px -20px #101828e6}.contact-banner__action--secondary:hover,.contact-banner__action--secondary:focus-visible{border-color:var(--accent-purple)}@supports (color:color-mix(in lab, red, red)){.contact-banner__action--secondary:hover,.contact-banner__action--secondary:focus-visible{border-color:color-mix(in srgb, var(--accent-purple) 48%, var(--border))}}.contact-banner__action--secondary:hover,.contact-banner__action--secondary:focus-visible{background:var(--surface)}@supports (color:color-mix(in lab, red, red)){.contact-banner__action--secondary:hover,.contact-banner__action--secondary:focus-visible{background:color-mix(in srgb, var(--surface) 94%, transparent)}}.site-footer{border-top:1px solid var(--border);background:var(--surface-muted)}@supports (color:color-mix(in lab, red, red)){.site-footer{background:color-mix(in srgb, var(--surface-muted) 46%, var(--canvas))}}.site-footer a{text-decoration-line:none}.site-footer__grid{gap:clamp(1.5rem,2.5vw,2rem);padding-block:clamp(2rem,3vw,2.75rem);display:grid}.site-footer__identity{max-width:23rem}.site-footer__home{align-items:center;gap:.9rem;display:inline-flex}.site-footer__logo{flex:none;width:3.5rem;height:auto}.site-footer__brand,.site-footer__descriptor{display:block}.site-footer__brand{color:var(--text-primary);letter-spacing:.04em;font-size:1.25rem;font-weight:650}.site-footer__descriptor{font-size:.9rem}.site-footer__summary{margin-top:1rem;font-size:.92rem;line-height:1.6}.site-footer__column h2{color:var(--text-muted);letter-spacing:.09em;text-transform:uppercase;margin-bottom:.8rem;font-size:.7rem;font-weight:650;line-height:1}.site-footer__column ul{gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.site-footer__column a{min-height:2.5rem;color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.88rem;line-height:1.4;transition:color .16s,transform .16s;display:inline-flex}.site-footer__column a:hover,.site-footer__column a:focus-visible{color:var(--text-primary);transform:translate(.15rem)}.site-footer__column a svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4px;flex:none;width:.9rem;height:.9rem}.site-footer__utility{border-top:1px solid var(--border);min-height:3.5rem;color:var(--text-muted);justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.site-footer__utility p{color:inherit;font-size:.78rem}.site-footer__to-top{min-height:2.75rem;color:var(--text-secondary);align-items:center;gap:.5rem;font-size:.8rem;font-weight:600;display:inline-flex}.site-footer__to-top svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:1.1rem;height:1.1rem;transition:transform .16s}.site-footer__to-top:hover svg,.site-footer__to-top:focus-visible svg{transform:translateY(-.18rem)}@media (min-width:36rem){.site-footer__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.site-footer__identity{grid-column:1/-1}}@media (min-width:48rem){.contact-banner__content{grid-template-columns:minmax(0,1.45fr) auto;align-items:end}.contact-banner__actions{justify-content:flex-end}.strengths-strip__list{grid-template-columns:repeat(2,minmax(0,1fr))}.strengths-strip__item+.strengths-strip__item{border-top:0}.strengths-strip__item:nth-child(2n){border-left:1px solid var(--border)}.strengths-strip__item:nth-child(n+3){border-top:1px solid var(--border)}.about-snapshot__panel{grid-template-columns:minmax(15rem,.8fr) minmax(18rem,1.2fr);align-items:center}.about-capabilities{grid-column:1/-1;max-width:38rem}.project-canvas{grid-template-columns:repeat(2,minmax(0,1fr))}.project-canvas__mobile-notice{grid-column:1/-1;display:none}.project-card:after{display:none}}@media (min-width:72rem){.site-footer__grid{grid-template-columns:minmax(18rem,1.45fr) repeat(4,minmax(8rem,.72fr))}.site-footer__identity{grid-column:auto}.hero__title-line{white-space:nowrap;display:block}.strengths-strip__list{grid-template-columns:repeat(4,minmax(0,1fr))}.strengths-strip__item:nth-child(n){border-top:0}.strengths-strip__item+.strengths-strip__item{border-left:1px solid var(--border)}.about-snapshot__panel{grid-template-columns:minmax(15rem,.78fr) minmax(19rem,1fr) minmax(20rem,1.12fr);gap:clamp(2.5rem,4vw,4.5rem)}.about-capabilities{grid-column:auto}.hero__layout{grid-template-columns:minmax(21rem,.72fr) minmax(38rem,1.28fr)}.project-canvas{min-height:42rem;display:block}.project-canvas__network,.project-canvas__connectors{width:100%;height:100%;display:block;position:absolute;inset:0;overflow:hidden}.project-canvas__network{z-index:0;opacity:.85}.project-canvas__connectors{z-index:1}.network-dot{fill:var(--accent-blue)}@supports (color:color-mix(in lab, red, red)){.network-dot{fill:color-mix(in srgb, var(--accent-blue) 24%, transparent)}}.network-flow{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:.8px;vector-effect:non-scaling-stroke;transition:opacity .32s}.network-flow circle{fill:currentColor;stroke:none}.network-flow--blue{color:var(--accent-blue)}@supports (color:color-mix(in lab, red, red)){.network-flow--blue{color:color-mix(in srgb, var(--accent-blue) 50%, transparent)}}.network-flow--purple{color:var(--accent-purple)}@supports (color:color-mix(in lab, red, red)){.network-flow--purple{color:color-mix(in srgb, var(--accent-purple) 48%, transparent)}}.network-flow--green{color:var(--accent-green)}@supports (color:color-mix(in lab, red, red)){.network-flow--green{color:color-mix(in srgb, var(--accent-green) 48%, transparent)}}.network-traces{fill:none;opacity:.68}.network-traces--blue{color:var(--accent-blue)}@supports (color:color-mix(in lab, red, red)){.network-traces--blue{color:color-mix(in srgb, var(--accent-blue) 82%, transparent)}}.network-traces--purple{color:var(--accent-purple)}@supports (color:color-mix(in lab, red, red)){.network-traces--purple{color:color-mix(in srgb, var(--accent-purple) 78%, transparent)}}.network-traces--green{color:var(--accent-green)}@supports (color:color-mix(in lab, red, red)){.network-traces--green{color:color-mix(in srgb, var(--accent-green) 78%, transparent)}}.network-trace{stroke:currentColor;stroke-dasharray:18 280;stroke-linecap:round;stroke-width:1.45px;vector-effect:non-scaling-stroke}.network-trace--medium{animation:22s linear infinite network-trace-medium}.network-trace--slow{stroke-dasharray:10 360;animation:30s linear infinite network-trace-slow}.network-trace--drift{animation:26s linear infinite network-trace-medium}.network-traces--blue .network-trace--medium{animation-delay:-4s}.network-traces--blue .network-trace--slow{animation-delay:-18s}.network-traces--blue .network-trace--drift{animation-delay:-13s}.network-traces--purple .network-trace--medium{animation-delay:-11s}.network-traces--purple .network-trace--slow{animation-delay:-6s}.network-traces--purple .network-trace--drift{animation-delay:-19s}.network-traces--green .network-trace--medium{animation-delay:-17s}.network-traces--green .network-trace--slow{animation-delay:-24s}.network-traces--green .network-trace--drift{animation-delay:-7s}.connector{fill:none;opacity:.8;stroke-linecap:round;stroke-width:4px;vector-effect:non-scaling-stroke;transition:opacity .22s,stroke-width .22s}.project-canvas:has(.project-card--purple:is(:hover,:focus-visible)) :is(.connector--purple-blue,.connector--purple-green){stroke:var(--accent-purple)}.project-canvas:has(.project-card--blue:is(:hover,:focus-visible)) :is(.connector--purple-blue,.connector--blue-green){stroke:var(--accent-blue)}.project-canvas:has(.project-card--green:is(:hover,:focus-visible)) :is(.connector--purple-green,.connector--blue-green){stroke:var(--accent-green)}:is(.project-canvas:has(.project-card--purple:is(:hover,:focus-visible)) :is(.connector--purple-blue,.connector--purple-green),.project-canvas:has(.project-card--blue:is(:hover,:focus-visible)) :is(.connector--purple-blue,.connector--blue-green),.project-canvas:has(.project-card--green:is(:hover,:focus-visible)) :is(.connector--purple-green,.connector--blue-green)){opacity:1;stroke-width:5px}.project-canvas__mobile-notice{display:none}.project-card{z-index:3;text-align:center;align-items:center;width:40%;height:18rem;min-height:18rem;position:absolute}.project-card--position-1{top:0;left:50%;transform:translate(-50%)}.project-card--position-1:hover,.project-card--position-1:focus-visible{transform:translate(-50%)translateY(-3px)scale(1.008)}.project-card--position-2{bottom:0;left:24%;transform:translate(-50%)}.project-card--position-2:hover,.project-card--position-2:focus-visible{transform:translate(-50%)translateY(-3px)scale(1.008)}.project-card--position-3{bottom:0;left:76%;transform:translate(-50%)}.project-card--position-3:hover,.project-card--position-3:focus-visible{transform:translate(-50%)translateY(-3px)scale(1.008)}.project-card__icon,.project-card__title,.project-card__tags{align-self:center}.project-card__tags{justify-content:center}.project-card__description{text-align:left;width:100%}.project-card--position-1 .project-card__description{text-align:center}.project-card__action{opacity:0;transition:opacity .18s,transform .18s;transform:translateY(.25rem)}.project-card:hover .project-card__action,.project-card:focus-visible .project-card__action{opacity:1;transform:translateY(0)}}@media (min-width:90rem){.hero__layout{grid-template-columns:minmax(25rem,.76fr) minmax(47rem,1.24fr)}}@keyframes network-trace-medium{to{stroke-dashoffset:-596px}}@keyframes network-trace-slow{to{stroke-dashoffset:-740px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-card,.project-card:before,.project-card__action,.network-flow,.network-traces,.connector,.contact-banner__action,.site-footer__column a,.site-footer__to-top svg{transition-duration:.01ms}.network-trace{opacity:0;animation:none}}[data-theme=dark] .theme-toggle-moon{display:none}[data-theme=dark] .theme-toggle-sun{display:block}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}
