@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--color-background: #0d0f12;--color-surface: oklch(18% .021 205);--color-text: oklch(95% .012 78);--color-text-muted: oklch(76% .015 205);--color-text-subtle: oklch(61% .015 205);--color-accent: oklch(75% .12 178);--color-accent-soft: oklch(84% .09 178);--color-warm: oklch(77% .13 65);--color-border: oklch(27% .023 205);--color-border-strong: oklch(38% .028 205);--font-body: "Instrument Sans Variable", "Instrument Sans", sans-serif;--font-display: "Iowan Old Style", "Baskerville", "Palatino Linotype", Georgia, serif;--text-small: .875rem;--text-lead: clamp(1.0625rem, 2.5vw, 1.25rem);--text-title: clamp(1.35rem, 4vw, 1.75rem);--text-heading: clamp(2.4rem, 8vw, 5rem);--text-display: clamp(3rem, 7vw, 5.25rem);--space-xs: .5rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 3rem;--space-2xl: 4rem;--page-gutter: clamp(1.25rem, 5vw, 3rem);--content-width: 76rem;--duration-fast: .18s;--ease-out: cubic-bezier(.16, 1, .3, 1);font-family:var(--font-body);font-synthesis:none;font-kerning:normal;line-height:1.6;font-weight:400;color:var(--color-text);background:var(--color-background);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}html{min-width:20rem;background:var(--color-background);scroll-behavior:smooth}body{min-width:20rem;min-height:100vh;margin:0;background:var(--color-background)}button,a{font:inherit}a{color:var(--color-accent-soft)}a:focus-visible,button:focus-visible{outline:2px solid var(--color-accent-soft);outline-offset:4px}::selection{color:var(--color-background);background:var(--color-accent-soft)}.site-footer{padding:var(--space-lg) var(--page-gutter) max(var(--space-lg),env(safe-area-inset-bottom));color:var(--color-text-muted);font-size:var(--text-small);text-align:center}.site-footer p{margin:0}.particle-field{position:fixed;z-index:0;inset:0;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}.particle-layer{position:absolute;inset:-5rem 0;transform:translateZ(0)}.particle-point{position:absolute;top:var(--particle-y);left:var(--particle-x);width:var(--particle-size);height:var(--particle-size);border-radius:50%;color:var(--color-accent-soft);background:currentColor;opacity:var(--particle-opacity)}.particle-layer--far .particle-point{color:var(--color-accent)}.particle-layer--near .particle-point:nth-of-type(4n+1){width:3px;height:3px}@media(max-width:42rem),(pointer:coarse){.particle-layer--far{display:none}.particle-layer--middle .particle-point:nth-of-type(3n),.particle-layer--near .particle-point:nth-of-type(3n){display:none}}@media(prefers-reduced-motion:reduce){.particle-layer{transform:none!important}}.site-shell{position:relative;min-height:100vh;overflow:clip;isolation:isolate;background:var(--color-background)}.site-header,.site-shell main,.site-shell .site-footer{position:relative;z-index:1}.content-frame{width:min(100% - 2 * var(--page-gutter),var(--content-width));margin-inline:auto}.skip-link{position:fixed;z-index:20;top:var(--space-sm);left:50%;min-height:2.75rem;padding:0 var(--space-md);display:inline-flex;align-items:center;color:var(--color-background);background:var(--color-text);opacity:0;pointer-events:none;transform:translate(-50%,-150%);transition:transform var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.skip-link:focus{opacity:1;pointer-events:auto;transform:translate(-50%)}.site-header{min-height:6.25rem;display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);border-bottom:1px solid var(--color-border)}.site-mark{color:var(--color-text);font-size:1.35rem;font-weight:760;letter-spacing:-.08em;line-height:1;text-decoration:none}.site-mark span{color:var(--color-warm)}.site-nav{display:flex;align-items:center;flex-wrap:wrap;gap:clamp(1rem,2.5vw,2.5rem)}.site-nav a,.header-contact{color:var(--color-text-muted);font-size:var(--text-small);font-weight:590;text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}.header-contact{color:var(--color-accent-soft)}.header-contact span{margin-left:.35rem}.hero-section{min-height:min(49rem,calc(100svh - 6.25rem));display:grid;grid-template-columns:minmax(0,1.2fr) minmax(16rem,.8fr);align-items:center;gap:clamp(3rem,7vw,7rem);padding-block:clamp(5rem,10vw,9rem)}.hero-copy{max-width:43rem}.section-label,.experience-period,.polygon-tools-label{margin:0;color:var(--color-accent-soft);font-size:.72rem;font-weight:720;letter-spacing:.14em;line-height:1.5;text-transform:uppercase}.hero-byline{margin:0;color:var(--color-text-muted);font-size:.9rem;font-weight:500;letter-spacing:.01em}.hero-section h1,.page-section h2{font-family:var(--font-display);font-weight:500;letter-spacing:-.058em;text-wrap:balance}.hero-section h1{max-width:10ch;margin:var(--space-lg) 0 var(--space-md);font-size:clamp(3.6rem,7.1vw,7.4rem);line-height:.98}.hero-introduction{max-width:55ch;margin:0;color:var(--color-text-muted);font-size:clamp(1.08rem,1.55vw,1.3rem);line-height:1.7;text-wrap:pretty}.hero-personal{max-width:56ch;margin:1.3rem 0 0;color:var(--color-text-muted);font-size:.98rem;line-height:1.7;text-wrap:pretty}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem 1.9rem;margin-top:clamp(2rem,4vw,3rem)}.primary-link{min-height:2.75rem;display:inline-flex;align-items:center;gap:1rem;border-bottom:1px solid var(--color-accent);color:var(--color-accent-soft);font-size:var(--text-small);font-weight:700;text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}.text-link,.project-link{min-height:2.75rem;display:inline-flex;align-items:center;gap:.8rem;color:var(--color-text);font-size:var(--text-small);font-weight:650;text-decoration-color:var(--color-warm);text-underline-offset:.4em}.hero-role{margin:clamp(2rem,4vw,3rem) 0 0;color:var(--color-text-subtle);font-size:var(--text-small);letter-spacing:.025em}.hero-role span{color:var(--color-warm);margin-inline:.4rem}.hero-visual{display:grid;place-items:center}.portrait-wrap{display:block;width:clamp(13rem,26vw,21rem);aspect-ratio:1;overflow:hidden;border-radius:50%}.portrait{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 35%;filter:saturate(.78) contrast(1.06)}.page-section{padding-block:clamp(5.5rem,9vw,9rem);border-top:1px solid var(--color-border);scroll-margin-top:2rem}.section-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(3rem,8vw,9rem)}.section-label{color:var(--color-warm)}.page-section h2{max-width:15ch;margin:1.1rem 0 0;font-size:clamp(2.75rem,5.2vw,5rem);line-height:1.04}.experience-list{border-top:1px solid var(--color-border-strong)}.experience-entry{display:grid;grid-template-columns:7.6rem 1fr;gap:1.5rem;padding:1.7rem 0 2rem;border-bottom:1px solid var(--color-border)}.experience-period{padding-top:.2rem;color:var(--color-warm);letter-spacing:.06em}.experience-entry h3{margin:0;font-size:clamp(1.2rem,2vw,1.6rem);font-weight:630;letter-spacing:-.025em;line-height:1.2}.experience-company{margin:.25rem 0 0;color:var(--color-accent-soft);font-weight:620}.experience-summary{max-width:55ch;margin:.8rem 0 0;color:var(--color-text-muted);line-height:1.7}.polygon-tools{margin-top:2rem}.polygon-tools-label{margin-bottom:.8rem;color:var(--color-warm)}.polygon-tool{display:grid;grid-template-columns:minmax(7.5rem,.45fr) minmax(0,1fr);gap:1rem;padding-block:.9rem;border-top:1px solid var(--color-border)}.polygon-tool h4{margin:0;font-size:.95rem;font-weight:670;line-height:1.5}.polygon-tool p{margin:0;color:var(--color-text-muted);font-size:.9rem;line-height:1.6}.projects-section{padding-block:clamp(3.5rem,5vw,5.5rem)}.projects-heading{margin-bottom:2rem}.projects-section h2{max-width:none;margin-top:.65rem;font-size:clamp(2.3rem,4vw,3.5rem)}.project-list{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,6vw,6rem)}.project-card{display:flex;flex-direction:column;align-items:flex-start;padding-top:1rem;border-top:1px solid var(--color-border-strong)}.project-card h3,.project-card--lead h3{margin:.25rem 0;font-family:var(--font-display);font-size:clamp(2.25rem,3.5vw,3.25rem);font-weight:500;letter-spacing:-.06em;line-height:1.05}.project-card h3 a{color:var(--color-text);text-decoration:none}.project-label{margin:0;color:var(--color-accent-soft);font-size:.9rem;font-weight:650}.project-summary{max-width:51ch;margin:.9rem 0 .7rem;color:var(--color-text-muted);line-height:1.6}.project-link{margin-top:0}.contact-section{padding-block:clamp(7rem,12vw,11rem);text-align:center}.contact-inner{display:grid;justify-items:center}.contact-section h2{max-width:16ch;margin-top:1.4rem}.contact-inner>p:not(.section-label){max-width:40ch;margin:1.4rem 0 0;color:var(--color-text-muted);font-size:var(--text-lead);line-height:1.7}.contact-email{margin-top:2.6rem;color:var(--color-accent-soft);font-size:clamp(1.15rem,3vw,2rem);font-weight:650;letter-spacing:-.025em;text-decoration-color:var(--color-warm);text-underline-offset:.32em}.contact-email span{display:inline-block;margin-left:.35rem}.social-links{display:flex;flex-wrap:wrap;justify-content:center;gap:1.5rem;margin-top:2.7rem}.social-links a{min-height:2.75rem;display:inline-flex;align-items:center;gap:.4rem;color:var(--color-text-muted);font-size:var(--text-small);text-decoration-color:var(--color-border-strong);text-underline-offset:.3em}.utility-page{min-height:100svh;padding:var(--space-2xl) var(--page-gutter);display:grid;place-content:center;justify-items:center;gap:var(--space-md);text-align:center}.utility-page h1{margin:0;font-family:var(--font-display);font-size:var(--text-heading);font-weight:500;letter-spacing:-.05em;line-height:1}.utility-page p{max-width:48ch;margin:0;color:var(--color-text-muted)}.redirect-link{color:var(--color-text);text-underline-offset:.25em}.intro-sequence>*{opacity:0;transform:translateY(.8rem);animation:enter .72s var(--ease-out) forwards}.intro-sequence>:nth-child(2){animation-delay:80ms}.intro-sequence>:nth-child(3){animation-delay:.15s}.intro-sequence>:nth-child(4){animation-delay:.22s}.intro-sequence>:nth-child(5){animation-delay:.29s}@keyframes enter{to{opacity:1;transform:translateY(0)}}@media(hover:hover){.site-nav a:hover,.header-contact:hover,.social-links a:hover,.project-card h3 a:hover,.text-link:hover,.project-link:hover,.primary-link:hover{color:var(--color-warm)}}@media(max-width:64rem){.hero-section{grid-template-columns:minmax(0,1fr) minmax(15rem,.75fr);gap:3rem}.section-grid{gap:3.5rem}}@media(max-width:48rem){.site-header{min-height:5rem;flex-wrap:wrap;padding-block:1rem}.site-nav{gap:1.3rem}.hero-section{min-height:auto;grid-template-columns:1fr;gap:4rem;padding-block:5rem 6rem}.hero-section h1{max-width:12ch;font-size:clamp(3.5rem,11vw,5.5rem)}.hero-visual{justify-items:start}.portrait-wrap{width:clamp(12rem,55vw,17rem)}.section-grid{grid-template-columns:1fr;gap:2.4rem}.project-list{grid-template-columns:1fr}}@media(max-width:34rem){.site-header{column-gap:.5rem}.header-contact{margin-left:auto}.site-nav{order:3;width:100%;justify-content:flex-start}.site-nav a{font-size:.78rem}.hero-section h1{font-size:clamp(3rem,13vw,4rem)}.hero-byline{font-size:.8rem}.experience-entry{grid-template-columns:1fr;gap:.4rem}.experience-period{padding:0}.polygon-tool{grid-template-columns:1fr;gap:.25rem}.contact-email{font-size:clamp(1rem,5.2vw,1.35rem)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.privacy-policy-container{width:min(100%,48rem);min-height:100vh;margin:0 auto;padding:var(--space-lg) var(--page-gutter) var(--space-2xl)}.legal-home-link{min-height:2.75rem;display:inline-flex;align-items:center;color:var(--color-text-muted);font-size:var(--text-small);text-underline-offset:.3em}.privacy-policy-content{margin-top:clamp(3rem,10vw,7rem);color:var(--color-text-muted);line-height:1.75}.privacy-policy-content>h1,.privacy-policy-content>.last-updated{text-align:center}.privacy-policy-content h1{margin:0;color:var(--color-text);font-size:clamp(2.5rem,8vw,4.5rem);font-weight:560;letter-spacing:-.045em;line-height:1.05;text-wrap:balance}.privacy-policy-content .last-updated{margin:var(--space-sm) 0 var(--space-2xl);color:var(--color-text-subtle);font-size:var(--text-small)}.privacy-policy-content section{padding-block:var(--space-lg);border-top:1px solid var(--color-border)}.privacy-policy-content h2,.privacy-policy-content h3{color:var(--color-text);font-weight:560;letter-spacing:-.025em;line-height:1.2}.privacy-policy-content h2{margin:0 0 var(--space-md);font-size:clamp(1.5rem,5vw,2rem)}.privacy-policy-content h3{margin:var(--space-lg) 0 var(--space-xs);font-size:1.2rem}.privacy-policy-content p{margin:0 0 var(--space-sm)}.privacy-policy-content ul{margin:var(--space-sm) 0 var(--space-md);padding-left:var(--space-md)}.privacy-policy-content li{margin-bottom:var(--space-xs)}.privacy-policy-content strong{color:var(--color-text);font-weight:600}.privacy-policy-content a{color:var(--color-accent-soft);text-underline-offset:.25em}@media(min-width:48rem){.privacy-policy-container{padding-top:var(--space-xl)}}#root{min-height:100vh}
