:root{--bg: #0f0f0f;--bg-elev: #141414;--surface: #1a1a1a;--surface-2: #232323;--line: #262626;--line-strong: #3e3e3e;--text: #ffffff;--text-dim: #a3a3a3;--text-faint: #828282;--signal: #15ff00;--font-sans: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-accent: "Instrument Serif", Georgia, "Times New Roman", serif;--fs-hero: clamp(2.75rem, .75rem + 6.6vw, 9rem);--fs-display: clamp(3.25rem, .5rem + 9.6vw, 11.5rem);--fs-h2: clamp(1.875rem, 1rem + 2.35vw, 3.75rem);--fs-h3: clamp(1.625rem, .9rem + 1.8vw, 3rem);--fs-h4: clamp(1.25rem, 1rem + .75vw, 1.75rem);--fs-lg: clamp(1.0625rem, .95rem + .35vw, 1.375rem);--fs-body: 1rem;--fs-sm: .875rem;--fs-nav: clamp(.8125rem, .75rem + .15vw, .9375rem);--lh-tight: 1;--lh-snug: 1.15;--lh-body: 1.6;--ls-display: -.035em;--ls-heading: -.02em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 2.5rem;--space-8: 3rem;--space-10: 4rem;--space-12: 5rem;--space-16: 7rem;--space-20: 9rem;--section-pad: clamp(5rem, 11vw, 11rem);--shell-max: 1920px;--shell-pad: clamp(1.25rem, 2.4vw, 2.75rem);--nav-h: 76px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-expo: cubic-bezier(.19, 1, .22, 1);--dur-fast: .18s;--dur-mid: .42s;--dur-slow: .9s;--z-nav: 100;--z-overlay: 200;--z-modal: 300}:root{--motion-scale: 1;--t-fast: calc(var(--dur-fast) * var(--motion-scale));--t-mid: calc(var(--dur-mid) * var(--motion-scale));--t-slow: calc(var(--dur-slow) * var(--motion-scale))}@media(prefers-reduced-motion:reduce){:root{--motion-scale: 0}}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:var(--nav-h);background-color:var(--bg)}body{min-height:100vh;background-color:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-body);font-weight:400;line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}img,svg,canvas{display:block;max-width:100%}img{height:auto}h1,h2,h3,h4{font-family:var(--font-sans);font-weight:500;line-height:var(--lh-snug);letter-spacing:var(--ls-heading);text-wrap:balance}p{text-wrap:pretty}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}ul,ol{list-style:none;padding:0}::selection{background:var(--text);color:var(--bg)}:focus:not(:focus-visible){outline:none}:focus-visible{outline:1px solid var(--text);outline-offset:4px}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:var(--bg)}*::-webkit-scrollbar-thumb{background:var(--line-strong)}*::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.shell{width:100%;max-width:var(--shell-max);margin-inline:auto;padding-inline:var(--shell-pad)}.above{position:relative;z-index:1}.label{font-size:var(--fs-nav);font-weight:500;line-height:1.3;letter-spacing:0;color:var(--text-faint)}.accent{font-family:var(--font-accent);font-style:italic;font-weight:400;letter-spacing:0;font-size:1.08em;line-height:0}.index{display:inline-flex;align-items:baseline;gap:.35em;font-size:var(--fs-nav);font-weight:500;color:var(--text-faint);white-space:nowrap}.index__num{font-family:var(--font-accent);font-style:italic;font-size:1.25em;font-weight:400;color:var(--text)}.muted{color:var(--text-dim)}.roll{display:inline-block;overflow:hidden;vertical-align:top;line-height:1.25;padding-bottom:.05em}.roll__text{display:block;text-shadow:0 1.3em currentColor;transition:transform var(--t-mid) var(--ease-expo)}.roll-trigger:hover .roll__text,.roll-trigger:focus-visible .roll__text{transform:translateY(-1.3em)}.rule{display:block;width:100%;height:1px;background:var(--line-strong)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:fixed;top:var(--space-3);left:var(--space-3);z-index:calc(var(--z-overlay) + 1);padding:.6rem 1rem;font-size:var(--fs-sm);font-weight:500;color:var(--bg);background:var(--text);transform:translateY(-200%);transition:transform var(--t-fast) var(--ease-out)}.skip-link:focus-visible{transform:none}main{position:relative;z-index:1}.modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:flex-start;justify-content:center;padding:clamp(.75rem,4vw,3rem);overflow-y:auto;overscroll-behavior:contain}.modal__backdrop{position:fixed;inset:0;background:#000000d6;backdrop-filter:blur(8px);animation:modal-fade var(--dur-mid) var(--ease-out)}.modal__panel{position:relative;z-index:1;width:min(1120px,100%);margin-block:auto;background:var(--bg);border:1px solid var(--line-strong);animation:modal-rise var(--dur-slow) var(--ease-expo)}.modal__panel:focus{outline:none}.modal__panel:focus-visible{border-color:var(--text)}.modal__close{position:absolute;top:var(--space-4);right:var(--space-4);z-index:2;display:grid;place-items:center;width:44px;height:44px;color:var(--text);border:1px solid var(--line-strong);background:var(--bg);transition:color var(--t-fast) var(--ease-out),background-color var(--t-fast) var(--ease-out),border-color var(--t-fast) var(--ease-out)}.modal__close:hover{color:var(--bg);background:var(--text);border-color:var(--text)}@keyframes modal-fade{0%{opacity:0}}@keyframes modal-rise{0%{opacity:0;transform:translateY(32px)}}.status{display:inline-flex;align-items:center;gap:.55em;font-size:var(--fs-sm);font-weight:500;color:var(--text-faint)}.status__dot{width:.5em;height:.5em;flex:none;background:currentColor}.status--online{color:var(--text)}.status--online .status__dot{background:var(--signal);animation:status-pulse 2.4s var(--ease-in-out) infinite}.status--offline{color:var(--text-dim)}.status--offline .status__dot{background:transparent;border:1px solid currentColor}.status--unconfigured{color:var(--text-faint)}@keyframes status-pulse{0%,to{opacity:1}50%{opacity:.35}}.tag{display:inline-block;padding:.3em .75em;font-size:var(--fs-sm);font-weight:500;line-height:1.4;white-space:nowrap;color:var(--text-dim);border:1px solid var(--line-strong);transition:color var(--t-fast) var(--ease-out),border-color var(--t-fast) var(--ease-out)}.tag--accent{color:var(--text);border-color:var(--text-faint)}.tag--quiet{color:var(--text-faint);border-color:var(--line)}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0}.arrow-link{--pad-x: .55em;position:relative;isolation:isolate;display:inline-flex;align-items:center;gap:.55em;padding:.3em var(--pad-x);margin-inline:calc(var(--pad-x) * -1);font-size:var(--fs-lg);font-weight:500;line-height:1.25;color:var(--text);text-align:left;transition:color var(--t-mid) var(--ease-expo)}.arrow-link--sm{font-size:var(--fs-body)}.arrow-link:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--text);transform:scaleX(0);transform-origin:right center;transition:transform var(--t-mid) var(--ease-expo)}.arrow-link:hover,.arrow-link:focus-visible{color:var(--bg)}.arrow-link:hover:before,.arrow-link:focus-visible:before{transform:scaleX(1);transform-origin:left center}.arrow-link__icon{flex:none;width:.9em;height:.9em;transition:transform var(--t-mid) var(--ease-expo)}.arrow-link:hover .arrow-link__icon,.arrow-link:focus-visible .arrow-link__icon{transform:translate(.15em)}.arrow-link:focus-visible{outline-offset:2px}.nav-scrim{position:fixed;inset:0 0 auto;z-index:calc(var(--z-nav) - 2);height:calc(var(--nav-h) + var(--space-5));pointer-events:none;background:linear-gradient(180deg,#0f0f0feb,#0f0f0fb3 55%,#0f0f0f00)}.nav{position:fixed;inset:0 0 auto;z-index:var(--z-nav);color:#fff;mix-blend-mode:difference;pointer-events:none}.nav a,.nav button{pointer-events:auto}.nav__bar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;gap:var(--space-6);max-width:var(--shell-max);margin-inline:auto;padding:clamp(1rem,1.6vw,1.5rem) var(--shell-pad) 0;font-size:var(--fs-nav);font-weight:500;line-height:1.3}.nav__col{display:flex;flex-direction:column;gap:.2rem;min-width:0}.nav__col--name{align-items:center;text-align:center}.nav__col--actions{align-items:flex-end;text-align:right}.nav__heading{color:#acacac}.nav__name{color:#fff}.nav__status{display:inline-flex;align-items:center}.nav__dot{flex:none;width:.5em;height:.5em;margin-right:.6em;background:var(--signal);animation:nav-pulse 2.8s var(--ease-in-out) infinite}.nav__list{display:flex;flex-wrap:wrap}.nav__col--actions .nav__list{justify-content:flex-end}.nav__list li{display:inline-flex}.nav__link{position:relative;isolation:isolate;color:#fff;opacity:.55;transition:opacity var(--t-mid) var(--ease-out),color var(--t-mid) var(--ease-expo)}.nav__link:before{content:"";position:absolute;inset:0 -.2em;z-index:-1;background:#fff;transform:scaleX(0);transform-origin:right center;transition:transform var(--t-mid) var(--ease-expo)}.nav__link:hover,.nav__link:focus-visible,.nav__link.is-active{opacity:1}.nav__link:hover,.nav__link:focus-visible{color:#000}.nav__link:hover:before,.nav__link:focus-visible:before{transform:scaleX(1);transform-origin:left center}.nav__comma{margin-right:.3em;opacity:.55}.nav__toggle{display:none;justify-self:end;padding:.25rem 0;font-size:var(--fs-nav);font-weight:500;color:#fff}@keyframes nav-pulse{0%,to{opacity:1}50%{opacity:.35}}@media(max-width:991.98px){.nav__bar{grid-template-columns:minmax(0,1fr) auto;align-items:center}.nav__col--quick,.nav__col--actions{display:none}.nav__col--name{align-items:flex-start;text-align:left}.nav__toggle{display:inline-flex}}.nav-menu{position:fixed;inset:0;z-index:calc(var(--z-nav) - 1);display:flex;background:var(--bg);opacity:0;visibility:hidden;transition:opacity var(--t-mid) var(--ease-out),visibility 0s linear var(--t-mid)}.nav-menu.is-open{opacity:1;visibility:visible;transition:opacity var(--t-mid) var(--ease-out),visibility 0s}.nav-menu__inner{display:flex;flex-direction:column;justify-content:flex-end;gap:var(--space-6);padding-top:calc(var(--nav-h) + var(--space-4));padding-bottom:var(--space-7);overflow-y:auto}.nav-menu__list{display:flex;flex-direction:column}.nav-menu__list li{opacity:0;transform:translateY(28px);transition:opacity var(--t-mid) var(--ease-out),transform var(--t-slow) var(--ease-expo)}.nav-menu.is-open .nav-menu__list li{opacity:1;transform:none;transition-delay:calc(80ms + var(--i) * 55ms * var(--motion-scale))}.nav-menu__link{display:flex;align-items:baseline;gap:.5em;padding-block:.1em;font-size:clamp(2.5rem,12vw,4.5rem);font-weight:500;line-height:1.05;letter-spacing:var(--ls-display)}.nav-menu__link .index{letter-spacing:0}.nav-menu__footer{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding-top:var(--space-5);border-top:1px solid var(--line-strong)}.nav-menu__status{display:inline-flex;align-items:center;margin-bottom:var(--space-2);font-size:var(--fs-nav);font-weight:500;color:var(--text-dim)}@media(min-width:992px){.nav-menu{display:none}}.scene-strip{position:relative;width:100%;height:clamp(260px,34vw,520px);margin-bottom:clamp(3rem,6vw,5rem);overflow:hidden;background:var(--bg);cursor:default}.scene-strip canvas{display:block;width:100%;height:100%}.scene-strip__caption{position:absolute;left:var(--shell-pad);bottom:var(--space-3);font-family:var(--font-accent);font-size:var(--fs-sm);color:var(--text-faint);pointer-events:none}@media(max-width:560px){.scene-strip__caption{display:none}}.footer{position:relative;padding-top:clamp(3rem,6vw,5.5rem);padding-bottom:var(--space-6);border-top:1px solid var(--line-strong);overflow:hidden}.footer__meta{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line-strong);font-size:var(--fs-nav);font-weight:500;color:var(--text-faint)}.footer__built{text-align:center}.footer__top{justify-self:end;display:inline-flex;align-items:center;gap:.5em;color:var(--text)}@media(max-width:720px){.footer__meta{grid-template-columns:minmax(0,1fr) auto}.footer__built{display:none}}.mask-lines{display:block}.mask-line{display:block;overflow:hidden;padding:0 .12em .14em 0;margin:0 -.12em -.14em 0}.mask-line__inner{--mask-delay: 0ms;display:block;transform:translateY(120%);transition:transform var(--t-slow) var(--ease-expo) calc(var(--mask-delay) * var(--motion-scale))}.mask-lines.is-visible .mask-line__inner{transform:none}.hero{--hero-progress: 0;position:relative;height:100vh;height:100svh;min-height:540px;overflow:hidden;background:var(--bg);isolation:isolate}.hero__media{position:absolute;inset:0;z-index:-2;animation:hero-settle calc(2.2s * var(--motion-scale)) var(--ease-expo) both}.hero__image{width:100%;height:100%;object-fit:cover;object-position:40% 36%;transform-origin:50% 0%;transform:translate3d(0,calc(var(--hero-progress) * 16% * var(--motion-scale)),0) scale(calc(1 + var(--hero-progress) * .18 * var(--motion-scale)));will-change:transform}.hero__shade{position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#000000d1,#00000073 16%,#0000 34%),linear-gradient(0deg,var(--bg) 0%,rgb(15 15 15 / .85) 22%,rgb(15 15 15 / 0) 60%),radial-gradient(ellipse 85% 80% at 42% 40%,#0000 30%,#000000bf),#0000004d}.hero__content{display:flex;flex-direction:column;justify-content:flex-end;gap:clamp(1.75rem,3.5vw,3rem);height:100%;padding-bottom:clamp(1.25rem,2.4vw,2.25rem);opacity:calc(1 - var(--hero-progress) * 1.8);transform:translate3d(0,calc(var(--hero-progress) * -60px * var(--motion-scale)),0)}.hero__title{font-size:var(--fs-hero);line-height:.95;letter-spacing:var(--ls-display);text-wrap:initial}.hero__meta{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:var(--space-4);padding-top:var(--space-4);border-top:1px solid rgb(255 255 255 / .22);font-size:var(--fs-nav);font-weight:500;color:#ffffffb8;animation:hero-fade calc(1.2s * var(--motion-scale)) var(--ease-out) calc(.9s * var(--motion-scale)) both}.hero__meta-location{text-align:center}.hero__scroll{justify-self:end;display:inline-flex;align-items:center;gap:.5em;color:var(--text)}.hero__scroll-icon{animation:hero-nudge calc(2.4s * var(--motion-scale)) var(--ease-in-out) infinite}@keyframes hero-settle{0%{opacity:0;transform:scale(1.12)}}@keyframes hero-fade{0%{opacity:0}}@keyframes hero-nudge{0%,to{transform:translateY(-2px)}50%{transform:translateY(3px)}}@media(max-width:640px){.hero__meta{grid-template-columns:minmax(0,1fr) auto}.hero__meta-location{display:none}}.section{position:relative;padding-top:var(--section-pad)}.reveal{--reveal-delay: 0ms;opacity:0;transition:opacity var(--t-slow) var(--ease-out) calc(var(--reveal-delay) * var(--motion-scale)),transform var(--t-slow) var(--ease-expo) calc(var(--reveal-delay) * var(--motion-scale))}.reveal--up{transform:translateY(26px)}.reveal--left{transform:translate(-24px)}.reveal--fade{transform:none}.reveal--line{opacity:1;transform:scaleX(0);transform-origin:left center}.reveal.is-visible{opacity:1;transform:none}.eyebrow{display:flex;flex-direction:column;gap:var(--space-4);margin-bottom:clamp(2rem,4vw,3.5rem)}.eyebrow__text{display:flex;align-items:baseline;gap:var(--space-4);font-size:var(--fs-nav);font-weight:500;color:var(--text-dim)}.section-heading{margin-bottom:clamp(3.5rem,8vw,7.5rem)}.section-heading__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.7fr);grid-template-areas:"title title" ".     aside";column-gap:var(--space-6);row-gap:clamp(2.5rem,6vw,6rem)}.section-heading__title{grid-area:title;font-size:var(--fs-h2);line-height:1.02;letter-spacing:var(--ls-heading)}.section-heading__aside{grid-area:aside;display:flex;flex-direction:column;gap:var(--space-8)}.section-heading__lede{max-width:46rem;font-size:var(--fs-lg);font-weight:500;line-height:1.45;color:var(--text-faint)}.section-heading__actions{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-8)}@media(max-width:820px){.section-heading__grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"title" "aside"}}.about__narrative{display:flex;flex-direction:column;gap:var(--space-4);max-width:42rem;color:var(--text-dim)}.about__facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-6)}.about__fact{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4)}.about__fact:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--line-strong);transform:scaleX(0);transform-origin:left center;transition:transform var(--t-slow) var(--ease-expo);transition-delay:calc(var(--i) * 90ms * var(--motion-scale))}.about__facts.is-visible .about__fact:before{transform:none}.about__fact dd{font-size:var(--fs-h4);font-weight:500;line-height:var(--lh-snug);letter-spacing:var(--ls-heading)}@media(max-width:820px){.about__facts{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:var(--space-7)}}.tl-filters{display:flex;flex-wrap:wrap;align-items:baseline;margin-bottom:clamp(2.5rem,5vw,4.5rem);font-size:var(--fs-lg);font-weight:500}.tl-filter{display:inline-flex;align-items:flex-start;gap:.2em;color:var(--text);opacity:.45;transition:opacity var(--t-mid) var(--ease-out)}.tl-filter:hover,.tl-filter:focus-visible,.tl-filter.is-active{opacity:1}.tl-filter:disabled{opacity:.25;cursor:not-allowed}.tl-filter__count{font-family:var(--font-accent);font-style:italic;font-size:.7em;font-weight:400;line-height:1}.tl-filters__comma{margin-right:.35em;color:var(--text);opacity:.45}.timeline{display:flex;flex-direction:column;gap:clamp(2.5rem,5vw,4.5rem)}.tl-group{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:var(--space-6)}.tl-group__year{grid-column:1;align-self:start;position:sticky;top:calc(var(--nav-h) + var(--space-4));padding-top:var(--space-5);font-family:var(--font-accent);font-style:italic;font-size:clamp(2.5rem,1.5rem + 3.4vw,5.5rem);line-height:.9;color:var(--text-dim)}.tl-group__entries{grid-column:2 / -1;display:flex;flex-direction:column}.tl-entry{position:relative;padding-block:var(--space-6)}.tl-entry:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--line-strong);transform:scaleX(0);transform-origin:left center;transition:transform var(--t-slow) var(--ease-expo)}.tl-entry.is-visible:before{transform:none}.tl-entry__card{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-areas:"meta meta body body" "main main body body";grid-template-rows:auto 1fr;column-gap:var(--space-6);row-gap:var(--space-3);opacity:0;transform:translateY(22px);transition:opacity var(--t-slow) var(--ease-out) calc(.12s * var(--motion-scale)),transform var(--t-slow) var(--ease-expo) calc(.12s * var(--motion-scale))}.tl-entry.is-visible .tl-entry__card{opacity:1;transform:none}.tl-entry__meta{grid-area:meta;font-size:var(--fs-nav);font-weight:500;color:var(--text-faint)}.tl-entry__type{color:var(--text-dim)}.tl-entry__main{grid-area:main}.tl-entry__title{font-size:var(--fs-h4);line-height:var(--lh-snug)}.tl-entry--major .tl-entry__title{font-size:clamp(1.5rem,1rem + 1.5vw,2.375rem);line-height:1.05}.tl-entry--upcoming .tl-entry__title{color:var(--text-dim)}.tl-entry__org{margin-top:var(--space-2);color:var(--text-dim)}.tl-entry__role{color:var(--text)}.tl-entry__body{grid-area:body;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-4)}.tl-entry__summary{color:var(--text-dim)}.tl-entry__points{display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--fs-sm);color:var(--text-dim)}.tl-entry__points li{position:relative;padding-left:1.4em}.tl-entry__points li:before{content:"";position:absolute;left:0;top:.8em;width:.65em;height:1px;background:var(--text-faint)}.tl-empty{color:var(--text-dim)}@media(max-width:1100px){.tl-group{grid-template-columns:minmax(0,1fr) minmax(0,4fr)}.tl-group__entries{grid-column:2}}@media(max-width:820px){.tl-entry__card{grid-template-columns:minmax(0,1fr);grid-template-areas:"meta" "main" "body";grid-template-rows:auto}}@media(max-width:640px){.tl-group{grid-template-columns:minmax(0,1fr)}.tl-group__year{position:static;padding-top:0;padding-bottom:var(--space-3)}.tl-group__entries{grid-column:1}}.skills__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-8) var(--space-6)}.skills__group{display:flex;flex-direction:column;gap:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--line-strong)}.skills__label{display:flex;align-items:baseline;gap:var(--space-3);font-size:var(--fs-nav);font-weight:500;letter-spacing:0;color:var(--text-dim)}.skills__list{display:flex;flex-direction:column;gap:var(--space-2)}.skill{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-3)}.skill__name{font-size:var(--fs-h4);font-weight:500;line-height:1.2;letter-spacing:var(--ls-heading)}.skill__evidence{display:inline-flex;flex-wrap:wrap;gap:.15em .65em}.skill__evidence-link{font-size:var(--fs-sm);font-weight:500;color:var(--text-faint);transition:color var(--t-fast) var(--ease-out)}.skill__evidence-link:hover,.skill__evidence-link:focus-visible{color:var(--text)}.skills__coursework{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4) var(--space-6);margin-top:clamp(3rem,6vw,5.5rem);padding-top:var(--space-4);border-top:1px solid var(--line-strong)}.skills__coursework-list{grid-column:2 / -1;display:flex;flex-wrap:wrap;gap:0 .4em;font-size:var(--fs-h4);font-weight:500;line-height:1.3;letter-spacing:var(--ls-heading);color:var(--text-dim)}.skills__coursework-list li:not(:last-child):after{content:" /";color:var(--text-faint)}@media(max-width:1100px){.skills__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:820px){.skills__coursework{grid-template-columns:minmax(0,1fr)}.skills__coursework-list{grid-column:auto}}@media(max-width:520px){.skills__grid{grid-template-columns:minmax(0,1fr)}}.plist{display:flex;flex-direction:column}.prow{--row-pad: clamp(.75rem, 1.6vw, 1.75rem);position:relative;isolation:isolate;margin-inline:calc(var(--row-pad) * -1);padding:clamp(1.75rem,3vw,2.75rem) var(--row-pad)}.prow__fill{position:absolute;inset:0;z-index:-1;background:var(--surface);transform:scaleY(0);transform-origin:bottom center;transition:transform var(--t-mid) var(--ease-expo)}.prow__corner{position:absolute;width:14px;height:14px;border:0 solid var(--text-faint);opacity:0;pointer-events:none;transition:opacity var(--t-mid) var(--ease-out),transform var(--t-mid) var(--ease-expo)}.prow__corner--tl{top:0;left:0;border-width:1px 0 0 1px;transform:translate(6px,6px)}.prow__corner--tr{top:0;right:0;border-width:1px 1px 0 0;transform:translate(-6px,6px)}.prow__corner--bl{bottom:0;left:0;border-width:0 0 1px 1px;transform:translate(6px,-6px)}.prow__corner--br{bottom:0;right:0;border-width:0 1px 1px 0;transform:translate(-6px,-6px)}@media(hover:hover){.prow:hover .prow__fill{transform:none}.prow:hover .prow__corner{opacity:1;transform:none}.prow:hover .prow__icon{transform:rotate(90deg)}.prow:hover .schematic__box{color:var(--text);border-color:var(--text-faint)}}.prow__head,.prow__info{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:var(--space-6)}.prow__head{align-items:baseline}.prow__index{grid-column:1}.prow__title{grid-column:2 / -1;font-size:var(--fs-h3);line-height:1;letter-spacing:var(--ls-heading)}.prow__open{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);width:100%;text-align:left;letter-spacing:inherit}.prow__open:after{content:"";position:absolute;inset:0;z-index:1}.prow__icon{flex:none;width:.62em;height:.62em;transition:transform var(--t-mid) var(--ease-expo)}@supports selector(:has(*)){.prow__open:focus-visible{outline:none}.prow:has(.prow__open:focus-visible){outline:1px solid var(--text);outline-offset:-1px}.prow:has(.prow__open:focus-visible) .prow__fill{transform:none}}.prow__info{margin-top:clamp(2rem,4vw,3.5rem);row-gap:var(--space-8)}.prow__details{grid-column:2 / span 2;display:flex;flex-direction:column;gap:var(--space-5)}.prow__meta{font-size:var(--fs-nav);font-weight:500;color:var(--text-faint)}.prow__tagline{font-size:var(--fs-lg);font-weight:500;line-height:1.4}.prow__highlights{display:flex;flex-direction:column;gap:var(--space-2);color:var(--text-dim)}.prow__highlights li{position:relative;padding-left:1.4em}.prow__highlights li:before{content:"";position:absolute;left:0;top:.8em;width:.65em;height:1px;background:var(--text-faint)}.prow__tech{font-size:var(--fs-sm);font-weight:500;color:var(--text-faint)}.prow__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:auto;padding-top:var(--space-3)}.prow__footer .plinks,.prow__signals{position:relative;z-index:2}.prow__signals{display:flex;align-items:center;gap:var(--space-4)}.prow__stars{font-size:var(--fs-sm);color:var(--text-faint)}.prow__visual{grid-column:4 / span 2;display:flex;align-items:center;justify-content:center;min-height:clamp(280px,26vw,420px);padding:var(--space-6) var(--space-4);background-color:var(--bg-elev);background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:32px 32px;background-position:center;border:1px solid var(--line)}.prow__shot{position:relative;z-index:2;display:block;width:100%;height:100%;overflow:hidden;border:1px solid var(--line-strong)}.prow__shot-img{display:block;width:100%;height:100%;object-fit:cover;object-position:top;filter:grayscale(.15);transition:transform var(--t-slow) var(--ease-expo),filter var(--t-mid) var(--ease-out)}.prow__shot-hint{position:absolute;inset:auto var(--space-4) var(--space-4) auto;display:inline-flex;align-items:center;gap:.5em;padding:.45em .8em;font-size:var(--fs-sm);font-weight:500;color:var(--text);background:var(--bg);border:1px solid var(--line-strong);opacity:0;transform:translateY(6px);transition:opacity var(--t-mid) var(--ease-out),transform var(--t-mid) var(--ease-expo)}@media(hover:hover){.prow__shot:hover .prow__shot-img{transform:scale(1.04);filter:grayscale(0)}.prow__shot:hover .prow__shot-hint{opacity:1;transform:none}}.schematic{margin:0}.schematic__flow,.schematic__node{display:flex;flex-direction:column;align-items:center}.schematic__box{display:inline-flex;align-items:baseline;gap:.6em;padding:.55em .95em;font-size:var(--fs-sm);font-weight:500;white-space:nowrap;color:var(--text-dim);background:var(--bg);border:1px solid var(--line-strong);transition:color var(--t-mid) var(--ease-out),border-color var(--t-mid) var(--ease-out);transition-delay:calc(var(--i) * 60ms * var(--motion-scale))}.schematic__step{font-family:var(--font-accent);font-style:italic;font-size:1.15em;font-weight:400;color:var(--text-faint)}.schematic__arrow{position:relative;width:1px;height:24px;background:var(--line-strong)}.schematic__arrow:after{content:"";position:absolute;left:50%;bottom:0;width:5px;height:5px;transform:translate(-50%);background:var(--text-faint)}.plinks{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-7)}.plinks--detail{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.plink-pending{display:inline-flex;align-items:center;gap:.55em;padding-block:.3em;font-size:var(--fs-body);font-weight:500;line-height:1.25;color:var(--text-faint);cursor:not-allowed}.plink-pending__icon{width:.9em;height:.9em}.plink-pending__note{padding:.1em .5em;font-size:.75rem;border:1px solid var(--line-strong)}.pdetail{padding:clamp(1.5rem,4vw,3.5rem)}.pdetail__header{display:flex;flex-direction:column;gap:var(--space-4);padding-right:var(--space-10);padding-bottom:var(--space-7);border-bottom:1px solid var(--line-strong)}.pdetail__title{font-size:var(--fs-h2);line-height:1;letter-spacing:var(--ls-display)}.pdetail__tagline{max-width:52ch;font-size:var(--fs-lg);font-weight:500;line-height:1.4;color:var(--text-dim)}.pdetail__facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-5);margin-top:var(--space-3)}.pdetail__facts dd{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-1);font-weight:500}.pdetail__muted{color:var(--text-faint)}.pdetail__demo{display:inline-flex;align-items:center;gap:.35em;color:var(--text)}.pdetail__demo .icon{flex:none}.pdetail__body{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,3.5rem);padding-top:var(--space-7)}.pdetail__main,.pdetail__aside{display:flex;flex-direction:column;gap:var(--space-8)}.pdetail__subtitle{margin-bottom:var(--space-4)}.pdetail__summary{max-width:66ch;color:var(--text-dim)}.pdetail__features{display:flex;flex-direction:column;gap:var(--space-5)}.pdetail__features li{display:grid;grid-template-columns:3.25rem minmax(0,1fr);gap:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line)}.pdetail__features h4{margin-bottom:var(--space-2);font-size:1.125rem}.pdetail__features p{max-width:64ch;font-size:var(--fs-sm);color:var(--text-dim)}.pdetail__schematic{display:flex;justify-content:center;padding:var(--space-6) var(--space-4);background:var(--bg-elev);border:1px solid var(--line)}.pdetail__schematic .schematic__box{color:var(--text)}@media(max-width:1100px){.prow__head{grid-template-columns:auto minmax(0,1fr)}.prow__title{grid-column:2}.prow__info{grid-template-columns:repeat(2,minmax(0,1fr))}.prow__details{grid-column:1}.prow__visual{grid-column:2}}@media(max-width:820px){.pdetail__body{grid-template-columns:minmax(0,1fr)}.pdetail__aside{order:-1}}@media(max-width:720px){.prow__info{grid-template-columns:minmax(0,1fr)}.prow__details,.prow__visual{grid-column:auto}.prow__visual{min-height:0}.prow__shot{height:auto;aspect-ratio:4 / 3}}@media(max-width:520px){.prow__footer{flex-direction:column;align-items:flex-start}.pdetail__header{padding-right:var(--space-8)}}.contact{padding-bottom:var(--section-pad)}.contact__heading{margin-bottom:clamp(3rem,7vw,7rem);font-size:var(--fs-display);line-height:.92;letter-spacing:var(--ls-display);text-wrap:initial}.contact__heading .mask-line:nth-child(2){text-align:right}.contact__grid{display:flex;flex-direction:column;gap:var(--space-7);max-width:34rem}.contact__pitch{font-size:var(--fs-lg);font-weight:500;line-height:1.45;color:var(--text-faint)}.contact__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-7)}
