:root,[data-theme=dark]{--color-bg:#000;--color-surface:#080808;--color-surface-alt:#000;--color-surface-hover:#0d0d0d;--color-text-primary:#f1eae0;--color-text-body:#d3cec5;--color-text-secondary:#aaa59d;--color-nav-text:#aaa59d;--color-accent:#b89b72;--color-accent-fill:#b89b72;--color-accent-secondary:#a3865d;--color-accent-highlight:#e1c296;--color-on-accent:#000;--color-border:#bea0782e;--color-border-subtle:#bea0781a;--color-grid:#bea0780a;--color-placeholder:#77736d;--color-overlay-soft:#0000001f;--color-overlay-strong:#000000e0;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--color-bg:#f3efe5;--color-surface:#ede7da;--color-surface-alt:#e7dfd0;--color-surface-hover:#e7dfd0;--color-text-primary:#171614;--color-text-body:#3f3a34;--color-text-secondary:#625d55;--color-nav-text:#302c27;--color-accent:#8f563c;--color-accent-fill:#b06f52;--color-accent-secondary:#8b6248;--color-accent-highlight:#8f563c;--color-on-accent:#171614;--color-border:#28221b2e;--color-border-subtle:#28221b1c;--color-grid:#4637280a;--color-placeholder:#7a7267;--color-overlay-soft:#f3efe514;--color-overlay-strong:#f3efe5e6;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root{--bg-primary:var(--color-bg);--bg-elevated:var(--color-surface);--bg-hover:var(--color-surface-hover);--text-primary:var(--color-text-primary);--text-secondary:var(--color-text-secondary);--accent:var(--color-accent);--border-subtle:var(--color-border-subtle);--grid-line:var(--color-grid);--grid-size:clamp(4.5rem, 8.75vw, 8rem);--bg:var(--color-bg);--surface:var(--color-surface);--surface-low:var(--color-surface-alt);--surface-high:var(--color-surface-hover);--sepia:var(--color-accent);--sepia-dark:var(--color-accent-secondary);--sepia-light:var(--color-accent-highlight);--cream:var(--color-text-primary);--text:var(--color-text-body);--muted:var(--color-text-secondary);--outline:var(--color-border);--hairline:var(--color-border-subtle);--font-display:"Cormorant Garamond", "Bodoni Moda", "Bodoni 72", Georgia, serif;--font-body:Inter, Manrope, "Avenir Next", Avenir, system-ui, sans-serif;--serif:var(--font-display);--sans:var(--font-body);--mono:"JetBrains Mono", ui-monospace, monospace;--type-meta:clamp(.6875rem, .66rem + .12vw, .75rem);--type-ui:clamp(.6875rem, .65rem + .2vw, .8125rem);--type-role:clamp(.75rem, .71rem + .18vw, .875rem);--type-body:clamp(1rem, .96rem + .18vw, 1.125rem);--type-section:clamp(2.375rem, 4vw, 4rem);--type-hero:clamp(4rem, 7vw, 6rem);--motion-ease-out:cubic-bezier(.22, 1, .36, 1);color:var(--text);background:var(--bg);font-family:var(--sans);font-size:var(--type-body);letter-spacing:.01em;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;scroll-behavior:smooth;font-weight:400;line-height:1.7}*{box-sizing:border-box}html{background:var(--color-bg);scroll-padding-top:5rem}body{background:var(--color-bg);min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}html[data-menu-open=true],body[data-menu-open=true]{overscroll-behavior:none;overflow:hidden}button,input,textarea{font:inherit}a{color:inherit}img{max-width:100%;display:block}::selection{color:var(--bg);background:var(--sepia-light)}:focus-visible{outline:1px solid var(--sepia-light);outline-offset:5px}html,body,.site-shell{transition:background-color .2s,color .2s}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}
.site-shell{isolation:isolate;background:0 0;min-height:100vh;position:relative}.fluid-background{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.fluid-background canvas{width:100%;height:100%;display:block}main,.site-footer{z-index:1;position:relative}main{background:0 0}[data-reveal][data-reveal-ready=true]{opacity:.01;transition:opacity .62s var(--motion-ease-out), transform .62s var(--motion-ease-out), background-color .2s ease, color .2s ease, border-color .2s ease;transform:translateY(1.25rem)}[data-reveal][data-reveal-ready=true].is-revealed{opacity:1;transform:translate(0,0)}.technical-label{font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.13em;text-transform:uppercase;font-weight:500;line-height:1.5}.site-header{z-index:100;border-bottom:1px solid var(--hairline);background:var(--color-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);grid-template-columns:6rem 1fr auto;align-items:stretch;height:5rem;display:grid;position:fixed;inset:0 0 auto}.wordmark{border-right:1px solid var(--hairline);color:var(--cream);font-family:var(--serif);justify-content:center;align-items:center;font-size:1.4rem;text-decoration:none;display:flex}.wordmark__dot{color:var(--sepia)}.primary-nav{grid-column:2;justify-content:center;align-items:stretch;display:flex}.primary-nav ul{align-items:stretch;gap:clamp(.875rem,1.45vw,1.75rem);margin:0;padding:0 clamp(1rem,1.8vw,1.75rem);list-style:none;display:flex}.primary-nav li{align-items:stretch;display:flex}.primary-nav a,.header-contact,.menu-toggle{color:var(--color-nav-text);font-family:var(--mono);font-size:var(--type-ui);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:.45rem;font-weight:500;text-decoration:none;transition:color .18s;display:flex;position:relative}.primary-nav a{white-space:nowrap;align-self:stretch;font-size:clamp(.75rem,.7rem + .16vw,.875rem);line-height:1}.primary-nav__label{display:inline-block;position:relative}.primary-nav__label:after,.header-contact:after{content:"";background:var(--sepia);transform-origin:0;height:1px;transition:transform .22s var(--motion-ease-out);position:absolute;left:0;right:0;transform:scaleX(0)}.primary-nav__label:after{bottom:-.45rem}.header-contact:after{bottom:1.35rem}.primary-nav a:hover .primary-nav__label:after,.primary-nav a:focus-visible .primary-nav__label:after,.primary-nav a[aria-current=location] .primary-nav__label:after,.header-contact:hover:after{transform:scaleX(1)}.primary-nav a:hover,.primary-nav a:focus-visible,.primary-nav a[aria-current=location]{color:var(--sepia)}.header-contact{color:var(--cream);flex:1;justify-content:center}.header-contact span{transition:transform .18s var(--motion-ease-out)}.header-actions{border-left:1px solid var(--hairline);grid-area:1/3;align-items:stretch;display:flex}.theme-toggle{border:0;border-right:1px solid var(--hairline);width:3rem;min-width:2.75rem;min-height:2.75rem;color:var(--cream);cursor:pointer;background:0 0;align-self:stretch;place-items:center;padding:0;transition:color .18s,background-color .18s,border-color .18s;display:grid}.theme-toggle:hover{color:var(--sepia);background:var(--surface)}.header-signin{color:var(--color-nav-text);font-family:var(--mono);font-size:var(--type-ui);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;border-left:1px solid var(--hairline);align-items:center;padding:0 .9rem;font-weight:500;text-decoration:none;transition:color .18s;display:flex}.header-signin:hover{color:var(--cream)}.header-user{border-left:1px solid var(--hairline);white-space:nowrap;align-items:center;gap:.75rem;padding:0 .9rem;display:flex}.header-user__name{color:var(--color-nav-text);font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.06em;text-overflow:ellipsis;max-width:10rem;overflow:hidden}.header-user__signout{border:1px solid var(--outline);color:var(--muted);font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:0;padding:.25rem .5rem;transition:color .18s,background-color .18s,border-color .18s}.header-user__signout:hover,.header-user__signout:focus-visible{color:var(--cream);background:var(--surface);border-color:var(--sepia)}.primary-nav .nav-auth-item{display:none}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:1.05rem;height:1.05rem;animation:theme-icon-in .24s var(--motion-ease-out) backwards;transition:transform .18s var(--motion-ease-out)}.menu-toggle{appearance:none;background:0 0;border:0;display:none}.menu-toggle__mark{transition:transform .18s var(--motion-ease-out), border-radius .18s ease}.site-header--menu-open .menu-toggle__mark{border-radius:0;transform:rotate(45deg)scale(1.08)}.grid-field{background-color:var(--bg-primary);background-color:color-mix(in srgb, var(--bg-primary) 72%, transparent);background-image:linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px), linear-gradient(to right, var(--grid-line) 1px, transparent 1px);background-size:var(--grid-size) var(--grid-size)}.hero-section{grid-template-columns:minmax(0,1.1fr) minmax(22rem,.9fr);align-items:center;gap:clamp(2rem,4vw,5rem);min-height:100svh;padding:clamp(8rem,12vw,11rem) clamp(1.5rem,6vw,7.5rem) 5rem;display:grid;position:relative;overflow:hidden}.hero-section:before{content:"";background:var(--color-overlay-soft);pointer-events:none;position:absolute;inset:0}.hero-copy,.hero-portrait,.scroll-cue{z-index:1;position:relative}.eyebrow{color:var(--sepia-light);font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.2em;text-transform:uppercase;animation:hero-enter .62s 80ms var(--motion-ease-out) both;align-items:center;gap:1rem;margin:0 0 1.5rem;display:flex}.eyebrow__line{background:var(--sepia);width:2.75rem;height:1px}.hero-copy h1{color:var(--cream);font-family:var(--serif);font-size:var(--type-hero);letter-spacing:-.02em;text-transform:uppercase;margin:0;font-weight:400;line-height:.91}.hero-copy h1 span,.hero-copy h1 em{animation:hero-enter .7s .15s var(--motion-ease-out) both;display:block}.hero-copy h1 em{color:var(--sepia);margin:.04em 0 0 .12em;font-style:normal;font-weight:400;animation-delay:.22s}.hero-roles{color:var(--cream);font-family:var(--mono);font-size:var(--type-role);letter-spacing:.055em;text-transform:uppercase;animation:hero-enter .62s .3s var(--motion-ease-out) both;flex-wrap:wrap;gap:.5rem .9rem;margin-top:2rem;line-height:1.6;display:flex}.hero-roles span{gap:.9rem;display:inline-flex}.hero-roles i{color:var(--sepia);font-style:normal}.hero-intro{max-width:40rem;color:var(--muted);font-size:var(--type-body);animation:hero-enter .62s .38s var(--motion-ease-out) both;margin:1.8rem 0 0;line-height:1.7}.hero-actions{animation:hero-enter .62s .46s var(--motion-ease-out) both;gap:.9rem;margin-top:2rem;display:flex}.button-link{border:1px solid var(--color-accent-fill);min-height:3.25rem;color:var(--color-on-accent);background:var(--color-accent-fill);font-family:var(--mono);font-size:var(--type-ui);letter-spacing:.08em;text-transform:uppercase;transition:color .18s ease, background-color .18s ease, border-color .18s ease, transform .18s var(--motion-ease-out);justify-content:space-between;align-items:center;gap:2rem;padding:.2rem 1.2rem;font-weight:500;text-decoration:none;display:inline-flex}.button-link:hover{color:var(--cream);background:0 0}.button-link--secondary{color:var(--cream);border-color:var(--outline);background:0 0}.button-link--secondary:hover{color:var(--bg);background:var(--cream)}.button-link__arrow{transition:transform .18s var(--motion-ease-out);display:inline-block}.button-link:hover .button-link__arrow{transform:translate(.25rem)}.button-link:active:not(.button-link--disabled){transform:translateY(0)scale(.985)}.hero-portrait{width:min(100%,32rem);animation:portrait-in .78s .23s var(--motion-ease-out) both;justify-self:end;padding:1rem}.hero-portrait__frame{aspect-ratio:1312/1199;border:1px solid var(--hairline);background:var(--surface-low);position:relative;overflow:hidden}.hero-portrait__frame:after{content:"";z-index:2;box-shadow:inset 0 0 0 1px var(--border-subtle);pointer-events:none;position:absolute;inset:0}.hero-portrait__image{z-index:1;object-fit:cover;object-position:center 42%;opacity:0;transition:opacity .28s var(--motion-ease-out)}.hero-portrait__image--dark{opacity:1}[data-theme=light] .hero-portrait__image--dark{opacity:0}[data-theme=light] .hero-portrait__image--light{opacity:1}.hero-portrait__frame--empty{background:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), var(--bg-primary);background-size:4rem 4rem}[data-theme=light] .grid-field,[data-theme=light] .hero-portrait__frame--empty{background-image:none}.scroll-cue{color:var(--muted);animation:hero-enter .56s .56s var(--motion-ease-out) both;gap:.7rem;text-decoration:none;display:flex;position:absolute;bottom:2rem;left:clamp(1.5rem,6vw,7.5rem)}@keyframes hero-enter{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@keyframes portrait-in{0%{opacity:0;transform:scale(.985)translateY(1rem)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes theme-icon-in{0%{opacity:0;transform:scale(.82)rotate(-10deg)}to{opacity:1;transform:scale(1)rotate(0)}}@media (max-width:1180px){.site-header{grid-template-columns:5rem 1fr auto}.primary-nav ul{gap:clamp(.7rem,1vw,1rem);padding-inline:1rem}.primary-nav a{font-size:clamp(.6875rem,1vw,.8125rem)}.hero-section{grid-template-columns:minmax(0,1.1fr) minmax(20rem,.9fr)}}@media (max-width:820px){.site-header{grid-template-columns:4.5rem 1fr 6.7rem;height:4.5rem}.menu-toggle{cursor:pointer;border-left:1px solid var(--hairline);grid-column:3;justify-content:center;display:flex}.menu-toggle__mark{background:var(--sepia);border-radius:50%;width:.45rem;height:.45rem}.header-contact,.header-signin,.header-user{display:none}.header-actions{border-left:0;grid-column:2;justify-self:end}.theme-toggle{border-right:0;border-left:1px solid var(--hairline);width:2.75rem}.site-header--menu-open{z-index:1000;width:100%;height:100dvh;min-height:100dvh;padding:env(safe-area-inset-top) clamp(1.25rem, 6vw, 2rem) env(safe-area-inset-bottom);background:var(--color-bg);border-bottom:0;grid-template-rows:4.5rem minmax(0,1fr);grid-template-columns:1fr auto auto;inset:0}.site-header--menu-open .wordmark{border-right:0;grid-area:1/1;justify-content:flex-start;justify-self:start;width:auto}.site-header--menu-open .menu-toggle{min-width:5.75rem;color:var(--cream);border-left:0;grid-area:1/3;justify-content:flex-end;padding:0}.site-header--menu-open .header-actions{grid-area:1/2;align-self:stretch}.primary-nav{background:var(--color-bg);opacity:0;visibility:hidden;pointer-events:none;padding:2rem;transition:opacity .18s,transform .18s,visibility .18s;display:block;position:fixed;inset:4.5rem 0 0;transform:translateY(-.75rem)}.site-header--menu-open .primary-nav,.primary-nav--open{width:100%;height:100%;min-height:0;padding:clamp(.5rem, 2vh, 1.5rem) 0 max(1rem, env(safe-area-inset-bottom));overscroll-behavior:contain;background:var(--color-bg);opacity:1;visibility:visible;pointer-events:auto;scrollbar-width:thin;scrollbar-color:var(--outline) transparent;grid-area:2/1/auto/-1;align-self:stretch;position:static;overflow:hidden auto;transform:none}.primary-nav ul{flex-direction:column;align-items:stretch;gap:0;padding:0}.primary-nav li{border-bottom:1px solid var(--hairline);display:block}.primary-nav li:first-child{border-top:1px solid var(--hairline)}.primary-nav .nav-auth-item{display:list-item}.primary-nav a{min-height:clamp(3.75rem,8.5vh,4.75rem);font-family:var(--font-body);letter-spacing:.1em;text-align:left;text-transform:uppercase;align-items:center;padding-inline:clamp(.25rem,1.5vw,.5rem);font-size:clamp(1rem,4.2vw,1.2rem);line-height:1.2;display:flex}.nav-auth-button{width:100%;min-height:clamp(3.75rem,8.5vh,4.75rem);color:var(--color-nav-text);font-family:var(--font-body);letter-spacing:.1em;text-align:left;text-transform:uppercase;cursor:pointer;background:0 0;border:0;align-items:center;padding-inline:clamp(.25rem,1.5vw,.5rem);font-size:clamp(1rem,4.2vw,1.2rem);line-height:1.2;transition:color .18s;display:flex}.nav-auth-button:hover,.nav-auth-button:focus-visible{color:var(--sepia)}.hero-section{grid-template-columns:1fr;gap:4rem;min-height:auto;padding-top:8.5rem}.hero-copy h1{font-size:clamp(3.25rem,8vw,4.25rem)}.hero-portrait{justify-self:center;width:min(88vw,30rem)}.scroll-cue{display:none}}@media (max-width:520px){.hero-section{padding-inline:1.1rem;padding-bottom:3rem}.hero-copy h1{font-size:clamp(2.625rem,11vw,3.5rem)}.hero-roles{display:grid}.hero-roles span{justify-content:space-between}.hero-roles i{display:none}.hero-actions{flex-direction:column}.button-link{width:100%}.hero-portrait{width:calc(100% - 1rem);margin-left:-.4rem}}.section-block{border-top:1px solid var(--hairline);background:var(--bg);background:color-mix(in srgb, var(--bg) 72%, transparent);padding:clamp(5rem,9vw,9rem) clamp(1.25rem,7vw,8rem);position:relative}.section-block--surface{background:var(--surface-low);background:color-mix(in srgb, var(--surface-low) 88%, transparent)}.section-header{grid-template-columns:minmax(11rem,.34fr) 1fr;align-items:start;gap:2rem;margin-bottom:clamp(2.75rem,5vw,5rem);display:grid}.section-header__eyebrow{color:var(--muted);margin:.6rem 0 0}.section-header__eyebrow span{color:var(--sepia)}.section-header h2{max-width:67rem;color:var(--cream);font-family:var(--serif);font-size:var(--type-section);letter-spacing:-.025em;text-transform:uppercase;margin:0;font-weight:400;line-height:.98}.section-header h2 em{color:var(--sepia);font-style:normal;font-weight:400}#services .section-header h2{letter-spacing:-.035em;text-wrap:balance;max-width:60rem;font-size:clamp(2.75rem,4.5vw,4.75rem);line-height:.94}.about-layout{grid-template-columns:minmax(18rem,1fr) minmax(20rem,.8fr);gap:clamp(3rem,8vw,9rem);margin-left:max(0rem,34% + 1rem);display:grid}.about-statement>p:first-child{color:var(--text);font-size:var(--type-body);margin:0;line-height:1.7}.about-statement__note{border-left:1px solid var(--sepia);max-width:22rem;color:var(--muted);font-family:var(--serif);margin:2rem 0 0;padding-left:1.2rem;font-size:1.0625rem;font-style:normal;line-height:1.5}.profile-details{border-top:1px solid var(--outline);margin:0}.profile-details div{border-bottom:1px solid var(--hairline);grid-template-columns:7rem 1fr;gap:1rem;padding:1rem 0;display:grid}.profile-details dt{color:var(--muted);font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.08em;text-transform:uppercase}.profile-details dd{color:var(--cream);margin:0}.placeholder-copy{font-style:normal;color:var(--muted)!important}.resume-action{justify-content:flex-end;margin-top:3rem;display:flex}.button-link--disabled{color:var(--muted);border-color:var(--outline);cursor:not-allowed;background:0 0}.button-link small{letter-spacing:.06em;opacity:.75;font-size:.625rem}.skills-grid{border-top:1px solid var(--outline);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.skill-group{border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);min-height:15rem;padding:clamp(1.5rem,3vw,3rem)}.skill-group:nth-child(2n){border-right:0}.skill-group:last-child{grid-column:1/-1}.skill-group__heading{align-items:baseline;gap:1.2rem;display:flex}.skill-group__heading span{color:var(--sepia)}.skill-group h3,.service-row h3,.interest-item h3,.article-row h3,.timeline-item h3,.current-focus h3{color:var(--cream);font-family:var(--serif);margin:0;font-weight:400}.skill-group h3{font-size:clamp(1.5rem,2vw,2rem);line-height:1.1}.skill-tags{flex-wrap:wrap;gap:.65rem;margin-top:2.5rem;display:flex}.tech-tag{border:1px solid var(--outline);color:var(--text);background:var(--bg-elevated);font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.04em;white-space:nowrap;transition:background-color .2s ease, border-color .2s ease, color .2s ease, transform .2s var(--motion-ease-out);align-items:center;gap:.45rem;padding:.58rem .8rem;display:inline-flex}.tech-tag__icon{width:1rem;height:1rem;color:var(--muted);flex:none;transition:color .2s}.tech-tag--muted{color:var(--muted);border-style:dashed;font-style:normal}.projects-section:before,.beyond-section:before,.contact-section:before{content:"";background:var(--color-overlay-strong);pointer-events:none;position:absolute;inset:0}.projects-section>*,.beyond-section>*,.contact-section>*{z-index:1;position:relative}.project-card{border:1px solid var(--outline);background:var(--surface);transition:transform .22s var(--motion-ease-out), border-color .22s ease, background-color .22s ease}.project-card__meta{border-bottom:1px solid var(--hairline);color:var(--sepia);justify-content:space-between;gap:1rem;padding:1rem 1.4rem;display:flex}.project-card__body{grid-template-columns:1.2fr .8fr;align-items:end;gap:clamp(2rem,6vw,7rem);min-height:24rem;padding:clamp(2rem,5vw,5rem);display:grid}.project-card__type{color:var(--muted)}.project-card h3{color:var(--cream);font-family:var(--serif);letter-spacing:-.025em;text-transform:uppercase;transition:color .18s ease, transform .22s var(--motion-ease-out);margin:1rem 0 0;font-size:clamp(2.5rem,3.6vw,3.625rem);font-weight:400;line-height:.95}.project-card__description{color:var(--muted);font-size:var(--type-body);margin:0;line-height:1.7}.project-card__footer{border-top:1px solid var(--hairline);justify-content:space-between;align-items:flex-end;gap:2rem;padding:1.4rem;display:flex}.project-card__footer .skill-tags{margin-top:0}.project-links{flex-wrap:wrap;justify-content:flex-end;gap:1.4rem;display:flex}.text-link{color:var(--cream);font-family:var(--mono);font-size:var(--type-ui);letter-spacing:.07em;text-transform:uppercase;align-items:center;gap:.35rem;text-decoration:none;transition:color .18s;display:inline-flex;position:relative}a.text-link:after{content:"";background:var(--sepia);transform-origin:100%;height:1px;transition:transform .2s var(--motion-ease-out);position:absolute;bottom:-.15rem;left:0;right:0;transform:scaleX(0)}a.text-link:hover:after,a.text-link:focus-visible:after{transform-origin:0;transform:scaleX(1)}.text-link__arrow{transition:transform .18s var(--motion-ease-out);display:inline-block}a.text-link:hover .text-link__arrow{transform:translate(.12rem,-.12rem)}.text-link--disabled{color:var(--muted);cursor:not-allowed;text-decoration:line-through}.text-link small{color:var(--sepia);margin-left:.3rem;font-size:.625rem;text-decoration:none}.services-list{border-top:1px solid var(--outline)}.service-row{isolation:isolate;border-bottom:1px solid var(--hairline);min-height:8.5rem;transition:opacity .52s var(--motion-ease-out) var(--service-reveal-delay,0s), transform .52s var(--motion-ease-out) var(--service-reveal-delay,0s), border-color .38s ease;grid-template-columns:3.5rem minmax(14rem,1fr) minmax(18rem,.75fr) 2rem;align-items:center;gap:2rem;padding-block:clamp(1.5rem,2.4vw,2.25rem);display:grid;position:relative;overflow:hidden}.service-row:before{content:"";z-index:0;background:var(--surface);transform-origin:0;transition:transform .42s var(--motion-ease-out);position:absolute;inset:0;transform:scaleX(0)}.service-row>*{z-index:1;position:relative}.service-row>.technical-label{color:var(--sepia);transition:color .36s}.service-row h3{letter-spacing:-.025em;text-wrap:balance;transition:color .36s ease, transform .42s var(--motion-ease-out);font-size:clamp(1.625rem,2.15vw,2.5rem);line-height:1.08}.service-row p{color:var(--muted);font-size:var(--type-body);opacity:.86;margin:0;line-height:1.7;transition:color .36s,opacity .36s}.service-row__arrow{color:var(--sepia);transition:color .36s ease, transform .42s var(--motion-ease-out);justify-self:end;font-size:1.3rem}#services[data-reveal-ready=true]{opacity:1;transform:none}#services[data-reveal-ready=true] .section-header,#services[data-reveal-ready=true] .service-row{opacity:0;transform:translateY(1.5rem)}#services.is-revealed .section-header,#services.is-revealed .service-row{opacity:1;transform:translate(0,0)}#services .section-header{transition:opacity .56s var(--motion-ease-out), transform .56s var(--motion-ease-out)}#services .service-row:first-child{--service-reveal-delay:60ms}#services .service-row:nth-child(2){--service-reveal-delay:.12s}#services .service-row:nth-child(3){--service-reveal-delay:.18s}#services .service-row:nth-child(4){--service-reveal-delay:.24s}#services .service-row:nth-child(5){--service-reveal-delay:.3s}#services .service-row:nth-child(6){--service-reveal-delay:.36s}.journey-layout{grid-template-columns:1fr 1fr;gap:clamp(3rem,8vw,9rem);display:grid}.timeline{border-left:1px solid var(--outline);padding-left:2rem;position:relative}.timeline-item{min-height:15rem;padding-bottom:2rem;position:relative}.timeline-item__dot{border:2px solid var(--sepia);background:var(--surface-low);width:9px;height:9px;position:absolute;top:0;left:calc(-2rem - 5px);transform:rotate(45deg)}.timeline-item .technical-label{color:var(--sepia);margin:0 0 1rem}.timeline-item h3{font-size:clamp(1.75rem,2.7vw,2.75rem);line-height:1.08}.timeline-item>p:last-child{max-width:34rem;font-size:var(--type-body);margin:1rem 0 0;line-height:1.7}.current-focus{border-top:1px solid var(--outline)}.current-focus article{border-bottom:1px solid var(--hairline);grid-template-columns:2rem 1fr;gap:.7rem 1rem;padding:1.5rem 0;display:grid}.current-focus article>span{color:var(--sepia);grid-row:1/3}.current-focus h3{text-transform:uppercase;font-size:clamp(1rem,1.3vw,1.25rem);line-height:1.25}.current-focus p{margin:0}.section-intro{max-width:45rem;color:var(--muted);font-size:var(--type-body);margin:-2.5rem 0 4rem 34%;line-height:1.7}.interest-grid{border-top:1px solid var(--outline);border-left:1px solid var(--outline);grid-template-columns:repeat(3,1fr);display:grid}.interest-item{border-right:1px solid var(--outline);border-bottom:1px solid var(--outline);background:var(--bg-elevated);min-height:14rem;padding:1.5rem;transition:background-color .18s,border-color .18s;position:relative}.interest-item:hover{background:var(--surface-high)}.interest-item>.technical-label:first-child{color:var(--sepia)}.interest-item h3{margin-top:3rem;font-size:clamp(1.5rem,2vw,2.125rem);line-height:1.1}.interest-item__status{color:var(--muted);position:absolute;bottom:1.4rem;left:1.5rem}.interest-item>span:last-child{color:var(--sepia);transition:transform .18s var(--motion-ease-out);position:absolute;bottom:1.25rem;right:1.5rem}.article-list{border-top:1px solid var(--outline)}.article-row{border-bottom:1px solid var(--hairline);grid-template-columns:11rem 1fr 7rem;align-items:start;gap:clamp(1.5rem,4vw,4rem);padding:2.5rem 0;display:grid}.article-row__meta{color:var(--muted);flex-direction:column;gap:.7rem;display:flex}.article-row h3{font-size:clamp(1.75rem,2.5vw,2.625rem);line-height:1.08}.article-row h3 span{color:var(--sepia);font-family:var(--mono);font-size:var(--type-meta)}.article-row h3 a{color:inherit;background-image:linear-gradient(var(--sepia), var(--sepia));transition:color .18s ease, background-size .22s var(--motion-ease-out), background-position 0s .22s;background-position:100% 100%;background-repeat:no-repeat;background-size:0 1px;text-decoration:none}.article-row h3 a:hover,.article-row h3 a:focus-visible{background-position:0 100%;background-size:100% 1px}.article-row p{max-width:45rem;color:var(--muted);font-size:var(--type-body);margin:1rem 0 0;line-height:1.7}.article-row__status{color:var(--sepia);justify-self:end}.contact-section{border-top:1px solid var(--hairline);grid-template-columns:.9fr 1.1fr;gap:clamp(3rem,8vw,9rem);padding:clamp(6rem,10vw,10rem) clamp(1.25rem,7vw,8rem);display:grid;position:relative}.contact-kicker{color:var(--muted);font-family:var(--mono);font-size:var(--type-role);letter-spacing:.12em;text-transform:uppercase;margin:3rem 0 1rem}.contact-heading h2{color:var(--cream);font-family:var(--serif);font-size:var(--type-section);letter-spacing:-.025em;text-transform:uppercase;margin:0;font-weight:400;line-height:.98}.contact-heading h2 em{color:var(--sepia);font-style:normal;font-weight:400}.social-list{flex-wrap:wrap;gap:1.4rem;margin-top:1.75rem;display:flex}.social-link{transition:color .24s var(--motion-ease-out)}.social-link__icon{width:1.0625rem;height:1.0625rem;transition:transform .24s var(--motion-ease-out);flex:none}.social-link:hover,.social-link:focus-visible{color:var(--sepia)}.social-link:hover .social-link__icon,.social-link:focus-visible .social-link__icon{transform:translate(.18rem)}.social-link:focus-visible{outline:1px solid var(--sepia);outline-offset:.35rem}.contact-form{border:1px solid var(--outline);background:var(--bg-elevated);grid-template-columns:1fr 1fr;align-self:end;gap:1.6rem;padding:clamp(1.5rem,3.5vw,3.5rem);display:grid}.form-field{flex-direction:column;gap:.6rem;display:flex}.form-field--full{grid-column:1/-1}.form-field label{color:var(--sepia-light);font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.08em;text-transform:uppercase;transition:color .18s}.form-field:focus-within label{color:var(--cream)}.form-field input,.form-field textarea{border:0;border-bottom:1px solid var(--outline);width:100%;color:var(--cream);resize:vertical;background:0 0;border-radius:0;outline:none;padding:.9rem 0}.form-field input:focus,.form-field textarea:focus{border-color:var(--sepia)}.form-field input[aria-invalid=true],.form-field textarea[aria-invalid=true]{border-color:var(--sepia-light)}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--color-placeholder)}.form-error{color:var(--sepia-light);animation:feedback-in .2s var(--motion-ease-out) both;font-size:.75rem}.contact-form__footer{grid-column:1/-1;align-items:center;gap:1.5rem;margin-top:.8rem;display:flex}.contact-form__footer button{cursor:pointer}.contact-form__footer button:disabled{cursor:wait;opacity:.65}.form-status{color:var(--muted);margin:0;font-size:.8125rem;line-height:1.5}.form-status:not(:empty){animation:feedback-in .22s var(--motion-ease-out) both}.form-status--success,.form-status--error{color:var(--sepia-light)}.form-honeypot{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.site-footer{border-top:1px solid var(--hairline);background:var(--bg-primary);background:color-mix(in srgb, var(--bg-primary) 82%, transparent);min-height:7rem;color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;grid-template-columns:1fr auto 1fr;align-items:center;gap:2rem;padding:1.5rem clamp(1.25rem,7vw,8rem);font-size:.6875rem;display:grid}.site-footer p{margin:0}.site-footer p:last-child{text-align:right}.site-footer a{color:var(--cream);text-decoration:none;transition:color .18s}.site-footer a span{transition:transform .18s var(--motion-ease-out);display:inline-block}.article-page{background:var(--bg);min-height:100vh;padding:clamp(2rem,7vw,7rem)}.article-page__back{color:var(--muted);font-family:var(--mono);font-size:var(--type-meta);letter-spacing:.08em;text-transform:uppercase;animation:page-enter .48s var(--motion-ease-out) both;transition:color .18s ease, transform .18s var(--motion-ease-out);text-decoration:none;display:inline-block}.article-page article{width:min(100%,52rem);animation:page-enter .62s 80ms var(--motion-ease-out) both;margin:clamp(4rem,10vw,8rem) auto}.article-page header{border-bottom:1px solid var(--outline);padding-bottom:2rem}.article-page h1{color:var(--cream);font-family:var(--serif);letter-spacing:-.025em;margin:.75rem 0 1.5rem;font-size:clamp(3rem,7vw,6rem);font-weight:400;line-height:.95}.article-page__description{color:var(--muted);font-size:1.1rem}.article-page__cover{object-fit:cover;width:100%;max-height:34rem;margin-top:2rem}.article-page__body{color:var(--text);white-space:pre-wrap;margin-top:3rem;line-height:1.85}.article-page__tags{flex-wrap:wrap;gap:.5rem;margin-top:3rem;display:flex}@keyframes feedback-in{0%{opacity:0;transform:translateY(.25rem)}to{opacity:1;transform:translate(0,0)}}@keyframes page-enter{0%{opacity:0;transform:translateY(.65rem)}to{opacity:1;transform:translate(0,0)}}.site-header,.section-block,.hero-portrait__frame,.skill-group,.interest-item,.contact-form,.site-footer,.form-field input,.form-field textarea{transition-property:background-color,color,border-color;transition-duration:.2s;transition-timing-function:ease}@media (hover:hover) and (pointer:fine){#skills .tech-tag:not(.tech-tag--muted):hover{color:var(--cream);background:var(--surface-high);border-color:var(--sepia-dark);transform:translateY(-1px)}#skills .tech-tag:not(.tech-tag--muted):hover .tech-tag__icon{color:var(--sepia-light)}.wordmark:hover .wordmark__dot{transform:scale(1.25)}.wordmark__dot{transition:transform .18s var(--motion-ease-out);display:inline-block}.header-contact:hover span{transform:translate(.12rem,-.12rem)}.theme-toggle:hover svg{transform:rotate(8deg)}.button-link:hover:not(.button-link--disabled):not(:disabled){transform:translateY(-.125rem)}.button-link:active:not(.button-link--disabled):not(:disabled){transform:translateY(0)scale(.985)}.project-card:hover{border-color:var(--sepia-dark);background:var(--surface-high);transform:translateY(-.2rem)}.project-card:hover h3{color:var(--sepia-light);transform:translate(.15rem)}.service-row:hover{border-bottom-color:var(--outline)}.service-row:hover:before{transform:scaleX(1)}.service-row:hover>.technical-label{color:var(--sepia-light)}.service-row:hover h3{color:var(--sepia);transform:translate(.5rem)}.service-row:hover p{color:var(--text);opacity:1}.service-row:hover .service-row__arrow{color:var(--sepia-light);transform:translate(.3rem,-.3rem)}.interest-item:hover>span:last-child{transform:translate(.12rem,-.12rem)}.site-footer a:hover{color:var(--sepia-light)}.site-footer a:hover span{transform:translateY(-.15rem)}.article-page__back:hover{color:var(--cream);transform:translate(-.15rem)}}@media (max-width:1280px) and (min-width:901px){.about-layout{margin-left:0}}@media (max-width:900px){.section-header{grid-template-columns:1fr;gap:1.2rem}.about-layout{margin-left:0}.section-intro{margin-top:-2rem;margin-left:0}.project-card__body{grid-template-columns:1fr;min-height:auto}.project-card__footer{flex-direction:column;align-items:flex-start}.project-links{justify-content:flex-start}.service-row{grid-template-columns:2.5rem minmax(0,1fr) 1rem;gap:.75rem 1rem}.service-row p{grid-column:2/-1}.journey-layout,.contact-section{grid-template-columns:1fr}.interest-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.section-block{padding-block:4.5rem}.section-header{margin-bottom:3rem}.section-header h2,.contact-heading h2{font-size:clamp(2.375rem,10vw,3.25rem)}.about-layout{grid-template-columns:1fr;gap:3rem}.resume-action{justify-content:stretch}.resume-action .button-link{width:100%}.skills-grid{grid-template-columns:1fr}.skill-group{border-right:0;min-height:12rem}.skill-group:last-child{grid-column:auto}.project-card h3{font-size:clamp(2.5rem,12vw,3.25rem)}.project-card__meta{flex-direction:column;align-items:flex-start}.project-links{flex-direction:column;gap:1rem}#services .section-header h2{font-size:clamp(2.375rem,10vw,3.25rem)}.service-row{grid-template-columns:minmax(0,1fr) auto;gap:.8rem 1rem;padding-block:1.75rem}.service-row>.technical-label{grid-area:1/1}.service-row h3{grid-area:2/1/auto/-1}.service-row p{grid-area:3/1/auto/-1}.service-row__arrow{grid-area:1/2}.interest-grid{grid-template-columns:1fr}.interest-item{min-height:11rem}.article-row{grid-template-columns:1fr;gap:1.2rem}.article-row__meta{flex-direction:row}.article-row__status{justify-self:start}.social-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem;display:grid}.contact-form{grid-template-columns:1fr}.form-field{grid-column:1}.contact-form__footer{flex-direction:column;align-items:stretch}.contact-form__footer .button-link{width:100%}.site-footer{text-align:center;grid-template-columns:1fr;gap:1rem;padding-block:2rem}.site-footer p:last-child{text-align:center}}@media (prefers-reduced-motion:reduce){[data-reveal][data-reveal-ready=true],[data-reveal][data-reveal-ready=true].is-revealed{opacity:1!important;transform:none!important}.button-link,.button-link__arrow,.text-link__arrow,.project-card,.project-card h3,#skills .tech-tag,.service-row h3,.service-row__arrow,.interest-item>span:last-child,.site-footer a span,.article-page__back{transform:none!important}.hero-portrait__image{transition:none!important}#services[data-reveal-ready=true] .section-header,#services[data-reveal-ready=true] .service-row,#services.is-revealed .section-header,#services.is-revealed .service-row{opacity:1!important;transform:none!important}.service-row:before{transition:none!important}}
