*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.right-0{right:0}.top-0{top:0}.z-10{z-index:10}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mr-4{margin-right:1rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-24{height:6rem}.h-48{height:12rem}.h-full{height:100%}.w-auto{width:auto}.w-full{width:100%}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}.animate-ping{animation:1s cubic-bezier(0,0,.2,1) infinite ping}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.items-center{align-items:center}.justify-center{justify-content:center}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-gradient-to-l{background-image:linear-gradient(to left, var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from:#3b82f6 var(--tw-gradient-from-position);--tw-gradient-to:#3b82f600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from:#22c55e var(--tw-gradient-from-position);--tw-gradient-to:#22c55e00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from:#ef4444 var(--tw-gradient-from-position);--tw-gradient-to:#ef444400 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to:#eab308 var(--tw-gradient-to-position)}.object-contain{object-fit:contain}.p-3{padding:.75rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-6xl{font-size:3.75rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-\[\#333333\]{--tw-text-opacity:1;color:rgb(51 51 51/var(--tw-text-opacity,1))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-property:box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}:root{--background:#19232d;--foreground:#e7edf1;--muted:#a0b0be;--line:#ffffff12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scrollbar-gutter:stable;scroll-behavior:smooth;scroll-padding-top:110px}body{background:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;--background:#19232d;--foreground:#e7edf1;--muted:#a0b0be;--line:#ffffff12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:radial-gradient(at 78% 40%,#1d759a16,#0000 48%),radial-gradient(at 56% 65%,#29b09208,#0000 45%),#19232d;margin:0;font-family:Inter,Helvetica Neue,Arial,sans-serif}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline-offset:6px;outline:2px solid #42cbb5}::selection{color:inherit;background:#32baa855}.skip-link{z-index:100;background:var(--background);padding:12px;position:fixed;top:-70px;left:20px}.skip-link:focus{top:10px}.site-header{z-index:20;justify-content:space-between;align-items:center;gap:25px;max-width:1440px;margin:auto;padding:32px 6%;display:flex;position:relative}.wordmark{letter-spacing:-1.5px;font-size:25px;font-weight:700}.wordmark span{color:#40cbb2}.navigation-dock{background:#e4ebee;border:1px solid #d2dfe5;border-radius:40px;gap:4px;padding:6px;display:flex;box-shadow:0 8px 24px #00000008}.navigation-dock a{text-align:center;min-width:78px;color:var(--muted);border-radius:30px;padding:10px 18px;font-size:12px;transition:color .2s,transform .25s;position:relative}.navigation-dock a:hover{color:var(--foreground);transform:translateY(-2px)}.nav-label{z-index:1;position:relative}.nav-selection{pointer-events:none;position:absolute;inset:0}.nav-cell{border-radius:30px;position:absolute;inset:0}.navigation-dock a[aria-current=page]{color:#176a67}.header-social{color:var(--muted);gap:12px;font-size:12px;transition:color .2s;display:flex}.header-social:hover{color:var(--foreground)}body .navigation-dock{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffff04;border-color:#ffffff12;box-shadow:0 8px 24px #0000000b}body .nav-cell{background:#ffffff0d;border:1px solid #ffffff10;box-shadow:inset 0 1px #ffffff08}body .navigation-dock a[aria-current=page]{color:#78ddcc}.personal-home{isolation:isolate;max-width:1440px;margin:0 auto;position:relative;overflow:hidden}.introduction{align-items:center;min-height:min(710px,100svh - 195px);padding:60px 8% 80px;display:flex;position:relative}.intro-copy{z-index:2;pointer-events:none;width:68%;position:relative}.intro-copy a{pointer-events:auto}.intro-greeting{letter-spacing:.1px;color:#72d6c5;margin:0 0 29px;font-size:17px;animation:.8s both arrive}.intro-copy h1{letter-spacing:-2.8px;margin:0 0 30px;font-size:clamp(42px,4.6vw,66px);font-weight:450;line-height:1.14;animation:.8s 80ms both arrive}.intro-copy h1 em{-webkit-text-fill-color:transparent;background:linear-gradient(105deg,#70ddbd,#35b7d5 65%,#4399e4);-webkit-background-clip:text;background-clip:text;font-style:normal}.intro-description{color:#aab8c4;max-width:465px;margin:0 0 13px;font-size:17px;line-height:1.9;animation:.8s .16s both arrive}.intro-purpose{color:#c2ccd4;margin:0;font-size:15px;line-height:1.8;animation:.8s .22s both arrive}.intro-links{align-items:center;gap:34px;margin-top:38px;animation:.8s .3s both arrive;display:flex}.work-link{align-items:center;gap:20px;font-size:14px;font-weight:500;display:flex}.link-orbit{color:#77ddcf;background:#39a79708;border:1px solid #51c9bd66;border-radius:50%;place-items:center;width:43px;height:43px;transition:background .25s,transform .35s,box-shadow .35s;display:grid}.work-link .link-orbit:hover{background:#2bafa530;transform:rotate(45deg);box-shadow:0 0 25px #38c9b720}.hello-link{color:#a0b0be;gap:13px;padding:10px 0;font-size:13px;transition:color .25s;display:flex}.hello-link:hover{color:#74dccb}.hello-link span{transition:transform .25s}.hello-link:hover span{transform:translate(3px,-3px)}.living-signal{z-index:1;pointer-events:none;width:53%;animation:1.6s both signal-arrive;position:absolute;top:50%;right:-3%;transform:translateY(-51%)}.living-signal svg{width:100%;overflow:visible}.signal-float{transform-origin:50%;animation:10s ease-in-out infinite float}.wave-base{stroke-dasharray:1400;animation:5s cubic-bezier(.22,1,.36,1) both draw}.wave-highlight{stroke-dasharray:30 1370;stroke-dashoffset:1400px;opacity:.95;animation:5s linear 2s infinite travel}.orbital-lines{transform-origin:350px 320px;animation:100s linear infinite orbit}.orbit-points{transform-origin:350px 320px;animation:70s linear infinite orbit}.personal-note{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:30px;margin:0 8%;padding:28px 0 30px;animation:1s .35s both arrive;display:flex}.personal-note p{color:#c3cdd4;margin:0;font-size:13px;line-height:1.9}.personal-note p span{color:#8b9fac}.personal-background{color:#8b9fac;text-align:right;flex-direction:column;gap:8px;font-size:11px;display:flex}.site-footer{max-width:1210px;color:var(--muted);justify-content:space-between;gap:20px;margin:0 auto;padding:23px 0 25px;font-size:10px;display:flex}body .site-footer{opacity:.6}body .site-footer>span:nth-child(2){display:none}.footer-name{transition:color .2s}.footer-name:hover{color:#42cbb5}.section-wrap{max-width:1280px;margin:auto;padding-left:48px;padding-right:48px}.loading-shell{padding-top:80px;padding-bottom:80px}.skeleton{background:linear-gradient(100deg,#829ca415 30%,#829ca430 45%,#829ca415 60%) 0 0/220% 100%;border-radius:6px;animation:1.5s linear infinite shimmer}.skeleton-title{width:65%;height:60px;margin:24px 0}.skeleton-line{width:45%;height:18px;margin:15px 0}.skeleton-card{height:180px}.project-grid{grid-template-columns:repeat(3,1fr);gap:20px;margin-top:60px;display:grid}@keyframes arrive{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes signal-arrive{0%{opacity:0}to{opacity:1}}@keyframes draw{0%{stroke-dashoffset:1400px}to{stroke-dashoffset:0}}@keyframes travel{to{stroke-dashoffset:0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes shimmer{to{background-position:-220% 0}}@media (min-width:1450px){.introduction{min-height:740px}}@media (max-width:1250px){.site-footer{margin:0 8%}.intro-copy h1{font-size:52px}.living-signal{opacity:.85;width:56%;right:-8%}.intro-description{max-width:420px}.introduction{min-height:650px}.intro-copy{width:74%}}@media (max-width:900px){.site-header{padding:25px 6%}.header-social{display:none}.intro-copy h1{font-size:46px}.intro-copy{width:85%}.living-signal{opacity:.35;width:65%;right:-20%}.intro-description{max-width:420px}.personal-note{align-items:flex-start}.personal-background{max-width:220px;line-height:1.6}}@media (max-width:600px){.site-header{justify-content:center;padding:27px 7% 16px}.wordmark{font-size:24px}.navigation-dock{z-index:50;background:#e4ebeeed;gap:2px;width:max-content;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0003}.navigation-dock a{min-width:71px;padding:12px 15px;font-size:12px}body .navigation-dock{background:#25323ded;border-color:#ffffff1a;box-shadow:0 8px 32px #0005}.introduction{min-height:auto;padding:48px 7% 230px;display:block}.intro-copy{width:100%}.intro-greeting{margin-bottom:23px;font-size:15px}.intro-copy h1{letter-spacing:-1.7px;margin-bottom:25px;font-size:clamp(35px,8.8vw,48px);line-height:1.17}.intro-description{max-width:100%;font-size:15px;line-height:1.85}.intro-purpose{font-size:14px}.intro-links{gap:27px;margin-top:29px}.work-link{gap:14px;font-size:13px}.living-signal{opacity:.85;width:88%;top:auto;bottom:-64px;right:-10%;transform:none}.living-signal svg{max-height:320px}.personal-note{flex-direction:column;gap:22px;margin:0 7%;padding-top:23px;position:relative}.personal-background{text-align:left;max-width:none;font-size:10px}.personal-note p{font-size:12px}.site-footer{margin:0 7%;padding-bottom:112px}.site-footer>span:nth-child(2){display:none}.section-wrap{padding-left:24px;padding-right:24px}.project-grid{grid-template-columns:1fr}.skeleton-title{width:95%}}body{flex-direction:column;min-height:100svh;display:flex}body .site-header{width:100%;margin:0 auto;padding-top:22px;padding-bottom:22px}body #main-content{flex:1;display:flex}.personal-home{flex-direction:column;width:100%;display:flex;overflow:visible}.introduction{flex:1;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:34px;min-height:0;padding:30px 6%;display:grid}.intro-copy{pointer-events:auto;width:100%}.intro-copy h1{letter-spacing:-2px;max-width:650px;margin-bottom:24px;font-size:clamp(38px,3.8vw,57px);line-height:1.12}.intro-description{max-width:590px;margin-bottom:14px;font-size:15px;line-height:1.75}.intro-description strong{color:#d4e0e8;font-weight:500}.intro-lead{color:#bac8d2;font-size:17px}.gradient-text{-webkit-text-fill-color:transparent;background:linear-gradient(105deg,#70ddbd,#35b7d5 65%,#4399e4);-webkit-background-clip:text;background-clip:text}.intro-links{flex-wrap:wrap;gap:32px;margin-top:25px}.living-signal{opacity:1;width:100%;min-width:0;position:relative;top:auto;bottom:auto;right:auto;transform:none}.living-signal svg{width:100%;display:block;overflow:visible}.work-link{gap:15px}.link-orbit{isolation:isolate;flex:none;transition:transform .3s,box-shadow .3s,color .3s,border-color .3s;position:relative;overflow:hidden}.link-orbit:before{content:"";z-index:-1;opacity:0;background:linear-gradient(120deg,#55deb5,#25bfd0,#338cff);transition:opacity .3s;position:absolute;inset:0}.work-link .link-orbit:hover,.work-link:focus-visible .link-orbit{color:#102632;background:0 0;border-color:#0000;transform:translate(2px,-2px);box-shadow:0 0 24px #2abbbe30}.work-link .link-orbit:hover:before,.work-link:focus-visible .link-orbit:before{opacity:1}body .navigation-dock a:is(:hover,:focus-visible) .nav-label,body .header-social:is(:hover,:focus-visible){-webkit-text-fill-color:transparent;background:linear-gradient(100deg,#73e4bf,#40bfe2,#65a7ff);-webkit-background-clip:text;background-clip:text}.credential-strip{border-top:1px solid var(--line);color:#a9bac7;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 22px;margin:12px 6% 0;padding:22px 0;font-size:11px;line-height:1.6;list-style:none;display:flex}.credential-strip li{align-items:center;gap:22px;display:flex}.credential-strip li:not(:first-child):before{content:"";background:linear-gradient(110deg,#58dcb7,#338cff);border-radius:50%;flex:none;width:4px;height:4px;box-shadow:0 0 8px #35b7d544}body .site-footer{width:88%;max-width:1267px;margin:0 auto;padding:16px 0 20px}@media (min-width:901px) and (max-height:800px){.introduction{padding-top:15px;padding-bottom:15px}.intro-copy h1{margin-bottom:18px;font-size:clamp(36px,3.4vw,49px)}.intro-description{margin-bottom:12px;font-size:14px;line-height:1.65}.intro-lead{font-size:16px}.credential-strip{margin-top:0;padding:16px 0}}@media (max-width:900px){.introduction{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:10px}.intro-copy h1{font-size:38px}.intro-description{font-size:14px}.intro-lead{font-size:16px}.credential-strip{justify-content:flex-start}}@media (max-width:600px){body .site-header{padding-top:25px;padding-bottom:12px}.introduction{flex-direction:column;align-items:stretch;gap:0;padding:35px 7% 0;display:flex}.intro-copy h1{letter-spacing:-1.5px;font-size:clamp(34px,8.5vw,46px)}.intro-description{font-size:14px;line-height:1.8}.intro-lead{font-size:16px}.intro-links{gap:24px}.work-link{gap:10px;font-size:12px}.link-orbit{width:38px;height:38px}.living-signal{align-self:center;width:100%;max-width:360px;margin:0 auto}.living-signal svg{max-height:285px}.credential-strip{gap:10px 16px;margin:0 7%;padding:20px 0;font-size:10px}.credential-strip li{gap:12px}body .site-footer{width:86%;padding-bottom:112px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.navigation-dock a:hover,.work-link .link-orbit:hover,.hello-link:hover span{transform:none}}.inner-page{isolation:isolate;width:100%;max-width:1440px;margin:0 auto;padding:50px 6% 80px;animation:.65s both arrive;position:relative}.page-intro{max-width:740px;margin-bottom:54px}.page-kicker{color:#75d5c5;margin:0 0 17px;font-size:12px}.page-intro h1{letter-spacing:-2px;margin:0 0 24px;font-size:clamp(38px,4vw,58px);font-weight:450;line-height:1.12}.page-intro>p:last-child:not(.page-kicker){color:#a8bac6;max-width:570px;margin:0;font-size:16px;line-height:1.8}.skills-page{background:radial-gradient(at 50% 60%,#10293655,#0000 65%);max-width:1600px;padding:35px 2% 30px}.skills-page .page-intro{max-width:none;margin:0 4.2% 4px}.skills-page .page-intro h1{margin-bottom:13px;font-size:clamp(32px,3vw,44px)}.skills-page .page-intro>p:last-child{font-size:14px}.skills-network{position:relative}.network-instruction{color:#859baa;font-size:11px;position:absolute;top:-26px;right:4.2%}.network-desktop{aspect-ratio:1440/940;width:100%;margin-top:4px;position:relative}.network-svg{width:100%;height:100%;display:block;overflow:visible}.network-branch{transition:opacity .4s,filter .4s}.network-branch.is-dimmed{opacity:.25}.network-branch.is-active{filter:brightness(1.3)saturate(1.15)}.network-branch path{fill:none}.branch-halo{stroke-width:12px;opacity:.13;filter:blur(5px)}.branch-filament{stroke-width:.7px}.branch-main{stroke-width:1.5px;opacity:.7}.leaf-line{stroke-width:1px;opacity:.55;transition:opacity .4s}.leaf-filament{stroke-width:.6px;opacity:.18}.network-branch.is-active .leaf-line{opacity:1;stroke-width:1.4px}.network-impulse,.leaf-impulse{stroke-width:2.5px;stroke-linecap:round;stroke-dasharray:2 98;stroke-dashoffset:100px;opacity:0;filter:drop-shadow(0 0 3px var(--branch));animation:12s linear infinite neural-signal}.leaf-impulse{animation:none}.network-branch.is-active .network-impulse{animation:3s ease-out infinite neural-signal!important}.network-branch.is-active .leaf-impulse{animation:3s ease-out infinite neural-signal}.leaf-halo{opacity:.11;transition:opacity .3s}.leaf-dot{opacity:.85}.network-branch.is-active .leaf-halo{opacity:.3}.skill-label{fill:#a4becf;font-size:14px;font-weight:400;transition:fill .3s}.network-branch.is-active .skill-label{fill:#e0f1fb}.branch-speck{opacity:.5}.hub-aura{opacity:.035;filter:blur(8px)}.network-branch.is-active .hub-aura{opacity:.17}.network-core{filter:drop-shadow(0 0 16px #48cbe555)}.core-ring{opacity:.25;transform-box:fill-box;transform-origin:50%;animation:7s ease-in-out infinite core-breathe}.category-hub{text-align:left;cursor:pointer;color:#cde4ee;white-space:nowrap;background:0 0;border:0;align-items:center;gap:17px;padding:0;transition:opacity .4s,color .3s;display:flex;position:absolute;transform:translate(-31px,-31px)}.category-hub.is-dimmed{opacity:.4}.category-hub.is-active{color:#f0fbff}.hub-icon{border:1px solid var(--branch);width:62px;height:62px;color:var(--branch);box-shadow:0 0 20px color-mix(in srgb, var(--branch) 12%, transparent);background:#102532;border-radius:50%;flex:none;place-items:center;transition:box-shadow .35s,background .35s;display:grid}.hub-icon svg{fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linecap:round;stroke-linejoin:round;width:34px;height:34px}.category-hub.is-active .hub-icon{box-shadow:0 0 28px color-mix(in srgb, var(--branch) 32%, transparent);background:#173746}.hub-name{letter-spacing:-.3px;font-size:clamp(14px,1.35vw,20px);font-weight:400;line-height:1.3}.category-hub:focus-visible{outline:2px solid var(--branch);outline-offset:8px;border-radius:36px}.network-caption{text-align:center;color:#93a9b9;justify-content:center;align-items:center;gap:20px;min-height:52px;padding:0 20px;font-size:13px;display:flex}.network-caption p{max-width:700px;margin:0;line-height:1.6}.network-caption button{color:#7ad4d2;white-space:nowrap;padding:8px 0;font-size:11px}.network-mobile{display:none}@keyframes neural-signal{0%,15%{stroke-dashoffset:100px;opacity:0}20%{opacity:.9}65%{stroke-dashoffset:0;opacity:.8}75%,to{stroke-dashoffset:0;opacity:0}}@keyframes core-breathe{0%,to{opacity:.2;transform:scale(1)}50%{opacity:.45;transform:scale(1.12)}}.work-page .page-intro{margin-bottom:55px}.work-list{border-top:1px solid var(--line)}.work-entry{border-bottom:1px solid var(--line);scroll-margin-top:30px}.work-entry>summary{cursor:pointer;align-items:center;gap:35px;padding:32px 0;list-style:none;display:flex}.work-entry>summary::-webkit-details-marker{display:none}.work-number{color:#6d909f;align-self:flex-start;margin-top:7px;font-family:monospace;font-size:11px}.work-summary{flex:1;display:block}.work-category{color:#74c7bd;margin-bottom:10px;font-size:11px;display:block}.work-title{letter-spacing:-.6px;font-size:clamp(22px,2.4vw,31px);font-weight:450;transition:color .3s;display:block}.work-description{color:#a4b6c3;max-width:700px;margin-top:12px;font-size:14px;line-height:1.8;display:block}.work-tags{color:#8199aa;margin-top:14px;font-size:11px;display:block}.work-expand{color:#7bd3ce;border:1px solid #51c9bd55;border-radius:50%;flex:none;place-items:center;width:43px;height:43px;font-size:22px;font-weight:300;transition:transform .3s,background .3s,color .3s;display:grid}.work-entry>summary:hover .work-title{color:#91e2d6}.work-entry>summary:hover .work-expand{color:#102632;background:linear-gradient(120deg,#55deb5,#338cff)}.work-entry[open] .work-expand{transform:rotate(45deg)}.work-detail{max-width:980px;padding:5px 0 45px 48px;animation:.35s both arrive}.project-detail-content{color:#aebfcb;font-size:14px;line-height:1.9}.project-detail-content p{margin:15px 0}.project-detail-content h3{color:#daebf2;letter-spacing:-.2px;margin:28px 0 10px;font-size:18px;font-weight:500}.project-detail-content ul,.project-detail-content ol{padding-left:20px;list-style:outside}.project-detail-content ol{list-style:decimal}.project-detail-content img{object-fit:contain;background:#e8eff2;border-radius:5px;max-width:100%;height:auto;max-height:430px;margin:20px auto;display:block}.contact-page{grid-template-columns:1.1fr 1fr;align-content:center;gap:90px;min-height:calc(100svh - 180px);padding-top:90px;padding-bottom:120px;display:grid;overflow:hidden}.contact-page .page-intro{z-index:1;margin:0;position:relative}.contact-page .page-intro h1{font-size:clamp(36px,4vw,56px)}.contact-channels{z-index:1;align-self:center;position:relative}.contact-channel{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:26px 0;display:flex}.channel-label{color:#90a7b5;margin-bottom:10px;font-size:11px;display:block}.channel-value{letter-spacing:-.5px;font-size:clamp(20px,2vw,28px);transition:color .3s}.contact-channel:hover .channel-value{color:#8ee1d3}.contact-channel .link-orbit:hover,.contact-channel:focus-visible .link-orbit{color:#102632;border-color:#0000;transform:translate(2px,-2px)}.contact-channel .link-orbit:hover:before,.contact-channel:focus-visible .link-orbit:before{opacity:1}.contact-orbits{z-index:0;pointer-events:none;opacity:.45;width:600px;height:500px;position:absolute;bottom:-150px;left:-130px}.contact-orbits i{border:1px solid #3aa8af20;border-radius:50%;position:absolute;inset:0;transform:rotate(-35deg)}.contact-orbits i:nth-child(2){inset:55px 25px;transform:rotate(30deg)}.contact-orbits i:nth-child(3){inset:95px 65px;transform:rotate(-20deg)}.contact-orbits span{background:radial-gradient(#32c7be12,#0000 65%);position:absolute;inset:100px}@media (max-width:1100px){.category-hub{gap:10px;transform:translate(-24px,-24px)}.category-hub .hub-icon{width:48px;height:48px}.category-hub .hub-icon svg{width:29px;height:29px}.network-instruction{margin:22px 4.2% 0;position:static}.contact-page{gap:40px}}@media (max-width:1000px){.network-desktop{display:none}.network-mobile{max-width:620px;margin:35px auto 0;padding:0 24px;display:block;position:relative}.network-mobile:before{content:"";opacity:.35;background:linear-gradient(#66dcd0,#429ffa,#8b9cea);width:1px;position:absolute;top:32px;bottom:30px;left:52px}.mobile-core{background:radial-gradient(circle at 35% 30%,#d4ffff,#3dbfcf 25%,#124454 70%);border:1px solid #a1ebee;border-radius:50%;width:34px;height:34px;margin:0 0 28px 11px;position:relative;box-shadow:0 0 35px #51c4df35}.mobile-discipline{margin-bottom:26px;position:relative}.mobile-discipline>summary{cursor:pointer;align-items:center;gap:17px;font-size:18px;line-height:1.4;list-style:none;display:flex}.mobile-discipline>summary::-webkit-details-marker{display:none}.mobile-discipline .hub-icon{width:56px;height:56px}.discipline-toggle{color:var(--branch);margin-left:auto;font-size:23px;font-weight:300;transition:transform .3s}.mobile-discipline[open] .discipline-toggle{transform:rotate(45deg)}.mobile-branch-content{padding:8px 0 4px 75px;animation:.3s both arrive}.mobile-branch-content p{color:#a2b6c5;margin:8px 0 18px;font-size:13px;line-height:1.8}.mobile-branch-content ul{margin:0;padding:0;list-style:none}.mobile-branch-content li{color:#c1d4df;border-left:1px solid color-mix(in srgb, var(--branch) 25%, transparent);padding:10px 0 10px 22px;font-size:14px;position:relative}.mobile-branch-content li:before{content:"";background:var(--branch);width:5px;height:5px;box-shadow:0 0 10px color-mix(in srgb, var(--branch) 30%, transparent);border-radius:50%;position:absolute;top:19px;left:-3px}.network-caption{margin-top:28px}.skills-page{padding-bottom:50px}.contact-page{grid-template-columns:1fr;gap:30px;min-height:0;padding-top:50px}.contact-page .page-intro{max-width:650px}.contact-channels{width:100%;max-width:650px}}@media (max-width:600px){.inner-page{padding:38px 7% 35px}.page-intro{margin-bottom:32px}.page-intro h1{letter-spacing:-1.3px;font-size:36px}.page-intro>p:last-child:not(.page-kicker){font-size:14px}.skills-page{padding-left:5%;padding-right:5%}.skills-page .page-intro{margin-left:2%;margin-right:2%}.skills-page .page-intro h1{font-size:34px}.network-instruction{margin-left:2%;font-size:10px}.network-mobile{padding:0 5px}.network-mobile:before{left:33px}.mobile-discipline>summary{gap:13px;font-size:16px}.mobile-branch-content{padding-left:69px}.network-caption{padding:0;font-size:11px}.work-page .page-intro{margin-bottom:35px}.work-entry>summary{gap:16px;padding:25px 0}.work-number{font-size:9px}.work-title{font-size:23px}.work-description{font-size:13px}.work-expand{width:32px;height:32px}.work-tags{font-size:10px}.work-detail{padding-left:0}.project-detail-content{font-size:13px}.contact-page{padding-top:38px;padding-bottom:35px}.contact-channel{padding:22px 0}.channel-value{font-size:23px}}@media (prefers-reduced-motion:reduce){.network-impulse,.leaf-impulse{display:none}.core-ring{animation:none}.network-branch,.category-hub,.hub-icon{transition:none}}body:has(.skills-page){background:radial-gradient(at 50% 55%,#16313e80,#0000 60%),#101d28}.skills-page{background:0 0}.network-branch.is-active .branch-filament{stroke-width:1px}.hub-name{text-shadow:0 1px 5px #101d28,0 -1px 5px #101d28}.decorative-arbor{pointer-events:none}.decorative-tendril{stroke-width:.7px}.decorative-fork{stroke-width:.5px;opacity:.16}.decorative-junction{stroke:none;opacity:.55}.decorative-tip{stroke:none;opacity:.4}.decorative-leaf{stroke-width:.65px;opacity:.22}.network-branch.is-active .decorative-fork{opacity:.3}.network-branch.is-active .decorative-junction{opacity:.85}.woven-web{pointer-events:none}.woven-junction{opacity:.8;filter:drop-shadow(0 0 3px var(--branch))}.web-bridge{stroke-width:.65px;opacity:.28}.web-pulse{stroke-width:3px;stroke-linecap:round;stroke-dasharray:1.5 98.5;stroke-dashoffset:100px;opacity:0;filter:drop-shadow(0 0 4px var(--branch));animation:15s linear infinite neural-signal}.network-branch.is-active .web-bridge{opacity:.55}.network-branch .network-impulse{animation-duration:10s}.network-branch .neural-ribbon{stroke:none}@media (min-width:1001px){.skills-page{flex-direction:column;justify-content:center;padding-top:8px;padding-bottom:0;display:flex}.skills-page .page-kicker{display:none}.skills-page .page-intro{margin-bottom:4px}.skills-page .page-intro h1{margin-bottom:6px;font-size:30px}.skills-page .page-intro>p:last-child{font-size:12px}.network-instruction{font-size:10px;top:-20px}.network-desktop{aspect-ratio:1440/620;width:min(100%,232.258svh - 569.032px);margin:0 auto}.skill-label{font-size:16px}.category-hub{gap:11px;transform:translate(-22px,-22px)}.category-hub .hub-icon{width:44px;height:44px}.category-hub .hub-icon svg{width:28px;height:28px}.hub-name{font-size:14px}.network-caption{min-height:30px;font-size:11px}body:has(.skills-page) .site-footer{padding-top:10px;padding-bottom:12px}}@media (prefers-reduced-motion:reduce){.web-pulse{display:none}}@media (min-width:1001px){.hub-name{font-size:16px}.category-hub{transform:translate(-24px,-24px)}.category-hub .hub-icon{width:48px;height:48px}}.hub-name{transform-origin:0;transition:transform .4s cubic-bezier(.2,.8,.2,1),color .3s}.category-hub:is(:hover,:focus-visible).is-active .hub-name{transform:scale(1.12)}.skill-label{transform-box:fill-box;transform-origin:0;transition:transform .4s cubic-bezier(.2,.8,.2,1),fill .3s}.skill-label[text-anchor=end]{transform-origin:100%}.network-branch.is-active .skill-label{transform:scale(1.08)}.link-orbit{overflow:visible}.link-orbit:before{border-radius:50%}.orbit-arrow{z-index:1;position:relative}.action-dendrites{pointer-events:none;width:110px;height:110px;position:absolute;top:50%;left:50%;overflow:visible;transform:translate(-50%,-50%)}.action-twig{stroke-width:.85px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;opacity:0;transition:stroke-dashoffset .55s cubic-bezier(.22,1,.36,1),opacity .25s}.twig-fork{stroke-width:.6px}.action-tip{opacity:0;transition:opacity .2s}.link-orbit:hover .action-twig,:is(.work-link,.contact-channel):focus-visible .action-twig{stroke-dashoffset:0;opacity:.8;transition-delay:var(--twig-delay)}.link-orbit:hover .action-tip,:is(.work-link,.contact-channel):focus-visible .action-tip{opacity:.85;transition-delay:calc(var(--twig-delay) + .23s)}.link-orbit:hover .twig-fork,:is(.work-link,.contact-channel):focus-visible .twig-fork{opacity:.5}.work-link>span:first-child:not(.link-orbit){transform-origin:0;transition:transform .35s cubic-bezier(.2,.8,.2,1)}.work-link:is(:hover,:focus-visible)>span:first-child:not(.link-orbit){transform:scale(1.035)}@media (prefers-reduced-motion:reduce){.action-dendrites{display:none}.category-hub:is(:hover,:focus-visible).is-active .hub-name,.network-branch.is-active .skill-label,.work-link:is(:hover,:focus-visible)>span:first-child:not(.link-orbit){transform:none}}.action-signal{stroke-width:1.7px;stroke-linecap:round;stroke-dasharray:.07 .93;stroke-dashoffset:1px;opacity:0;filter:drop-shadow(0 0 3px #70e2ef)}.link-orbit:hover .action-signal,:is(.work-link,.contact-channel):focus-visible .action-signal{animation:2.5s ease-in-out infinite connection-signal;animation-delay:calc(var(--twig-delay) + .5s)}@keyframes connection-signal{0%,12%{stroke-dashoffset:1px;opacity:0}25%{opacity:.95}70%{stroke-dashoffset:0;opacity:.8}85%,to{stroke-dashoffset:0;opacity:0}}.work-index{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:32px;margin:38px 0 65px;padding-bottom:22px;display:flex}.work-index a{color:#acc1d0;font-size:14px;transition:color .25s}.work-index a:hover{color:#73e0cb}.work-index span{color:#6996a5;margin-left:9px;font-size:10px}.project-group{margin-bottom:76px;scroll-margin-top:40px}.project-group h2{letter-spacing:.09em;color:#8cb1be;margin-bottom:22px;font-size:13px;font-weight:400}.project-group .work-entry>summary{gap:35px;min-height:205px;padding:16px 0}.project-art{flex:none;width:215px;overflow:visible}.art-filaments{opacity:.45;transition:opacity .45s}.art-subject{transform-origin:50%;transition:transform .5s,filter .5s}.work-entry>summary:is(:hover,:focus-visible) .art-subject{filter:drop-shadow(0 0 5px #39cbd64a);transform:scale(1.045)}.work-entry>summary:is(:hover,:focus-visible) .art-filaments{opacity:1}.work-entry>summary:focus-visible{outline-offset:6px;border-radius:4px;outline:1px solid #6bdbca}.project-group .work-detail{max-width:none;padding-left:250px}#urostomy .project-detail-content img{background:0 0;border-radius:0}@media (max-width:700px){.work-index{gap:18px;margin-bottom:42px}.work-index a{font-size:12px}.project-group .work-entry>summary{gap:16px;min-height:160px}.project-art{width:105px}.project-group .work-title{font-size:21px}.project-group .work-description{font-size:12px;line-height:1.6}.project-group .work-category{font-size:10px}.project-group .work-expand{width:30px;height:30px}.project-group .work-detail{padding-left:0}.project-group{margin-bottom:45px}}@media (max-width:420px){.project-art{width:75px}.project-group .work-entry>summary{gap:12px}.project-group .work-title{font-size:19px}}@media (prefers-reduced-motion:reduce){.action-signal{animation:none!important}.art-subject,.art-filaments{transition:none}.work-entry>summary:is(:hover,:focus-visible) .art-subject{transform:none}}.page-transition{flex:1;width:100%;min-width:0;animation:.38s cubic-bezier(.22,1,.36,1) both page-enter;display:flex}@keyframes page-enter{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}.project-art.art-revealed .art-subject path,.project-art.art-revealed .art-filaments path{stroke-dasharray:1;animation:1.5s ease-in-out both art-draw}.project-art.art-revealed .art-subject path:nth-child(2){animation-delay:.35s}.project-art.art-revealed .art-subject path:nth-child(3){animation-delay:.7s}.project-art.art-revealed .art-filaments path{animation-duration:5.5s;animation-delay:.45s}.project-art.art-revealed .art-nodes{animation:1.2s 4.7s both art-node-reveal}@keyframes art-draw{0%{stroke-dashoffset:1px;opacity:0}to{stroke-dashoffset:0;opacity:1}}@keyframes art-node-reveal{0%{opacity:0}to{opacity:1}}.work-detail{animation:none}@media (prefers-reduced-motion:reduce){.page-transition,.project-art.art-revealed .art-subject path,.project-art.art-revealed .art-filaments path,.project-art.art-revealed .art-nodes{animation:none}}.art-pulse-glow{filter:drop-shadow(0 0 2px #55d6d080);opacity:.7;pointer-events:none;transition:opacity .3s,filter .3s}.art-loop-pulse{opacity:0;stroke-dasharray:.13 .87;stroke-dashoffset:1px}.art-revealed .art-loop-pulse{animation:7s linear infinite art-loop-signal;animation-delay:var(--art-loop-delay,2s);animation-play-state:paused}.art-revealed .art-loop-pulse:nth-child(2){animation-delay:calc(var(--art-loop-delay,2s) + 1.3s)}.art-in-view .art-loop-pulse{animation-play-state:running}.work-entry>summary:is(:hover,:focus-visible) .art-pulse-glow{opacity:1;filter:drop-shadow(0 0 3px #65e3d9)}@keyframes art-loop-signal{0%,8%{stroke-dashoffset:1px;opacity:0}14%{opacity:.95}39%{stroke-dashoffset:0;opacity:.8}48%,to{stroke-dashoffset:-.15px;opacity:0}}@media (prefers-reduced-motion:reduce){.art-revealed .art-loop-pulse{opacity:0;animation:none}.art-pulse-glow{transition:none}}.site-header{flex-shrink:0}.navigation-dock a:hover{transform:none}@media (min-width:901px){.site-header{grid-template-columns:1fr auto 1fr;display:grid}.site-header .wordmark{justify-self:start}.site-header .header-social{justify-self:end}.introduction{grid-template-columns:minmax(0,1.1fr) minmax(0,1.1fr);gap:24px}}@media (max-width:600px){.living-signal{max-width:420px}.living-signal svg{max-height:330px}}@media (prefers-reduced-motion:reduce){.hero-line-pulse{display:none}}.hero-line-pulse{stroke-dasharray:5 600;stroke-dashoffset:1400px;opacity:0;animation:5s linear 2s infinite hero-line-travel}@keyframes hero-line-travel{0%{stroke-dashoffset:1400px;opacity:0}8%{opacity:.95}92%{opacity:.95}to{stroke-dashoffset:700px;opacity:0}}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-color-scheme:dark){.dark\:bg-\[\#1a1a1a\]{--tw-bg-opacity:1;background-color:rgb(26 26 26/var(--tw-bg-opacity,1))}.dark\:bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:text-\[\#f8f8f8\]{--tw-text-opacity:1;color:rgb(248 248 248/var(--tw-text-opacity,1))}}
