*,:before,:after{--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: rgb(59 130 246 / .5);--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: }::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: rgb(59 130 246 / .5);--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-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Manrope,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings: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:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-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{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*{--tw-border-opacity: 1;border-color:rgb(var(--color-border) / var(--tw-border-opacity, 1))}html,body,.mobile-menu-panel{scroll-behavior:smooth;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:rgb(var(--color-scrollbar-thumb)) transparent}body{min-height:100vh;--tw-bg-opacity: 1;background-color:rgb(var(--color-bg) / var(--tw-bg-opacity, 1));font-family:Manrope,ui-sans-serif,system-ui,sans-serif;--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;background-color:rgb(var(--color-bg));text-rendering:optimizeLegibility}img{display:block;max-width:100%}a{text-underline-offset:.18em}::-moz-selection{background:rgb(var(--color-brand) / .18);color:rgb(var(--color-text))}::selection{background:rgb(var(--color-brand) / .18);color:rgb(var(--color-text))}section[id]{scroll-margin-top:6.5rem}html.has-editorial-cursor,html.has-editorial-cursor body,html.has-editorial-cursor body *{cursor:none!important}html.has-editorial-cursor input,html.has-editorial-cursor textarea,html.has-editorial-cursor select,html.has-editorial-cursor option,html.has-editorial-cursor iframe,html.has-editorial-cursor [contenteditable=true],html.has-editorial-cursor [data-native-cursor]{cursor:auto!important}html::-webkit-scrollbar,body::-webkit-scrollbar,.mobile-menu-panel::-webkit-scrollbar{width:.78rem;height:.78rem;background:transparent}html::-webkit-scrollbar-track,body::-webkit-scrollbar-track,.mobile-menu-panel::-webkit-scrollbar-track{background:transparent}html::-webkit-scrollbar-thumb,body::-webkit-scrollbar-thumb,.mobile-menu-panel::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:linear-gradient(180deg,rgb(var(--color-scrollbar-thumb-edge) / .9),rgb(var(--color-scrollbar-thumb) / .92)) padding-box,linear-gradient(180deg,rgb(var(--color-brand) / .08),rgb(var(--color-brand) / .02)) border-box}html::-webkit-scrollbar-thumb:hover,body::-webkit-scrollbar-thumb:hover,.mobile-menu-panel::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgb(var(--color-scrollbar-thumb-hover) / .94),rgb(var(--color-scrollbar-thumb) / .96)) padding-box,linear-gradient(180deg,rgb(var(--color-brand) / .12),rgb(var(--color-brand) / .04)) border-box}html::-webkit-scrollbar-thumb:active,body::-webkit-scrollbar-thumb:active,.mobile-menu-panel::-webkit-scrollbar-thumb:active{background:linear-gradient(180deg,rgb(var(--color-scrollbar-thumb-active) / .98),rgb(var(--color-scrollbar-thumb-hover) / .98)) padding-box,linear-gradient(180deg,rgb(var(--color-brand) / .14),rgb(var(--color-brand) / .06)) border-box}html::-webkit-scrollbar-corner,body::-webkit-scrollbar-corner,.mobile-menu-panel::-webkit-scrollbar-corner{background:transparent}.\!container{width:100%!important}.container{width:100%}@media (min-width: 640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width: 768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width: 1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width: 1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width: 1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.\!shell{margin-left:auto;margin-right:auto;width:100%;max-width:72rem;padding-left:1.5rem;padding-right:1.5rem}@media (min-width: 640px){.\!shell{padding-left:2rem;padding-right:2rem}}@media (min-width: 1024px){.\!shell{padding-left:2.5rem;padding-right:2.5rem}}.shell{margin-left:auto;margin-right:auto;width:100%;max-width:72rem;padding-left:1.5rem;padding-right:1.5rem}@media (min-width: 640px){.shell{padding-left:2rem;padding-right:2rem}}@media (min-width: 1024px){.shell{padding-left:2.5rem;padding-right:2.5rem}}.section{padding-top:3.5rem;padding-bottom:3.5rem}@media (min-width: 640px){.section{padding-top:4rem;padding-bottom:4rem}}@media (min-width: 1024px){.section{padding-top:5rem;padding-bottom:5rem}}.section-card,.surface-note,.case-panel,.project-card,.media-shell,.strava-activity-shell,.strava-widget-shell{border:1px solid rgb(var(--color-border) / .9);background-color:rgb(var(--color-surface));box-shadow:0 12px 28px #0f172a0a}[data-theme=dark] .section-card,[data-theme=dark] .surface-note,[data-theme=dark] .case-panel,[data-theme=dark] .project-card,[data-theme=dark] .media-shell,[data-theme=dark] .strava-activity-shell,[data-theme=dark] .strava-widget-shell{box-shadow:0 18px 36px #02061733}.eyebrow{margin-bottom:1.25rem;display:inline-flex;align-items:center;gap:.75rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.28em;color:rgb(var(--color-brand))}.eyebrow:before{content:"";height:1px;width:2rem;background-color:rgb(var(--color-brand) / .55)}.section-title{font-size:1.875rem;line-height:2.25rem;font-weight:600;letter-spacing:-.04em;--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1))}@media (min-width: 640px){.section-title{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 1024px){.section-title{font-size:2.85rem}}.section-title{line-height:1}.section-copy{max-width:48rem;font-size:1rem;line-height:2rem;--tw-text-opacity: 1;color:rgb(var(--color-muted) / var(--tw-text-opacity, 1))}@media (min-width: 640px){.section-copy{font-size:1.125rem;line-height:1.75rem}}.display-title{font-size:clamp(3.25rem,8vw,5.8rem);font-weight:600;line-height:.92;letter-spacing:-.06em;--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1))}.hero-copy{max-width:42rem;font-size:1.125rem;line-height:2rem;--tw-text-opacity: 1;color:rgb(var(--color-muted) / var(--tw-text-opacity, 1))}@media (min-width: 640px){.hero-copy{font-size:1.22rem}}.button-primary,.button-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:9999px;padding:.75rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.button-primary:focus-visible,.button-secondary:focus-visible{outline:2px solid transparent;outline-offset:2px}.button-primary{border:1px solid rgb(var(--color-text) / .08);background-color:rgb(var(--color-text));color:rgb(var(--color-bg))}.button-secondary{border:1px solid rgb(var(--color-border) / .96);background-color:transparent;color:rgb(var(--color-text))}.text-link,.hero-social-link,.footer-social-link{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.text-link:focus-visible,.hero-social-link:focus-visible,.footer-social-link:focus-visible{outline:2px solid transparent;outline-offset:2px}.text-link,.hero-social-link,.footer-social-link{color:rgb(var(--color-muted))}.hero-meta{display:flex;flex-wrap:wrap;-moz-column-gap:1.25rem;column-gap:1.25rem;row-gap:.5rem}.hero-meta-item{font-size:.72rem;font-weight:600;letter-spacing:.22em;color:rgb(var(--color-muted))}.nav-shell{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-top:.875rem;padding-bottom:.875rem}@media (min-width: 1024px){.nav-shell{display:grid;grid-template-columns:1fr auto 1fr;gap:2rem}}.nav-shell{border-bottom:1px solid rgb(var(--color-border) / .88);background-color:rgb(var(--color-bg) / .92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.site-header-stack{position:relative}.nav-brand-slot{display:flex;min-width:0px;align-items:center}.nav-center{align-items:center;justify-content:center;gap:1.5rem}.nav-actions{display:flex;align-items:center;gap:.5rem}@media (min-width: 1024px){.nav-actions{justify-self:end}}.wordmark{display:inline-flex;align-items:center;white-space:nowrap;font-size:.76rem;font-weight:600;text-transform:uppercase;letter-spacing:.32em;--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1))}.wordmark:before{content:none}.nav-link{position:relative;padding-bottom:.25rem;font-size:.96rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.nav-link:focus-visible{outline:2px solid transparent;outline-offset:2px}.nav-link{color:rgb(var(--color-muted))}.nav-link-active{color:rgb(var(--color-text))}.nav-link-active:after{content:"";position:absolute;left:0;right:0;bottom:-.15rem;height:1px;background-color:rgb(var(--color-text) / .92)}.theme-toggle{display:inline-flex;height:2.25rem;width:2.25rem;align-items:center;justify-content:center;border-radius:9999px;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.theme-toggle:focus-visible{outline:2px solid transparent;outline-offset:2px}.theme-toggle{border:1px solid rgb(var(--color-border) / .88);background-color:transparent;color:rgb(var(--color-text))}.surface-note,.case-panel{border-radius:1rem;padding:1.25rem}.about-aside{border-top:1px solid rgb(var(--color-border) / .88);padding-top:1.2rem}.about-aside-heading{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.24em;color:rgb(var(--color-muted))}.about-aside-list{display:grid;gap:0px}.about-aside-item{padding-top:1rem;padding-bottom:1rem;font-size:.875rem;line-height:1.75rem;--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1));border-top:1px solid rgb(var(--color-border) / .72)}.about-aside-item:first-child{padding-top:0;border-top-width:0}.about-aside-item:last-child{padding-bottom:0}.tag-chip{display:inline-flex;align-items:center;border-radius:9999px;padding:.25rem .625rem;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.18em;border:1px solid rgb(var(--color-border) / .92);color:rgb(var(--color-muted))}.stack-pill{display:inline-flex;align-items:center;font-size:.875rem;line-height:1.25rem;color:rgb(var(--color-muted))}.skill-card,.contact-card{display:block;padding-top:1.25rem;padding-bottom:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.skill-card:focus-visible,.contact-card:focus-visible{outline:2px solid transparent;outline-offset:2px}.skill-card,.contact-card{border-top:1px solid rgb(var(--color-border) / .9)}.skill-card:first-child{border-top-width:0;padding-top:0}.contact-card{display:grid;-moz-column-gap:1.5rem;column-gap:1.5rem;row-gap:.25rem;padding-top:1rem;padding-bottom:1rem}@media (min-width: 768px){.contact-card{grid-template-columns:6.5rem minmax(0,1fr);align-items:baseline}}.contact-card:first-child{border-top-width:0;padding-top:0}.contact-card-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.24em;color:rgb(var(--color-muted))}.contact-card-value{font-size:1rem;line-height:1.5rem;font-weight:600;letter-spacing:-.02em;--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1));word-break:break-word}.footer-social-link{font-size:.875rem;line-height:1.25rem}.project-card{position:relative;overflow:hidden;border-radius:1.1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.project-cover{position:relative;aspect-ratio:16/10;overflow:hidden;border-bottom:1px solid rgb(var(--color-border) / .9);background-color:rgb(var(--color-surface-strong))}.project-meta{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.22em;color:rgb(var(--color-muted))}.project-summary{font-size:1.125rem;font-weight:600;line-height:2rem;--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1))}.project-description,.project-stack-list{font-size:.875rem;line-height:1.75rem;--tw-text-opacity: 1;color:rgb(var(--color-muted) / var(--tw-text-opacity, 1))}.project-link{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;color:rgb(var(--color-text))}.media-shell{position:relative;overflow:hidden;border-radius:1rem}.media-image{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;width:100%;-o-object-fit:cover;object-fit:cover;opacity:0;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;transform:scale(var(--image-scale, 1))}.has-media .media-image{opacity:1}.project-card:hover .media-image,.media-shell:hover .media-image{transform:scale(calc(var(--image-scale, 1) + .015))}.media-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;text-align:center;pointer-events:none;transition:opacity .3s ease;background-color:rgb(var(--color-surface-strong))}.has-media .media-fallback{opacity:0}.media-shell-data,.media-shell-data .media-fallback{background-color:rgb(var(--color-surface-strong))}.media-shell-data .media-image{top:.95rem;right:.95rem;bottom:.95rem;left:.95rem;height:calc(100% - 1.9rem);width:calc(100% - 1.9rem);-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;filter:none}.media-shell-data-tight .media-image{top:.55rem;right:.55rem;bottom:.55rem;left:.55rem;height:calc(100% - 1.1rem);width:calc(100% - 1.1rem)}.portrait-shell{max-width:420px}.hero-portrait-image{-o-object-position:30% center;object-position:30% center}.cycling-hero-image{--image-scale: 1.18;-o-object-position:center 100%;object-position:center 100%}.list-check{display:flex;align-items:flex-start;gap:1rem;font-size:.875rem;line-height:1.75rem;--tw-text-opacity: 1;color:rgb(var(--color-muted) / var(--tw-text-opacity, 1))}.list-check:before{content:"";height:.4rem;width:.4rem;flex-shrink:0;margin-top:.9rem;border-radius:999px;background-color:rgb(var(--color-text))}[data-theme=dark] .list-check:before{background-color:rgb(var(--color-brand))}.reveal{opacity:0;transform:translateY(18px);transition:opacity .65s var(--ease-premium),transform .65s var(--ease-premium);transition-delay:var(--reveal-delay, 0ms)}.reveal.is-visible{opacity:1;transform:translateY(0)}.mobile-menu-panel{border-radius:1rem;padding:.75rem;width:100%;max-height:min(calc(100vh - 7rem),24rem);overflow:auto;border:1px solid rgb(var(--color-border) / .92);background-color:rgb(var(--color-bg));box-shadow:0 16px 32px #0f172a14}.mobile-nav-link{display:block;border-radius:.85rem;padding:.75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;color:rgb(var(--color-muted))}.back-to-top-rail{--back-to-top-size: 2.85rem;--back-to-top-base-bottom: max(1rem, calc(env(safe-area-inset-bottom) + 1rem) );position:sticky;top:calc(100vh - var(--back-to-top-size) - var(--back-to-top-base-bottom));top:calc(100dvh - var(--back-to-top-size) - var(--back-to-top-base-bottom));z-index:40;height:var(--back-to-top-size);margin-bottom:calc(var(--back-to-top-size) * -1);pointer-events:none}.back-to-top-rail>.shell{display:flex;justify-content:flex-end}.back-to-top-rail>.\!shell{display:flex;justify-content:flex-end}.back-to-top{display:inline-flex;height:2.85rem;width:2.85rem;align-items:center;justify-content:center;border-radius:9999px;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.back-to-top:focus-visible{outline:2px solid transparent;outline-offset:2px}.back-to-top{position:relative;margin-left:auto;border:1px solid rgb(var(--color-border) / .96);background-color:rgb(var(--color-surface));color:rgb(var(--color-text));opacity:0;visibility:hidden;pointer-events:none;transform:translateY(.6rem)}.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.editorial-cursor{position:fixed;inset:0 auto auto 0;z-index:90;pointer-events:none;opacity:1;transition:opacity .16s ease}.editorial-cursor.is-hidden{opacity:0}.editorial-cursor-ring{position:fixed;top:0;left:0;border-radius:999px;will-change:transform,opacity,border-color;transition:border-color .18s ease,opacity .18s ease;height:.92rem;width:.92rem;border:1px solid rgb(var(--color-text) / .38);background-color:transparent}.editorial-cursor.is-interactive .editorial-cursor-ring{border-color:rgb(var(--color-text) / .6)}.editorial-cursor.is-pressed .editorial-cursor-ring{border-color:rgb(var(--color-text) / .78)}[data-theme=dark] .editorial-cursor-ring{border-color:#eff1f557}[data-theme=dark] .editorial-cursor.is-interactive .editorial-cursor-ring{border-color:#eff1f58f}[data-theme=dark] .editorial-cursor.is-pressed .editorial-cursor-ring{border-color:#eff1f5bd}.strava-activity-shell,.strava-widget-shell{overflow:hidden;border-radius:1rem}.strava-activity-shell{display:inline-block;max-width:100%;min-height:0;overflow-x:auto;overflow-y:hidden;padding:.75rem}.strava-widget-shell{display:inline-block;max-width:100%;padding:.75rem}.strava-widget-shell iframe{display:block;max-width:300px}.strava-embed-placeholder[data-embed-type=activity]{display:inline-block;min-height:0}.strava-stack{display:grid;gap:3rem}.strava-featured-block{max-width:860px}.strava-secondary-block{width:min(100%,360px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.top-0{top:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.\!mb-5{margin-bottom:1.25rem!important}.\!mt-3{margin-top:.75rem!important}.mb-8{margin-bottom:2rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-\[1189\/390\]{aspect-ratio:1189/390}.aspect-\[16\/10\]{aspect-ratio:16/10}.aspect-\[4\/5\]{aspect-ratio:4/5}.aspect-\[5\/4\]{aspect-ratio:5/4}.aspect-\[571\/455\]{aspect-ratio:571/455}.aspect-\[576\/455\]{aspect-ratio:576/455}.aspect-\[790\/490\]{aspect-ratio:790/490}.h-4{height:1rem}.h-5{height:1.25rem}.h-full{height:100%}.w-4{width:1rem}.w-5{width:1.25rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[420px\]{max-width:420px}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.gap-10{gap:2.5rem}.gap-14{gap:3.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-3{row-gap:.75rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border\/70>:not([hidden])~:not([hidden]){border-color:rgb(var(--color-border) / .7)}.rounded-\[1\.15rem\]{border-radius:1.15rem}.border{border-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-t{border-top-width:1px}.border-border\/70{border-color:rgb(var(--color-border) / .7)}.border-border\/80{border-color:rgb(var(--color-border) / .8)}.border-white\/10{border-color:#ffffff1a}.bg-bg\/60{background-color:rgb(var(--color-bg) / .6)}.bg-surface-strong\/50{background-color:rgb(var(--color-surface-strong) / .5)}.\!p-4{padding:1rem!important}.p-4{padding:1rem}.p-6{padding:1.5rem}.\!px-4{padding-left:1rem!important;padding-right:1rem!important}.\!py-2\.5{padding-top:.625rem!important;padding-bottom:.625rem!important}.\!py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-20{padding-bottom:5rem}.pt-14{padding-top:3.5rem}.pt-24{padding-top:6rem}.pt-28{padding-top:7rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.\!text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.72rem\]{font-size:.72rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.ordinal{--tw-ordinal: ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.tracking-\[0\.22em\]{letter-spacing:.22em}.tracking-\[0\.24em\]{letter-spacing:.24em}.tracking-\[0\.28em\]{letter-spacing:.28em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-tight{letter-spacing:-.025em}.\!text-muted{--tw-text-opacity: 1 !important;color:rgb(var(--color-muted) / var(--tw-text-opacity, 1))!important}.text-muted{--tw-text-opacity: 1;color:rgb(var(--color-muted) / var(--tw-text-opacity, 1))}.text-muted\/90{color:rgb(var(--color-muted) / .9)}.text-text{--tw-text-opacity: 1;color:rgb(var(--color-text) / var(--tw-text-opacity, 1))}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.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)}.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{--tw-backdrop-blur: blur(8px);-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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{color-scheme:light;--color-bg: 247 246 242;--color-surface: 255 255 252;--color-surface-strong: 239 236 229;--color-text: 24 28 34;--color-muted: 96 104 118;--color-brand: 61 88 132;--color-accent: 61 88 132;--color-border: 214 217 223;--color-scrollbar-thumb: 176 182 193;--color-scrollbar-thumb-edge: 198 203 213;--color-scrollbar-thumb-hover: 152 159 171;--color-scrollbar-thumb-active: 128 136 150;--radius-panel: 1.05rem;--ease-premium: cubic-bezier(.22, 1, .36, 1)}[data-theme=dark]{color-scheme:dark;--color-bg: 15 16 20;--color-surface: 22 24 29;--color-surface-strong: 31 33 40;--color-text: 239 241 245;--color-muted: 152 159 171;--color-brand: 155 177 216;--color-accent: 155 177 216;--color-border: 60 64 74;--color-scrollbar-thumb: 92 98 111;--color-scrollbar-thumb-edge: 118 125 139;--color-scrollbar-thumb-hover: 110 116 128;--color-scrollbar-thumb-active: 132 138 152}[data-mobile-menu]{position:absolute;top:calc(100% + .55rem);right:0;z-index:20;width:min(22rem,100%);transform-origin:top right;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-.6rem);transition:opacity .22s var(--ease-premium),transform .22s var(--ease-premium),visibility 0s linear .22s}[data-mobile-menu].is-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);transition:opacity .22s var(--ease-premium),transform .22s var(--ease-premium),visibility 0s linear 0s}.button-primary:hover{background-color:rgb(var(--color-brand));color:#fff}.button-secondary:hover,.theme-toggle:hover{border-color:rgb(var(--color-text) / .16);background-color:rgb(var(--color-surface-strong) / .62)}.text-link:hover,.hero-social-link:hover,.footer-social-link:hover,.nav-link:hover,.project-link:hover,.contact-card:hover,.skill-card:hover{color:rgb(var(--color-text))}.project-card:hover,.surface-note:hover,.case-panel:hover{border-color:rgb(var(--color-text) / .12)}.project-card:hover{transform:translateY(-2px)}.mobile-menu-panel .nav-link-active{color:rgb(var(--color-text));background-color:rgb(var(--color-surface-strong) / .78)}.mobile-menu-panel .nav-link-active:after{display:none}.back-to-top:hover{border-color:rgb(var(--color-text) / .14);background-color:rgb(var(--color-surface-strong) / .72)}.button-primary:focus-visible,.button-secondary:focus-visible,.text-link:focus-visible,.hero-social-link:focus-visible,.footer-social-link:focus-visible,.nav-link:focus-visible,.theme-toggle:focus-visible,.contact-card:focus-visible,.back-to-top:focus-visible,.project-link:focus-visible{outline:none;box-shadow:0 0 0 2px rgb(var(--color-bg)),0 0 0 4px rgb(var(--color-brand) / .4)}[data-site-header]{transition:background-color .22s var(--ease-premium),border-color .22s var(--ease-premium)}[data-site-header].is-scrolled .nav-shell{border-bottom-color:rgb(var(--color-text) / .12)}.theme-icon-sun,.theme-icon-moon{transition:opacity .22s ease,transform .22s ease}html[data-theme=dark] .theme-icon-sun,html[data-theme=light] .theme-icon-moon{opacity:0;transform:scale(.85)}html[data-theme=dark] .theme-icon-moon,html[data-theme=light] .theme-icon-sun{opacity:1;transform:scale(1)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1!important;transform:none!important}}@media (min-width: 1024px){.about-aside{border-top-width:0;border-left:1px solid rgb(var(--color-border) / .88);padding-top:0;padding-left:1.5rem}.strava-secondary-block{margin-left:auto}}@media (min-width: 640px){.media-shell-data .media-image{top:1.2rem;right:1.2rem;bottom:1.2rem;left:1.2rem;height:calc(100% - 2.4rem);width:calc(100% - 2.4rem)}.media-shell-data-tight .media-image{top:.7rem;right:.7rem;bottom:.7rem;left:.7rem;height:calc(100% - 1.4rem);width:calc(100% - 1.4rem)}.cycling-hero-image{--image-scale: 1;-o-object-position:center 90%;object-position:center 90%}}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-\[60\]:focus{z-index:60}.focus\:rounded-full:focus{border-radius:9999px}.focus\:bg-text:focus{--tw-bg-opacity: 1;background-color:rgb(var(--color-text) / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:text-bg:focus{--tw-text-opacity: 1;color:rgb(var(--color-bg) / var(--tw-text-opacity, 1))}@media (min-width: 640px){.sm\:aspect-\[16\/9\]{aspect-ratio:16/9}.sm\:pt-16{padding-top:4rem}.sm\:pt-28{padding-top:7rem}.sm\:pt-32{padding-top:8rem}.sm\:pt-6{padding-top:1.5rem}.sm\:pt-8{padding-top:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[1\.5rem\]{font-size:1.5rem}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[180px_minmax\(0\,1fr\)\]{grid-template-columns:180px minmax(0,1fr)}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}}@media (min-width: 1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:max-w-\[18rem\]{max-width:18rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[320px_minmax\(0\,1fr\)\]{grid-template-columns:320px minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.16fr\)_390px\]{grid-template-columns:minmax(0,1.16fr) 390px}.lg\:grid-cols-\[minmax\(0\,1fr\)_320px\]{grid-template-columns:minmax(0,1fr) 320px}.lg\:grid-cols-\[minmax\(0\,1fr\)_340px\]{grid-template-columns:minmax(0,1fr) 340px}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:gap-14{gap:3.5rem}.lg\:pt-20{padding-top:5rem}}@media (min-width: 1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
