/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@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-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--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}}}@layer theme{:root,:host{--font-sans:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Mono", Consolas, monospace;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--text-sm:.875rem;--text-sm--line-height:1.45;--text-base:.9375rem;--text-base--line-height:1.6;--text-lg:1.125rem;--text-lg--line-height:1.55;--text-2xl:2rem;--text-2xl--line-height:1.15;--text-3xl:2.75rem;--text-3xl--line-height:1.08;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--radius-md:.375rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--text-caption:.75rem;--text-caption--line-height:1.4;--text-meta:.8125rem;--text-meta--line-height:1.4;--color-canvas:var(--frame);--color-veil:var(--sheet);--color-veil-high:var(--sheet-glass);--color-inset:var(--fill);--color-scrim:#000c;--color-ink:var(--ink);--color-ink-muted:var(--text-secondary);--color-ink-soft:var(--text-soft);--color-ink-faint:var(--text-tertiary);--color-hairline:var(--hairline);--color-hairline-strong:var(--border);--color-accent:var(--olive-light);--color-accent-soft:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-accent-soft:color-mix(in srgb, var(--color-accent) 14%, transparent)}}:root,:host{--color-action:var(--ink);--color-action-ink:var(--on-ink);--radius-control:var(--r-md);--radius-card:var(--r-lg);--radius-panel:var(--r-xl)}}@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}html{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;scroll-behavior:smooth;scroll-padding-top:7rem}body{background:var(--color-canvas);color:var(--text);font-family:var(--font-sans);letter-spacing:-.009em;font-size:.9375rem;line-height:1.6}h1,h2,h3{text-wrap:balance;letter-spacing:var(--tracking-heading);color:var(--ink)}p{text-wrap:pretty}main{overflow-wrap:anywhere}main :focus-visible{scroll-margin-block:7rem 2rem}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}::selection{background:var(--color-accent);color:var(--frame)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;animation:focus-ring-in var(--duration-quick) var(--ease-smooth-out)}}@layer components{.press{transition:transform var(--duration-micro) var(--ease-smooth-out)}.press:active{transform:scale(var(--press-scale))}.dissolve{opacity:0;filter:blur(var(--blur-small));transition:opacity var(--duration-quick) var(--ease-in-out), filter var(--duration-quick) var(--ease-in-out)}.dissolve.is-in{opacity:1;filter:none}.dialog-motion{opacity:0;transform:scale(var(--scale-large));transition:opacity var(--dialog-close-dur) var(--ease-smooth-out), transform var(--dialog-close-dur) var(--ease-smooth-out)}.dialog-motion.is-open{opacity:1;transition-duration:var(--dialog-open-dur);transform:scale(1)}.dialog-motion.is-closing{opacity:0;transform:scale(var(--scale-large));transition-duration:var(--dialog-close-dur)}.dialog-motion::backdrop{opacity:0;transition:opacity var(--dialog-close-dur) var(--ease-smooth-out)}.dialog-motion.is-open::backdrop{opacity:1;transition-duration:var(--dialog-open-dur)}.dialog-motion.is-closing::backdrop{opacity:0}.menu-motion{transform-origin:0 0;transform:scale(var(--scale-medium));opacity:0;pointer-events:none;transition:transform var(--menu-open-dur) var(--ease-smooth-out), opacity var(--menu-open-dur) var(--ease-smooth-out)}.menu-motion[data-origin=top-right]{transform-origin:100% 0}.menu-motion[data-origin=bottom-left]{transform-origin:0 100%}.menu-motion[data-origin=bottom-right]{transform-origin:100% 100%}.menu-motion.is-open{opacity:1;pointer-events:auto;transform:scale(1)}.menu-motion.is-closing{transform:scale(var(--scale-tiny));opacity:0;pointer-events:none;transition-duration:var(--menu-close-dur)}.segmented-pill{pointer-events:none;z-index:0;width:0;height:calc(100% - 6px);position:absolute;top:3px;left:0;transform:translate(0)}.segmented[data-ready=true] .segmented-pill{transition:transform var(--seg-dur) var(--ease-smooth-out), width var(--seg-dur) var(--ease-smooth-out)}.action{justify-content:center;align-items:center;gap:var(--space-xs);min-height:var(--control-height);padding:var(--space-xs) var(--space-lg);border-radius:var(--r-control);letter-spacing:-.009em;transition:transform var(--duration-micro) var(--ease-smooth-out), filter var(--duration-quick) var(--ease-smooth-out);font-size:.9375rem;font-weight:600;line-height:1.25;display:inline-flex}.action:active{transform:scale(var(--press-scale))}.action-primary{color:var(--on-ink);background:linear-gradient(180deg, var(--ink), var(--ink))}@supports (color:color-mix(in lab, red, red)){.action-primary{background:linear-gradient(180deg, color-mix(in srgb, var(--ink) 88%, white), var(--ink))}}.action-primary{box-shadow:var(--knob-hi), var(--knob-lo), 0 1px 2px #0000004d, 0 0 0 1px #00000040}.action-primary:hover{filter:brightness(1.08)}.action-quiet{color:var(--ink);background:linear-gradient(180deg, var(--fill-subtle), var(--fill));box-shadow:var(--edge-hi), var(--shadow-card)}.action-quiet:hover{filter:brightness(1.12)}.icon-button{min-width:var(--control-height);height:var(--control-height);border-radius:var(--r-control);color:var(--ink);background:linear-gradient(180deg, var(--fill-subtle), var(--fill));box-shadow:var(--edge-hi), var(--shadow-card);transition:transform var(--duration-micro) var(--ease-smooth-out), filter var(--duration-quick) var(--ease-smooth-out);justify-content:center;align-items:center;display:inline-flex}.icon-button:hover{filter:brightness(1.12)}.icon-button:active{transform:scale(var(--press-scale))}.icon-button-sm{min-width:2rem;height:2rem}.segmented{border-radius:var(--r-control);background:var(--fill);box-shadow:inset 0 1px 2px #0000002e, 0 0 0 1px var(--hairline);align-items:center;gap:3px;padding:3px;display:inline-flex;position:relative}.segmented-pill{border-radius:var(--r-control);background:linear-gradient(180deg, var(--fill-strong), var(--fill-subtle));box-shadow:var(--knob-hi), var(--shadow-float)}:root[data-theme=light] .segmented-pill{background:linear-gradient(#fff,#f4f4f4)}.segmented-option{z-index:1;min-height:calc(var(--control-height) - 6px);padding-inline:var(--space-md);border-radius:var(--r-control);color:var(--text-secondary);font-size:.875rem;font-weight:500;line-height:1.25;position:relative}.segmented-option:hover{color:var(--ink)}.segmented-option[aria-checked=true]{color:var(--ink);font-weight:600}.segmented-option:focus-visible{outline-offset:1px}.album-filters{align-items:center;gap:var(--space-xs);flex-wrap:wrap;display:flex}.album-filter{min-height:var(--control-height);padding-inline:var(--space-lg);border-radius:var(--r-control);color:var(--text-secondary);background:var(--fill);box-shadow:var(--shadow-card);transition:transform var(--duration-micro) var(--ease-smooth-out), filter var(--duration-quick) var(--ease-smooth-out);font-size:.875rem;font-weight:500}.album-filter:hover{color:var(--ink);filter:brightness(1.12)}.album-filter[aria-pressed=true],.album-filter[aria-selected=true]{color:var(--on-ink);background:linear-gradient(180deg, var(--ink), var(--ink));font-weight:600}@supports (color:color-mix(in lab, red, red)){.album-filter[aria-pressed=true],.album-filter[aria-selected=true]{background:linear-gradient(180deg, color-mix(in srgb, var(--ink) 88%, white), var(--ink))}}.album-filter[aria-pressed=true],.album-filter[aria-selected=true]{box-shadow:var(--knob-hi), var(--knob-lo), 0 1px 2px #0000004d}.album-filter:active{transform:scale(var(--press-scale))}.content-section{gap:var(--space-lg);flex-direction:column;display:flex}.site-width{width:100%;max-width:var(--page-width);padding-inline:var(--page-gutter);margin-inline:auto}.site-main{padding-top:var(--space-2xl);padding-bottom:var(--space-section);flex:1}.site-header{top:var(--space-md);margin:var(--space-md) var(--page-gutter) 0;z-index:40;pointer-events:none;justify-content:center;display:flex;position:sticky}.site-nav{width:100%;max-width:calc(var(--page-width) - 2 * var(--page-gutter));align-items:center;gap:var(--space-lg);padding:var(--space-unit) var(--space-unit) var(--space-unit) var(--space-md);border-radius:var(--r-control);background:var(--sheet);box-shadow:var(--shadow-float);pointer-events:auto;flex-wrap:wrap;display:flex;position:relative}.nav-content{display:contents}.site-nav .nav-link,.site-nav .icon-button{color:var(--ink)}.site-nav .nav-link:not(.is-active){color:var(--text-secondary)}.site-nav .nav-link:not(.is-active):hover{color:var(--ink)}.menu-line{transform-origin:12px 12px;transition:transform var(--duration-fast) var(--ease-smooth-out), opacity var(--duration-quick)}.menu-line-top{transform-origin:12px 7px}.menu-line-bottom{transform-origin:12px 17px}.nav-toggle[aria-expanded=true] .menu-line-top{transform:translateY(5px)rotate(45deg)}.nav-toggle[aria-expanded=true] .menu-line-middle{opacity:0;transform:scaleX(.6)}.nav-toggle[aria-expanded=true] .menu-line-bottom{transform:translateY(-5px)rotate(-45deg)}.nav-app svg{transition:transform var(--duration-fast) var(--ease-smooth-out)}.nav-app:hover svg{transform:translate(1px,-1px)}.site-nav>.nav-toggle{display:none}.wordmark{min-height:var(--control-height);min-width:var(--control-height);letter-spacing:var(--tracking-heading);color:var(--ink);padding-inline:var(--space-xs);align-items:center;font-size:1.0625rem;font-weight:600;display:inline-flex}.wordmark span{color:var(--color-accent)}.nav-pages{position:relative}.nav-pages,.nav-tools{align-items:center;gap:var(--space-unit);flex-wrap:wrap;display:flex}.nav-tools{border-left:1px solid var(--hairline);padding-left:var(--space-xs);margin-left:auto}.nav-apps{align-items:center;gap:var(--space-unit);border-left:1px solid var(--hairline);padding-left:var(--space-xs);display:flex}.nav-app{gap:var(--space-unit)}.nav-link{z-index:1;min-width:var(--control-height);min-height:var(--control-height);justify-content:center;align-items:center;gap:var(--space-xs);padding-inline:var(--space-md);border-radius:var(--r-control);letter-spacing:-.006em;font-size:.875rem;font-weight:500;line-height:1.25;display:flex;position:relative}.nav-link.is-active{font-weight:600}.nav-pill{z-index:0;pointer-events:none;border-radius:var(--r-control);background:linear-gradient(180deg, var(--fill-strong), var(--fill));width:0;height:0;box-shadow:var(--edge-hi), var(--shadow-card);opacity:0;list-style:none;position:absolute;top:0;left:0}.nav-pages[data-active=true] .nav-pill{opacity:1}.nav-pages[data-ready=true] .nav-pill{transition:transform var(--seg-dur) var(--ease-smooth-out), width var(--seg-dur) var(--ease-smooth-out), height var(--seg-dur) var(--ease-smooth-out), opacity var(--duration-quick) var(--ease-smooth-out)}:root[data-theme=light] .nav-pill{background:linear-gradient(#fff,#f4f4f4)}.skip-link{top:var(--space-md);left:var(--space-md);z-index:50;padding:var(--space-xs) var(--space-lg);min-height:var(--control-height);border-radius:var(--r-control);background:var(--sheet);color:var(--ink);box-shadow:var(--shadow-overlay);transition:transform var(--duration-quick) var(--ease-smooth-out);align-items:center;font-size:.875rem;font-weight:600;display:inline-flex;position:fixed;transform:translateY(-6rem)}.skip-link:focus{transition-duration:var(--dialog-open-dur);transform:translateY(0)}.page-heading{align-items:flex-start;gap:var(--space-lg);padding-block:var(--space-xl) var(--space-2xl);border-bottom:1px solid var(--hairline);flex-direction:column;display:flex}.page-heading h1{font-size:var(--text-page-title);letter-spacing:var(--tracking-tight);font-weight:600;line-height:1.05}.home-sections{gap:var(--space-section);flex-direction:column;display:flex}.home-hero{align-items:center;gap:var(--space-2xl);padding-block:var(--space-lg);grid-template-columns:.92fr 1.08fr;display:grid}.hero-intro{align-items:flex-start;gap:var(--space-lg);flex-direction:column;display:flex}.hero-name{max-width:7ch;font-size:var(--text-hero);line-height:var(--hero-line-height);letter-spacing:var(--tracking-tight);font-weight:650}.hero-description{max-width:34ch;font-size:var(--text-lg);color:var(--text-secondary);line-height:1.55}.hero-actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.hero-location{margin-top:var(--space-lg)}.hero-carousel{gap:var(--space-sm);flex-direction:column;display:flex}.hero-carousel-frame{height:var(--hero-primary-height);border-radius:var(--r-lg);background:var(--fill);box-shadow:var(--shadow-float);display:block;position:relative;overflow:clip}.hero-carousel-frame .hero-slide,.hero-carousel-frame .hero-slide[data-loaded=true]{object-fit:cover;opacity:0;width:100%;height:100%;transition:none;position:absolute;inset:0}.hero-carousel-frame .hero-slide.is-current[data-loaded=true]{opacity:1}.hero-carousel[data-animate=true] .hero-carousel-frame .hero-slide,.hero-carousel[data-animate=true] .hero-carousel-frame .hero-slide[data-loaded=true]{transition:opacity var(--duration-fast) var(--ease-smooth-out)}.hero-carousel-controls{justify-content:center;align-items:center;gap:var(--space-md);display:flex}.hero-carousel-dots{align-items:center;gap:var(--space-md);padding-inline:var(--space-unit);display:flex}.hero-carousel-dot{background:var(--border);border-radius:50%;width:.5rem;height:.5rem;position:relative}.hero-carousel-dot:hover{background:var(--text-tertiary)}.hero-carousel-dot.is-current{background:var(--text-secondary)}.hero-carousel-dot:before{content:"";position:absolute;inset:-.75rem}.hero-carousel-dot:after{content:"";box-shadow:0 0 0 1.5px var(--text-tertiary);opacity:0;transition:opacity var(--duration-quick) var(--ease-smooth-out), transform var(--duration-quick) var(--ease-smooth-out);pointer-events:none;border-radius:50%;position:absolute;inset:-4px;transform:scale(.6)}.hero-carousel-dot.is-current:after{opacity:1;transform:scale(1)}.photo-label{inset:auto var(--space-sm) var(--space-sm);align-items:center;gap:var(--space-xs);border-radius:var(--r-md);padding:var(--space-sm);font-size:var(--text-caption);color:var(--ink);display:flex;position:absolute}.photo-label>span:nth-child(2){flex:1}.editorial-section{gap:var(--space-2xl);border-top:1px solid var(--hairline);padding-top:var(--space-2xl);grid-template-columns:minmax(12rem,.8fr) minmax(0,1.8fr);display:grid}.editorial-section>header{align-self:start}.bio-copy{gap:var(--space-lg);max-width:65ch;font-size:var(--text-lg);color:var(--text-secondary);flex-direction:column;line-height:1.55;display:flex}.skill-card,.timeline-card{background:var(--sheet);border-radius:var(--r-lg);box-shadow:var(--shadow-float);padding:var(--space-lg)}.card-title{letter-spacing:-.011em;color:var(--ink);font-size:1rem;font-weight:600;line-height:1.5rem}.card-body{letter-spacing:-.006em;color:var(--text-secondary);font-size:.875rem;line-height:1.3125rem}.chip-list{gap:var(--space-xs);flex-wrap:wrap;display:flex}.chip{min-height:1.75rem;padding-inline:var(--space-sm);border-radius:var(--r-control);background:var(--fill);color:var(--text-secondary);align-items:center;font-size:.75rem;font-weight:500;line-height:1.05rem;display:inline-flex}.timeline-node{border:1px solid var(--border);background:var(--frame);width:.625rem;height:.625rem;box-shadow:0 0 0 4px var(--frame);border-radius:50%;position:absolute;top:1.9rem;left:-5px}.timeline-node.is-current{background:var(--color-accent);border-color:#0000}.bullet-dot{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:4px;height:4px;margin-top:.55rem}.project-card{padding:var(--space-xl);gap:var(--space-lg);border-radius:var(--r-lg);background:var(--sheet);box-shadow:var(--shadow-float);transition:transform var(--duration-quick) var(--ease-smooth-out);flex-direction:column;display:flex}.project-title{letter-spacing:var(--tracking-heading);color:var(--ink);font-size:1rem;font-weight:600;line-height:1.3}.project-card p{font-size:.9375rem;line-height:1.5}.project-tags{flex-wrap:wrap;gap:6px;display:flex}.project-tag{border-radius:var(--r-control);background:var(--fill);color:var(--text-secondary);align-items:center;padding:3px 10px;font-size:.75rem;font-weight:500;line-height:1.4;display:inline-flex}.project-stat{color:var(--text-secondary);font-size:.8125rem;font-weight:500;line-height:1.4}.project-card footer{border-top:1px solid var(--hairline)}.project-card footer a.action{min-height:2rem;padding-inline:var(--space-md);font-size:.8125rem;font-weight:500}.resume-sheet{padding:var(--space-lg) var(--space-xl);border-radius:var(--r-lg);background:var(--sheet);box-shadow:var(--shadow-float)}.gallery-grid{columns:3;column-gap:var(--space-lg)}.gallery-grid>li{break-inside:avoid;margin-bottom:var(--space-lg)}.gallery-grid.is-out{opacity:0;pointer-events:none;transition:opacity .1s var(--ease-smooth-out)}.gallery-grid.is-in{animation:gallery-in var(--duration-quick) var(--ease-smooth-out) 30ms backwards}.gallery-photo{text-align:left;border-radius:var(--r-md);background:var(--sheet);width:100%;box-shadow:var(--shadow-float);display:block;overflow:hidden}.gallery-photo.press{transition-duration:var(--duration-quick)}@media (hover:hover){.gallery-photo:hover:not(:active){transform:translateY(var(--hover-rise))}}.gallery-caption{align-items:flex-start;gap:var(--space-sm);padding:var(--space-md);display:flex}.gallery-caption-copy{gap:var(--space-xs);flex-direction:column;display:flex}.gallery-caption-title{color:var(--ink);font-size:.875rem;font-weight:500;line-height:1.4}.lightbox-caption{align-items:center;gap:var(--space-md);width:100%;padding:var(--space-xs) var(--space-xs) var(--space-xs) var(--space-lg);background:var(--sheet);border-radius:var(--r-xl);box-shadow:var(--shadow-overlay);display:flex}.lightbox-caption-copy{flex:1;min-width:0}.lightbox-photo{border-radius:var(--r-md);display:block}.lightbox-photo-in{animation:lightbox-in var(--duration-quick) var(--ease-smooth-out) 30ms backwards}.lightbox-photo-out{pointer-events:none;width:100%;height:auto;animation:lightbox-out .1s var(--ease-in-out) forwards;position:absolute;top:0;left:0}.photo-fade{opacity:0;transition:opacity var(--duration-fast) var(--ease-smooth-out)}.photo-fade[data-loaded=true]{opacity:1}.dialog{width:100dvw;max-width:none;height:100dvh;max-height:none;padding:var(--space-md);color:var(--text);background:0 0;margin:0}.dialog::backdrop{background:var(--color-scrim);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.dialog-sheet{background:var(--sheet);border-radius:var(--r-xl);box-shadow:var(--shadow-overlay);padding:var(--space-lg)}.resume-bar{align-items:center;gap:var(--space-md);padding:var(--space-xs) var(--space-xs) var(--space-xs) var(--space-lg);background:var(--sheet);border-radius:var(--r-xl);box-shadow:var(--shadow-overlay);flex-shrink:0;display:flex}.resume-frame{background:var(--sheet);border-radius:var(--r-xl);min-height:0;box-shadow:var(--shadow-overlay);flex:1;padding:.5rem;overflow:hidden}.lightbox-frame{background:var(--sheet);border-radius:var(--r-xl);box-shadow:var(--shadow-overlay);padding:.5rem;overflow:hidden}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.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}.sticky{position:sticky}.top-0{top:0}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:0}.z-30{z-index:30}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.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-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-\[1\.05rem\]{width:1.05rem;height:1.05rem}.size-\[1\.15rem\]{width:1.15rem;height:1.15rem}.h-3{height:calc(var(--spacing) * 3)}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-full{max-height:100%}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-\[50vh\]{min-height:50vh}.min-h-screen{min-height:100vh}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[48ch\]{max-width:48ch}.max-w-\[52ch\]{max-width:52ch}.max-w-\[52rem\]{max-width:52rem}.max-w-\[60ch\]{max-width:60ch}.max-w-full{max-width:100%}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize-y{resize:vertical}.break-inside-avoid{break-inside:avoid}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.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-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-16{gap:calc(var(--spacing) * 16)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-\[var\(--r-md\)\]{border-radius:var(--r-md)}.rounded-card{border-radius:var(--radius-card)}.rounded-control{border-radius:var(--radius-control)}.rounded-full{border-radius:2147483647px}.rounded-md{border-radius:var(--radius-md)}.rounded-panel{border-radius:var(--radius-panel)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent{border-color:var(--color-accent)}.border-hairline{border-color:var(--color-hairline)}.border-hairline-strong{border-color:var(--color-hairline-strong)}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-hairline{background-color:var(--color-hairline)}.bg-inset{background-color:var(--color-inset)}.bg-veil{background-color:var(--color-veil)}.bg-white{background-color:var(--color-white)}.object-cover{object-fit:cover}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.\!px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pb-1{padding-bottom:var(--spacing)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.gutter-date{font-family:var(--font-mono);font-size:var(--text-caption);font-variant-numeric:tabular-nums;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-faint)}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-caption{font-size:var(--text-caption);line-height:var(--tw-leading,var(--text-caption--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-meta{font-size:var(--text-meta);line-height:var(--tw-leading,var(--text-meta--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-\[0\.9375rem\]{font-size:.9375rem}.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-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-ink{color:var(--color-ink)}.text-ink-faint{color:var(--color-ink-faint)}.text-ink-muted{color:var(--color-ink-muted)}.text-ink-soft{color:var(--color-ink-soft)}.uppercase{text-transform:uppercase}.numeric{font-variant-numeric:tabular-nums}.opacity-60{opacity:.6}.glass-high{background:var(--color-veil-high);-webkit-backdrop-filter:blur(16px)saturate(120%);backdrop-filter:blur(16px)saturate(120%);box-shadow:var(--shadow-overlay);border:0}.glass{background:var(--color-veil);box-shadow:var(--shadow-float);border:0}.image-edge{outline:1px solid var(--outline-image);outline-offset:-1px}.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,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))}.placeholder\:text-ink-faint::placeholder{color:var(--color-ink-faint)}@media (hover:hover){.hover\:text-ink:hover{color:var(--color-ink)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\:ml-auto{margin-left:auto}.sm\:h-40{height:calc(var(--spacing) * 40)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[10rem_1fr\]{grid-template-columns:10rem 1fr}.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}}@media (width>=48rem){.md\:block{display:block}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[8\.5rem_1fr\]{grid-template-columns:8.5rem 1fr}.md\:pt-1{padding-top:var(--spacing)}.md\:pl-8{padding-left:calc(var(--spacing) * 8)}.md\:text-right{text-align:right}}}:root{--duration-stagger:40ms;--duration-micro:80ms;--duration-quick:.15s;--duration-fast:.25s;--duration-medium:.35s;--duration-slow:.4s;--duration-very-slow:.5s;--ease-smooth-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:ease-in-out;--ease-out:ease-out;--ease-linear:linear;--ease-bounce:cubic-bezier(.34, 1.36, .64, 1);--ease-bounce-strong:cubic-bezier(.34, 3.85, .64, 1);--distance-micro:4px;--distance-base:8px;--scale-large:.96;--scale-medium:.97;--scale-tiny:.99;--blur-small:2px;--dialog-open-dur:.2s;--dialog-close-dur:.15s;--menu-open-dur:.25s;--menu-close-dur:.15s;--seg-dur:.25s}@media (prefers-reduced-motion:reduce){.press,.dissolve,.dialog-motion,.dialog-motion::backdrop,.menu-motion,.segmented-pill{transition:none!important}.press:active{transform:none}.action,.icon-button,.album-filter{transition:none}.action:active,.icon-button:active,.album-filter:active{transform:none}}@media (width<=1199px){@layer components{.site-nav{justify-content:space-between}.site-nav>.nav-toggle{display:inline-flex}.nav-content{gap:var(--space-sm);top:calc(100% + var(--space-xs));padding:var(--space-md);border-radius:var(--r-lg);background:var(--sheet);box-shadow:var(--shadow-overlay);flex-direction:column;max-height:calc(100dvh - 7rem);display:flex;position:absolute;inset-inline:0;overflow-y:auto}.nav-pages{flex-direction:column;align-items:stretch}.nav-content .nav-link{padding-inline:var(--space-lg);justify-content:flex-start}.nav-apps{border-left:0;border-top:1px solid var(--hairline);padding-left:0;padding-top:var(--space-sm);flex-direction:column;align-items:stretch}.nav-tools{border-left:0;border-top:1px solid var(--hairline);padding:var(--space-sm) 0 0;margin:0}}}@media (width<=639px){@layer components{.site-header{top:var(--space-xs);margin:var(--space-xs) var(--space-sm) 0}.site-nav{gap:var(--space-unit);padding:var(--space-unit) var(--space-unit) var(--space-unit) var(--space-sm)}.wordmark{padding-inline:var(--space-xs)}.site-main{padding-top:var(--space-xl)}.page-heading{padding-top:var(--space-md)}}}@media (prefers-reduced-motion:reduce){.menu-line,.nav-pill,.skip-link,.nav-app svg{transition:none!important}.nav-app:hover svg{transform:none}}@media (width>=1440px){@layer components{.hero-carousel-frame{height:34rem}}}@media (width<=1023px){@layer components{.home-hero{gap:var(--space-lg)}.hero-name{font-size:clamp(2.75rem,8vw,4.5rem)}.hero-carousel-frame{height:29rem}.editorial-section{gap:var(--space-xl);grid-template-columns:1fr}}}@media (width<=639px){@layer components{.home-hero{gap:var(--space-xl);padding-top:var(--space-md);grid-template-columns:1fr}.hero-name{max-width:none;font-size:clamp(2.5rem,12vw,3.5rem)}.hero-location{display:none}.hero-carousel-frame{height:22rem}.skill-card,.timeline-card{padding:var(--space-md)}.timeline-node{top:1.45rem}.photo-label{inset:auto var(--space-xs) var(--space-xs);padding:var(--space-xs);gap:var(--space-unit)}.photo-label>.gutter-date,.photo-label>svg{display:none}}}@media (prefers-reduced-motion:reduce){.hero-slide,.hero-carousel-dot:after{transition:none!important}.hero-carousel-dot:after{transform:none}}@media (hover:hover){@layer components{.project-card:hover{transform:translateY(-2px)}}}@media (width<=639px){@layer components{.project-card,.resume-sheet{padding:var(--space-lg)}}}@media (prefers-reduced-motion:reduce){@layer components{.project-card{transition:none}.project-card:hover{transform:none}}}@keyframes gallery-in{0%{opacity:0;transform:scale(var(--scale-medium))}to{opacity:1;transform:none}}@keyframes lightbox-in{0%{opacity:0;transform:scale(var(--scale-medium))}to{opacity:1;transform:none}}@keyframes lightbox-out{0%{opacity:1}to{opacity:0}}@media (width<=1023px){@layer components{.gallery-grid{columns:2}}}@media (width<=639px){@layer components{.gallery-grid{columns:1}.lightbox-caption{gap:var(--space-xs);flex-wrap:wrap}.lightbox-caption-copy{flex-basis:100%}.lightbox-caption>div:last-child{margin-left:auto}}}@media (prefers-reduced-motion:reduce){.gallery-photo,.photo-fade,.gallery-grid.is-out{transition:none!important}.gallery-grid.is-in,.lightbox-photo-in{animation:none!important}.lightbox-photo-out{display:none}.gallery-photo:hover:not(:active){transform:none}}@media (width>=640px){@layer components{.dialog{padding:var(--space-xl)}}}@media (width<=479px){@layer components{.resume-bar .gutter-date{display:none}}}:root{--olive-light:#b6c77a;--olive-dark:#52612b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--frame:#121212;--sheet:#1b1b1b;--sheet-glass:#1b1b1bf0;--fill:#2a2a2a;--fill-subtle:#222;--fill-strong:#353535;--border:#363636;--hairline:#2b2b2b;--text:#ececec;--text-secondary:#b8b8b8;--text-soft:#a8a8a8;--text-tertiary:#9a9a9a;--ink:#f2f2f2;--on-ink:#141414;--focus-ring:var(--olive-light);--nav-veil:#1b1b1bd1;--nav-sheen:#ffffff08;--r-xs:7px;--r-sm:10px;--r-md:12px;--r-lg:16px;--r-xl:20px;--r-control:999px;--shadow-card:0 0 0 1px #ffffff12;--shadow-float:0 0 0 1px #ffffff14, 0 6px 18px #00000073;--shadow-overlay:0 0 0 1px #ffffff14, 0 18px 44px #0000008c;--shadow-lift:var(--shadow-float);--shadow-lift-high:var(--shadow-overlay);--knob-hi:inset 0 1px 0 #ffffff38;--knob-lo:inset 0 -1px 0 #00000024;--edge-hi:inset 0 1px 0 #ffffff12;--outline-image:#ffffff14;--space-unit:.25rem;--space-xs:calc(var(--space-unit) * 2);--space-sm:calc(var(--space-unit) * 3);--space-md:calc(var(--space-unit) * 4);--space-lg:calc(var(--space-unit) * 6);--space-xl:calc(var(--space-unit) * 8);--space-2xl:calc(var(--space-unit) * 12);--space-section:clamp(4rem, 8vw, 7rem);--page-gutter:clamp(1rem, 3.5vw, 3.5rem);--page-width:90rem;--control-height:2.75rem;--lightbox-photo-height:max(4rem, min(68dvh, calc(100dvh - 12rem)));--hero-primary-height:30rem;--hero-secondary-height:23rem;--tracking-tight:-.03em;--tracking-heading:-.02em;--tracking-label:.08em;--text-hero:clamp(2.75rem, 6vw, 5rem);--text-page-title:clamp(2.25rem, 4.6vw, 3.5rem);--hero-line-height:1.02;--press-scale:.97;--hover-rise:-.125rem}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--frame:#f3f3f4;--sheet:#fff;--sheet-glass:#fffffff0;--fill:#f1f1f1;--fill-subtle:#f7f7f7;--fill-strong:#e8e8e8;--border:#e0e0e0;--hairline:#ebebeb;--text:#303030;--text-secondary:#4d4d4d;--text-soft:#575757;--text-tertiary:#636363;--ink:#1a1a1a;--on-ink:#fff;--focus-ring:var(--olive-dark);--nav-veil:#ffffffd1;--nav-sheen:#fff6;--color-accent:var(--olive-dark);--shadow-card:0 0 0 1px #00000012, 0 1px 2px #0000000a;--shadow-float:0 0 0 1px #0000000f, 0 4px 14px #00000012;--shadow-overlay:0 0 0 1px #0000000f, 0 18px 44px #00000029;--knob-lo:inset 0 -1px 0 #0003;--edge-hi:inset 0 1px 0 #ffffffe6;--outline-image:#0000001a}@keyframes focus-ring-in{0%{outline-offset:0;outline-color:#0000}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}:focus-visible{animation:none}}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@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}
