.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--corner-radius: 6px;--bg: #ffffff;--surface: #eeeeee;--menu-surface: rgb(247 247 247 / 85%);--surface-dark: #dddddd;--text: #111111;--text-muted: #666666;--text-faint: #999999;--border: #eeeeee;--wireframe-border: #eeeeee;--card-shader-back: #cfdddc;--chrome-fg: #666666;--chrome-hover-bg: #f4f4f4;--chrome-hover-fg: #111111;--lock-bg-start: #222222;--lock-bg-end: #111111;--lock-fg: #ffffff;--accordion-fg: #666666;--control-bg-start: #222222;--control-bg-end: #111111;--control-bg-start-hover: #363636;--control-bg-end-hover: #262626;--control-fg: #ffffff;--chip-pink-light: #ff2ddf;--chip-pink-dark: #ff2d55;--chip-yellow-light: #ffe100;--chip-yellow-dark: #ffcc00;--chip-blue-light: #00ccff;--chip-blue-dark: #0088ff;--chip-green-light: #00c893;--chip-green-dark: #00c8b3;--chip-lime-light: #8ac833;--chip-lime-dark: #34c759;--chip-orange-light: #ffb028;--chip-orange-dark: #ff8d28;--chip-violet-light: #5580f5;--chip-violet-dark: #6155f5;--section-title-content-gap: 24px;--article-shell-gap: 4rem;--font-weight-regular: 420;--font-weight-semibold: 550;--shared-three-col-tracks: repeat(3, minmax(0, 1fr));--ease-out: cubic-bezier(.23, 1, .32, 1);--ambient-fade-duration: .2s;--ambient-fade-blur: 2px}:root[data-theme=dark]{--bg: #000000;--surface: #111111;--menu-surface: color-mix(in srgb, var(--surface-dark) 85%, transparent);--surface-dark: #333333;--text: #ffffff;--text-muted: #999999;--text-faint: #777777;--border: #222222;--wireframe-border: #111111;--card-shader-back: #333333;--chrome-fg: #999999;--chrome-hover-bg: #222222;--chrome-hover-fg: #dddddd;--lock-bg-start: #333333;--lock-bg-end: #222222;--lock-fg: #eeeeee;--accordion-fg: #999999;--control-bg-start: #333333;--control-bg-end: #222222;--control-bg-start-hover: #444444;--control-bg-end-hover: #333333;--control-fg: #eeeeee}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}html{color-scheme:light}body{font-family:Inter Variable,Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-weight:var(--font-weight-regular);line-height:1.43}strong,b,h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold)}a{color:inherit;text-underline-offset:.18em}.portfolio-body{min-height:100vh;display:flex;flex-direction:column;overflow-x:clip;position:relative}.portfolio-shell{width:min(100% - 2rem,960px);margin-inline:auto;padding-block:5rem 7.5rem;flex:1;display:flex;flex-direction:column;gap:5rem;position:relative;z-index:1}.ambient-characters{position:absolute;inset:0;z-index:2;overflow:hidden;pointer-events:none;user-select:none}.ambient-character-tooltips{position:absolute;inset:0;z-index:3;overflow:hidden;pointer-events:none}.ambient-character{--ambient-size: 78px;--ambient-shadow-opacity: .11;--ambient-shadow-blur: .1px;--ambient-shadow-skew: 59deg;--ambient-shadow-scale-y: -.5;--ambient-shadow-translate-x: 2%;--ambient-shadow-translate-y: 4%;--ambient-shadow-origin-y: 90%;--ambient-shadow-source-crop-right: 15%;position:absolute;width:var(--ambient-size);aspect-ratio:1;opacity:.86;transform-origin:center bottom}.ambient-character-trigger{position:absolute;z-index:2;inset:-.5rem;margin:0;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;pointer-events:none}:root.is-ambient-character-hovering,:root.is-ambient-character-hovering body{cursor:pointer}.ambient-character.is-poofing .ambient-character-trigger,.ambient-character.is-visibility-poofing .ambient-character-trigger,.ambient-character.is-dismissed .ambient-character-trigger{pointer-events:none}.ambient-character.is-dismissed .ambient-character-presence{opacity:0;filter:blur(var(--ambient-fade-blur));visibility:hidden;transition:none}.ambient-character-poof{position:absolute;top:0;left:0;z-index:3;display:block;width:100%;height:100%;overflow:hidden;opacity:0;pointer-events:none}.ambient-character-poof img{display:block;width:600%;height:100%;max-width:none;transform:translateZ(0);will-change:transform}.ambient-character:is(.is-poofing,.is-visibility-poofing) :is(.ambient-character-frame--subject,.ambient-character-shadow){opacity:0}.ambient-character:is(.is-poofing,.is-visibility-poofing) .ambient-character-poof{opacity:1}.ambient-character:is(.is-poofing,.is-visibility-poofing) .ambient-character-poof img{animation:ambient-character-poof .3s steps(1,end) forwards}.ambient-character-tooltip{position:absolute;top:0;left:0;width:max-content;max-width:min(15rem,calc(100vw - 1rem));color:var(--text);font-size:.875rem;line-height:1.43;opacity:0;visibility:hidden;pointer-events:none;filter:blur(var(--ambient-fade-blur));transition:opacity var(--ambient-fade-duration) var(--ease-out),filter var(--ambient-fade-duration) var(--ease-out),visibility 0s linear var(--ambient-fade-duration)}.ambient-character-tooltip.is-open{filter:blur(0px);transition-delay:0s;opacity:1;visibility:visible;pointer-events:auto}.ambient-character-tooltip.is-coasting{transition:transform var(--ambient-fade-duration) var(--ease-out),opacity var(--ambient-fade-duration) var(--ease-out),filter var(--ambient-fade-duration) var(--ease-out),visibility 0s linear var(--ambient-fade-duration)}.ambient-character-tooltip p{margin:0}.ambient-character-tooltip-copy--reaction{display:none;white-space:nowrap}.ambient-character-tooltip.is-reacting .ambient-character-tooltip-copy--default{display:none}.ambient-character-tooltip.is-reacting .ambient-character-tooltip-copy--reaction{display:block}.ambient-character-tooltip-content{--ambient-tooltip-surface: color-mix(in srgb, var(--bg) 94%, transparent);position:relative;padding:.5rem .75rem;border:1px solid var(--border);border-radius:calc(var(--corner-radius) + 4px);background:var(--ambient-tooltip-surface);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:var(--ambient-tooltip-relocation-opacity, 1);filter:var(--ambient-tooltip-relocation-filter, none);will-change:opacity,filter}.ambient-character-tooltip-content:before,.ambient-character-tooltip-content:after{position:absolute;top:var(--ambient-tooltip-tail-y, 50%);width:0;height:0;content:"";transform:translateY(-50%)}.ambient-character-tooltip[data-tooltip-side=right] .ambient-character-tooltip-content:before{left:-8px;border-block:7px solid transparent;border-right:8px solid var(--border)}.ambient-character-tooltip[data-tooltip-side=right] .ambient-character-tooltip-content:after{left:-6px;border-block:6px solid transparent;border-right:7px solid var(--ambient-tooltip-surface)}.ambient-character-tooltip[data-tooltip-side=left] .ambient-character-tooltip-content:before{right:-8px;border-block:7px solid transparent;border-left:8px solid var(--border)}.ambient-character-tooltip[data-tooltip-side=left] .ambient-character-tooltip-content:after{right:-6px;border-block:6px solid transparent;border-left:7px solid var(--ambient-tooltip-surface)}.ambient-character-frame{display:block;width:100%;height:100%;overflow:hidden}.ambient-character-frame img{display:block;width:300%;height:200%;max-width:none;animation:ambient-character-frames var(--ambient-frame-duration) steps(1,end) infinite;will-change:transform}.ambient-character--shopping .ambient-character-frame img{animation-duration:calc(var(--ambient-frame-duration) / 3);animation-name:ambient-shopping-frames}.ambient-character-frame--subject{position:relative;z-index:1}.ambient-character-shadow-facing,.ambient-character-shadow-source,.ambient-character-shadow-source>.ambient-character-frame{position:absolute;inset:0}.ambient-character-shadow-facing{transform-origin:50% var(--ambient-shadow-origin-y)}.ambient-character-shadow-source>.ambient-character-frame{clip-path:inset(0 var(--ambient-shadow-source-crop-right) 0 0)}.ambient-character-shadow{position:absolute;inset:0;z-index:0;opacity:var(--ambient-shadow-opacity);filter:brightness(0) blur(var(--ambient-shadow-blur));transform:translate3d(var(--ambient-shadow-translate-x),var(--ambient-shadow-translate-y),0) skew(var(--ambient-shadow-skew)) scaleY(var(--ambient-shadow-scale-y));transform-origin:50% var(--ambient-shadow-origin-y);-webkit-mask-image:linear-gradient(90deg,rgba(0,0,0,.95),rgba(0,0,0,.5));mask-image:linear-gradient(90deg,#000000f2,#00000080)}[data-theme=dark] .ambient-character-shadow{opacity:calc(var(--ambient-shadow-opacity) * .5);filter:brightness(0) invert(1) blur(var(--ambient-shadow-blur))}.ambient-character--photography{top:9.5rem;left:max(1rem,calc((100vw - 960px)/2));transform:translate3d(calc(-100% - .5rem),0,0)}.ambient-character--gaming{top:14%;right:max(1rem,calc((100vw - 960px)/2));transform:translate3d(calc(100% + .5rem),0,0)}.ambient-character--music{--ambient-shadow-origin-y: 85%;top:42%;right:max(1rem,calc((100vw - 960px)/2));transform:translate3d(calc(100% + .5rem),0,0)}.ambient-character--shopping{--ambient-shadow-origin-y: 93%;top:45rem;left:max(1rem,calc((100vw - 960px)/2));transform:translate3d(calc(-100% - .5rem),0,0)}.ambient-character--scooter{--ambient-shadow-scale-y: -.11;--ambient-shadow-source-crop-right: 0%;--ambient-shadow-source-rotate: 59deg;--ambient-shadow-source-skew-x: 54deg;--ambient-shadow-source-skew-y: 27deg;--ambient-shadow-source-translate-x: 2%;--ambient-shadow-source-translate-y: 23%;--ambient-shadow-source-scale-x: 2.9;--ambient-shadow-source-scale-y: 2.9;top:50rem;left:0}.ambient-character--scooter .ambient-character-shadow-source{transform:translate3d(var(--ambient-shadow-source-translate-x),var(--ambient-shadow-source-translate-y),0) rotate(var(--ambient-shadow-source-rotate)) skew(var(--ambient-shadow-source-skew-x)) skewY(var(--ambient-shadow-source-skew-y)) scale(var(--ambient-shadow-source-scale-x),var(--ambient-shadow-source-scale-y));transform-origin:50% var(--ambient-shadow-origin-y)}.ambient-character--scooter .ambient-character-shadow{-webkit-mask-image:none;mask-image:none}.ambient-character--scooter .ambient-character-shadow-source>.ambient-character-frame{-webkit-mask-image:linear-gradient(90deg,rgba(0,0,0,.95),rgba(0,0,0,.5));mask-image:linear-gradient(90deg,#000000f2,#00000080)}.ambient-characters.is-motion-ready [data-ambient-motion]:not([data-ambient-motion=stationary]){top:0;left:0;right:auto;will-change:transform,opacity}@media(min-width:641px){body.ambient-tools-active .ambient-characters{position:fixed;inset:1rem auto auto 1rem;z-index:19;width:calc(100vw - 2rem);height:calc(100vh - 2rem);max-height:calc(100vh - 2rem);display:flex;align-items:flex-start;gap:2.5rem;overflow:auto;padding:1rem 2rem 2.5rem 1rem;border:1px solid var(--border);border-radius:var(--corner-radius);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(20px) saturate(160%);pointer-events:auto}body.ambient-tools-active .ambient-character{position:relative;inset:auto!important;width:calc(var(--ambient-size) * var(--ambient-preview-scale, 2));flex:0 0 auto;opacity:.86!important;filter:none!important;transform:none!important;animation:none!important;will-change:auto;pointer-events:none}body.ambient-tools-active .ambient-character-trigger,body.ambient-tools-active .ambient-character-tooltips{display:none}body.ambient-tools-active .ambient-character:after{content:attr(data-ambient-character);position:absolute;top:calc(100% + .5rem);left:50%;color:var(--text-muted);font-size:.75rem;line-height:var(--line-height);text-transform:capitalize;white-space:nowrap;transform:translate(-50%)}body.ambient-tools-active .ambient-character--scooter .ambient-character-frame--subject,body.ambient-tools-active .ambient-character--scooter .ambient-character-shadow-facing,body.ambient-tools-active .ambient-character--scooter .ambient-character-shadow-source>.ambient-character-frame{transform:scaleX(1)!important}body.ambient-tools-active.ambient-tools-facing-left .ambient-character--scooter .ambient-character-frame--subject,body.ambient-tools-active.ambient-tools-facing-left .ambient-character--scooter .ambient-character-shadow-facing,body.ambient-tools-active.ambient-tools-facing-left .ambient-character--scooter .ambient-character-shadow-source>.ambient-character-frame{transform:scaleX(-1)!important}body.ambient-tools-active.ambient-tools-scooter-isolated .ambient-characters{justify-content:center}body.ambient-tools-active.ambient-tools-scooter-isolated .ambient-character:not(.ambient-character--scooter){display:none}body.ambient-tools-active.ambient-tools-shadow-only .ambient-character--scooter .ambient-character-frame--subject{visibility:hidden}body.ambient-tools-active.ambient-tools-shadow-only .ambient-character--scooter:after{content:"scooter shadow"}body.ambient-tools-active.ambient-tools-spawn-editor .ambient-characters{display:none}}@keyframes ambient-character-frames{0%{transform:translateZ(0)}16.666%{transform:translate3d(-33.333%,0,0)}33.333%{transform:translate3d(-66.666%,0,0)}50%{transform:translate3d(0,-50%,0)}66.666%{transform:translate3d(-33.333%,-50%,0)}83.333%,to{transform:translate3d(-66.666%,-50%,0)}}@keyframes ambient-character-poof{0%{transform:translateZ(0)}16.666%{transform:translate3d(-16.666%,0,0)}33.333%{transform:translate3d(-33.333%,0,0)}50%{transform:translate3d(-50%,0,0)}66.666%{transform:translate3d(-66.666%,0,0)}83.333%,to{transform:translate3d(-83.333%,0,0)}}@keyframes ambient-shopping-frames{0%,49.999%{transform:translate3d(0,-50%,0)}50%,99.999%{transform:translate3d(-66.666%,-50%,0)}to{transform:translate3d(0,-50%,0)}}.portfolio-shell>footer.section{margin-top:auto}:is(section,footer).section{padding:.5rem}.topbar{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto auto;column-gap:8px;align-items:center;padding:.5rem .8rem .5rem .5rem}.submark{width:48px;height:24px;display:inline-block;text-decoration:none;line-height:0}.submark img{width:100%;height:100%;display:block}.top-links{display:flex;gap:8px;font-size:.875rem;font-weight:var(--font-weight-regular);color:var(--chrome-fg)}.top-links>a,.top-links>button,.topbar-controls>button,.mobile-menu-trigger,.mobile-menu-toolbar>button,.mobile-menu-group>a,.mobile-menu-group>button{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;margin-block:-4px;border-radius:var(--corner-radius);border:0;background:transparent;appearance:none;-webkit-appearance:none;color:inherit;font:inherit;cursor:pointer;text-decoration:none;transition:background-color .18s ease,color .18s ease,opacity .18s ease,transform .18s ease}.top-links>:first-child{margin-left:-8px}.top-links>:is(a,button):last-child{margin-right:-8px}.top-links>a:hover,.top-links>a:focus-visible,.top-links>button:hover,.top-links>button:focus-visible,.topbar-controls>button:hover,.topbar-controls>button:focus-visible,.mobile-menu-trigger:focus-visible,.mobile-menu-toolbar>button:focus-visible,.mobile-menu-group>a:focus-visible,.mobile-menu-group>button:focus-visible{background-color:var(--chrome-hover-bg);color:var(--chrome-hover-fg)}.topbar-controls{display:flex;align-items:center;justify-self:end;margin-right:-8px}.topbar-controls>button{color:var(--chrome-fg)}:is(.theme-toggle,.mini-mes-toggle){position:relative}:is(.theme-toggle,.mini-mes-toggle):after{content:attr(data-tooltip);position:absolute;z-index:110;top:calc(100% + 10px);right:0;width:max-content;max-width:min(15rem,calc(100vw - 1rem));padding:6px 8px;border-radius:var(--corner-radius);background:var(--text);color:var(--bg);font-size:.75rem;font-weight:var(--font-weight-regular);line-height:1;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-2px);transition:opacity .12s ease,transform .12s ease,visibility 0s linear .12s}:is(.theme-toggle,.mini-mes-toggle):hover:after,:is(.theme-toggle,.mini-mes-toggle):focus-visible:after{opacity:1;visibility:visible;transform:translateY(0);transition-delay:.35s,.35s,0s}:is(.theme-toggle,.mini-mes-toggle):focus-visible:after{transition-delay:0s}.top-links-separator{align-self:center;color:var(--surface-dark);margin-inline:.5rem}.mobile-menu-trigger,.mobile-menu{display:none}@media(hover:hover)and (pointer:fine){.mobile-menu-trigger:hover,.mobile-menu-toolbar>button:hover,.mobile-menu-group>a:hover,.mobile-menu-group>button:hover{background:var(--chrome-hover-bg);color:var(--chrome-hover-fg)}}.theme-toggle-inner{position:relative;width:20px;height:20px;display:block}.theme-toggle .theme-toggle-icon{position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center;transition:opacity .18s ease;pointer-events:none}.theme-toggle .theme-toggle-icon-moon{opacity:1}.theme-toggle .theme-toggle-icon-sun{opacity:0}:root[data-theme=dark] .theme-toggle .theme-toggle-icon-moon{opacity:0}:root[data-theme=dark] .theme-toggle .theme-toggle-icon-sun{opacity:1}.mini-mes-toggle-inner{position:relative;width:20px;height:20px;display:block}.mini-mes-toggle .mini-mes-toggle-icon{position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center;transition:opacity .18s ease;pointer-events:none}.mini-mes-toggle-icon-visible{opacity:1}.mini-mes-toggle-icon-hidden{opacity:0}:root[data-mini-mes=hidden] .mini-mes-toggle-icon-visible{opacity:0}:root[data-mini-mes=hidden] .mini-mes-toggle-icon-hidden{opacity:1}.ambient-characters,.ambient-character-tooltips,.ambient-spawn-editor,.ambient-character-presence{opacity:1;filter:blur(0px);visibility:visible;transition:opacity var(--ambient-fade-duration) var(--ease-out),filter var(--ambient-fade-duration) var(--ease-out),visibility 0s linear 0s,display var(--ambient-fade-duration) allow-discrete}.ambient-characters.is-collision-initializing .ambient-character-presence{transition:none}.ambient-character-presence{position:absolute;inset:0}:root[data-mini-mes=hidden] body:not(.ambient-tools-active):not(.ambient-mini-mes-poofing) :is(.ambient-characters,.ambient-character-tooltips),:is(.ambient-characters,.ambient-character-tooltips).is-resizing,:is(.ambient-characters,.ambient-character-tooltips,.ambient-spawn-editor).is-switching-view,.ambient-character.is-collision-hidden .ambient-character-presence{opacity:0;filter:blur(var(--ambient-fade-blur));visibility:hidden;transition-delay:0s,0s,var(--ambient-fade-duration),0s}.ambient-character.is-returning .ambient-character-presence{opacity:0;filter:blur(var(--ambient-fade-blur));visibility:hidden;transition:none}@starting-style{.ambient-characters,.ambient-character-tooltips{opacity:0;filter:blur(var(--ambient-fade-blur))}}.section{display:flex;flex-direction:column;gap:var(--section-title-content-gap)}#side-projects.section,#notes.section{padding-bottom:0}.section-label{display:flex;flex-direction:column;align-items:flex-start;gap:var(--section-title-content-gap);color:var(--text);height:auto}.section-label .label-breadcrumb{color:var(--text-muted);font-size:.875rem;line-height:1.43;letter-spacing:0;font-weight:var(--font-weight-regular)}.section-label a,.section-label a:visited,.section-label a:hover,.section-label a:active,.section-label a:focus-visible{text-decoration:none}.hero-title,.section-label{margin:0;font-family:Inter Variable,Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:60px;line-height:100%;letter-spacing:-1.5px;font-weight:400;font-optical-sizing:auto;font-variation-settings:normal}.section-label.section-label-compact{font-size:24px;line-height:100%;letter-spacing:-.35px}.hero-title{height:120px}.hero-title-line{display:block}.label-strong{color:var(--text)}.label-breadcrumb{display:inline-flex;align-items:center;gap:.35rem}.chip{padding:6px 10px 6px 8px;border-radius:var(--corner-radius) 50% 50% var(--corner-radius);display:inline-flex;align-items:center;justify-content:center}.chip svg{color:#fff}svg.lucide{width:20px;height:20px;stroke-width:2.2px}.chip-pink{background:linear-gradient(180deg,var(--chip-pink-light) 0%,var(--chip-pink-dark) 100%)}.chip-yellow{background:linear-gradient(180deg,var(--chip-yellow-light) 0%,var(--chip-yellow-dark) 100%)}.chip-blue{background:linear-gradient(180deg,var(--chip-blue-light) 0%,var(--chip-blue-dark) 100%)}.chip-green{background:linear-gradient(180deg,var(--chip-green-light) 0%,var(--chip-green-dark) 100%)}.chip-lime{background:linear-gradient(180deg,var(--chip-lime-light) 0%,var(--chip-lime-dark) 100%)}.chip-orange{background:linear-gradient(180deg,var(--chip-orange-light) 0%,var(--chip-orange-dark) 100%)}.chip-violet{background:linear-gradient(180deg,var(--chip-violet-light) 0%,var(--chip-violet-dark) 100%)}.intro{width:min(100%,523px);display:flex;flex-direction:column;gap:1rem}.intro p{margin:0;font-size:.875rem;line-height:1.43;color:var(--text);font-weight:var(--font-weight-regular)}.intro p.intro-supporting-copy{color:var(--text-muted)}.intro-status-line{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:.625rem;align-items:start}.intro-status-copy{min-width:0}.intro-status-dot{position:relative;isolation:isolate;display:block;flex-shrink:0;width:.5rem;height:.5rem;margin-top:calc((1.43em - .5rem)/2);border-radius:999px;background:linear-gradient(180deg,var(--chip-lime-light) 0%,var(--chip-lime-dark) 100%)}.intro-status-dot:before{content:"";position:absolute;inset:-.45rem;border-radius:inherit;background:linear-gradient(180deg,var(--chip-lime-light) 0%,var(--chip-lime-dark) 100%);pointer-events:none;opacity:.22;filter:blur(10px)}.intro-status-ring{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,var(--chip-lime-light) 0%,var(--chip-lime-dark) 100%);pointer-events:none;opacity:0;transform:scale(1);will-change:transform,opacity;-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 1px),#000 calc(100% - 1px));mask:radial-gradient(farthest-side,transparent calc(100% - 1px),#000 calc(100% - 1px));animation:intro-status-radar 3.2s linear infinite}@keyframes intro-status-radar{0%,6%{transform:scale(1);opacity:0}14%{opacity:.52}72%{opacity:.08}to{transform:scale(3.8);opacity:0}}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;margin-top:1rem;gap:12px}.hero-action{position:relative;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:.5rem .75rem;border:1px solid var(--border);border-radius:999px;background-color:transparent;color:var(--text);font-family:inherit;font-size:.875rem;line-height:1.43;font-weight:var(--font-weight-regular);text-decoration:none;appearance:none;-webkit-appearance:none;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease,color .18s ease,opacity .18s ease,transform .18s ease}.hero-action-primary{border-color:#111;background-color:#111;color:#fff}:root[data-theme=dark] .hero-action-primary{border-color:#eee;background-color:#eee;color:#111}.hero-action-primary:hover,.hero-action-primary:focus-visible{border-color:#222;background-color:#222;box-shadow:0 0 0 3px var(--border)}:root[data-theme=dark] .hero-action-primary:hover,:root[data-theme=dark] .hero-action-primary:focus-visible{border-color:#d8d8d8;background-color:#d8d8d8;box-shadow:0 0 0 3px var(--border)}.hero-action-secondary:hover,.hero-action-secondary:focus-visible{background-color:var(--chrome-hover-bg)}.hero-action-secondary{border-width:1px;font-weight:460}.copy-email-button-inner{display:inline-grid;place-items:center}.copy-email-label-wrap{display:inline-grid;place-items:center;overflow:hidden}.copy-email-label-sizer,.copy-email-label{grid-area:1 / 1;white-space:nowrap}.copy-email-label-sizer{visibility:hidden}.copy-email-label{will-change:transform,opacity;transition:opacity .16s ease-out,transform .22s cubic-bezier(.22,1,.36,1)}.copy-email-label-idle{opacity:1;transform:translateY(0)}.copy-email-label-copied{opacity:0;transform:translateY(35%)}[data-copy-email][data-copy-state=copied] .copy-email-label-idle{opacity:0;transform:translateY(-35%)}[data-copy-email][data-copy-state=copied] .copy-email-label-copied{opacity:1;transform:translateY(0)}.intro strong,.muted-strong{font-weight:var(--font-weight-semibold)}.intro .muted-strong{color:var(--text-muted)}.activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.activity-card{display:flex;flex-direction:column;gap:0;height:100%}.activity-card-link{display:flex;flex:1;flex-direction:column;color:inherit;text-decoration:none;cursor:pointer}@media(hover:hover){.activity-card:hover .activity-art,.project-item:hover .project-art{--thumbnail-y-offset: -.25rem}}.activity-card:focus-within .activity-art,.project-item:focus-within .project-art{--thumbnail-y-offset: -.25rem}.activity-card .card-title{margin-top:.65rem}.activity-art{position:relative;display:block;width:100%;aspect-ratio:304 / 161;overflow:hidden;text-decoration:none;background-color:transparent}.thumbnail-frame{position:relative;box-sizing:border-box;border-radius:var(--corner-radius);transform:translateY(var(--thumbnail-y-offset, 0));transform-origin:center;transition:transform .22s cubic-bezier(.22,1,.36,1)}.thumbnail-frame:after{content:"";position:absolute;inset:0;z-index:4;border-radius:inherit;border:1px solid rgba(255,255,255,.16);pointer-events:none}.activity-shot{width:100%;height:100%;display:block;object-fit:cover;object-position:center center}.activity-art--figma-plugin .activity-shot{width:calc(100% + 2px);max-width:none;object-position:center top}.activity-art--photography .activity-shot{object-position:center 58%}.lock-badge{position:absolute;left:.75rem;top:.75rem;z-index:5;padding:6px;border-radius:var(--corner-radius);background:linear-gradient(180deg,var(--lock-bg-start) 0%,var(--lock-bg-end) 100%);color:var(--lock-fg);display:inline-flex;align-items:center;justify-content:center}.lock-bottom{top:auto;bottom:.75rem}.card-title,.card-copy{margin:0;font-size:.875rem;line-height:1.43}.card-title{color:var(--text);font-weight:var(--font-weight-regular)}.card-copy,.muted{color:var(--text-muted);font-weight:var(--font-weight-regular)}.project-list{display:flex;flex-direction:column;gap:0}.project-list-featured{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem}.project-item{height:100%}.project-item--featured{grid-column:1 / -1}.project-card-link{height:100%;color:inherit;text-decoration:none;cursor:pointer}.project-card-link--featured{display:grid;grid-template-columns:1fr 304px;gap:1.5rem}.activity-card-link[data-locked=true],.project-card-link[data-locked=true]{cursor:default}.project-art{position:relative;width:100%;aspect-ratio:632 / 335;container-type:inline-size;background-color:var(--card-shader-back);overflow:hidden}.project-art--screenshot{background-color:var(--card-shader-back)}.project-shot-shell{position:absolute;inset:5cqw 5cqw -2px;z-index:1;overflow:hidden}.project-shot{width:100%;height:100%;display:block;object-fit:cover;object-position:center center}.project-art--screenshot .project-shot{object-position:center top}.project-art[data-grain-shader]{background:radial-gradient(circle at 78% 16%,var(--card-shader-middle),transparent 58%),linear-gradient(135deg,var(--card-shader-start),var(--card-shader-end))}.project-art[data-grain-shader]>canvas{filter:saturate(1)}.project-art:before{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(circle at 50% 82%,rgba(255,255,255,.3) 0 8%,transparent 8%),linear-gradient(to top,rgba(255,255,255,.2) 10%,transparent 40%)}.project-art.project-art--screenshot:before{content:none}.project-art>canvas{position:absolute;inset:0;z-index:0}.project-art.art-form .form-layer,.project-art.art-form .form-control{position:absolute;pointer-events:none;user-select:none}.project-art.art-form .form-layer{top:6.65cqw;left:50%;transform:translate(-50%);z-index:2;display:block;line-height:0}.project-art.art-form .form-layer-image{width:100%;height:auto;display:block}.project-art.art-form .wireframe-rule{position:absolute;top:12.31%;height:1px;background:var(--wireframe-border)}.project-art.art-form .form-layer-before{width:28.16cqw;opacity:0;transition:opacity .24s ease}.project-art.art-form .form-layer-before .wireframe-rule{left:4.49%;width:91.01%}.project-art.art-form .form-layer-after{width:36.71cqw;opacity:1;transition:opacity .26s ease}.project-art.art-form .form-layer-after .wireframe-rule{left:15.53%;width:68.94%}.project-art.art-form .form-control{z-index:3;opacity:1;transition:transform .34s cubic-bezier(.22,1,.36,1),opacity .22s ease}.project-art.art-form .form-control-left{width:4.75cqw;left:3.16cqw;top:3.16cqw;transform:translate(0)}.project-art.art-form .form-control-right{width:8.07cqw;right:3.16cqw;top:3.16cqw;transform:translate(0)}.project-art.art-form:before{background:linear-gradient(to top,rgba(255,255,255,.2) 10%,transparent 40%)}.project-art.art-phone:before{background:linear-gradient(to top,rgba(255,255,255,.2) 10%,transparent 40%)}.project-art.art-phone .phone-stealth-blur,.project-art.art-phone .phone-device-blur,.project-art.art-phone .phone-stealth,.project-art.art-phone .phone-device{position:absolute;pointer-events:none;user-select:none}.project-art.art-phone .phone-stealth-blur{width:10.76cqw;height:10.76cqw;left:50%;top:16.61cqw;transform:translate(-50%);border-radius:50%;background:#ffffff14;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:2}.project-art.art-phone .phone-device-blur{width:52.53cqw;height:18.2cqw;left:50%;bottom:-2.85cqw;transform:translate(-50%) translateY(-2.53cqw);background:#ffffff1a;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);-webkit-mask-image:url(/images/phone.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:100% 100%;mask-image:url(/images/phone.svg);mask-repeat:no-repeat;mask-position:center;mask-size:100% 100%;z-index:2;transition:transform .26s cubic-bezier(.22,1,.36,1)}.project-art.art-phone .phone-stealth{width:10.76cqw;left:50%;top:16.61cqw;transform:translate(-50%);z-index:3}.project-art.art-phone .phone-device{width:52.53cqw;left:50%;bottom:-2.85cqw;transform:translate(-50%) translateY(-2.53cqw);z-index:3;transition:transform .26s cubic-bezier(.22,1,.36,1)}.project-art.art-phone :is(.phone-stealth,.phone-device){height:auto}.project-copy{display:flex;flex-direction:column;gap:0}.project-copy>.card-copy+.card-copy{margin-top:24px}.side-projects-stack{display:flex;flex-direction:column;gap:0}.side-projects-grid{padding-top:1.5rem}.about-content .side-projects-grid{padding-top:0}.listing-grid{display:grid;grid-template-columns:var(--shared-three-col-tracks);gap:0 1.5rem;font-size:.875rem;line-height:1.43;font-weight:var(--font-weight-regular)}.listing-grid.two-col{grid-template-columns:var(--shared-three-col-tracks)}.listing-row{grid-column:1 / -1;display:grid;grid-template-columns:var(--shared-three-col-tracks);column-gap:1.5rem;align-items:center;padding:8px 0}.listing-row,.listing-row:visited,.listing-row:hover,.listing-row:active,.listing-row:focus-visible{text-decoration:none}.side-project-row>.muted{grid-column:2 / 4}.side-projects-grid>.listing-row:first-child{padding-top:0}.listing-grid.two-col a,.listing-grid.two-col a:visited,.listing-grid.two-col a:hover,.listing-grid.two-col a:active,.listing-grid.two-col a:focus-visible{text-decoration:none}.hover-icon-link{display:inline-flex;align-items:center;gap:4px}.hover-icon-link .hover-arrow{width:0;opacity:0;transform:translate(-.25rem);overflow:hidden;transition:width .18s ease,opacity .18s ease,transform .18s ease}.hover-icon-link:hover .hover-arrow,.hover-icon-link:focus-visible .hover-arrow{width:20px;opacity:1;transform:translate(0)}.listing-row:hover .hover-arrow,.listing-row:focus-visible .hover-arrow,.listing-row:focus-within .hover-arrow{width:20px;opacity:1;transform:translate(0)}.listing-grid .end{text-align:right}.experience-listing-grid{display:flex;flex-direction:column;gap:16px}.experience-entry{display:grid;grid-template-columns:var(--shared-three-col-tracks);column-gap:1.5rem;row-gap:0}.experience-entry .experience-title{grid-column:1;grid-row:1}.experience-entry .experience-description{grid-column:2;grid-row:1}.experience-entry .experience-date{grid-column:3;grid-row:1;justify-self:end;text-align:right}.notes .listing-grid a,.notes .listing-grid a:visited,.notes .listing-grid a:hover,.notes .listing-grid a:active,.notes .listing-grid a:focus-visible{text-decoration:none}.expandable{margin:0}.expandable[open]{display:flex;flex-direction:column;gap:5rem}.expandable>summary{list-style:none;margin:0 auto;width:fit-content;padding:.5rem .75rem;border:1px solid var(--border);border-radius:999px;display:flex;align-items:center;justify-content:center;gap:.25rem;cursor:pointer;text-align:center;font-size:.875rem;line-height:1.43;font-weight:460;background:transparent;color:var(--text);transition:background-color .18s ease,border-color .18s ease,color .18s ease,opacity .18s ease,transform .18s ease}.expandable>summary::-webkit-details-marker{display:none}.expandable>summary:hover,.expandable>summary:focus-visible{background-color:var(--chrome-hover-bg)}.expandable .summary-label-hide,.expandable[open] .summary-label-show{display:none}.expandable[open] .summary-label-hide{display:inline}.expandable[open]>summary svg{transform:rotate(180deg)}.expandable .expansion{margin-top:0}.expandable .expansion+.expansion{margin-top:5rem}.footer-grid{padding:.5rem;display:grid;grid-template-columns:var(--shared-three-col-tracks);gap:1rem 1.5rem;font-size:.875rem;line-height:1.43;font-weight:var(--font-weight-regular)}.footer-grid a{color:var(--chrome-fg);font-weight:var(--font-weight-regular);display:inline-flex;align-items:center;padding:4px 8px;margin:-4px -8px;border-radius:var(--corner-radius);width:fit-content;justify-self:start;text-decoration:none;transition:background-color .18s ease,color .18s ease}.footer-grid a.end{justify-self:end}.footer-grid a:hover,.footer-grid a:focus-visible{background-color:var(--chrome-hover-bg);color:var(--chrome-hover-fg)}.footer-grid .end{text-align:right}.footer-twitter-mobile{display:none}.about-content{display:flex;flex-direction:column;gap:5rem}.about-introduction{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(0,1fr);align-items:start;gap:var(--section-title-content-gap)}.about-portrait-frame{position:relative;align-self:stretch}.about-portrait{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center top;border-radius:var(--corner-radius)}.article-shell{gap:var(--article-shell-gap)}.article-block{display:flex;flex-direction:column;gap:var(--section-title-content-gap);padding:.5rem}.article-copy code{font-family:Inter Variable,Inter;font-size:.9em}.article-list{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.5rem}.article-list li{color:var(--text);font-size:.875rem;line-height:1.43;font-weight:var(--font-weight-regular)}.code-strip{background:var(--surface);border-radius:var(--corner-radius);padding:1rem;width:min(100%,523px)}.code-strip code{font-family:Geist Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.43}.slides-embed-wrap{width:min(100%,960px)}.slides-embed{width:100%;aspect-ratio:16 / 9;border:0;border-radius:var(--corner-radius);background:var(--surface)}.slides-embed-wrap img{width:100%;height:auto;display:block;border-radius:var(--corner-radius)}.case-study-lock{width:min(100%,523px);padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;border-radius:var(--corner-radius);background:var(--chrome-hover-bg);color:var(--text-muted);text-align:center}.case-study-lock p{margin:0;font-size:.875rem;line-height:1.43}.youtube-facade{position:relative;width:100%;aspect-ratio:16 / 9;overflow:hidden;border-radius:var(--corner-radius);background:#111;isolation:isolate}.youtube-facade-trigger,.youtube-facade-frame,.youtube-facade-shield{position:absolute;inset:0;width:100%;height:100%}.youtube-facade-trigger{z-index:2;display:block;padding:0;border:0;border-radius:inherit;overflow:hidden;background:#111;color:var(--control-fg);cursor:pointer;appearance:none;-webkit-appearance:none;transition:box-shadow .18s ease}.youtube-facade-trigger[hidden]{display:none}.youtube-facade-trigger img{width:100%;height:100%;display:block;object-fit:cover;transition:filter .2s ease,transform .2s ease}.youtube-facade-play{position:absolute;top:50%;left:50%;display:inline-flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);border-radius:var(--corner-radius);background:linear-gradient(180deg,var(--control-bg-start) 0%,var(--control-bg-end) 100%);color:var(--control-fg);padding:.75rem 1rem;transition:background .18s ease,opacity .18s ease,transform .18s ease}.youtube-facade-trigger:hover .youtube-facade-play,.youtube-facade-trigger:focus-visible .youtube-facade-play{background:linear-gradient(180deg,var(--control-bg-start-hover) 0%,var(--control-bg-end-hover) 100%);transform:translate(-50%,-50%) scale(1.04)}.youtube-facade-trigger:active .youtube-facade-play{transform:translate(-50%,-50%) scale(.96)}.youtube-facade-trigger:focus-visible{outline:0;box-shadow:inset 0 0 0 3px var(--border)}.youtube-facade-frame{z-index:1;opacity:0;border-radius:inherit;background:#111}.youtube-facade-shield{z-index:3;pointer-events:none;opacity:0;background:#111;transition:opacity 80ms cubic-bezier(.22,1,.36,1)}.youtube-facade--loading .youtube-facade-trigger{pointer-events:none}.youtube-facade--loading .youtube-facade-trigger img{filter:blur(22px) brightness(.35) saturate(.6);transform:scale(1.1)}.youtube-facade--loading .youtube-facade-play{opacity:0;transform:translate(-50%,-50%) scale(.92)}.youtube-facade--revealing .youtube-facade-trigger{opacity:0;pointer-events:none;transition-duration:0s}.youtube-facade--loaded .youtube-facade-trigger{opacity:0;pointer-events:none}.youtube-facade--loading .youtube-facade-shield{opacity:1;transition-duration:.2s}.youtube-facade--revealing .youtube-facade-frame,.youtube-facade--loaded .youtube-facade-frame{opacity:1}.youtube-facade--revealing .youtube-facade-shield,.youtube-facade--loaded .youtube-facade-shield{opacity:0}.article-image-container{width:min(100%,960px);padding:20px;background:var(--surface);border-radius:var(--corner-radius);overflow:hidden}.article-image-container--clip-bottom{padding:20px 20px 0}.article-image-container--clip-bottom img{margin-bottom:-24px}.article-image-container--clip-top{padding:0 20px 20px}.article-image-container--clip-top img{margin-top:-24px}.article-image-container--full{padding:20px}@media(max-width:640px){.article-image-container{padding:8px}.article-image-container--clip-bottom{padding:8px 8px 0}.article-image-container--clip-top{padding:0 8px 8px}.article-image-container--full{padding:8px}}.article-image-container img{width:100%;height:auto;display:block;border-radius:0}.case-study-results{width:min(100%,523px);display:grid;grid-template-columns:var(--shared-three-col-tracks);gap:var(--section-title-content-gap);margin:0}.case-study-results div{min-width:0}.case-study-results dt{font-size:1.5rem;line-height:1;font-weight:var(--font-weight-semibold)}.case-study-results dd{margin:4px 0 0;color:var(--text-muted);font-size:.875rem}@media(max-width:640px){.case-study-results{grid-template-columns:minmax(0,1fr)}}.media-accordion{width:min(100%,523px);margin:0;border:0;border-radius:var(--corner-radius);background:var(--surface);padding:0;overflow:hidden;color:var(--accordion-fg)}.media-accordion>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:.75rem;cursor:pointer;padding:1.125rem 1.25rem;font-size:.875rem;line-height:1.43;font-weight:var(--font-weight-semibold);color:var(--accordion-fg)}.media-accordion>summary::-webkit-details-marker{display:none}.media-accordion .accordion-chevron{color:var(--accordion-fg);transition:transform .18s ease}.media-accordion[open] .accordion-chevron{transform:rotate(180deg)}.media-accordion .slides-embed-wrap{width:100%;padding:0 .75rem .75rem}.photo-grid{columns:3;column-gap:.75rem;row-gap:.75rem;list-style:none;margin:0;padding:0}.photo-grid-item{break-inside:avoid;margin-bottom:.75rem;display:block;overflow:hidden;background:var(--surface);text-decoration:none;border:none;padding:0;width:100%;text-align:left;font:inherit;color:inherit}.photo-grid--justified{display:flex;flex-direction:column}.artwork-grid-row{display:grid;gap:inherit;align-items:start}.artwork-grid-row>.photo-grid-item{margin-bottom:0}.photo-grid-item img,.photo-grid-item video{width:100%;height:auto;display:block}.photo-overlay{position:fixed;inset:0;z-index:1000;background:#0000;display:flex;align-items:center;justify-content:center;padding:2rem;cursor:pointer;transition:background .18s ease;overflow:hidden;box-sizing:border-box}.photo-overlay.photo-overlay--open{background:#000000eb}.photo-overlay[hidden]{display:none}.photo-overlay-content{position:relative;width:100%;height:100%;max-width:100%;max-height:100%;display:flex;align-items:center;justify-content:center;cursor:default;pointer-events:auto;min-width:0;min-height:0;overflow:hidden}.photo-overlay-img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;object-position:center;display:block;transform:scale(.95);opacity:0;transition:transform .18s ease,opacity .18s ease}.photo-overlay.photo-overlay--open .photo-overlay-img{transform:scale(1);opacity:1}.photo-overlay-close,.photo-overlay-prev,.photo-overlay-next{position:absolute;top:1rem;right:1rem;width:2.75rem;height:2.75rem;padding:0;border:none;background:#ffffff1f;color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .18s ease;pointer-events:auto}.photo-overlay-close:hover,.photo-overlay-prev:hover,.photo-overlay-next:hover{background:#ffffff38}.photo-overlay-prev{top:50%;left:1rem;right:auto;transform:translateY(-50%)}.photo-overlay-next{top:50%;right:1rem;left:auto;transform:translateY(-50%)}.photo-overlay-prev[hidden],.photo-overlay-next[hidden]{display:none}.photo-overlay--loading .photo-overlay-content:after{content:"";position:absolute;inset:0;background:#0006;border-radius:50%;width:3rem;height:3rem;margin:auto;animation:photo-overlay-spin .8s linear infinite;border:3px solid rgb(255 255 255 / 30%);border-top-color:#fff}@keyframes photo-overlay-spin{to{transform:rotate(360deg)}}.photo-grid-item.video-grid-item{position:relative;cursor:pointer}.video-tile-controls{position:absolute;bottom:0;left:0;display:flex;align-items:center;gap:6px;padding:6px;opacity:0;transition:opacity .18s ease;pointer-events:none}.photo-grid-item.video-grid-item:hover .video-tile-controls,.photo-grid-item.video-grid-item:focus-within .video-tile-controls{opacity:1;pointer-events:auto}.video-tile-btn,.video-overlay-btn{display:inline-flex;align-items:center;justify-content:center;font-family:inherit;border:none;cursor:pointer}.video-tile-btn.video-tile-pause,.video-tile-btn.video-tile-restart,#video-overlay-pause,#video-overlay-restart{aspect-ratio:1;flex-shrink:0;padding:6px;border-radius:var(--corner-radius);background:linear-gradient(180deg,var(--control-bg-start) 0%,var(--control-bg-end) 100%);color:var(--control-fg)}.video-tile-btn.video-tile-pause:hover,.video-tile-btn.video-tile-restart:hover,#video-overlay-pause:hover,#video-overlay-restart:hover{background:linear-gradient(180deg,var(--control-bg-start-hover) 0%,var(--control-bg-end-hover) 100%)}.video-tile-icon-wrap,.video-overlay-icon-wrap{position:relative;display:inline-flex;width:20px;height:20px}.video-tile-icon-wrap .video-tile-icon,.video-overlay-icon-wrap .video-overlay-icon-pause,.video-overlay-icon-wrap .video-overlay-icon-play{position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center}.video-tile-icon-wrap .video-tile-icon[hidden],.video-overlay-icon-wrap [hidden]{display:none}.video-overlay-content{display:flex;align-items:center;justify-content:center;min-width:0}.video-overlay-video-wrap{position:relative;display:flex;align-items:center;justify-content:center;max-width:100%;max-height:100%}.video-overlay-video{max-width:100%;max-height:calc(100vh - 8rem);width:auto;height:auto;object-fit:contain;background:#000;display:block}.video-overlay-video-wrap .video-overlay-controls{position:absolute;bottom:0;left:0;display:flex;align-items:center;gap:6px;flex-shrink:0;padding:6px}.video-overlay-btn{aspect-ratio:1;flex-shrink:0}.video-overlay-close{top:1rem;right:1rem}#video-overlay-prev,#video-overlay-next{top:50%;transform:translateY(-50%)}#video-overlay-prev{left:1rem;right:auto}#video-overlay-next{right:1rem;left:auto}.demo-overlay{cursor:pointer;padding:1.25rem}.demo-overlay-content{align-items:stretch;justify-content:center;width:100%;height:100%}.demo-overlay-shell{width:100%;height:100%;display:flex;flex-direction:column;background:var(--surface);border:1px solid #333333;border-radius:var(--corner-radius);overflow:hidden;box-shadow:0 24px 64px #0000004d;transform:translateY(.5rem);opacity:0;transition:transform .18s ease,opacity .18s ease}:root[data-theme=dark] .demo-overlay-shell{border-color:var(--border)}.demo-overlay.photo-overlay--open .demo-overlay-shell{transform:translateY(0);opacity:1}.demo-overlay-toolbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:.75rem;border-bottom:1px solid var(--border);background:var(--bg)}.demo-overlay-title{margin:0;text-align:center;font-size:.875rem;line-height:1.43;color:var(--text-muted);font-weight:var(--font-weight-semibold)}.demo-overlay-action{display:inline-flex;align-items:center;gap:.35rem;padding:4px 8px;margin:-4px;border:0;border-radius:var(--corner-radius);background:transparent;color:var(--chrome-fg);font-family:inherit;font-size:.875rem;line-height:1.43;font-weight:var(--font-weight-regular);cursor:pointer;text-decoration:none;transition:background-color .18s ease,color .18s ease}.demo-overlay-action:hover,.demo-overlay-action:focus-visible{background:var(--chrome-hover-bg);color:var(--chrome-hover-fg)}.demo-overlay-frame-wrap{position:relative;flex:1;min-height:0;background:var(--bg)}.demo-overlay-frame{width:100%;height:100%;border:0;display:block;background:#fff}.demo-overlay-loading{position:absolute;inset:0;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;color:var(--text-muted);font-size:.875rem;line-height:1.43;background:var(--surface)}.demo-overlay-loading[hidden]{display:none}.demo-overlay-loading-spinner{width:1rem;height:1rem;border-radius:50%;border:2px solid var(--text-faint);border-top-color:var(--text);animation:photo-overlay-spin .8s linear infinite}.strike{color:var(--text-muted)!important;text-decoration:line-through}@media(max-width:1204px){.ambient-characters,.ambient-character-tooltips,.mini-mes-toggle{display:none!important}.ambient-characters,.ambient-character-tooltips{opacity:0;filter:blur(var(--ambient-fade-blur));visibility:hidden;transition-delay:0s,0s,var(--ambient-fade-duration),0s}}@media(max-width:640px){::view-transition-group(root),::view-transition-old(root),::view-transition-new(root){animation:none!important}.poltergeist-demo-cta{display:none}.about-content{gap:3rem}.about-introduction{grid-template-columns:minmax(0,1fr)}.about-portrait-frame{aspect-ratio:1}.topbar{grid-template-columns:minmax(0,1fr) auto;column-gap:0}.topbar>.topbar-controls,.topbar>.top-links{display:none}.mobile-menu-trigger{position:relative;z-index:101;display:inline-flex;justify-self:end;margin-right:-8px;color:var(--chrome-fg)}.mobile-menu{display:block;position:absolute;z-index:100;top:0;right:0;width:min(10rem,100%);max-height:calc(100dvh - 3rem);overflow-y:auto;overscroll-behavior:contain;border:0;border-radius:var(--corner-radius);background:transparent;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--chrome-fg);font-size:.875rem;font-weight:var(--font-weight-regular);transform-origin:top right;opacity:0;transform:scale(.95);visibility:hidden;pointer-events:none;transition:opacity .15s cubic-bezier(.23,1,.32,1),transform .15s cubic-bezier(.23,1,.32,1),visibility 0s linear .15s}.mobile-menu[data-open=true]{opacity:1;transform:scale(1);visibility:visible;pointer-events:auto;transition-duration:.2s,.2s,0s;transition-delay:0s}.mobile-menu[data-instant=true]{transition:none}.mobile-menu-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:2.5rem;padding:.5rem 1rem;margin-bottom:2px;border-radius:var(--corner-radius);background:var(--menu-surface)}.mobile-menu-toolbar>button{padding:.5rem;margin:-.5rem}.mobile-menu-links{display:flex;flex-direction:column;gap:2px}.mobile-menu-group{display:flex;flex-direction:column;padding-block:.5rem;border-radius:var(--corner-radius);overflow:hidden;background:var(--menu-surface)}.mobile-menu-group:last-child{border-radius:var(--corner-radius)}.mobile-menu-group>a,.mobile-menu-group>button{justify-content:flex-start;padding:.5rem 1rem;margin:0;border-radius:var(--corner-radius)}.mobile-menu .copy-email-label-wrap{justify-items:start}.menu-line{transform-origin:10px 10px;transition:transform .2s cubic-bezier(.77,0,.175,1),opacity .15s cubic-bezier(.23,1,.32,1)}.mobile-menu-trigger[aria-expanded=true] .menu-line-top{transform:rotate(45deg) translateY(5px)}.mobile-menu-trigger[aria-expanded=true] .menu-line-middle{opacity:0;transform:scaleX(.5)}.mobile-menu-trigger[aria-expanded=true] .menu-line-bottom{transform:rotate(-45deg) translateY(-5px)}.mobile-menu-trigger[data-instant=true] .menu-line{transition:none}.portfolio-shell{width:min(100% - 1.5rem,960px);padding-block:1.5rem 4rem;gap:3rem}.topbar,.article-block,:is(section,footer).section{padding:.5rem}.topbar{padding-right:.8rem}.hero-title,.section-label{font-size:2rem;letter-spacing:-.96px;height:auto}.intro-status-line{display:block}.intro-status-dot{display:none}.expandable{display:block}.expandable[open]{display:flex;flex-direction:column;gap:3rem}.expandable .expansion+.expansion{margin-top:3rem}.activity-grid{grid-template-columns:minmax(0,1fr)}.project-list{gap:0}.project-list-featured{grid-template-columns:minmax(0,1fr)}.project-card-link--featured{grid-template-columns:minmax(0,1fr);gap:0}.project-art.art-form .form-layer-before{opacity:0}.project-art.art-form .form-layer-after{opacity:1}.project-art.art-form .form-control-left,.project-art.art-form .form-control-right{opacity:1;transform:translate(0)}.project-art.art-phone .phone-device-blur,.project-art.art-phone .phone-device{transform:translate(-50%) translateY(-2.53cqw)}.project-copy .card-title{margin-top:.65rem}.listing-grid{grid-template-columns:minmax(0,1fr)}.listing-row{grid-template-columns:minmax(0,1fr);column-gap:0}.side-projects-stack{gap:0}.side-projects-grid{gap:0;margin-top:0;padding-top:var(--section-title-content-gap)}.side-projects-grid .side-project-row>.muted{grid-column:1}.listing-grid>.end{text-align:left}.notes .listing-grid .note-meta{display:none}.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(5,auto);grid-auto-flow:column}.footer-grid .end{text-align:left}.project-copy>.card-copy+.card-copy{margin-top:16px}.experience-entry{grid-template-columns:minmax(0,1fr) auto;column-gap:1rem}.experience-entry .experience-description{grid-column:1 / -1;grid-row:2}.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,auto);grid-auto-flow:column}.footer-mobile-hide,.footer-twitter-full{display:none}.footer-twitter-mobile{display:inline}.demo-overlay{padding:.5rem}.demo-overlay-shell{height:100%;border-radius:var(--corner-radius)}.demo-overlay-toolbar{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:none}.demo-overlay-back{grid-area:auto;justify-self:start}.demo-overlay-open{grid-area:auto;justify-self:end}.demo-overlay-title{grid-area:auto;text-align:center}.demo-overlay-action span{display:none}.photo-grid{columns:1;column-gap:.75rem}.artwork-grid-row{display:flex;flex-direction:column}.photo-grid-item{margin-bottom:.75rem}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.intro-status-ring{display:none}.ambient-character-frame img{transform:translateZ(0)}.ambient-character--shopping .ambient-character-frame img{transform:translate3d(0,-50%,0)}.ambient-character--scooter{left:auto;right:3vw;transform:translateZ(0)}.activity-card:hover .activity-art,.activity-card:focus-within .activity-art,.project-item:hover .project-art,.project-item:focus-within .project-art{--thumbnail-y-offset: 0}}@media(prefers-reduced-motion:reduce){.menu-line{transition:none}.mobile-menu{transform:none;transition:none}}
