/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:-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-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--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)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.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}.fixed{position:fixed}.grid{display:grid}.resize{resize:both}.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))}}@font-face{font-family:Manrope;font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/manrope-latin-v20.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f7f7f5;--white:#fff;--ink:#151515;--muted:#6f6f6d;--line:#d9d9d5;--dark:#242424;--green:#27c77a;color:var(--ink);background:var(--paper);font-synthesis:none;font-family:Manrope,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-width:none}html::-webkit-scrollbar{width:0;height:0;display:none}body::-webkit-scrollbar{width:0;height:0;display:none}body{background:var(--paper);min-width:320px;margin:0}a{color:inherit;text-decoration:none}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button,input{font:inherit}img{max-width:100%;display:block}::selection{color:#fff;background:#222}.portfolio-loader{z-index:10000;background:var(--loader-background,#fff);place-items:center;display:grid;position:fixed;inset:0}.portfolio-loader.is-exiting{animation:.42s cubic-bezier(.4,0,.2,1) forwards loader-exit}.portfolio-loader-word{color:#0000;letter-spacing:.01em;text-transform:uppercase;font-family:Manrope,ui-sans-serif,system-ui,sans-serif;font-size:clamp(2.4rem,7.5vw,5.5rem);font-weight:500;line-height:1;transition:transform .42s cubic-bezier(.4,0,.2,1);display:inline-block}.portfolio-loader.is-exiting .portfolio-loader-word{transform:scale(.985)}.portfolio-loader-word span{color:#0000;white-space:nowrap;-webkit-text-stroke:2px var(--loader-ink,#151515);background:linear-gradient(var(--loader-ink,#151515) 0 0) 0 / 0% 100% no-repeat;-webkit-background-clip:text;background-clip:text;animation:2.2s cubic-bezier(.45,0,.2,1) infinite loader-fill-sweep;display:block}@keyframes loader-fill-sweep{0%{background-size:0% 100%}70%,88%{background-size:120% 100%}to{background-size:0% 100%}}@keyframes loader-exit{to{opacity:0;visibility:hidden;pointer-events:none}}.navigation-progress{z-index:9998;background:var(--green);transform-origin:0;opacity:0;pointer-events:none;width:100%;height:3px;transition:transform .55s cubic-bezier(.22,1,.36,1),opacity .12s;position:fixed;top:0;left:0;transform:scaleX(0)}.navigation-progress.is-visible{opacity:1;transform:scaleX(.78)}::view-transition-old(root){mix-blend-mode:normal}::view-transition-new(root){mix-blend-mode:normal}::view-transition-old(root){animation:.15s both route-out}::view-transition-new(root){animation:.22s cubic-bezier(.22,1,.36,1) both route-in}@keyframes route-out{to{opacity:.88;transform:translateY(-2px)scale(.997)}}@keyframes route-in{0%{opacity:.88;transform:translateY(5px)scale(.997)}}.button,.availability,.social-pill,.identity-pill,.back-pill{white-space:nowrap;background:#fff;border:1px solid #1414141f;border-radius:999px;justify-content:center;align-items:center;gap:.55rem;display:inline-flex;box-shadow:0 8px 20px #00000012}.button{min-height:43px;padding:0 1.12rem;font-size:.92rem;font-weight:600;transition:transform .2s,box-shadow .2s}.button-dark{color:#fff;background:#1e1e1e;border-color:#343434}.button-light{color:#111;background:#fff}.button-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.availability{min-height:42px;padding:.5rem .82rem;font-size:.9rem;font-weight:500}.availability.compact{min-height:46px;padding:.58rem 1rem;font-size:.94rem;box-shadow:0 6px 16px #0000000b}.availability i{background:var(--green);border-radius:50%;width:10px;height:10px;box-shadow:0 0 0 4px #27c77a1a}.site-header:not(.inner-header) .availability{color:#fff;background:#1e1e1e;border-color:#343434;box-shadow:0 8px 20px #00000021}.site-header{z-index:50;padding:2.25rem 3.8vw 1.8rem;position:absolute;top:0;left:0;right:0}.site-header:not(.inner-header){-webkit-backdrop-filter:blur();background:#fff0;border:1px solid #0000;border-radius:0;width:100%;transition:top .45s cubic-bezier(.22,1,.36,1),width .45s cubic-bezier(.22,1,.36,1),padding .45s cubic-bezier(.22,1,.36,1),border-color .35s,border-radius .45s cubic-bezier(.22,1,.36,1),background-color .35s,box-shadow .35s,-webkit-backdrop-filter .35s,backdrop-filter .35s;position:fixed;top:0;left:50%;right:auto;transform:translate(-50%);box-shadow:0 0 #0000}.site-header:not(.inner-header).scrolled{-webkit-backdrop-filter:blur(18px);background:#ffffffe0;border-color:#00000014;border-radius:999px;width:min(1120px,100% - 2rem);padding:.62rem .85rem .62rem 1.05rem;top:.65rem;box-shadow:0 14px 36px #00000017}.inner-header{position:relative}.header-inner{grid-template-columns:1fr auto 1fr;align-items:center;width:100%;margin:auto;display:grid}.header-inner>.availability{justify-self:start}.desktop-nav{align-items:center;gap:clamp(1.45rem,2.15vw,2.3rem);font-size:1.03rem;font-weight:550;display:flex}.desktop-nav a{align-items:baseline;gap:.38rem;display:inline-flex;position:relative}.desktop-nav a:after{content:"";background:currentColor;height:1px;transition:right .25s;position:absolute;bottom:-.35rem;left:0;right:100%}.desktop-nav a:hover:after,.desktop-nav a.is-active:after{right:0}.header-cta{color:#fff;min-height:48px;box-shadow:none;background:#1e1e1e;border-color:#343434;justify-self:end;padding-inline:1.42rem;font-size:.98rem;font-weight:550}.back-pill{min-height:44px;box-shadow:none;justify-self:start;padding:.68rem 1.12rem;font-size:.92rem;font-weight:600}.inner-header .availability{justify-self:end}.menu-trigger{color:#fff;cursor:pointer;touch-action:manipulation;background:#1e1e1e;border:1px solid #343434;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;margin-left:auto;padding:0;transition:transform .2s,background-color .2s,box-shadow .2s;display:none;box-shadow:0 4px 12px #0000001f}.menu-trigger:hover{transform:scale(1.05)}.menu-trigger:active{transform:scale(.92)}@media (width>=901px){html.home-scrollbar{scrollbar-width:thin;scrollbar-color:#181818 #e5e5e1}html.home-scrollbar::-webkit-scrollbar{width:10px;display:block}html.home-scrollbar::-webkit-scrollbar-track{background:linear-gradient(90deg,#0000 calc(50% - .5px),#c7c7c3 calc(50% - .5px) calc(50% + .5px),#0000 calc(50% + .5px))}html.home-scrollbar::-webkit-scrollbar-thumb{background:#181818 padding-box padding-box;border:3px solid #0000;border-radius:999px;min-height:56px}.site-header:not(.inner-header) .desktop-nav{transition:gap .5s cubic-bezier(.22,1,.36,1),font-size .5s cubic-bezier(.22,1,.36,1)}.site-header:not(.inner-header) .availability,.site-header:not(.inner-header) .header-cta{transition:min-height .5s cubic-bezier(.22,1,.36,1),padding .5s cubic-bezier(.22,1,.36,1),font-size .5s cubic-bezier(.22,1,.36,1),box-shadow .35s}.site-header:not(.inner-header).scrolled .desktop-nav{gap:clamp(1.3rem,1.8vw,1.9rem);font-size:.99rem}.site-header:not(.inner-header).scrolled .availability.compact{min-height:42px;padding:.5rem .9rem;font-size:.9rem}.site-header:not(.inner-header).scrolled .header-cta{min-height:44px;padding-inline:1.25rem;font-size:.94rem}}.mobile-menu{z-index:9999;color:#fff;touch-action:manipulation;overscroll-behavior:contain;background:#181818;flex-direction:column;padding:2rem 1.5rem;display:flex;position:fixed;inset:0}.mobile-menu>button{color:#fff;cursor:pointer;touch-action:manipulation;background:0 0;border:0;align-self:end;padding:.5rem}.mobile-menu nav{margin:auto 0;display:grid}.mobile-menu nav a{-webkit-tap-highlight-color:transparent;border-bottom:1px solid #383838;align-items:baseline;padding:1rem 0;font-size:clamp(2rem,12vw,4rem);display:flex}.mobile-menu .button{align-self:start}.hero{border:1px solid var(--line);background:#fff;width:100%;height:100svh;min-height:0;position:relative;overflow:clip}.hero-name{z-index:1;letter-spacing:-.065em;white-space:nowrap;justify-content:center;gap:2.2vw;margin:0;font-size:clamp(4.5rem,10.2vw,10rem);font-weight:750;line-height:.84;display:flex;position:absolute;top:19%;left:4vw;right:4vw}.hero-name .name-outline{color:#fff;letter-spacing:-.055em;-webkit-text-stroke:3px #232323;paint-order:stroke fill;font-weight:750}.hero-name .name-solid{color:#232323}.hero-photo{z-index:2;mix-blend-mode:multiply;pointer-events:none;-webkit-user-select:none;user-select:none;width:min(62vw,820px);height:78%;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.hero-photo-image{object-fit:contain;object-position:center bottom;filter:contrast(1.02);-webkit-user-drag:none;width:100%;height:100%;display:block}.hero-copy{z-index:4;width:min(420px,32vw);position:absolute;bottom:7%;left:4.5vw}.hero-copy h1{letter-spacing:-.035em;margin:0 0 1rem;font-size:clamp(1.35rem,1.8vw,1.85rem);font-weight:700;line-height:1.2}.hero-copy p{color:#666;max-width:390px;margin:0 0 1.35rem;font-size:.96rem;line-height:1.68}.hero-copy .button{min-height:46px;padding-inline:1.25rem;font-size:.96rem}.hero-location{color:#fff;white-space:nowrap;background:#1e1e1e;border:1px solid #343434;border-radius:999px;align-items:center;gap:.55rem;min-height:46px;padding:0 1.25rem;font-size:.96rem;font-weight:600;display:inline-flex;box-shadow:0 8px 20px #0000001c}.hero-socials{z-index:5;gap:.9rem;display:grid;position:absolute;bottom:5.5%;right:4.5vw}.social-pill{justify-content:center;min-width:134px;min-height:48px;padding:.62rem .94rem;font-size:.94rem;transition:color .2s,background-color .2s,border-color .2s,transform .2s,box-shadow .2s;box-shadow:0 6px 16px #0000000b}.mobile-email{display:none}.section{min-height:100svh;padding:clamp(5rem,9vw,9rem) clamp(1.2rem,5vw,5rem);position:relative;overflow-x:clip}.section-inner{width:min(1320px,100%);margin:auto}.section>.section-inner{padding-top:clamp(3rem,4.5vw,4.5rem)}.ghost-word{color:#0000000d;letter-spacing:-.01em;pointer-events:none;margin:0;font-size:clamp(5rem,12vw,12rem);font-weight:800;line-height:1;position:absolute;top:clamp(3rem,4.5vw,4.5rem);left:4vw;right:0}.section-heading{z-index:1;letter-spacing:-.045em;margin:0 0 3.5rem;font-size:clamp(2rem,4.2vw,4.5rem);font-weight:600;line-height:1;position:relative}.section-heading.small{font-size:clamp(1.5rem,2.5vw,2.6rem)}.about-section{border:1px solid var(--line);background:#f2f2ef;border-top:0}.about-grid{grid-template-columns:.85fr 1.35fr;align-items:start;gap:clamp(3rem,5vw,5rem) clamp(3rem,8vw,8rem);display:grid}.about-copy .kicker,.kicker{letter-spacing:-.03em;margin:0 0 1.2rem;font-weight:650}.about-copy h2{letter-spacing:-.055em;max-width:650px;margin:0 0 1.4rem;font-size:clamp(2rem,4.2vw,4.5rem);line-height:1.06}.about-copy p{color:#5d5d5b;max-width:620px;line-height:1.8}.core-stack-title{z-index:1;letter-spacing:-.05em;margin:0 0 2rem;font-size:clamp(1.8rem,3.2vw,3.4rem);font-weight:650;line-height:1;position:relative}.about-actions{flex-wrap:wrap;gap:.8rem;margin-top:1.7rem;display:flex}.stack-grid{gap:1.9rem;display:grid}.stack-group{border-top:1px solid var(--line);padding-top:1rem}.stack-group h3{color:#626260;text-transform:uppercase;letter-spacing:.08em;margin:0 0 1rem;font-size:1rem;font-weight:600}.about-activity{border-top:1px solid var(--line);grid-column:1/-1;min-width:0;padding-top:clamp(1.5rem,2.5vw,2.5rem)}.github-activity{--activity-cell:clamp(13px, 1.45vw, 19px);--activity-gap:clamp(3px, .32vw, 4px);box-sizing:border-box;width:100%;min-width:0;display:block;position:relative;overflow:visible}.github-activity-top{color:#555552;letter-spacing:.07em;text-transform:uppercase;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:clamp(1.2rem,2.4vw,2rem);font-size:clamp(.72rem,.88vw,.86rem);font-weight:600;display:flex}.github-activity-top span{font-weight:650}.github-activity-top a{color:#777773;align-items:center;gap:.3rem;transition:color .2s;display:inline-flex}.github-activity-top a svg{transition:transform .2s}.github-activity-top a:hover{color:var(--ink)}.github-activity-top a:hover svg{transform:translate(.16rem,-.16rem)}.github-activity-grid{opacity:.78;scrollbar-width:none;width:100%;min-width:0;transition:opacity .25s;overflow-x:auto}.github-activity:hover .github-activity-grid{opacity:1}.github-activity-grid::-webkit-scrollbar{display:none}.github-activity-dots{aspect-ratio:53/7;grid-template-rows:repeat(7,1fr);grid-template-columns:repeat(53,minmax(0,1fr));grid-auto-flow:column;width:100%;min-width:100%;display:grid}.github-activity-cell{color:#d4d4cf;place-items:center;width:100%;height:100%;display:grid}.github-activity-cell svg{transform-origin:50%;width:100%;height:100%;transition:transform .16s,color .16s;overflow:visible}.github-activity-cell rect{fill:currentColor}.github-activity-cell[data-level="1"]{color:#b6b6b1}.github-activity-cell[data-level="2"]{color:#898986}.github-activity-cell[data-level="3"]{color:#575755}.github-activity-cell[data-level="4"]{color:#202020}.github-activity-cell:hover{z-index:1;color:#050505}.github-activity-cell:hover svg{transform:scale(1.22)}.github-activity[aria-busy=true] .github-activity-cell{cursor:default;animation:1.5s ease-in-out infinite alternate activity-pulse}.github-activity-bottom{color:#464643;letter-spacing:.055em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;margin-top:clamp(1.1rem,2.4vw,1.85rem);font-size:clamp(.68rem,.88vw,.82rem);font-weight:600;display:flex}.github-activity-bottom strong{font-weight:500}.github-activity-legend{color:#868681;white-space:nowrap;align-items:center;gap:.35rem;display:inline-flex}.github-activity-legend svg{color:#d4d4cf;width:13px;height:13px}.github-activity-legend rect{fill:currentColor}.github-activity-legend svg[data-level="1"]{color:#b6b6b1}.github-activity-legend svg[data-level="2"]{color:#898986}.github-activity-legend svg[data-level="3"]{color:#575755}.github-activity-legend svg[data-level="4"]{color:#202020}.github-activity-tooltip{z-index:4;color:#fff;pointer-events:none;background:#1d1d1c;gap:.08rem;min-width:128px;padding:.55rem .65rem;font-size:.72rem;line-height:1.2;display:grid;position:absolute;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 8px 22px #00000029}.github-activity-tooltip strong{font-size:.8rem;font-weight:650}.github-activity-tooltip small{color:#bdbdb8;font-size:.64rem}@keyframes activity-pulse{0%{opacity:.38}to{opacity:.78}}.github-activity-fallback{border-block:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 0;font-size:.88rem;font-weight:650;display:flex}.github-activity-fallback span:last-child{color:var(--muted);align-items:center;gap:.35rem;display:inline-flex}.stack-group .tag-list{gap:.72rem}.stack-group .tag-list span{padding:.66rem .95rem;font-size:.94rem;font-weight:500}.tag-list{flex-wrap:wrap;gap:.55rem;display:flex}.tag-list span{background:#ffffffbf;border:1px solid #dededb;border-radius:999px;padding:.45rem .72rem;font-size:.72rem}.projects-section{border-inline:1px solid var(--line);background:#fff;min-height:100svh}.project-grid{grid-template-columns:repeat(3,1fr);gap:2rem;display:grid}.project-card{background:#fafafa;border:1px solid #e4e4e0;border-radius:5px;overflow:hidden;box-shadow:0 16px 45px #00000012}.card-media{aspect-ratio:16/10;background:#ecece8;position:relative;overflow:hidden}.card-media img{object-fit:cover;filter:saturate(.82);width:100%;height:100%;transition:transform .5s,filter .4s}.card-label{text-transform:uppercase;background:#fff;border-radius:999px;padding:.42rem .65rem;font-size:.6rem;font-weight:700;position:absolute;top:.75rem;left:.75rem}.card-arrow{opacity:0;background:#fff;border-radius:50%;place-items:center;width:44px;height:44px;transition:opacity .25s,transform .25s;display:grid;position:absolute;bottom:1rem;right:1rem;transform:translateY(8px)}.card-body{padding:1.1rem}.card-body h3{letter-spacing:-.035em;margin:0 0 .72rem;font-size:1.45rem;line-height:1.25}.cert-card h3{letter-spacing:-.03em;margin:0 0 .65rem;font-size:1.15rem;line-height:1.35}.card-body p{color:#5d5d5a;min-height:2.9em;margin:0 0 1rem;font-size:.9rem;line-height:1.5}.center-action{justify-content:center;margin-top:3.5rem;display:flex}.certifications-section{background:var(--paper);border:1px solid var(--line)}.cert-accordion{display:grid}.cert-row{border-bottom:1px solid #cececa;transition:margin .32s,color .32s,background-color .32s,box-shadow .32s;position:relative;overflow:visible}.cert-row-button{text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;width:100%;padding:2rem 1.2rem;display:flex}.cert-row-button span{letter-spacing:-.05em;font-size:clamp(1.65rem,4vw,4rem);line-height:1}.cert-row.open{z-index:2;color:#fff;background:var(--dark);border:0;border-radius:5px;margin:.35rem 0;box-shadow:0 12px 28px #00000029}.cert-row.open .cert-row-button{color:#fff}.cert-row-reveal{opacity:0;visibility:hidden;grid-template-rows:0fr;transition:grid-template-rows .38s cubic-bezier(.4,0,.2,1),opacity .24s,visibility 0s linear .38s;display:grid}.cert-row.open .cert-row-reveal{opacity:1;visibility:visible;grid-template-rows:1fr;transition:grid-template-rows .38s cubic-bezier(.4,0,.2,1),opacity .28s 60ms,visibility}.cert-row-clip{min-height:0;overflow:hidden}.cert-row-content{justify-content:space-between;align-items:end;gap:2rem;min-height:150px;padding:0 1.2rem 1.6rem;display:flex;position:relative}.cert-row-copy{max-width:54%}.cert-row-copy p{color:#d6d6d4;margin:0 0 1.35rem;font-size:1rem;line-height:1.72}.cert-preview{z-index:5;aspect-ratio:16/10;object-fit:cover;border:8px solid #efefeb;width:min(31vw,390px);position:absolute;bottom:25%;right:10%;transform:rotate(6deg);box-shadow:0 18px 40px #00000059}.cert-row .button{min-height:44px;padding-inline:1.15rem;font-size:.9rem}.experience-section{color:#fff;background:var(--dark);border-inline:1px solid #333;min-height:100svh}.experience-section .ghost-word{color:#ffffff13}.experience-top{justify-content:space-between;align-items:end;display:flex}.experience-tagline{color:#ededeb;text-transform:uppercase;letter-spacing:.045em;margin:0 1rem 3.5rem 0;font-size:1.02rem;font-weight:550}.experience-list{position:relative}.experience-row{border-bottom:1px solid #4a4a4a;grid-template-columns:1fr auto;gap:2rem;padding:2.15rem .7rem;transition:background-color .2s;display:grid;position:relative}.experience-row h3{margin:0 0 .62rem;font-size:1.28rem;font-weight:600}.experience-row p{color:#c1c1bf;margin:0;font-size:1.06rem}.experience-row time{color:#c8c8c6;align-self:center;font-size:1.02rem}.experience-hover{z-index:5;pointer-events:none;border-radius:4px;width:300px;height:225px;position:fixed;overflow:hidden;transform:rotate(6deg);box-shadow:0 17px 30px #0003}.experience-hover img{object-fit:cover;width:100%;height:100%;display:block}.contact-section{text-align:center;border:1px solid var(--line);background:radial-gradient(circle at 20% 80%,#00000006,#0000 31%),radial-gradient(circle at 80% 60%,#00000006,#0000 29%),#fafafa;flex-direction:column;justify-content:space-between;align-items:center;min-height:100svh;padding:7rem 5vw 2.5rem;display:flex;position:relative}.contact-main{flex-direction:column;align-items:center;width:min(1200px,100% - 2rem);margin:auto 0;display:flex}.contact-section h2{letter-spacing:-.025em;white-space:nowrap;margin:2rem 0 .9rem;font-size:clamp(2.4rem,5vw,5.6rem);font-weight:800;line-height:.98}.contact-main>p{color:#686866;max-width:600px;margin:0 0 1.8rem}.footer-links{grid-template-columns:1fr repeat(3,auto) auto;align-items:center;gap:clamp(.7rem,3vw,3.5rem);width:min(1320px,100%);margin-top:auto;padding-top:5rem;display:grid}.identity-pill{justify-self:start;padding:.45rem .75rem .45rem .45rem;font-size:.75rem}.identity-pill img{object-fit:cover;object-position:50% 20%;border-radius:50%;width:28px;height:28px}.back-to-top{color:#fff;cursor:pointer;background:#1e1e1e;border:1px solid #343434;border-radius:50%;place-items:center;width:48px;height:48px;padding:0;transition:color .2s,background-color .2s,border-color .2s,transform .2s,box-shadow .2s;display:grid;box-shadow:0 8px 20px #00000021}.archive-page,.detail-page{background:var(--paper);min-height:100vh}.archive-main,.detail-main{width:min(1420px,100% - 8vw);margin:auto;padding:4rem 0 7rem}.archive-title{letter-spacing:-.07em;margin:0;font-size:clamp(4rem,10vw,9rem);line-height:.85}.archive-count{color:#777;margin:1rem 0 2rem}.search-row{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:3rem;display:flex}.search-field{width:min(440px,100%);position:relative}.search-field>svg{z-index:1;color:#858582;pointer-events:none;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.search-input{background:#fff;border:1px solid #dededb;border-radius:999px;outline:none;width:100%;padding:.8rem 1rem .8rem 2.75rem}.search-input:focus{border-color:#555;box-shadow:0 0 0 3px #0000000f}.filter-button{cursor:pointer;background:#fff;border:1px solid #dededb;border-radius:999px;padding:.65rem .9rem;font-size:.72rem}.filter-button.active{color:#fff;background:#1e1e1e;border-color:#1e1e1e}.archive-grid{grid-template-columns:repeat(3,1fr);gap:1.6rem;display:grid}.filter-card-shell,.filter-card-shell .cert-card{height:100%}.cert-card{background:#fff;border:1px solid #e0e0dc;border-radius:5px;padding-bottom:1rem;overflow:hidden;box-shadow:0 14px 34px #0000000d}.cert-media{aspect-ratio:16/10;background:#eee;overflow:hidden}.cert-media img{object-fit:cover;width:100%;height:100%;transition:transform .4s}@media (hover:hover) and (pointer:fine){.button:hover{transform:translateY(-2px);box-shadow:0 12px 28px #00000024}.social-pill:hover{color:#30302f;background:#ededeb;border-color:#d4d4d0;transform:translateY(-2px);box-shadow:0 9px 20px #00000014}.back-to-top:hover{transform:scale(1.05);box-shadow:0 12px 24px #0000002e}.project-card:hover img{filter:saturate();transform:scale(1.025)}.project-card:hover .card-arrow{opacity:1;transform:translateY(0)}.cert-card:hover img{transform:scale(1.02)}.experience-row:hover{background:#ffffff0a}}@media (width<=1100px),(hover:none),(pointer:coarse){.cert-preview{display:none}.cert-row-copy{max-width:75%}}.cert-card h3,.cert-card .tag-list{margin-inline:1rem}.cert-card h3{min-height:2.7em;margin-top:1rem}.empty-state{color:#777;text-align:center;grid-column:1/-1;padding:5rem 0}.page-bottom{background:#fafafa;justify-content:center;padding:4rem;display:flex}.detail-main{padding-top:3rem}.detail-hero{grid-template-columns:minmax(0,1.7fr) minmax(230px,.55fr);align-items:end;gap:5vw;padding:2rem 0 5rem;display:grid}.detail-tags{grid-column:1/-1}.detail-title h1{letter-spacing:-.065em;margin:1.2rem 0;font-size:clamp(3rem,7vw,7rem);line-height:.95}.detail-title .lead{color:#555;max-width:820px;font-size:clamp(1rem,1.7vw,1.4rem);line-height:1.65}.detail-actions{flex-wrap:wrap;gap:.8rem;margin-top:1.8rem;display:flex}.detail-actions .button{cursor:pointer}.detail-meta{gap:2rem;display:grid}.meta-item span{color:#999;margin-bottom:.45rem;font-size:.82rem;display:block}.meta-item strong{font-size:1.2rem}.detail-image{object-fit:cover;background:#fff;border:1px solid #ddd;width:100%;max-height:78vh}.certificate-detail-image{object-fit:contain;padding:1rem}.cv-hero{grid-template-columns:minmax(0,1.7fr) minmax(230px,.55fr);align-items:end;gap:5vw;padding:2rem 0 5rem;display:grid}.cv-hero .detail-tags{grid-column:1/-1}.cv-title .kicker{margin-bottom:1rem}.cv-title h1{letter-spacing:-.065em;max-width:1000px;margin:0 0 1.4rem;font-size:clamp(3rem,6.7vw,6.8rem);line-height:.93}.cv-title .lead{color:#555;max-width:780px;font-size:clamp(1rem,1.6vw,1.35rem);line-height:1.65}.cv-document{background:#ececea;border:1px solid #d8d8d4;padding:clamp(1rem,3vw,2.5rem)}.cv-document-heading{justify-content:space-between;align-items:end;width:min(950px,100%);margin:0 auto 2rem;display:flex}.cv-document-heading .kicker{margin-bottom:.55rem}.cv-document-heading h2{letter-spacing:-.045em;margin:0;font-size:clamp(1.7rem,3vw,3rem)}.cv-pdf-preview{background:#fff;border:0;width:min(950px,100%);height:clamp(900px,118vw,1230px);margin:auto;display:block;box-shadow:0 20px 55px #0000001a}.cv-pdf-preview img{object-fit:contain;width:100%;height:100%}.cv-pdf-preview img,.cv-mobile-preview img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.cv-mobile-preview{display:none}.private-dialog-overlay{z-index:1000;-webkit-backdrop-filter:blur(8px);background:#0f0f0f7a;position:fixed;inset:0}.private-dialog-content{z-index:1001;color:#fff;background:#242424;border:1px solid #ffffff1a;border-radius:26px;width:min(500px,100% - 2rem);padding:2.2rem;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 28px 80px #00000052}.private-dialog-overlay[data-state=open]{animation:.25s ease-out dialog-overlay-in}.private-dialog-overlay[data-state=closed]{animation:.2s ease-in dialog-overlay-out}.private-dialog-content[data-state=open]{animation:.35s cubic-bezier(.22,1,.36,1) private-dialog-in}.private-dialog-content[data-state=closed]{animation:.2s ease-in private-dialog-out}.private-dialog-close{color:#fff;cursor:pointer;background:0 0;border:1px solid #4b4b4b;border-radius:50%;place-items:center;width:40px;height:40px;padding:0;transition:color .2s,background-color .2s,transform .2s;display:grid;position:absolute;top:1rem;right:1rem}.private-dialog-close:hover{color:#222;background:#fff;transform:rotate(4deg)}.private-dialog-label{color:#cfcfcd;letter-spacing:.08em;border:1px solid #4c4c4c;border-radius:999px;margin-bottom:2rem;padding:.48rem .72rem;font-size:.72rem;font-weight:650;display:inline-flex}.private-dialog-content h2{letter-spacing:-.055em;max-width:390px;margin:0;font-size:clamp(2rem,5vw,3.2rem);line-height:.98}.private-dialog-content p{color:#c9c9c6;margin:1.35rem 0 2rem;font-size:1rem;line-height:1.7}.private-dialog-action{color:#1d1d1d;cursor:pointer;background:#fff;border-color:#fff;min-width:132px}@keyframes dialog-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-overlay-out{0%{opacity:1}to{opacity:0}}@keyframes private-dialog-in{0%{opacity:0;transform:translate(-50%,calc(18px - 50%))scale(.97)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes private-dialog-out{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,calc(10px - 50%))scale(.985)}}.case-study{grid-template-columns:.7fr 1.3fr;gap:8vw;padding:8rem 0;display:grid}.case-study h2{letter-spacing:-.055em;align-self:start;margin:0;font-size:clamp(2rem,4vw,4rem);position:sticky;top:2rem}.case-block{border-bottom:1px solid var(--line);margin-bottom:3rem;padding:0 0 3rem}.case-block h3{margin:0 0 1rem;font-size:1.5rem}.case-block p,.case-block li{color:#555;line-height:1.8}.result-grid{grid-template-columns:repeat(3,1fr);gap:.8rem;display:grid}.result-grid div{background:#fff;border:1px solid #d8d8d4;padding:1.5rem;font-weight:600}.more-section{border-top:1px dashed #ccc;padding:7rem 0 2rem}.more-section h2{text-align:center;letter-spacing:-.06em;margin:0 0 4rem;font-size:clamp(2.5rem,5vw,5rem)}.more-section .project-grid,.more-section .archive-grid{grid-template-columns:repeat(2,1fr);max-width:950px;margin:auto}.error-page{place-content:center;justify-items:start;min-height:100vh;padding:10vw;display:grid}.error-page h1{margin:0;font-size:clamp(5rem,15vw,12rem);line-height:1}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width>=1920px) and (height>=1200px){html{font-size:clamp(16px,1.48svh,26px)}.hero-photo{width:min(62vw,76svh,1400px)}.hero-location,.hero-copy .button,.availability.compact,.header-cta,.social-pill{min-height:2.9rem}.social-pill{min-width:8.375rem}.section{min-height:min(100svh,1100px);padding-block:min(8svh,7rem)}.section>.section-inner{padding-top:min(4svh,3.5rem)}.section-inner,.footer-links{width:min(122svh,100% - 10vw,2200px)}.archive-main,.detail-main{width:min(132svh,100% - 8vw,2400px)}.site-header:not(.inner-header).scrolled{width:min(104svh,1500px,100% - 2rem)}}@media (width<=900px){.desktop-nav,.header-cta{display:none}.header-inner{grid-template-columns:1fr auto}.menu-trigger{display:inline-flex}.site-header:not(.inner-header).scrolled{width:calc(100% - 1.5rem);padding:.45rem .6rem .45rem .8rem;top:.55rem}.site-header:not(.inner-header).scrolled .availability.compact{min-height:38px;padding:.4rem .75rem;font-size:.8rem}.site-header:not(.inner-header).scrolled .menu-trigger{width:38px;height:38px}}@media (width<=900px),(width<=1100px) and (orientation:portrait){.hero{flex-direction:column;justify-content:center;align-items:center;height:auto;min-height:100svh;padding:90px 0 36px;display:flex}.hero-name{z-index:3;text-align:center;white-space:normal;order:1;gap:0;margin:-20px 1rem 0;display:grid;position:relative;inset:auto}.hero-name .name-outline{color:#222;-webkit-text-stroke:0;letter-spacing:.08em;font-size:.48em}.hero-name .name-solid{font-size:.82em}.hero-photo{mix-blend-mode:normal;flex-shrink:0;order:0;width:min(100%,600px);height:clamp(280px,100svh - 390px,560px);position:relative;top:auto;bottom:auto;left:auto;transform:none}.hero-photo:after{content:"";z-index:1;background:linear-gradient(#0000 0%,#ffffff47 31%,#fff 88%);position:absolute;inset:68% 0 0}.hero-copy{text-align:center;order:2;width:min(640px,84%);margin-top:20px;position:relative;bottom:auto;left:auto;right:auto}.hero-copy h1{font-size:1.25rem}.hero-copy p{max-width:470px;margin-inline:auto}.hero-socials{z-index:5;pointer-events:auto;justify-content:end;gap:.75rem;width:auto;display:grid;position:absolute;inset:112px 4vw auto auto;transform:none}.hero-socials .social-pill{pointer-events:auto;min-width:124px;position:static;transform:none}.hero-socials .social-github,.hero-socials .social-linkedin,.hero-socials .social-email{display:inline-flex;position:static;top:auto;left:auto;right:auto;transform:none}}@media (width<=900px){.mobile-static-motion{opacity:1!important;transition:none!important;animation:none!important;transform:none!important}.about-grid{grid-template-columns:1fr}.about-activity{grid-column:1}.project-grid,.archive-grid{grid-template-columns:repeat(2,1fr)}.cert-preview,.experience-hover{display:none}.cert-row-copy{max-width:75%}.detail-hero,.cv-hero{grid-template-columns:1fr}.detail-meta,.cv-meta{grid-template-columns:repeat(3,1fr)}.case-study{grid-template-columns:1fr}.case-study h2{position:static}}@media (hover:none),(pointer:coarse){a,button{-webkit-tap-highlight-color:#15151514}:is(.button,.social-pill,.identity-pill,.back-pill,.filter-button,.menu-trigger,.back-to-top,.private-dialog-close,.mobile-menu>button){transition:transform 90ms,box-shadow 90ms,background-color 90ms,color 90ms,border-color 90ms}:is(.button,.social-pill,.identity-pill,.back-pill,.filter-button,.menu-trigger,.back-to-top,.private-dialog-close,.mobile-menu>button):active{filter:brightness(.94);transform:translateY(1px)scale(.96);box-shadow:0 2px 7px #0000001f}:is(.project-card,.cert-card){transition:transform 90ms,border-color 90ms,background-color 90ms,box-shadow 90ms!important}:is(.project-card,.cert-card):active{background:#f3f3f0;border-color:#bdbdb8;box-shadow:0 4px 12px #00000017;transform:scale(.985)!important}.project-card:active .card-arrow{opacity:1;transform:translateY(0)}.cert-row-button{transition:background-color 90ms,transform 90ms}.cert-row-button:active{background:#0000000e;transform:scale(.992)}.mobile-navigation a{transition:color 90ms,transform 90ms}.mobile-navigation a:active{color:#9ce2be;transform:translate(5px)}}@media (width<=640px){.phone-static-motion{opacity:1!important;transition:none!important;animation:none!important;transform:none!important}.about-activity{padding-top:1.5rem}.github-activity{--activity-cell:16px;--activity-gap:4px}.github-activity-dots{grid-template-columns:none;grid-template-rows:repeat(7, var(--activity-cell));grid-auto-columns:var(--activity-cell);gap:var(--activity-gap);aspect-ratio:auto;width:max-content;min-width:0}.github-activity-cell{width:var(--activity-cell);height:var(--activity-cell)}.github-activity-top{margin-bottom:1rem;font-size:.68rem}.github-activity-bottom{grid-template-columns:minmax(0,1fr);gap:.85rem;width:100%;margin-top:1rem;font-size:.64rem;display:grid}.github-activity-bottom strong{min-width:0;display:block}.github-activity-legend{justify-self:start}.github-activity-tooltip{display:none}.site-header{padding:1.35rem 1rem 1rem}.availability.compact{min-height:40px;padding:.46rem .75rem;font-size:.76rem}.site-header:not(.inner-header).scrolled{width:calc(100% - 1.25rem);padding:.38rem .5rem .38rem .68rem;top:.45rem}.site-header:not(.inner-header).scrolled .availability.compact{min-height:36px;padding:.35rem .65rem;font-size:.74rem}.site-header:not(.inner-header).scrolled .menu-trigger{width:36px;height:36px}.hero{height:auto;min-height:100svh}.hero-photo{height:clamp(280px,100svh - 365px,470px);top:auto}.hero-name{font-size:clamp(3.6rem,17vw,4.4rem);font-weight:850;bottom:auto}.hero-name .name-outline,.hero-name .name-solid{font-weight:850}.hero-copy{bottom:auto}.hero-copy p{margin-bottom:1rem;font-size:.78rem;line-height:1.6}.hero-socials{gap:.55rem;top:108px;right:1rem}.hero-socials .social-pill{min-width:auto}.social-pill{min-height:42px;padding:.52rem .75rem;font-size:.8rem}.section{padding:5.5rem 1rem}.section>.section-inner{padding-top:1.5rem}.ghost-word{font-size:4.5rem;top:2.25rem}.section-heading{margin-bottom:2.2rem;font-size:2.1rem}.about-copy h2{font-size:2.15rem}.project-grid,.archive-grid,.more-section .project-grid,.more-section .archive-grid{grid-template-columns:1fr}.projects-section .project-grid>.project-card:nth-child(n+4){display:none}.project-card{box-shadow:none}.card-body p{min-height:0}.cert-row-button{padding:1.35rem .4rem}.cert-row-button span{letter-spacing:-.03em;font-size:1.12rem}.cert-row-content{min-height:0;padding:0 .7rem 1.1rem}.cert-row-copy{max-width:100%}.experience-top{display:block}.experience-tagline{margin-bottom:2rem;font-size:.7rem}.experience-row{grid-template-columns:1fr;gap:.8rem;padding:1.2rem .35rem}.experience-row time{font-size:.72rem}.contact-section{min-height:100svh;padding:5rem 1rem 1.5rem}.contact-section h2{font-size:clamp(1.25rem,6vw,1.5rem)}.footer-links{grid-template-columns:1fr 1fr;gap:.65rem;margin-top:auto;position:relative}.footer-links .social-pill,.footer-links .identity-pill{justify-content:center;width:100%;min-height:42px;padding:.52rem .75rem;font-size:.8rem}.identity-pill img{width:16px;height:16px}.back-to-top{width:42px;height:42px;position:absolute;top:.25rem;right:0}.archive-main,.detail-main{width:calc(100% - 2rem);padding-top:2rem}.archive-title{font-size:3.4rem}.search-row{margin-bottom:2rem}.search-field,.search-input{width:100%}.detail-hero{gap:1rem;padding-bottom:3rem}.detail-title h1{font-size:3rem}.detail-meta{grid-template-columns:1fr 1fr;gap:1.4rem}.cv-hero{gap:1rem;padding-bottom:3rem}.cv-title h1{font-size:3.2rem}.cv-meta{grid-template-columns:repeat(3,1fr)}.cv-document{padding:.8rem}.cv-document-heading{align-items:center;margin-bottom:1rem;padding:.5rem}.cv-pdf-preview{display:none}.cv-mobile-preview{background:#fff;border:1px solid #d4d4d0;display:block;overflow:hidden;box-shadow:0 12px 30px #00000014}.cv-mobile-preview img{width:100%}.detail-image{min-height:250px}.case-study{padding:4rem 0}.result-grid{grid-template-columns:1fr}.more-section{padding-top:4rem}.more-section h2{text-align:left;font-size:2.4rem}}@media (prefers-reduced-motion:reduce){::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}.portfolio-loader.is-exiting{animation-duration:.01ms}.portfolio-loader-word span{background-size:100% 100%;animation:none}html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
