:root{color-scheme:light;--font-display: "Geist Variable", "Geist", sans-serif;--font-body: "IBM Plex Sans", sans-serif;--font-wordmark: "Geist Mono", monospace;--color-merged: oklch(43% .18 300);--color-paper: oklch(97.5% .008 250);--color-paper-2: oklch(94.8% .01 250);--color-paper-3: oklch(91.8% .012 250);--color-ink: oklch(19% .022 258);--color-ink-2: oklch(34% .018 257);--color-muted: oklch(41% .015 257);--color-rule: oklch(83% .012 252);--color-rule-strong: oklch(67% .014 254);--color-accent: oklch(55% .17 256);--color-accent-strong: oklch(47% .18 256);--color-accent-ink: oklch(98% .006 250);--color-focus: oklch(43% .2 256);--color-success: oklch(47% .12 150);--color-success-soft: oklch(93% .035 150);--color-error: oklch(52% .19 25);--color-error-soft: oklch(94% .035 25);--color-warning: oklch(55% .12 80);--color-warning-soft: oklch(94% .04 80);--color-shadow: oklch(20% .02 258 / .12);--color-certificate-paper: oklch(99% .004 250);--space-3xs: .125rem;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--space-2xl: 4rem;--space-3xl: 6rem;--space-4xl: 9rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.25rem;--text-lg: 1.5625rem;--text-xl: 1.953rem;--text-2xl: 2.441rem;--text-3xl: 3.052rem;--text-display: clamp(2.75rem, 5vw + 1rem, 5.25rem);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-micro: .12s;--dur-short: .22s;--dur-long: .42s;--rule-hair: 1px;--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-pill: 999px;--z-base: 1;--z-raised: 10;--z-dropdown: 100;--z-sticky: 200;--z-modal: 400;--z-toast: 500;--z-tooltip: 600}:root[data-theme=dark]{color-scheme:dark;--color-paper: oklch(15% .012 255);--color-merged: oklch(76% .14 300);--color-paper-2: oklch(19.5% .014 255);--color-paper-3: oklch(23% .015 255);--color-ink: oklch(94% .008 250);--color-ink-2: oklch(80% .01 250);--color-muted: oklch(68% .01 250);--color-rule: oklch(32% .014 255);--color-rule-strong: oklch(46% .014 255);--color-accent: oklch(70% .15 255);--color-accent-strong: oklch(77% .13 255);--color-accent-ink: oklch(15% .012 255);--color-focus: oklch(78% .16 255);--color-success: oklch(72% .11 150);--color-success-soft: oklch(25% .035 150);--color-error: oklch(72% .15 25);--color-error-soft: oklch(25% .04 25);--color-warning: oklch(76% .11 80);--color-warning-soft: oklch(26% .04 80);--color-shadow: oklch(5% .01 255 / .34);--color-certificate-paper: oklch(99% .004 250)}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/portfolio/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/portfolio/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/portfolio/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/portfolio/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/portfolio/assets/geist-mono-latin-500-normal-YINYabwD.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:7rem;overflow-x:clip;background:var(--color-paper);-webkit-text-size-adjust:100%}body{min-width:20rem;min-height:100vh;margin:0;overflow-x:clip;background:var(--color-paper);color:var(--color-ink-2);font-family:var(--font-body);font-size:var(--text-base);line-height:1.65;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}button,input,textarea{color:inherit;font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}a:active,button:active{opacity:.72}button:disabled{cursor:not-allowed;opacity:.55}img,svg{display:block}img{max-width:100%}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}::selection{background:var(--color-accent);color:var(--color-accent-ink)}h1,h2,h3{min-width:0;overflow-wrap:anywhere}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.app-shell{min-height:100vh;background:var(--color-paper)}.site-container{width:min(100% - clamp(2rem,6vw,6rem),74rem);margin-inline:auto}.page-section{padding-block:clamp(5.5rem,10vw,9rem);scroll-margin-top:6.5rem}.page-section:nth-of-type(2n){background:var(--color-paper-2)}.section-heading{max-width:65ch;margin:0 auto clamp(3rem,6vw,5rem);text-align:center}.section-heading h2{margin:0;color:var(--color-ink);font-family:var(--font-display);font-size:clamp(2rem,4vw,var(--text-3xl));font-weight:650;letter-spacing:-.045em;line-height:1.05}.section-heading p{margin:var(--space-md) 0 0;color:var(--color-muted);font-size:var(--text-md)}.section-rule{width:100%;height:1px;margin:clamp(4rem,8vw,7rem) 0;border:0;background:var(--color-rule)}.eyebrow,.project-case__meta,.project-case__stack,.credential-preview__copy>p,.credential-preview__copy>span,.credential-index__note,.contact-note{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.055em;text-transform:uppercase}.text-link{display:inline-flex;min-height:2.75rem;align-items:center;gap:var(--space-xs);color:var(--color-accent-strong);font-family:var(--font-display);font-size:var(--text-sm);font-weight:650;line-height:1;white-space:nowrap}.text-link svg,.credential-preview__link svg,.site-footer a svg{width:1rem;height:1rem;transition:transform var(--dur-short) var(--ease-out)}.text-link:hover svg,.credential-preview__link:hover svg,.site-footer a:hover svg{transform:translate(2px,-2px)}.text-link--quiet{color:var(--color-ink-2)}.section-loader{width:1.5rem;height:1.5rem;margin:5rem auto;border:2px solid var(--color-rule);border-top-color:var(--color-accent);border-radius:50%;animation:rotate .7s linear infinite}.dock-wrap{position:fixed;z-index:var(--z-sticky);top:max(1rem,env(safe-area-inset-top));left:50%;width:max-content;max-width:calc(100% - 2rem);transform:translate(-50%);pointer-events:none}.dock{display:flex;width:max-content;align-items:center;gap:var(--space-2xs);padding:var(--space-2xs);border:1px solid var(--color-rule);border-radius:var(--radius-pill);background:color-mix(in oklch,var(--color-paper) 90%,transparent);box-shadow:0 .75rem 2.5rem var(--color-shadow);backdrop-filter:blur(16px) saturate(1.25);pointer-events:auto}.dock--mobile{display:none}.dock-item,.dock-text-link{position:relative;display:inline-flex;min-width:2.75rem;height:2.75rem;align-items:center;justify-content:center;line-height:1;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--color-muted);cursor:pointer;transition:color var(--dur-micro) linear,background-color var(--dur-micro) linear}.dock-text-link{min-width:auto;padding-inline:var(--space-md);color:var(--color-ink-2);font-family:var(--font-display);font-size:var(--text-sm);font-weight:550;white-space:nowrap}.dock-item:hover,.dock-text-link:hover{background:var(--color-paper-2);color:var(--color-ink)}.dock-text-link--active,.dock-item--active{background:var(--color-paper-2);color:var(--color-accent-strong)}.dock-item svg{width:1.1rem;height:1.1rem;stroke-width:1.8}.dock-divider{width:1px;height:1.5rem;margin-inline:var(--space-xs);background:var(--color-rule)}.dock-wordmark{width:3rem;margin-right:var(--space-xs);color:var(--color-ink);font-family:var(--font-wordmark);font-weight:600}.dock-wordmark[data-expanded=true]{z-index:var(--z-dropdown)}.dock-tooltip{position:absolute;top:calc(100% + .75rem);left:50%;z-index:var(--z-tooltip);padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-sm);background:var(--color-ink);color:var(--color-paper);font-size:.7rem;line-height:1;white-space:nowrap;opacity:0;transform:translate(-50%,-.25rem);pointer-events:none;transition:opacity var(--dur-micro) linear .8s,transform var(--dur-short) var(--ease-out) .8s}.dock-item:hover .dock-tooltip,.dock-item:focus-visible .dock-tooltip{opacity:1;transform:translate(-50%)}.dock-item:focus-visible .dock-tooltip{transition-delay:0ms}.identity-morph{border:0;background:transparent;cursor:pointer}.identity-morph--nav .identity-morph__value{position:absolute;inset:0 0 auto auto;display:flex;width:3rem;height:2.75rem;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-pill);background:transparent;box-shadow:none;white-space:nowrap}.identity-morph--nav[data-expanded=true] .identity-morph__value{width:max-content;min-width:13.75rem;justify-content:flex-start;padding-inline:var(--space-md);border-color:var(--color-rule);background:var(--color-paper);box-shadow:0 .75rem 2rem var(--color-shadow);animation:identity-nav-in var(--dur-short) var(--ease-out) both}.identity-morph--nav .identity-morph__text{animation:identity-text-in var(--dur-short) var(--ease-out) both}.hero{padding-block:clamp(7.5rem,10vw,9rem) clamp(10rem,15vw,13rem);background:var(--color-paper)}.hero__inner{display:grid;grid-template-columns:minmax(0,9fr) minmax(13rem,3fr);gap:clamp(3rem,8vw,7rem);align-items:end}.hero__copy{min-width:0}.hero h1{min-width:0;margin:0;color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-display);font-weight:620;letter-spacing:-.06em;line-height:.98;overflow-wrap:anywhere}.hero h1>span{display:block}.hero__name{margin-bottom:var(--space-lg);color:var(--color-accent-strong);font-size:clamp(1.35rem,2.5vw,2rem);letter-spacing:-.035em;line-height:1.2}.identity-morph--hero{display:inline-grid;min-width:8ch;padding:0;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;vertical-align:baseline}.identity-morph--hero .identity-morph__text{animation:identity-text-in var(--dur-short) var(--ease-out) both}.identity-morph--hero:hover{text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.15em}.hero__lede{max-width:62ch;margin:clamp(2rem,5vw,3.5rem) 0 0;color:var(--color-ink-2);font-family:var(--font-display);font-size:clamp(1.25rem,2vw,1.55rem);letter-spacing:-.015em;line-height:1.45}.hero__body{max-width:65ch;margin:var(--space-lg) 0 0;color:var(--color-muted);font-size:var(--text-md)}.hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-lg);align-items:center;margin-top:var(--space-xl)}.hero__profile{display:grid;align-self:end;gap:var(--space-lg)}.hero__portrait{width:min(100%,13rem);margin:0;overflow:hidden;aspect-ratio:4 / 5;border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper-3)}.hero__portrait img{width:100%;height:100%;object-fit:cover;object-position:center 34%}.hero__meta{display:flex;flex-direction:column;gap:var(--space-md);padding-top:var(--space-lg);border-top:1px solid var(--color-rule);color:var(--color-muted);font-family:var(--font-wordmark);font-size:var(--text-xs);line-height:1.5}.hero__meta a{display:inline-flex;min-height:2.75rem;align-items:center;gap:var(--space-xs);color:var(--color-ink)}.hero__meta svg{width:1rem;height:1rem}.selected-work{border-top:1px solid var(--color-rule)}.project-case{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(2rem,6vw,5rem);align-items:center}.project-case__visual{grid-column:span 7;margin:0;overflow:hidden;aspect-ratio:16 / 10;border:1px solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper-3)}.project-case__visual img{width:100%;height:100%;object-fit:cover}.project-case__visual--contain{display:grid;place-items:center}.project-case__visual--contain img{width:min(68%,22rem);height:auto;object-fit:contain}.project-case__copy{grid-column:span 5;min-width:0}.project-case--reverse .project-case__visual{order:2}.project-case__meta{margin:0 0 var(--space-lg);color:var(--color-muted)}.project-case h3{margin:0;color:var(--color-ink);font-family:var(--font-display);font-size:clamp(2rem,3.5vw,var(--text-2xl));font-weight:640;letter-spacing:-.045em;line-height:1.05;overflow-wrap:anywhere}.project-case__lede{margin:var(--space-lg) 0 0;color:var(--color-ink-2);font-size:var(--text-md);line-height:1.55}.project-case__copy>p:not(.project-case__meta,.project-case__lede){margin:var(--space-lg) 0 0;color:var(--color-muted)}.project-case__stack{display:flex;flex-wrap:wrap;gap:0;margin:var(--space-xl) 0 0;padding:0;color:var(--color-muted);list-style:none}.project-case__stack li:not(:last-child):after{content:" / ";margin-inline:var(--space-sm);color:var(--color-rule-strong)}.project-case__links{display:flex;flex-wrap:wrap;gap:var(--space-lg);align-items:center;margin-top:var(--space-xl)}.project-list__footer{display:flex;justify-content:flex-end;margin-top:clamp(3rem,6vw,5rem);padding-top:var(--space-xl);border-top:1px solid var(--color-rule)}.collaboration-wall{overflow:hidden;border:1px solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper)}.collaboration-row{display:grid;gap:1px;background:var(--color-rule)}.collaboration-row+.collaboration-row{border-top:1px solid var(--color-rule)}.collaboration-row[data-count="1"]{grid-template-columns:minmax(0,1fr)}.collaboration-row[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}.collaboration-row[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.collaboration-row[data-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.collaboration-cell{position:relative;display:flex;min-width:0;min-height:12rem;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-lg);background:var(--color-paper);color:var(--color-muted);transition:background-color var(--dur-micro) linear,color var(--dur-micro) linear}.collaboration-cell:nth-child(2n){background:var(--color-paper-2)}.collaboration-cell:hover{background:var(--color-paper-3);color:var(--color-ink)}.collaboration-cell img{width:4.75rem;height:4.75rem;border-radius:50%;object-fit:cover}.collaboration-cell span{max-width:100%;overflow:hidden;font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.05em;line-height:1.4;text-align:center;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.collaboration-cell--host img{width:min(10rem,75%);height:4rem;border-radius:0;object-fit:contain}.technical-profile__grid{display:grid;grid-template-columns:minmax(18rem,5fr) minmax(0,7fr);gap:clamp(3rem,8vw,7rem);align-items:center}.evidence-radar{max-width:26rem;margin:0 auto}.evidence-radar figcaption{margin-bottom:var(--space-lg);color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-md);font-weight:620;text-align:center}.evidence-radar__chart{width:100%;aspect-ratio:1}.evidence-radar>p{margin:var(--space-md) auto 0;color:var(--color-muted);font-size:var(--text-sm);text-align:center}.evidence-tooltip{display:grid;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper);box-shadow:0 .5rem 1.5rem var(--color-shadow)}.evidence-tooltip strong{color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-sm);line-height:1.2}.evidence-tooltip span{color:var(--color-muted);font-size:var(--text-xs);line-height:1.3;white-space:normal}.skill-rails{margin:0;border-top:1px solid var(--color-rule)}.skill-rail{display:grid;grid-template-columns:minmax(9rem,.8fr) minmax(0,1.7fr);gap:var(--space-lg);padding-block:var(--space-lg);border-bottom:1px solid var(--color-rule)}.skill-rail dt{color:var(--color-ink);font-family:var(--font-display);font-weight:620}.skill-rail dd{margin:0;color:var(--color-muted);overflow-wrap:anywhere}.credentials-layout{display:grid;grid-template-columns:minmax(0,7fr) minmax(21rem,5fr);gap:clamp(2.5rem,7vw,6rem);align-items:start}.credential-preview{min-width:0;overflow:hidden;border:1px solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper)}.credential-preview__content{min-width:0}.credential-preview__image{display:grid;min-height:24rem;place-items:center;padding:clamp(1rem,4vw,3rem);border-bottom:1px solid var(--color-rule);background:var(--color-paper-3)}.credential-preview__image img{width:100%;max-height:31rem;border:1px solid var(--color-rule);background:var(--color-certificate-paper);object-fit:contain;box-shadow:0 1rem 3rem var(--color-shadow)}.credential-preview__copy{padding:clamp(1.5rem,4vw,2.5rem)}.credential-preview__copy>p{margin:0;color:var(--color-accent-strong)}.credential-preview__copy h3{margin:var(--space-sm) 0;color:var(--color-ink);font-family:var(--font-display);font-size:clamp(1.5rem,3vw,var(--text-xl));font-weight:640;letter-spacing:-.035em;line-height:1.15}.credential-preview__copy>span{display:block;color:var(--color-muted);overflow-wrap:anywhere}.credential-preview__link{display:inline-flex;min-height:2.75rem;align-items:center;gap:var(--space-xs);margin-top:var(--space-lg);color:var(--color-accent-strong);font-family:var(--font-display);font-size:var(--text-sm);font-weight:650;line-height:1;white-space:nowrap}.credential-index{position:sticky;top:7rem;min-width:0}.credential-filters{display:flex;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-lg);overflow-x:auto;scrollbar-width:none}.credential-filters::-webkit-scrollbar{display:none}.credential-filters button{position:relative;isolation:isolate;display:inline-flex;min-height:2.75rem;align-items:center;gap:var(--space-xs);padding-inline:var(--space-md);border:1px solid var(--color-rule);border-radius:var(--radius-pill);background:transparent;color:var(--color-muted);font-size:var(--text-sm);line-height:1;white-space:nowrap;cursor:pointer;overflow:hidden;transition:border-color var(--dur-micro) linear,color var(--dur-micro) linear}.credential-filters button[aria-pressed=true]{border-color:var(--color-ink);color:var(--color-paper)}.credential-filter__active{position:absolute;z-index:-1;inset:0;border-radius:inherit;background:var(--color-ink)}.credential-filter__label,.credential-filter__count{position:relative;z-index:var(--z-base)}.credential-filter__count{font-family:var(--font-body);font-size:.7rem}.credential-scroll-shell{position:relative;min-width:0}.credential-scroll-track{position:absolute;z-index:var(--z-raised);top:0;right:0;width:var(--space-3xs);height:100%;overflow:hidden;background:var(--color-rule);pointer-events:none}.credential-scroll-track span{display:block;width:100%;height:100%;background:var(--color-accent-strong);transform-origin:top}.credential-rows{max-height:min(42rem,calc(100dvh - 13rem));overflow-y:auto;border-top:1px solid var(--color-rule);border-bottom:1px solid var(--color-rule);overscroll-behavior:contain;scrollbar-color:var(--color-accent) var(--color-paper-2);scrollbar-gutter:stable;scrollbar-width:thin}.credential-row{display:grid;width:100%;min-height:5.25rem;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-lg);align-items:center;padding:var(--space-md);border:0;border-bottom:1px solid var(--color-rule);background:transparent;color:var(--color-ink-2);text-align:left;cursor:pointer;transition:background-color var(--dur-micro) linear,color var(--dur-micro) linear}.credential-row:hover,.credential-row[data-active=true]{background:var(--color-paper-3);color:var(--color-ink)}.credential-row[data-active=true]{box-shadow:inset 3px 0 0 var(--color-accent)}.credential-row span{min-width:0}.credential-row strong,.credential-row small{display:block}.credential-row strong{color:inherit;font-family:var(--font-display);font-size:var(--text-sm);font-weight:620;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.credential-row small,.credential-row time{margin-top:var(--space-2xs);color:var(--color-muted);font-family:var(--font-body);font-size:.7rem;letter-spacing:.04em}.credential-index__note{margin:var(--space-lg) 0 0;color:var(--color-muted)}.contact-layout{display:grid;grid-template-columns:minmax(0,5fr) minmax(24rem,7fr);gap:clamp(3rem,9vw,8rem);align-items:start}.contact-intro .eyebrow{margin:0 0 var(--space-lg);color:var(--color-accent-strong)}.contact-intro h3{margin:0;color:var(--color-ink);font-family:var(--font-display);font-size:clamp(1.75rem,3vw,var(--text-2xl));font-weight:620;letter-spacing:-.04em;line-height:1.15}.contact-intro>p:not(.eyebrow,.contact-note){margin:var(--space-lg) 0 0;color:var(--color-muted);font-size:var(--text-md)}.contact-email{display:flex;min-height:4.75rem;align-items:center;gap:var(--space-md);margin-top:var(--space-xl);padding-block:var(--space-md);border-block:1px solid var(--color-rule);color:var(--color-ink)}.contact-email svg{width:1.25rem;height:1.25rem;color:var(--color-accent-strong)}.contact-email span,.contact-email small{display:block}.contact-email span{min-width:0;font-family:var(--font-display);font-weight:620;overflow-wrap:anywhere}.contact-email small{margin-bottom:var(--space-3xs);color:var(--color-muted);font-family:var(--font-body);font-size:.7rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.contact-note{margin:var(--space-lg) 0 0;color:var(--color-muted)}.contact-form{padding:clamp(1.5rem,4vw,2.5rem);border:1px solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper)}.honeypot{position:absolute;left:-9999px;opacity:0;pointer-events:none}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.form-field{margin-bottom:var(--space-md)}.form-field label{display:block;margin-bottom:var(--space-xs);color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-sm);font-weight:600}.form-field input,.form-field textarea{width:100%;min-height:3rem;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-rule-strong);border-radius:var(--radius-sm);background:var(--color-paper);color:var(--color-ink);outline:2px solid transparent;outline-offset:1px;transition:border-color var(--dur-micro) linear,box-shadow var(--dur-micro) linear}.form-field textarea{min-height:9rem;resize:vertical}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--color-muted);opacity:.78}.form-field input:hover,.form-field textarea:hover{border-color:var(--color-ink-2)}.form-field input:active,.form-field textarea:active{border-color:var(--color-focus)}.form-field input:focus,.form-field textarea:focus{border-color:var(--color-focus);outline:2px solid var(--color-focus);outline-offset:1px;box-shadow:none}.form-field input[aria-invalid=true],.form-field textarea[aria-invalid=true]{border-color:var(--color-error)}.form-field input:disabled,.form-field textarea:disabled{background:var(--color-paper-2);cursor:not-allowed;opacity:.72}.form-helper{min-height:1.25rem;margin:var(--space-2xs) 0 0;color:var(--color-muted);font-size:var(--text-xs)}.form-helper[data-error=true]{color:var(--color-error)}.form-status{display:flex;align-items:flex-start;gap:var(--space-sm);margin:0 0 var(--space-md);padding:var(--space-md);border:1px solid var(--color-rule);border-radius:var(--radius-sm);color:var(--color-ink-2);font-size:var(--text-sm)}.form-status svg{width:1.1rem;height:1.1rem;flex:0 0 auto;margin-top:var(--space-3xs)}.form-status[data-status=success]{border-color:var(--color-success);background:var(--color-success-soft)}.form-status[data-status=error],.form-status[data-status=rate_limited]{border-color:var(--color-error);background:var(--color-error-soft)}.submit-button{display:inline-flex;min-width:10rem;min-height:3rem;align-items:center;justify-content:center;gap:var(--space-sm);padding-inline:var(--space-lg);border:1px solid var(--color-ink);border-radius:var(--radius-sm);background:var(--color-ink);color:var(--color-paper);font-family:var(--font-display);font-size:var(--text-sm);font-weight:650;line-height:1;white-space:nowrap;cursor:pointer;transition:transform var(--dur-short) var(--ease-out),opacity var(--dur-micro) linear}.submit-button:hover:not(:disabled){transform:translateY(-2px)}.submit-button:disabled{cursor:not-allowed;opacity:.55}.submit-button svg{width:1rem;height:1rem}.spinner-icon{animation:rotate .7s linear infinite}.site-footer{border-top:1px solid var(--color-rule);background:var(--color-paper)}.site-footer__inner{display:flex;min-height:6.5rem;justify-content:space-between;gap:var(--space-lg);align-items:center;color:var(--color-muted);font-size:.75rem}.site-footer p{margin:0}.site-footer nav{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center}.site-footer a{display:flex;min-height:2.75rem;align-items:center;color:var(--color-ink-2);font-family:var(--font-body);font-size:.7rem;font-weight:550;letter-spacing:.08em;line-height:1;text-transform:uppercase;white-space:nowrap}.site-footer__identity,.site-footer__meta{display:flex;align-items:center;gap:var(--space-md)}.site-footer__identity strong{color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-base);font-weight:650;letter-spacing:-.02em}.site-footer__meta>p{font-family:var(--font-body);font-size:.7rem;font-variant-numeric:tabular-nums;letter-spacing:.08em;white-space:nowrap}@keyframes identity-nav-in{0%{transform:translateY(.2rem)}to{transform:translateY(0)}}@keyframes identity-text-in{0%{opacity:0;transform:translateY(.28em)}to{opacity:1;transform:translateY(0)}}@keyframes rotate{to{transform:rotate(360deg)}}@media (max-width: 67.5rem){.project-case__visual,.project-case__copy{grid-column:span 6}.credentials-layout{grid-template-columns:minmax(0,6fr) minmax(19rem,6fr)}}@media (max-width: 61.99rem){body{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}.dock-wrap{top:auto;bottom:max(.75rem,env(safe-area-inset-bottom))}.dock--desktop{display:none}.dock--mobile{display:flex}}@media (max-width: 47.99rem){html{scroll-padding-top:1rem}body{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}.dock-wrap{top:auto;bottom:max(.75rem,env(safe-area-inset-bottom))}.dock--desktop{display:none}.dock--mobile{display:flex}.dock--mobile .dock-item{min-width:2.75rem}.hero{padding-block:6rem 8rem}.hero__inner,.technical-profile__grid,.credentials-layout,.contact-layout{grid-template-columns:minmax(0,1fr)}.hero__inner{gap:3.5rem}.hero h1{font-size:clamp(2.6rem,14vw,4.5rem)}.hero__meta,.hero__profile{max-width:20rem}.hero__portrait{width:10rem}.project-case{grid-template-columns:minmax(0,1fr);gap:2rem}.project-case__visual,.project-case__copy{grid-column:1}.project-case--reverse .project-case__visual{order:0}.project-case__visual{aspect-ratio:16 / 11}.collaboration-row[data-count="3"],.collaboration-row[data-count="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}.collaboration-row[data-count="3"] .collaboration-cell:last-child{grid-column:1 / -1}.collaboration-cell,.collaboration-cell--host{min-height:10rem;padding:var(--space-md)}.collaboration-cell img{width:4rem;height:4rem}.collaboration-cell--host img{width:min(8rem,75%);height:3.5rem}.technical-profile__grid{gap:3.5rem}.credential-index{position:static}.credential-rows{max-height:none;overflow:visible;scrollbar-gutter:auto}.credential-scroll-track{display:none}.credential-preview__image{min-height:17rem}.contact-layout{gap:3.5rem}.site-footer__inner{min-height:10rem;align-items:flex-start;flex-direction:column;justify-content:center;gap:var(--space-sm);padding-block:var(--space-xl)}.site-footer__identity,.site-footer__meta{flex-wrap:wrap}.site-footer__meta{width:100%;justify-content:space-between}}@media (max-width: 34rem){.site-container{width:min(100% - 2rem,74rem)}.page-section{padding-block:5rem}.section-heading{margin-bottom:3rem}.section-heading p,.hero__body,.project-case__lede,.contact-intro>p:not(.eyebrow,.contact-note){font-size:var(--text-base)}.hero__actions,.project-case__links{gap:var(--space-md)}.skill-rail{grid-template-columns:1fr;gap:var(--space-xs)}.form-grid{grid-template-columns:1fr;gap:0}.contact-form{padding:var(--space-lg)}.credential-preview__image{min-height:13rem}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
