*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.left-0{left:0}.left-1{left:.25rem}.top-0{top:0}.top-1{top:.25rem}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:1rem}.block{display:block}.flex{display:flex}.hidden{display:none}.h-6{height:1.5rem}.h-8{height:2rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-14{width:3.5rem}.w-6{width:1.5rem}.w-full{width:100%}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-6{--tw-translate-x: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.bg-orange-700{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/80{background-color:#fffc}.bg-yellow-300{--tw-bg-opacity: 1;background-color:rgb(253 224 71 / var(--tw-bg-opacity))}.p-4{padding:1rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-0{padding-left:0}.pl-0\.5{padding-left:.125rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.text-center{text-align:center}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}html{scroll-behavior:smooth;background-color:#fff;color-scheme:light}html,body,#root{min-height:100%;background-color:#fff}html[data-portfolio-theme=dark]{background-color:#0a0a0a;color-scheme:dark}html[data-portfolio-theme=dark] body,html[data-portfolio-theme=dark] #root{background-color:#0a0a0a}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}.after\:block:after{content:var(--tw-content);display:block}.after\:h-\[2px\]:after{content:var(--tw-content);height:2px}.after\:origin-left:after{content:var(--tw-content);transform-origin:left}.after\:scale-x-0:after{content:var(--tw-content);--tw-scale-x: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:bg-blue-500:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:duration-300:after{content:var(--tw-content);transition-duration:.3s}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.after\:hover\:scale-x-100:hover:after{content:var(--tw-content);--tw-scale-x: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.dark\:bg-gray-900\/80:is(.dark *){background-color:#111827cc}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}@media (min-width: 768px){.md\:flex{display:flex}.md\:hidden{display:none}}.portfolio{--scroll-progress: 0%;--background: #ffffff;--surface: #f2f2f2;--text: #0a0a0a;--muted: #626262;--border: #dedede;--accent: #0a0a0a;--depth-shadow: rgba(10, 10, 10, .2);min-height:100vh;overflow:clip;background:var(--background);color:var(--text);font-family:Helvetica Neue,Helvetica,Arial,sans-serif;transition:background-color .18s ease,color .18s ease}.scroll-progress{position:fixed;z-index:80;top:0;left:0;width:var(--scroll-progress);height:3px;background:var(--text);pointer-events:none}.portfolio.is-dark{--background: #0a0a0a;--surface: #171717;--text: #f5f5f5;--muted: #a8a8a8;--border: #303030;--accent: #f5f5f5;--depth-shadow: rgba(0, 0, 0, .72)}.portfolio *,.portfolio *:before,.portfolio *:after{box-sizing:border-box}.portfolio h1,.portfolio h2,.portfolio h3,.portfolio h4,.portfolio p,.portfolio dl,.portfolio dd,.portfolio figure{margin:0}.portfolio a{color:inherit;text-decoration:none}.portfolio button{color:inherit;font:inherit}.portfolio img{display:block;max-width:100%}.tilt-surface{--tilt-x: 0deg;--tilt-y: 0deg;--pointer-x: 50%;--pointer-y: 50%;--shadow-x: 0px;--shadow-y: 12px;transform:perspective(1100px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));transform-style:preserve-3d;transition:transform .42s cubic-bezier(.22,1,.36,1),box-shadow .42s cubic-bezier(.22,1,.36,1);will-change:transform}.site-header{position:fixed;z-index:50;top:0;right:0;left:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:68px;padding:0 max(24px,calc((100vw - 1180px)/2));border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--background) 86%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:header-enter .5s cubic-bezier(.22,1,.36,1) both}.wordmark{justify-self:start;font-size:.84rem;font-weight:700;letter-spacing:-.02em}.wordmark:after{margin-left:.55rem;color:var(--muted);content:"/ PORTFOLIO";font-size:.62rem;font-weight:500;letter-spacing:.08em}.site-nav{display:flex;gap:2rem}.site-nav a{position:relative;color:var(--muted);font-size:.76rem;font-weight:500;transition:color .18s ease}.site-nav a:after{position:absolute;right:0;bottom:-.45rem;left:0;height:1px;background:var(--text);content:"";transform:scaleX(0);transform-origin:right;transition:transform .22s cubic-bezier(.22,1,.36,1)}.site-nav a:hover{color:var(--text)}.site-nav a:hover:after{transform:scaleX(1);transform-origin:left}.theme-toggle{display:grid;width:36px;height:36px;place-items:center;justify-self:end;padding:0;border:1px solid var(--border);border-radius:50%;background:transparent;cursor:pointer;transition:border-color .18s ease,transform .24s ease}.theme-toggle:hover{border-color:var(--text);transform:rotate(12deg)}.hero,.content-section,.contact-section,.site-footer{width:min(1180px,calc(100% - 48px));margin-inline:auto}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:clamp(3.5rem,8vw,8rem);align-items:center;min-height:100svh;padding:132px 0 94px}.kicker{margin-bottom:1rem!important;color:var(--muted);font-size:.86rem;font-weight:600;letter-spacing:-.01em}.hero h1{max-width:10ch;font-size:clamp(4rem,7.5vw,7rem);font-weight:700;letter-spacing:-.065em;line-height:.94;animation:rise-in .7s .14s cubic-bezier(.22,1,.36,1) both}.hero .kicker{animation:rise-in .65s 80ms cubic-bezier(.22,1,.36,1) both}.hero-summary{max-width:690px;margin-top:2rem!important;color:var(--muted);font-size:clamp(1rem,1.4vw,1.15rem);line-height:1.7;animation:rise-in .7s .21s cubic-bezier(.22,1,.36,1) both}.current-role{display:flex;align-items:center;gap:.65rem;max-width:650px;margin-top:1rem!important;font-size:.92rem;font-weight:600;line-height:1.55;animation:rise-in .7s .28s cubic-bezier(.22,1,.36,1) both}.current-role:before{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--text);content:""}.hero-links{display:flex;flex-wrap:wrap;gap:1.25rem;margin-top:2rem;animation:rise-in .7s .35s cubic-bezier(.22,1,.36,1) both}.hero-links a{display:inline-flex;align-items:center;gap:.45rem;padding-bottom:.25rem;border-bottom:1px solid var(--border);font-size:.78rem;font-weight:600;transition:border-color .18s ease,color .18s ease}.hero-links a:hover{border-color:var(--accent);color:var(--accent)}.hero-links a svg,.project-preview a svg{transition:transform .22s cubic-bezier(.22,1,.36,1)}.hero-links a:hover svg,.project-preview a:hover svg{transform:translate(3px,-3px)}.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);max-width:680px;margin-top:3.5rem!important;padding-top:1.25rem;border-top:1px solid var(--border);animation:rise-in .7s .42s cubic-bezier(.22,1,.36,1) both}.hero-stats div{padding-right:1rem}.hero-stats dt{font-size:1.45rem;font-weight:650}.hero-stats dd{max-width:9rem;margin-top:.25rem;color:var(--muted);font-size:.72rem;line-height:1.4}.hero-photo{position:relative;overflow:hidden;aspect-ratio:4 / 5;border:1px solid var(--text);background:var(--surface);animation:photo-reveal .9s .16s cubic-bezier(.22,1,.36,1) both}.hero-visual{position:relative;isolation:isolate;box-shadow:var(--shadow-x) var(--shadow-y) 42px var(--depth-shadow)}.hero-visual:before{position:absolute;z-index:-1;top:14px;right:-14px;bottom:-14px;left:14px;border:1px solid var(--border);background:var(--surface);content:"";transform:translateZ(-28px)}.hero-visual:after{position:absolute;z-index:3;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at var(--pointer-x) var(--pointer-y),rgba(255,255,255,.26),transparent 34%);content:"";opacity:0;pointer-events:none;transition:opacity .2s ease}.hero-photo:after{position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:1px solid rgba(255,255,255,.55);content:"";pointer-events:none}.hero-photo img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center 60%;object-position:center 60%}.hero-photo figcaption{position:absolute;z-index:2;right:0;bottom:0;left:0;display:flex;justify-content:space-between;gap:1rem;padding:.8rem 1rem;background:var(--text);color:var(--background);font-size:.62rem;font-weight:650;letter-spacing:.06em;text-transform:uppercase}.hero-scroll-cue{position:absolute;right:0;bottom:30px;display:flex;align-items:center;gap:.75rem;color:var(--muted);font-size:.62rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;animation:rise-in .7s .56s cubic-bezier(.22,1,.36,1) both}.hero-scroll-cue span{display:block;width:44px;height:1px;overflow:hidden;background:var(--border)}.hero-scroll-cue span:after{display:block;width:100%;height:100%;background:var(--text);content:"";animation:scroll-line 1.8s ease-in-out infinite}.content-section{padding:112px 0;border-top:1px solid var(--border);scroll-margin-top:64px}.section-header{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.7fr);gap:3rem;align-items:end;margin-bottom:4.5rem}.section-header>p{max-width:520px;color:var(--muted);font-size:.88rem;line-height:1.65}.section-header h2{font-size:clamp(2rem,4vw,3.8rem);font-weight:620;letter-spacing:-.045em;line-height:1}.experience-list{border-top:1px solid var(--border)}.experience-row{display:grid;grid-template-columns:120px minmax(0,1fr) 180px;grid-template-rows:auto 1fr;gap:1.75rem;-moz-column-gap:1.75rem;column-gap:1.75rem;row-gap:.85rem;align-items:start;padding:2rem 0;border-bottom:1px solid var(--border)}.experience-row>img,.organization-row>img{aspect-ratio:1;-o-object-fit:cover;object-fit:cover;background:var(--surface)}.experience-row>img{grid-row:1 / span 2;width:120px}.experience-heading{grid-row:1;grid-column:2}.experience-row h3{font-size:1.05rem;font-weight:650}.organization-name{margin-top:.3rem!important;color:var(--accent);font-size:.8rem;font-weight:600}.experience-summary{grid-row:2;grid-column:2;max-width:680px;color:var(--muted);font-size:.86rem;line-height:1.6}.experience-meta{display:flex;grid-row:1 / span 2;grid-column:3;flex-direction:column;gap:.35rem;color:var(--muted);font-size:.7rem;line-height:1.4;text-align:right}.education-card{display:grid;grid-template-columns:140px 1fr;gap:2.25rem;padding:2rem;border:1px solid var(--border);background:var(--surface)}.education-card>img{width:140px;aspect-ratio:1;-o-object-fit:cover;object-fit:cover;background:var(--surface)}.education-heading{display:flex;justify-content:space-between;gap:2rem}.education-heading h3{font-size:1.3rem;font-weight:650}.education-heading p,.education-heading>span{margin-top:.4rem!important;color:var(--muted);font-size:.78rem}.thesis{max-width:820px;margin-top:2rem;padding-left:1.25rem;border-left:2px solid var(--accent)}.thesis>p:first-child{color:var(--accent);font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.thesis h4{margin-top:.45rem!important;font-size:1rem;line-height:1.4}.thesis>p:last-child{margin-top:.75rem!important;color:var(--muted);font-size:.84rem;line-height:1.6}.subsection,.skills-block{margin-top:4rem}.subsection>h3,.skills-block>h3{margin-bottom:1.5rem!important;font-size:1rem;font-weight:650}.organization-row{display:grid;grid-template-columns:64px minmax(0,1fr) 180px;gap:1.25rem;padding:1.5rem 0;border-top:1px solid var(--border)}.organization-row:last-child{border-bottom:1px solid var(--border)}.organization-row>img{width:64px}.organization-row h4{font-size:.95rem}.organization-row p{margin-top:.25rem!important;color:var(--accent);font-size:.78rem;font-weight:600}.organization-row div>span{display:block;max-width:760px;margin-top:.7rem;color:var(--muted);font-size:.82rem;line-height:1.55}.organization-row time{color:var(--muted);font-size:.7rem;text-align:right}.skills-block dl{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--border)}.skills-block dl>div{display:grid;grid-template-columns:110px 1fr;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--border)}.skills-block dl>div:nth-child(odd){padding-right:2rem}.skills-block dl>div:nth-child(2n){padding-left:2rem;border-left:1px solid var(--border)}.skills-block dl>div:last-child:nth-child(odd){grid-column:1 / -1;padding-right:0}.skills-block dt{font-size:.72rem;font-weight:650}.skills-block dd{color:var(--muted);font-size:.78rem;line-height:1.5}.project-browser{display:grid;grid-template-columns:minmax(280px,.62fr) minmax(0,1.38fr);gap:clamp(3rem,7vw,7rem);align-items:start}.project-list{border-top:1px solid var(--border)}.project-list button{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;gap:.35rem 1rem;align-items:center;padding:1rem;border:0;border-bottom:1px solid var(--border);background:transparent;cursor:pointer;text-align:left;transition:padding .24s cubic-bezier(.22,1,.36,1),background-color .18s ease,color .18s ease}.project-list button>span{min-width:0;overflow:hidden;font-size:.86rem;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.project-list button small{grid-row:1;grid-column:2;color:var(--muted);font-size:.62rem}.project-list button:hover,.project-list button:focus-visible{padding-left:1.35rem}.project-list button.is-active{padding-left:1.35rem;background:var(--text);color:var(--background)}.project-list button.is-active small{color:color-mix(in srgb,var(--background) 65%,transparent)}.project-preview{position:sticky;top:100px;min-width:0}.project-preview-stage{position:relative;isolation:isolate;aspect-ratio:16 / 10;box-shadow:var(--shadow-x) var(--shadow-y) 46px var(--depth-shadow)}.project-preview-stage:before{position:absolute;z-index:-1;top:12px;right:-12px;bottom:-12px;left:12px;border:1px solid var(--border);background:var(--surface);content:"";transform:translateZ(-32px)}.project-preview-stage:after{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at var(--pointer-x) var(--pointer-y),rgba(255,255,255,.28),transparent 32%);content:"";opacity:0;pointer-events:none;transition:opacity .2s ease}.project-preview-media{overflow:hidden;width:100%;height:100%;background:var(--surface);animation:project-image-enter .44s cubic-bezier(.22,1,.36,1) both}.project-preview-media img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.project-preview-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.65rem 2rem;padding-top:1.5rem;animation:project-copy-enter .32s 70ms cubic-bezier(.22,1,.36,1) both}.project-preview-copy>p{grid-column:1 / -1;color:var(--muted);font-size:.7rem;font-weight:600}.project-preview-copy h3{grid-column:1 / -1;font-size:clamp(1.8rem,4vw,3.5rem);font-weight:670;letter-spacing:-.045em;line-height:1}.project-preview-copy>span{max-width:62ch;color:var(--muted);font-size:.88rem;line-height:1.7}.project-preview-copy>a{display:inline-flex;align-items:center;align-self:end;gap:.5rem;padding-bottom:.3rem;border-bottom:1px solid var(--text);font-size:.78rem;font-weight:650;white-space:nowrap}.credential-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}.credential-item{padding:0 0 1rem;border:0;border-bottom:1px solid var(--border);background:transparent;cursor:zoom-in;text-align:left}.credential-item img{width:100%;aspect-ratio:1;-o-object-fit:cover;object-fit:cover;background:var(--surface);transition:opacity .18s ease,transform .48s cubic-bezier(.22,1,.36,1)}.credential-item:hover img{opacity:.9;transform:translateY(-5px)}.credential-item>span{display:flex;justify-content:space-between;gap:.75rem;padding-top:.8rem}.credential-item b{font-size:.76rem;line-height:1.4}.credential-item small{color:var(--muted);font-size:.68rem}.contact-section{display:grid;grid-template-columns:minmax(0,.85fr) minmax(360px,1.15fr);gap:clamp(3rem,8vw,8rem);align-items:end;padding:112px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);scroll-margin-top:64px}.contact-section h2{max-width:10ch;font-size:clamp(2.6rem,5vw,4.8rem);font-weight:680;letter-spacing:-.055em;line-height:.98}.contact-intro>p{margin-bottom:1rem!important;color:var(--muted);font-size:.82rem;font-weight:600}.contact-intro>span{display:block;max-width:440px;margin-top:1.5rem;color:var(--muted);font-size:.86rem;line-height:1.65}.contact-details{border-top:1px solid var(--border)}.contact-email{display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:center;padding:1.6rem 0;border-bottom:1px solid var(--border)}.contact-email>span{display:inline-flex;align-items:center;gap:.55rem;color:var(--muted);font-size:.7rem;font-weight:650;letter-spacing:.06em;text-transform:uppercase}.contact-email strong{grid-column:1;overflow-wrap:anywhere;font-size:clamp(1.15rem,2vw,1.6rem);font-weight:620;letter-spacing:-.025em}.contact-email>svg{grid-row:1 / span 2;grid-column:2;transition:transform .22s cubic-bezier(.22,1,.36,1)}.contact-email:hover>svg{transform:translate(3px,-3px)}.contact-actions{display:flex;flex-wrap:wrap;gap:.75rem;padding-top:1.2rem}.contact-actions button,.contact-actions a{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:38px;padding:0 .9rem;border:1px solid var(--border);background:transparent;cursor:pointer;font-size:.72rem;font-weight:620;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.contact-actions button:hover,.contact-actions a:hover{border-color:var(--text);background:var(--text);color:var(--background)}.contact-socials{display:flex;gap:1.5rem;padding-top:1.5rem}.contact-socials a{display:inline-flex;align-items:center;gap:.35rem;color:var(--muted);font-size:.75rem;font-weight:600;transition:color .18s ease}.contact-socials a:hover{color:var(--text)}.site-footer{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;padding:1.5rem 0;border-top:1px solid var(--border);color:var(--muted);font-size:.68rem}.site-footer a{justify-self:end}.credential-modal{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:2rem;background:#000000e0;animation:modal-fade .22s ease both}.credential-modal>button{position:absolute;top:1.5rem;right:1.5rem;display:grid;width:42px;height:42px;place-items:center;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:transparent;color:#fff;cursor:pointer}.credential-modal figure{width:min(86vw,820px);animation:modal-rise .36s cubic-bezier(.22,1,.36,1) both}.credential-modal figure img{width:100%;max-height:82vh;-o-object-fit:contain;object-fit:contain}.credential-modal figcaption{margin-top:.8rem;color:#fff;font-size:.76rem;text-align:center}.portfolio :focus-visible{outline:2px solid var(--accent);outline-offset:3px}@keyframes header-enter{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes rise-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes photo-reveal{0%{opacity:0;clip-path:inset(0 0 100% 0);transform:translateY(16px)}to{opacity:1;clip-path:inset(0);transform:translateY(0)}}@keyframes scroll-line{0%{transform:translate(-110%)}50%,to{transform:translate(110%)}}@keyframes project-image-enter{0%{opacity:0;clip-path:inset(0 0 0 18%);transform:scale(1.025)}to{opacity:1;clip-path:inset(0);transform:scale(1)}}@keyframes project-copy-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-fade{0%{opacity:0}}@keyframes modal-rise{0%{opacity:0;transform:translateY(24px) scale(.98)}}@media (hover: hover) and (pointer: fine){.tilt-surface:hover{transition-duration:90ms}.hero-visual:hover:after,.project-preview-stage:hover:after{opacity:1}}@media (max-width: 900px){.content-section{padding:88px 0}.section-header{margin-bottom:3rem}.hero{grid-template-columns:1fr 280px;gap:3rem}.project-browser{grid-template-columns:1fr;gap:2.5rem}.project-list{display:flex;gap:.75rem;overflow-x:auto;padding-bottom:.6rem;border-top:0;overscroll-behavior-inline:contain;scroll-snap-type:inline mandatory;scrollbar-width:thin}.project-list button{min-height:74px;flex:0 0 clamp(210px,38vw,260px);border:1px solid var(--border);scroll-snap-align:start}.project-preview{position:static}.credential-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 700px){.site-header{grid-template-columns:1fr auto}.site-nav{display:none}.wordmark:after{display:none}.hero,.content-section,.contact-section,.site-footer{width:min(100% - 32px,1180px)}.hero{grid-template-columns:1fr;min-height:auto;gap:2.25rem;padding:104px 0 80px}.hero-copy{order:1}.hero-visual{order:2;width:min(68vw,260px);justify-self:start}.hero-photo{width:100%}.hero h1{font-size:clamp(3rem,15vw,5rem)}.hero-scroll-cue{display:none}.hero-stats{gap:.75rem}.section-header{grid-template-columns:1fr;gap:1rem;margin-bottom:2.5rem}.section-header>p{margin-bottom:0!important}.experience-row{grid-template-columns:72px 1fr;grid-template-rows:auto auto auto;-moz-column-gap:1rem;column-gap:1rem;row-gap:1rem;padding:1.5rem 0}.experience-row>img{grid-row:1;grid-column:1;width:72px}.experience-heading{grid-row:1;grid-column:2;align-self:center}.experience-summary{grid-row:2;grid-column:1 / -1;max-width:none}.experience-meta{grid-row:3;grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;justify-content:space-between;gap:.35rem 1rem;text-align:left}.education-card{grid-template-columns:1fr;gap:1rem;padding:1.25rem}.education-card>img{width:80px}.education-heading{flex-direction:column;gap:.25rem}.thesis{margin-left:0}.organization-row{grid-template-columns:56px 1fr;gap:1rem}.organization-row>img{width:56px}.organization-row time{grid-column:2;text-align:left}.skills-block dl{grid-template-columns:1fr}.skills-block dl>div:nth-child(odd),.skills-block dl>div:nth-child(2n){padding-right:0;padding-left:0;border-left:0}.project-list{width:calc(100% + 32px);margin-inline:-16px;padding-inline:16px;scroll-padding-inline:16px}.project-list button{min-height:66px;flex-basis:min(62vw,210px);grid-template-columns:minmax(0,1fr);align-content:center;gap:.25rem;padding:.75rem .9rem}.project-list button:hover,.project-list button:focus-visible,.project-list button.is-active{padding-left:.9rem}.project-list button>span{grid-row:1;grid-column:1;font-size:.82rem}.project-list button small{min-width:0;grid-row:2;grid-column:1;overflow:hidden;font-size:.6rem;text-overflow:ellipsis;white-space:nowrap}.contact-section{grid-template-columns:1fr;gap:3rem;align-items:start;padding:80px 0}.site-footer{grid-template-columns:1fr auto}.site-footer span:nth-child(2){display:none}}@media (max-width: 480px){.content-section{padding:64px 0}.section-header{margin-bottom:2rem}.contact-section{padding:64px 0}.hero-stats dd{font-size:.64rem}.credential-grid{gap:.9rem}.contact-section h2{font-size:2.5rem}.contact-email strong{font-size:1rem}.project-preview-copy{grid-template-columns:1fr}.project-preview-copy>a{justify-self:start;margin-top:.5rem}.credential-modal{padding:1rem}}@media (prefers-reduced-motion: reduce){.portfolio *{scroll-behavior:auto!important;transition:none!important;animation:none!important}.tilt-surface{transform:none!important}.hero-visual:after,.project-preview-stage:after{display:none}}
