:root{--ink:#262b36;--paper:#f9f8f6;--muted:#656e81;--accent:#2256bf;--accent-light:#d4e0f7;--accent-subtle:#eef2fc;--accent-dark:#1b4498;--accent-2:#2a7e5b;--warn:#f36716;--ok:#2a7e5b;--heading:#363e4e;--heading-2:#3f485a;--surface:#ffffffbf;--surface-pill:#ffffffa6;--surface-hover:#ffffffe6;--on-accent:#fff;--ink-print:#000;--inset-warm:#f7f6f3;--inset-cool:#f2f4f7;--code-bg:#f9f9fb;--paper-deep:#f5f3f0;--paper-deeper:#f3f1ed;--ring:#2256bf59;--accent-tint:#2256bf0f;--rule-highlight:#2256bf26;--border-faint:#262b360f;--border-soft:#262b3614;--border-hairline:#262b361a;--ok-bg:#d3eee3;--ok-tint:#2a7e5b14;--green-bg:#d3eee3;--amber-bg:#fceec5;--amber-ink:#aa4409;--ok-ink:#246b4d;--accent-ink:#1f4ead;--green-ink:#246b4d;--warn-tint:#f367161a;--border:1px solid #dbdfe6;--shadow:0 10px 30px #1d23301a;--shadow-hard:0 1px 0 #1d233026;--shadow-lift:0 15px 40px #1d233026;--shadow-soft:0 4px 12px #1d233014;--shadow-float:0 4px 12px #1d23301a;--font:ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--lh:1.55;--text-3xs:.75rem;--text-2xs:.8125rem;--text-xs:.9375rem;--text-sm:1rem;--text-md:1.0625rem;--text-lg:1.1875rem;--text-h2:clamp(1.35rem, 1.3vw + 1rem, 1.85rem);--text-h1:clamp(1.8rem, 2.2vw + 1rem, 2.6rem);--text-display:clamp(2.35rem, 4.5vw + 1rem, 3.5rem);--lh-display:1.05;--lh-heading:1.15;--lh-snug:1.4;--lh-base:1.55;--lh-relaxed:1.6;--fw-normal:400;--fw-medium:500;--fw-semibold:600;--fw-strong:650;--tracking-tight:-.02em;--tracking-normal:.01em;--tracking-label:.05em;--radius:14px;--radius-sm:10px;--space-1:.35rem;--space-2:.6rem;--space-3:.95rem;--space-4:1.4rem;--space-5:2rem;--space-6:3rem;--section-gap:clamp(2.5rem, 6vw, 4rem);--measure:72ch;--measure-wide:1080px}*{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;scroll-behavior:smooth;scroll-padding-top:calc(64px + var(--space-2));font-size:16px}body{color:var(--ink);background:linear-gradient(180deg, var(--paper), var(--paper-deep));font-family:var(--font);line-height:var(--lh);letter-spacing:var(--tracking-normal);flex-direction:column;min-height:100vh;margin:0;display:flex}main{max-width:var(--measure);padding:var(--space-5) var(--space-4);flex:1;width:100%;min-width:0;margin:0 auto}section{margin-block:var(--space-5)}.container{max-width:var(--measure);padding:0 var(--space-4);width:100%;min-width:0;margin:0 auto}.home,.container--wide{max-width:var(--measure-wide)}a{color:var(--accent);border-bottom:1px solid var(--ring);text-decoration:none;transition:border-color .2s}a:hover{border-bottom-color:currentColor}a:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:10px}li{margin:.25rem 0}.site-nav{background:linear-gradient(180deg, var(--paper), var(--inset-warm));border-bottom:var(--border);z-index:100;position:sticky;top:0}.site-nav .container{min-height:64px;padding-top:var(--space-2);padding-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.nav-left{font-weight:var(--fw-semibold);color:var(--ink);border:none;text-decoration:none}.nav-links{gap:var(--space-4);margin:0;padding:0;list-style:none;display:flex}.nav-links a{color:var(--muted);padding:var(--space-2) 0;border:none;text-decoration:none;transition:color .2s}.nav-links a:hover,.nav-links a.active{color:var(--accent)}@media (max-width:768px){.nav-links{background:var(--paper);border-bottom:var(--border);box-shadow:var(--shadow-soft);padding:var(--space-2) 0;flex-direction:column;gap:0;display:none;position:absolute;top:100%;left:0;right:0}.nav-links--open{display:flex}.nav-links li{border-bottom:1px solid var(--border-faint)}.nav-links li:last-child{border-bottom:none}.nav-links a{padding:var(--space-3) var(--space-4);display:block}.nav-toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;width:32px;height:32px;padding:4px;display:flex}.nav-toggle__bar{background:var(--ink);border-radius:1px;width:100%;height:2px;transition:transform .2s,opacity .2s;display:block}.nav-toggle--active .nav-toggle__bar:first-child{transform:translateY(7px)rotate(45deg)}.nav-toggle--active .nav-toggle__bar:nth-child(2){opacity:0}.nav-toggle--active .nav-toggle__bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}}@media (min-width:769px){.nav-toggle{display:none}}.back-nav{padding:var(--space-3) 0;border-bottom:var(--border)}.back-nav a{color:var(--muted);font-size:14px}h1,h2,h3,h4,h5,h6{line-height:var(--lh-heading);margin:0 0 var(--space-3) 0;font-weight:var(--fw-semibold)}h1{font-size:var(--text-h1);letter-spacing:var(--tracking-tight)}h2{font-size:var(--text-h2);border-bottom:var(--border);padding-bottom:var(--space-2);margin-bottom:var(--space-4)}h3{font-size:var(--text-lg);color:var(--heading)}h4{font-size:var(--text-md);color:var(--heading-2)}p{margin:0 0 var(--space-3) 0}p:last-child{margin-bottom:0}small,.muted{color:var(--muted)}strong{font-weight:var(--fw-strong)}em{font-style:italic}.hero-home{padding:var(--space-3) 0 var(--space-5)}.hero-home h1{font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--muted);letter-spacing:.02em;margin-bottom:var(--space-1)}.hero-title{color:var(--ink);font-size:clamp(1.5rem,1.5vw + 1rem,1.75rem);font-weight:700;line-height:var(--lh-heading);margin-bottom:var(--space-2);overflow-wrap:break-word}.hero-pitch{max-width:64ch;font-size:var(--text-md);font-weight:var(--fw-strong);color:var(--heading);margin-bottom:var(--space-3);overflow-wrap:break-word}.hero-bio{max-width:68ch;margin-bottom:var(--space-4)}.hero-bio p{font-size:var(--text-md);line-height:var(--lh-relaxed);margin-bottom:var(--space-3);overflow-wrap:break-word}.location{color:var(--muted);font-size:var(--text-xs)}.hero-selected{align-items:baseline;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-4);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.hero-selected__label{font-size:var(--text-2xs);font-weight:var(--fw-strong);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted)}.hero-links{gap:var(--space-2);flex-wrap:wrap;display:flex}.hero-link{align-items:center;gap:var(--space-2);max-width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--ring);background:var(--surface-pill);color:var(--ink);box-shadow:var(--shadow-hard);border-radius:999px;min-width:0;min-height:44px;transition:transform 60ms,box-shadow .12s,background .12s;display:inline-flex}.hero-link .link-label{overflow-wrap:break-word;min-width:0}.hero-link:hover{background:var(--surface-hover);box-shadow:var(--shadow);border-bottom:1px solid var(--ring)}.hero-link:active{transform:translateY(1px)}.hero-link--primary{background:var(--accent);border:1px solid var(--accent);color:var(--on-accent)}.hero-link--primary:hover{background:var(--accent-dark);border:1px solid var(--accent-dark);box-shadow:var(--shadow)}@media (max-width:768px){.hero-link--primary{order:-1}}.link-arrow{font-size:var(--text-lg)}.hero-now{margin-top:var(--space-4);padding:var(--space-2) var(--space-3);border-left:3px solid var(--accent);background:var(--accent-subtle);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--text-xs);color:var(--ink);max-width:68ch}.hero-now__label{font-weight:var(--fw-strong);color:var(--accent-dark);text-transform:uppercase;letter-spacing:var(--tracking-label);font-size:var(--text-2xs);margin-right:var(--space-2)}.background-teaser{padding:var(--space-5) 0;border-top:var(--border)}.background-summary{max-width:68ch;margin-bottom:var(--space-4)}.background-summary p{font-size:var(--text-xs);line-height:var(--lh-relaxed);margin-bottom:var(--space-3)}.background-links{gap:var(--space-3);flex-wrap:wrap;display:flex}.background-link{align-items:center;gap:var(--space-2);color:var(--accent);display:inline-flex}.card,.project-card,.position-card,.publication,.tech-project-card,.service-card{background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow), var(--shadow-hard);padding:var(--space-4);margin-bottom:var(--space-3);transition:box-shadow .2s,transform .1s}.card:hover,.project-card:hover,.position-card:hover{box-shadow:var(--shadow-lift), var(--shadow-hard)}.project-header{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.project-card h3{margin-bottom:0}.project-status{font-size:var(--text-3xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-label);border-radius:999px;padding:4px 12px;display:inline-block}.project-status.live{background:var(--ok-bg);color:var(--ok-ink)}.project-status.development{background:var(--accent-light);color:var(--accent-ink)}.project-status.mvp{background:var(--amber-bg);color:var(--amber-ink)}.project-status.production{background:var(--green-bg);color:var(--green-ink)}.project-description{font-size:var(--text-xs);line-height:var(--lh-relaxed);color:var(--ink);margin-bottom:var(--space-3)}.project-tech{gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.tech-tag{font-family:var(--mono);font-size:var(--text-2xs);background:var(--inset-cool);border:var(--border);border-radius:var(--radius-sm);color:var(--muted);padding:4px 10px}.project-links{gap:var(--space-2);flex-wrap:wrap;display:flex}.project-link{font-size:var(--text-xs);font-weight:var(--fw-semibold);color:var(--accent)}.project-link.external:after{content:" ↗"}.projects-section,.credentials{padding:var(--space-5) 0;border-top:var(--border)}.resume-skill-module{gap:var(--space-5);display:grid}.resume-format-group h3,.skills-snapshot h3{margin-bottom:var(--space-3)}.resume-format-list,.skill-snapshot-list{margin:0;padding:0;list-style:none}.resume-format-list{border-top:var(--border)}.resume-format-item{gap:var(--space-2);padding:var(--space-3) 0;border-bottom:var(--border);grid-template-columns:minmax(0,1fr);align-items:center;display:grid}.resume-format-copy h4{margin-bottom:var(--space-1);font-size:var(--text-sm);color:var(--heading)}.resume-format-copy p{max-width:62ch;font-size:var(--text-xs);line-height:var(--lh-base);color:var(--muted);overflow-wrap:break-word}.resume-format-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}@media (min-width:769px){.resume-format-item{grid-template-columns:minmax(0,1fr) auto}.resume-format-actions{justify-content:flex-end}}.cred-copy{max-width:100%;min-height:44px;font:inherit;font-size:var(--text-xs);font-weight:var(--fw-semibold);color:var(--accent);background:var(--surface);border:1px solid var(--accent);cursor:pointer;border-radius:999px;align-items:center;padding:10px 16px;transition:background .2s,color .2s;display:inline-flex}.cred-copy:hover{background:var(--accent-subtle)}.cred-copy.is-copied{background:var(--accent);color:var(--on-accent)}.cred-card__download{align-items:center;gap:var(--space-1);max-width:100%;min-height:44px;font-size:var(--text-2xs);font-weight:var(--fw-semibold);color:var(--muted);display:inline-flex}.cred-card__download:hover{color:var(--accent)}.skill-snapshot-list{border-top:var(--border);grid-template-columns:1fr;margin:0;padding:0;list-style:none;display:grid}.skill-snapshot-list li{min-width:0;padding:var(--space-3) 0;border-bottom:var(--border)}.skill-snapshot-list--single>li{grid-column:1/-1}.skill-snapshot-list strong{margin-bottom:var(--space-1);color:var(--heading);font-size:var(--text-xs);display:block}.skill-snapshot-list span{font-size:var(--text-xs);line-height:var(--lh-base);color:var(--ink);overflow-wrap:break-word;display:block}@media (min-width:769px){.skill-snapshot-list{column-gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr))}}.evidence-section,.approach-section{padding:var(--space-5) 0;border-top:var(--border)}.approach-grid{gap:var(--space-4);margin-bottom:var(--space-4);grid-template-columns:1fr;display:grid}@media (min-width:769px){.approach-grid{grid-template-columns:repeat(2,1fr)}.approach-card--flagship{grid-column:1/-1}}.approach-card{background:var(--surface);border:var(--border);border-radius:var(--radius);padding:var(--space-4);gap:var(--space-3);flex-direction:column;transition:box-shadow .2s;display:flex}.approach-card:hover{box-shadow:var(--shadow-lift), var(--shadow-hard)}.approach-card--flagship{border:1px solid var(--accent);background:var(--accent-subtle);border-top-width:3px}.approach-header{justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.approach-header h3{font-size:var(--text-lg);margin-bottom:0}.approach-thesis{font-size:var(--text-sm);line-height:var(--lh-relaxed);color:var(--ink)}@media (min-width:769px){.approach-card--flagship .approach-thesis{max-width:60ch}}.approach-case-study{padding-top:var(--space-3);border-top:var(--border);align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.case-study-link{font-weight:var(--fw-semibold);color:var(--accent);font-size:var(--text-xs)}.approach-more{margin-top:var(--space-4);font-size:var(--text-xs)}.approach-more a{color:var(--accent);font-weight:var(--fw-semibold)}.case-study-context{font-size:var(--text-2xs);color:var(--muted);margin-bottom:var(--space-2)}.case-study-context a{color:var(--accent)}.experience-page,.research-page,.project-detail{padding:var(--space-4) 0 var(--space-5)}.experience-page{--section-gap:clamp(3rem, 8vw, 6rem);--content-max-width:72ch;--braid-max-width:1000px}.experience-hero{padding:var(--space-5) var(--space-4);text-align:center}.experience-hero__title{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:var(--fw-semibold);line-height:var(--lh-heading);margin:0 0 var(--space-2);color:var(--ink)}.experience-hero__subtitle{color:var(--muted);margin:0 0 var(--space-4);font-size:clamp(.95rem,2vw,1.1rem)}.braid-container{max-width:var(--braid-max-width);margin:0 auto var(--space-3);padding:0 var(--space-3)}.braid-svg{width:100%;height:auto;display:block}.experience-hero__hint{font-size:var(--text-2xs);color:var(--muted);margin:0}.experience-content{max-width:calc(var(--content-max-width) + 2 * var(--space-4));padding:0 var(--space-4);margin:0 auto}.era-section{padding:var(--section-gap) 0;border-top:1px solid var(--border-soft)}.era-section:first-of-type{border-top:none}.era-section__header{margin-bottom:var(--space-4)}.era-section__title{font-size:clamp(1.25rem,3vw,1.5rem);font-weight:var(--fw-semibold);line-height:var(--lh-heading);margin:0 0 var(--space-1);color:var(--ink)}.era-section__meta{gap:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--muted);flex-wrap:wrap;display:flex}.era-section__meta-item{align-items:center;gap:var(--space-1);display:flex}.era-section__body{line-height:var(--lh-relaxed)}.era-section__body p{margin:0 0 var(--space-3)}.era-section__body p:last-child{margin-bottom:0}.bento-grid{gap:var(--space-4);margin-top:var(--space-4);grid-template-columns:1fr;display:grid}@media (min-width:640px){.bento-grid{grid-template-columns:repeat(2,1fr)}.bento-grid__item--wide{grid-column:span 2}}.bento-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:var(--space-4);transition:box-shadow .2s}.bento-card:hover{box-shadow:var(--shadow)}.bento-card__title{font-size:var(--text-3xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);margin:0 0 var(--space-2)}.bento-card__content{font-size:var(--text-xs);color:var(--ink)}.role{margin-bottom:var(--space-3)}.role:last-child{margin-bottom:0}.role__title{font-weight:var(--fw-semibold);margin:0 0 var(--space-1)}.role__org{color:var(--muted);font-size:var(--text-xs)}.role__detail{font-size:var(--text-xs);color:var(--muted);margin:var(--space-1) 0 0}.experience-page .project{justify-content:space-between;align-items:flex-start;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--border-faint);display:flex}.experience-page .project:last-child{border-bottom:none;padding-bottom:0}.experience-page .project:first-child{padding-top:0}.project__name{font-weight:var(--fw-semibold);font-size:var(--text-xs)}.project__desc{font-size:var(--text-2xs);color:var(--muted);margin:var(--space-1) 0 0}.badge{font-size:var(--text-3xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-label);white-space:nowrap;border-radius:999px;padding:.2em .6em;display:inline-block}.badge--production{background:var(--ok);color:#fff}.badge--live{background:var(--accent-2);color:#fff}.badge--development,.badge--tenured{background:var(--accent);color:#fff}.era-section--light .era-section__body{max-width:60ch}.highlights{gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;padding:0;list-style:none;display:flex}.highlights li{font-size:var(--text-2xs);color:var(--muted);padding-left:1.2em;position:relative}.highlights li:before{content:"·";color:var(--accent);font-weight:700;position:absolute;left:0}.back-to-top{bottom:var(--space-4);right:var(--space-4);background:var(--surface-hover);border:1px solid var(--border-hairline);padding:var(--space-2) var(--space-3);font-size:var(--text-2xs);font-weight:var(--fw-medium);color:var(--muted);cursor:pointer;opacity:0;visibility:hidden;box-shadow:var(--shadow-float);z-index:100;border-radius:999px;transition:opacity .2s,visibility .2s,color .2s;position:fixed}.back-to-top:hover{color:var(--accent)}.back-to-top.visible{opacity:1;visibility:visible}@media (max-width:640px){.braid-container{padding:0 var(--space-2);overflow-x:auto}.braid-svg{min-width:700px}.era-section{padding:var(--space-5) 0}.bento-card{padding:var(--space-3)}.back-to-top{bottom:var(--space-3);right:var(--space-3)}}.page-header{margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:var(--border)}.page-subtitle{font-size:var(--text-sm);font-weight:var(--fw-normal);color:var(--muted);margin-top:var(--space-2)}.highlights-grid{gap:var(--space-3);margin-bottom:var(--space-5);padding:var(--space-4);background:var(--accent-subtle);border-radius:var(--radius);border:var(--border);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.highlight-stat{text-align:center}.highlight-stat h3{font-size:var(--text-h2);color:var(--accent);margin-bottom:var(--space-1);border:none;padding:0}.highlight-stat p{font-size:var(--text-2xs);line-height:var(--lh-snug);color:var(--ink);margin-bottom:0}.stat-detail{font-size:var(--text-3xs);color:var(--muted);margin-top:4px;display:block}.position-section,.publication-section{margin-bottom:var(--space-5)}.position-header{margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:var(--border)}.position-header h3{margin-bottom:var(--space-2);border:none;padding:0}.institution{font-size:var(--text-xs);color:var(--muted);margin-bottom:4px}.dates{font-size:var(--text-2xs);color:var(--muted)}.position-body h4{margin-top:var(--space-3);margin-bottom:var(--space-2)}.emphasis{color:var(--ink);margin-bottom:var(--space-2);font-style:italic}.course-categories{gap:var(--space-2);margin-bottom:var(--space-3);display:grid}.course-cat{padding:var(--space-3);background:var(--inset-warm);border-left:4px solid var(--accent);border-radius:var(--radius-sm);font-size:var(--text-xs);line-height:var(--lh-base)}.course-cat strong{color:var(--accent);margin-bottom:4px;display:block}.callout,.service-card{border-radius:var(--radius);padding:var(--space-3) var(--space-4);border-left:5px solid var(--accent);background:var(--accent-tint);margin-bottom:var(--space-3);box-shadow:none}.callout.ok{border-left-color:var(--ok);background:var(--ok-tint)}.callout.warn{border-left-color:var(--warn);background:var(--warn-tint)}.service-card h3{font-size:var(--text-md);margin-bottom:var(--space-2);border:none;padding:0}ul,ol{margin:0 0 var(--space-3) 1.2rem;padding:0}.achievement-list,.service-list,.depth-list,.question-list,.education-list{margin-left:1.5rem;list-style:outside}.achievement-list li,.service-list li,.depth-list li,.question-list li,.education-list li{font-size:var(--text-xs);line-height:var(--lh-relaxed);margin-bottom:var(--space-2)}.skills-translation-section{margin-bottom:var(--space-5);padding:var(--space-4);background:var(--inset-warm);border-radius:var(--radius)}.translation-grid{gap:var(--space-4);display:grid}.translation-row{gap:var(--space-3);padding:var(--space-3);background:var(--surface);border-radius:var(--radius-sm);border:var(--border);grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.arrow{color:var(--accent);font-size:1.5rem;font-weight:var(--fw-semibold)}@media (max-width:768px){.translation-row{text-align:center;grid-template-columns:1fr}.translation-row .arrow{transform:rotate(90deg)}}.from-skill,.to-skill{padding:var(--space-2)}.from-skill h4,.to-skill h4{font-size:var(--text-xs);margin-bottom:var(--space-1)}.from-skill{background:var(--inset-cool);border-radius:var(--radius-sm)}.to-skill{background:var(--accent-subtle);border-radius:var(--radius-sm)}.from-skill p,.to-skill p{font-size:var(--text-2xs);color:var(--muted);line-height:var(--lh-base)}.professional-development-section{margin-bottom:var(--space-5)}.dev-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.dev-item{padding:var(--space-3);border:var(--border);border-radius:var(--radius-sm);background:var(--surface)}.dev-item h4{font-size:var(--text-xs);margin-bottom:var(--space-2)}.year{font-size:var(--text-2xs);color:var(--accent);font-weight:var(--fw-semibold);margin-bottom:var(--space-2)}.dev-item p{font-size:var(--text-2xs);line-height:var(--lh-base);color:var(--muted)}.publication h3{font-size:var(--text-lg);margin-bottom:var(--space-2);border:none;padding:0}.authors{font-size:var(--text-xs);color:var(--muted);margin-bottom:4px}.publication-venue{font-size:var(--text-2xs);color:var(--muted);margin-bottom:4px}.doi{font-family:var(--mono);font-size:var(--text-2xs);color:var(--accent);margin-bottom:var(--space-2)}.publication-details{margin:var(--space-2) 0;padding:var(--space-3);background:var(--inset-warm);border-left:4px solid var(--accent);border-radius:var(--radius-sm)}.publication-details p{font-size:var(--text-2xs);line-height:var(--lh-base);margin-bottom:var(--space-1)}.publication-summary{font-size:var(--text-xs);line-height:var(--lh-relaxed);color:var(--muted)}.dissertation-title{font-style:italic;font-size:var(--text-md);margin-bottom:var(--space-2)}.field{font-size:var(--text-2xs);color:var(--muted)}.dissertation-link{font-size:var(--text-xs);font-weight:var(--fw-semibold);display:inline-block}.coming-soon{font-size:var(--text-2xs);color:var(--muted);margin-top:4px;font-style:italic}.theoretical-foundation{margin-bottom:var(--space-5);padding:var(--space-4);background:var(--inset-warm);border-radius:var(--radius)}.theory-collaboration,.topics-explored,.theory-practice-connection{margin-bottom:var(--space-4)}.topic-area{margin-bottom:var(--space-3);padding:var(--space-3);background:var(--surface);border-radius:var(--radius-sm);border:var(--border)}.topic-area h4{font-size:var(--text-xs);margin-bottom:var(--space-2);color:var(--accent)}.topic-area ul{margin-left:1.5rem}.topic-area li{font-size:var(--text-2xs);line-height:var(--lh-base)}.education-section,.continuing-education{margin-bottom:var(--space-5)}.degree{margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:var(--border)}.degree:last-child{border-bottom:none}.degree h3{font-size:var(--text-md);margin-bottom:var(--space-2);border:none;padding:0}.advisor{font-size:var(--text-2xs);color:var(--muted)}.project-header-detail{margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:var(--border)}.project-subtitle{font-size:var(--text-lg);font-weight:var(--fw-normal);color:var(--muted);margin-bottom:var(--space-2)}.project-meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.external-link{font-size:var(--text-xs);font-weight:var(--fw-semibold)}.external-link:after{content:" ↗"}.project-overview,.project-architecture,.project-significance,.project-technical-depth,.project-context,.project-questions,.project-theoretical-foundation{margin-bottom:var(--space-5)}.architecture-section{margin-bottom:var(--space-4)}.architecture-section h3{font-size:var(--text-lg);margin-bottom:var(--space-2);border:none;padding:0}.architecture-section ul{margin-left:1.5rem}.architecture-section li{font-size:var(--text-xs);line-height:var(--lh-relaxed);margin-bottom:var(--space-2)}.significance-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.significance-point{padding:var(--space-3);border:var(--border);border-radius:var(--radius-sm);background:var(--surface)}.significance-point h3{font-size:var(--text-md);margin-bottom:var(--space-2);color:var(--accent);border:none;padding:0}.significance-point p{font-size:var(--text-xs);line-height:var(--lh-relaxed);color:var(--muted)}.theory-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.theory-area{padding:var(--space-3);background:var(--inset-warm);border-radius:var(--radius-sm)}.theory-area h3{font-size:var(--text-xs);margin-bottom:var(--space-2);color:var(--accent);border:none;padding:0}.theory-area p{font-size:var(--text-2xs);line-height:var(--lh-base);color:var(--muted)}.project-links-footer{margin-top:var(--space-5);padding-top:var(--space-4);border-top:var(--border);text-align:center}.project-links-footer h2{font-size:var(--text-lg);margin-bottom:var(--space-2);border:none;padding:0}.project-links-footer p{max-width:60ch;margin:0 auto var(--space-4);color:var(--muted);font-size:var(--text-xs)}.project-cta-actions{justify-content:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.primary-link{align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--on-accent);background:var(--accent);padding:var(--space-3) var(--space-4);border:none;border-radius:999px;min-height:44px;text-decoration:none;transition:background .2s,transform .1s;display:inline-flex}.primary-link:hover{background:var(--accent-dark);transform:translateY(-1px)}.primary-link:active{transform:translateY(0)}.section-links{gap:var(--space-2);margin-top:var(--space-5);padding-top:var(--space-4);border-top:var(--border);flex-wrap:wrap;display:flex}.section-link,.section-link-btn{align-items:center;gap:var(--space-2);font-size:var(--text-xs);padding:var(--space-2) var(--space-3);border:1px solid var(--ring);background:var(--surface-pill);color:var(--ink);box-shadow:var(--shadow-hard);border-radius:999px;min-height:44px;transition:transform 60ms,box-shadow .12s,background .12s;display:inline-flex}.section-link:hover,.section-link-btn:hover{background:var(--surface-hover);box-shadow:var(--shadow);border-bottom:1px solid var(--ring)}.section-link:active,.section-link-btn:active{transform:translateY(1px)}code,pre{font-family:var(--mono);font-size:.95em}pre{margin:var(--space-3) 0;padding:var(--space-3);border-radius:var(--radius-sm);border:var(--border);background:var(--code-bg);overflow:auto}table{border-collapse:collapse;width:100%;margin:var(--space-3) 0;font-variant-numeric:tabular-nums}th,td{border-bottom:var(--border);vertical-align:top;padding:.6rem .5rem}th{text-align:left;color:var(--heading);background:var(--inset-warm)}.button{border:1px solid var(--ring);background:var(--surface-pill);max-width:100%;color:var(--ink);box-shadow:var(--shadow-hard);cursor:pointer;border-radius:999px;align-items:center;gap:.55rem;padding:.6rem .9rem;transition:transform 60ms,box-shadow .12s,background .12s;display:inline-flex}.button:hover{background:var(--surface-hover);box-shadow:var(--shadow)}.button:active{transform:translateY(1px)}.tech-section{margin-bottom:var(--space-5)}.section-intro{font-size:var(--text-xs);color:var(--muted);margin-bottom:var(--space-4)}.container--wide .section-intro{max-width:var(--measure)}.tech-project-card h3{font-size:var(--text-lg);margin-bottom:var(--space-2);border:none;padding:0}.status-badge,.tech-badge{font-size:var(--text-3xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-label);border-radius:999px;padding:4px 10px}.status-badge{background:var(--ok-bg);color:var(--ok)}.tech-badge{background:var(--inset-cool);color:var(--muted);border:var(--border)}.project-desc{font-size:var(--text-xs);line-height:var(--lh-relaxed);margin-bottom:var(--space-2)}.project-impact{font-size:var(--text-xs);color:var(--ink);margin-top:var(--space-2);font-style:italic}.community-section{margin-bottom:var(--space-5)}.skip-link{background:var(--accent);color:#fff;padding:var(--space-2) var(--space-4);z-index:1000;border-radius:0 0 var(--radius-sm) 0;font-weight:var(--fw-semibold);border:none;text-decoration:none;transition:top .2s;position:absolute;top:-40px;left:0}.skip-link:focus{top:0}.contact-section{padding:var(--space-5) 0}.contact-content{gap:var(--space-4);max-width:60ch;display:grid}.contact-block{padding:var(--space-4);background:var(--surface);border:var(--border);border-radius:var(--radius);transition:box-shadow .2s}.contact-block:hover{box-shadow:var(--shadow)}.contact-block h2{font-size:var(--text-2xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);margin:0 0 var(--space-2);border:none;padding:0}.contact-block p{font-size:var(--text-md);margin:0}.contact-block a{font-weight:var(--fw-medium)}.profile-links{gap:var(--space-2) var(--space-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.profile-links li{margin:0}.profile-links a{font-weight:var(--fw-medium)}.cv-section{padding:var(--space-5) 0}.cv-subtitle{font-size:var(--text-lg);color:var(--muted);margin-bottom:var(--space-4)}.cv-download{padding:var(--space-3);background:var(--inset-warm);border-radius:var(--radius-sm);margin-bottom:var(--space-5);font-size:var(--text-xs)}.cv-download p{margin:0 0 var(--space-1)}.cv-download p:last-child{margin-bottom:0}.cv-content{gap:var(--space-5);flex-direction:column;display:flex}.cv-block{padding-bottom:var(--space-4);border-bottom:var(--border)}.cv-block:last-child{border-bottom:none;padding-bottom:0}.cv-block h2,.cv-entry{margin-bottom:var(--space-4)}.cv-entry:last-child{margin-bottom:0}.cv-entry h3{font-size:var(--text-sm);margin-bottom:var(--space-1);border:none;padding:0}.cv-institution{color:var(--muted);font-size:var(--text-xs);margin-bottom:var(--space-1)}.cv-details{font-size:var(--text-xs);color:var(--muted);margin-bottom:var(--space-1)}.cv-publication{font-size:var(--text-xs);line-height:var(--lh-relaxed)}.cv-more{font-size:var(--text-xs);font-weight:var(--fw-semibold);margin-top:var(--space-3)}.cv-list{margin-left:1.5rem}.cv-list li{font-size:var(--text-xs);line-height:var(--lh-relaxed);margin-bottom:var(--space-2)}.resume-header{padding-bottom:var(--space-4);border-bottom:var(--border);margin-bottom:var(--space-4)}.resume-header h1{margin-bottom:var(--space-1)}.resume-identity{font-size:var(--text-lg);color:var(--heading);font-weight:var(--fw-semibold);margin-bottom:var(--space-1)}.resume-contact{gap:var(--space-1) var(--space-3);font-size:var(--text-xs);color:var(--muted);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.resume-contact li{min-width:0}.resume-contact a{color:var(--accent);overflow-wrap:anywhere}.resume-contact a:hover{color:var(--accent-dark)}.resume-actions{gap:var(--space-2);margin-bottom:var(--space-5);border:0;flex-wrap:wrap;align-items:center;padding:0;display:flex}.resume-actions .button,.resume-actions .cred-copy{font-size:var(--text-2xs);white-space:nowrap}@media (max-width:768px){.resume-actions .button,.resume-actions .cred-copy,.resume-actions .cred-card__download{white-space:normal}}.resume-entry{margin-bottom:var(--space-4)}.resume-entry:last-child{margin-bottom:0}.resume-entry h3{font-size:var(--text-sm);margin-bottom:var(--space-1);overflow-wrap:anywhere}.resume-entry h3 a{color:var(--accent);text-decoration:none}.resume-entry h3 a:hover{color:var(--accent-dark);text-decoration:underline}.resume-entry__role{font-weight:var(--fw-normal);color:var(--muted)}.resume-entry__stack{font-family:var(--mono);font-size:var(--text-2xs);color:var(--muted);margin:0 0 var(--space-2);overflow-wrap:anywhere}.resume-entry ul{margin:0 0 0 var(--space-4);padding:0}.resume-entry li{font-size:var(--text-xs);line-height:var(--lh-relaxed);margin-bottom:var(--space-1)}.resume-entry li:last-child{margin-bottom:0}.resume-note{border:var(--border);border-radius:var(--radius-sm);padding:var(--space-3);background:var(--surface)}.resume-note p{font-size:var(--text-xs);line-height:var(--lh-relaxed);margin:0}.colophon-page{padding:var(--space-4) 0 var(--space-5)}.colophon-lead{font-size:var(--text-md);line-height:var(--lh-relaxed);max-width:68ch;margin-bottom:var(--space-5)}.colophon-block{margin-block:var(--space-5)}.pipeline{margin:var(--space-3) 0 var(--space-4)}.pipeline-lane{align-items:baseline;gap:var(--space-2) var(--space-3);padding:var(--space-3) 0;flex-wrap:wrap;display:flex}.pipeline-lane+.pipeline-lane{border-top:1px solid var(--border-faint)}.pipeline-lane__label{font-size:var(--text-3xs);font-weight:var(--fw-strong);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);flex:0 0 9rem}.pipeline-track{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.pipeline-step{padding:var(--space-1) var(--space-3);font-size:var(--text-2xs);background:var(--surface);border:var(--border);border-radius:var(--radius-sm);color:var(--ink);margin:0}.pipeline-step+.pipeline-step:before{content:"→";margin-right:var(--space-2);color:var(--muted)}.pipeline-step--gate{border-color:var(--accent);background:var(--accent-subtle);color:var(--accent-dark);font-weight:var(--fw-semibold)}.pipeline-step--live{border-color:var(--accent-2);background:var(--green-bg);color:var(--ink);font-weight:var(--fw-semibold)}.evidence-grid{gap:var(--space-3);margin:var(--space-3) 0 var(--space-4);grid-template-columns:1fr;padding:0;list-style:none;display:grid}@media (min-width:600px){.evidence-grid{grid-template-columns:repeat(2,1fr)}}.evidence-card{padding:var(--space-3) var(--space-4);background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-hard);margin:0}.evidence-card__label{font-size:var(--text-3xs);font-weight:var(--fw-strong);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);margin-bottom:var(--space-1)}.evidence-card__value{font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--ink);margin:0 0 var(--space-1)}.evidence-card__note{font-size:var(--text-2xs);line-height:var(--lh-base);color:var(--muted);margin:0}.guarantee-list{margin:var(--space-3) 0 var(--space-4);gap:var(--space-2);padding:0;list-style:none;display:grid}.guarantee-list li{font-size:var(--text-xs);line-height:var(--lh-base);color:var(--ink);margin:0;padding-left:1.7rem;position:relative}.guarantee-list li:before{content:"✓";color:var(--ok);font-weight:700;position:absolute;left:0}.portfolio-overview{max-width:var(--measure);margin:var(--space-4) auto var(--space-5);padding:var(--space-4) 0;border-top:var(--border);border-bottom:var(--border)}.portfolio-overview__lead{font-size:var(--text-md);line-height:var(--lh-relaxed);color:var(--ink);margin:0}.portfolio-overview__metric{font-weight:var(--fw-strong);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.portfolio-overview__methods{margin:var(--space-2) 0 0;font-size:var(--text-xs);line-height:var(--lh-base);color:var(--muted)}.portfolio-overview__methods-label{margin-right:var(--space-2);font-size:var(--text-3xs);font-weight:var(--fw-strong);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted)}.dswork{max-width:var(--measure)}.dswork__group{margin-block:var(--space-5)}.dswork__group-title{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.dswork__count{font-size:var(--text-2xs);font-weight:var(--fw-medium);color:var(--muted);font-variant-numeric:tabular-nums}.ds-list{margin:0;padding:0;list-style:none}.ds-row{padding:var(--space-3) 0;border-bottom:1px solid var(--border-faint)}.ds-row:last-child{border-bottom:none}.ds-row__head{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.ds-row__title{font-size:var(--text-md);font-weight:var(--fw-semibold);color:var(--accent);padding:var(--space-1) 0}.ds-row__title--static{color:var(--ink)}.ds-row__thesis{min-width:0;font-size:var(--text-xs);line-height:var(--lh-base);color:var(--ink);flex:32ch}.ds-row__live{font-size:var(--text-2xs);font-weight:var(--fw-semibold);white-space:nowrap;padding:var(--space-1) 0}.ds-row__live:after{content:" ↗"}.ds-row__meta{align-items:baseline;gap:var(--space-1) var(--space-2);margin-top:var(--space-1);font-size:var(--text-2xs);line-height:var(--lh-base);color:var(--muted);flex-wrap:wrap;display:flex}.ds-row__facet+.ds-row__facet:before{content:"·";margin-right:var(--space-2);color:var(--muted)}.ds-row__facet--tech{font-family:var(--mono);font-size:var(--text-3xs)}@media (max-width:768px){.portfolio-overview{margin-top:var(--space-3)}}@media (max-width:480px){.ds-row__head{flex-direction:column;gap:2px}.ds-row__live{order:3}}.project-design-structure{margin-bottom:var(--space-5)}.decision-list{margin:var(--space-3) 0 var(--space-4);gap:var(--space-3);padding:0;list-style:none;display:grid}.decision{padding-left:var(--space-4);border-left:2px solid var(--border-hairline)}.decision__title{font-size:var(--text-sm);font-weight:var(--fw-strong);color:var(--ink);margin:0 0 var(--space-1)}.decision__summary{font-size:var(--text-xs);line-height:var(--lh-base);color:var(--muted);margin:0}.decision__source{margin-top:var(--space-1);font-family:var(--mono);font-size:var(--text-2xs);color:var(--muted);display:inline-block}.activity-rail{margin:var(--space-3) 0 var(--space-2)}.activity-rail__plot{height:64px;padding-bottom:var(--space-2);border-bottom:1px solid var(--border-hairline);grid-auto-columns:1fr;grid-auto-flow:column;align-items:end;gap:2px;display:grid}.activity-bar{background:var(--accent-light);border-radius:2px 2px 0 0;min-height:3px}.activity-bar--l1{height:20%}.activity-bar--l2{height:40%}.activity-bar--l3{height:60%}.activity-bar--l4{height:80%}.activity-bar--l5{height:100%}.activity-bar--release{background:var(--accent-2)}.activity-rail__axis{margin-top:var(--space-1);font-family:var(--mono);font-size:var(--text-3xs);color:var(--muted);justify-content:space-between;display:flex}.activity-rail__legend{gap:var(--space-1) var(--space-3);margin-top:var(--space-2);font-size:var(--text-2xs);color:var(--muted);flex-wrap:wrap;display:flex}.activity-rail__legend span{align-items:center;gap:var(--space-1);display:inline-flex}.activity-rail__swatch{border-radius:2px;flex:none;width:.7rem;height:.7rem}.activity-rail__swatch--commit{background:var(--accent-light)}.activity-rail__swatch--release{background:var(--accent-2)}.project-provenance{font-size:var(--text-2xs);line-height:var(--lh-base);color:var(--muted);margin-top:var(--space-3)}.site-footer{padding:var(--space-4) 0;border-top:var(--border);text-align:center;margin-top:auto}.site-footer p{font-size:var(--text-2xs);color:var(--muted);margin:0}.site-footer a{color:var(--accent)}.site-footer .footer-cta{max-width:60ch;margin:0 auto var(--space-3);font-size:var(--text-xs);color:var(--ink)}.footer-links{justify-content:center;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.footer-links a{color:var(--accent);border-bottom:1px solid #0000;text-decoration:none;transition:border-color .2s}.footer-links a:hover{border-bottom-color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:10px}.constrain{max-width:var(--measure)}.rule-of-thumb{font-weight:var(--fw-strong);background:linear-gradient(180deg, transparent 55%, var(--rule-highlight) 55%, var(--rule-highlight) 95%, transparent 95%);border-radius:.25em;padding:0 .12em}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}a:any-link,.nav-toggle__bar,.hero-link,.card,.project-card,.position-card,.publication,.tech-project-card,.service-card,.approach-card,.bento-card,.cred-copy,.back-to-top,.section-link,.section-link-btn,.button,.contact-block,.footer-links a,.primary-link{transition:none}}@media print{@page{size:letter;margin:.65in .7in}.site-nav,.back-nav,.site-footer,.hero-links,.project-links,.project-links-footer,.section-links,.resume-actions,.skip-link{display:none}body{font-size:11pt;line-height:var(--lh-snug);background:var(--paper)}a:any-link{color:var(--ink-print);text-decoration:underline}.project-card,.position-card,.publication{border:1px solid var(--ink-print);page-break-inside:avoid;box-shadow:none}.cv-section{padding:0}.resume-header{border-bottom:1px solid var(--ink-print)}.resume-entry h3 a{color:var(--ink-print);text-decoration:none}.resume-contact,.resume-entry__stack,.resume-entry__role,.cv-details,.cv-institution{color:var(--ink-print)}.resume-entry,.cv-entry,.resume-note{page-break-inside:avoid;break-inside:avoid}.cv-block h2{page-break-after:avoid;break-after:avoid}.resume-note{border:1px solid var(--ink-print);background:var(--paper);box-shadow:none}}
