@import"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Space+Grotesk:wght@400;500;700&display=swap";:root{color-scheme:dark;--page-background: radial-gradient(circle at 18% 16%, rgba(120, 221, 255, .12), transparent 24%), radial-gradient(circle at 82% 10%, rgba(255, 212, 126, .08), transparent 20%), linear-gradient(180deg, #050608 0%, #0a0d12 38%, #06080b 100%);--grid-pattern: linear-gradient(rgba(255, 255, 255, .024) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .024) 1px, transparent 1px);--grid-opacity: .45;--surface: rgba(11, 15, 20, .72);--surface-strong: rgba(15, 19, 26, .94);--surface-hover: rgba(255, 255, 255, .065);--surface-soft: rgba(255, 255, 255, .035);--surface-soft-strong: rgba(255, 255, 255, .08);--line: rgba(255, 255, 255, .09);--line-strong: rgba(255, 255, 255, .16);--text: #f4f7fb;--muted: #95a0b1;--muted-strong: #c3cbd6;--accent: #78ddff;--accent-soft: rgba(120, 221, 255, .16);--hero-stroke: rgba(244, 247, 251, .86);--hero-note: rgba(244, 247, 251, .82);--selection: rgba(120, 221, 255, .26);--panel-shadow: 0 30px 80px rgba(0, 0, 0, .28);--soft-shadow: 0 22px 50px rgba(0, 0, 0, .18);--nav-surface: rgba(7, 10, 14, .72);--nav-hover: rgba(255, 255, 255, .065);--identity-surface: linear-gradient(180deg, #f8fafc 0%, #eef3f8 100%);--identity-text: #0b1017;--identity-strong: rgba(11, 16, 23, .9);--identity-muted: rgba(11, 16, 23, .6);--identity-summary: #334155;--identity-portrait-bg: radial-gradient(circle at 22% 18%, rgba(120, 221, 255, .2), transparent 24%), linear-gradient(145deg, #dce5ef 0%, #f6f8fb 48%, #d7e0ea 100%);--identity-portrait-border: rgba(11, 16, 23, .08);--identity-caption-bg: rgba(248, 250, 252, .72);--contact-pill-bg: #0b1017;--contact-pill-hover: #111827;--contact-pill-text: #f8fafc;--button-primary-bg: var(--text);--button-primary-hover: #ffffff;--button-primary-border: rgba(255, 255, 255, .3);--button-primary-text: #091018;--button-secondary-bg: rgba(255, 255, 255, .03);--button-secondary-hover: rgba(255, 255, 255, .07);--chip-bg: rgba(255, 255, 255, .035);--chip-text: var(--muted-strong);--project-logo-border: rgba(15, 23, 42, .08);--project-logo-surface: linear-gradient(180deg, #ffffff 0%, #f4f7fb 100%);--project-logo-image-bg: #ffffff;--project-logo-text: #0f172a;--project-logo-shadow: 0 16px 30px rgba(0, 0, 0, .12), inset 0 0 0 1px rgba(255, 255, 255, .8);--project-link-bg: rgba(255, 255, 255, .028);--project-link-hover: rgba(255, 255, 255, .08);--tile-surface: linear-gradient(180deg, #ffffff 0%, #f2f5f8 100%);--tile-text: #0f172a;--tile-muted: #64748b;--tile-description: #475569;--tile-shadow: 0 22px 50px rgba(0, 0, 0, .18);--tile-icon-ring: rgba(255, 255, 255, .82);--toggle-surface: rgba(7, 10, 14, .72);--toggle-border: rgba(255, 255, 255, .09);--toggle-text: #ffd47e;--toggle-hover: rgba(255, 255, 255, .09);--toggle-shadow: 0 18px 40px rgba(0, 0, 0, .24);--radius-xl: 34px;--radius-lg: 28px;--radius-md: 20px}:root[data-theme=light]{color-scheme:light;--page-background: radial-gradient(circle at 14% 16%, rgba(120, 221, 255, .16), transparent 23%), radial-gradient(circle at 84% 12%, rgba(255, 191, 118, .16), transparent 22%), linear-gradient(180deg, #fcfaf7 0%, #f4f0ea 42%, #ece7df 100%);--grid-pattern: linear-gradient(rgba(15, 23, 42, .04) 1px, transparent 1px), linear-gradient(90deg, rgba(15, 23, 42, .04) 1px, transparent 1px);--grid-opacity: .38;--surface: rgba(255, 255, 255, .72);--surface-strong: rgba(255, 255, 255, .92);--surface-hover: rgba(15, 23, 42, .06);--surface-soft: rgba(15, 23, 42, .05);--surface-soft-strong: rgba(15, 23, 42, .09);--line: rgba(15, 23, 42, .1);--line-strong: rgba(15, 23, 42, .18);--text: #151b24;--muted: #687585;--muted-strong: #334155;--accent: #1f88aa;--accent-soft: rgba(31, 136, 170, .16);--hero-stroke: rgba(21, 27, 36, .35);--hero-note: rgba(21, 27, 36, .76);--selection: rgba(31, 136, 170, .2);--panel-shadow: 0 24px 70px rgba(20, 28, 40, .12);--soft-shadow: 0 18px 45px rgba(20, 28, 40, .14);--nav-surface: rgba(255, 255, 255, .82);--nav-hover: rgba(15, 23, 42, .07);--identity-surface: linear-gradient(180deg, #111822 0%, #1b2533 100%);--identity-text: #f7fbff;--identity-strong: rgba(247, 251, 255, .92);--identity-muted: rgba(232, 239, 247, .68);--identity-summary: #c8d4df;--identity-portrait-bg: radial-gradient(circle at 22% 18%, rgba(120, 221, 255, .16), transparent 24%), linear-gradient(145deg, #213245 0%, #101923 48%, #1b2734 100%);--identity-portrait-border: rgba(255, 255, 255, .08);--identity-caption-bg: rgba(15, 23, 42, .64);--contact-pill-bg: #f8fafc;--contact-pill-hover: #e6edf5;--contact-pill-text: #0b1017;--button-primary-bg: #111822;--button-primary-hover: #182231;--button-primary-border: rgba(15, 23, 42, .12);--button-primary-text: #f8fafc;--button-secondary-bg: rgba(15, 23, 42, .045);--button-secondary-hover: rgba(15, 23, 42, .09);--chip-bg: rgba(15, 23, 42, .05);--chip-text: #334155;--project-logo-border: rgba(255, 255, 255, .08);--project-logo-surface: #17212D;--project-logo-image-bg: transparent;--project-logo-text: #f8fafc;--project-logo-shadow: 0 14px 28px rgba(20, 28, 40, .12), inset 0 0 0 1px rgba(255, 255, 255, .05);--project-link-bg: rgba(15, 23, 42, .045);--project-link-hover: rgba(15, 23, 42, .085);--tile-surface: linear-gradient(180deg, #121a24 0%, #1b2532 100%);--tile-text: #f4f8fb;--tile-muted: #9fb1c4;--tile-description: #cad5e0;--tile-shadow: 0 18px 44px rgba(20, 28, 40, .14);--tile-icon-ring: rgba(255, 255, 255, .06);--toggle-surface: rgba(255, 255, 255, .84);--toggle-border: rgba(15, 23, 42, .08);--toggle-text: #111822;--toggle-hover: rgba(15, 23, 42, .06);--toggle-shadow: 0 14px 30px rgba(20, 28, 40, .12)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2.75rem}body{margin:0;min-height:100vh;background:var(--page-background);color:var(--text);font-family:Space Grotesk,sans-serif;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:var(--grid-pattern);background-size:80px 80px;-webkit-mask-image:radial-gradient(circle at center,black 52%,transparent 96%);mask-image:radial-gradient(circle at center,black 52%,transparent 96%);opacity:var(--grid-opacity)}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}::selection{background:var(--selection);color:var(--text)}#root{min-height:100vh}::view-transition-old(root),::view-transition-new(root){animation-duration:.42s;animation-timing-function:cubic-bezier(.22,1,.36,1)}.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}.page-shell{position:relative;padding:1.35rem}.topbar{position:sticky;top:1rem;z-index:40;margin:0 auto 1.5rem;max-width:1480px}.topbar-inner{display:flex;justify-content:center;align-items:center;min-height:3.7rem;padding-left:clamp(1.25rem,5vw,5.5rem)}.topbar-actions{display:inline-flex;align-items:center;gap:.55rem;max-width:100%}.nav{display:inline-flex;flex:0 1 auto;gap:.35rem;padding:.4rem;border:1px solid var(--line);border-radius:999px;background:var(--nav-surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--panel-shadow);overflow-x:auto;max-width:100%}.nav-link{display:inline-flex;align-items:center;justify-content:center;width:2.9rem;height:2.9rem;border-radius:50%;color:var(--muted);font-size:.95rem;white-space:nowrap;transition:transform .18s ease,background-color .18s ease,color .18s ease}.nav-link:hover,.nav-link:focus-visible{background:var(--nav-hover);color:var(--text);transform:translateY(-1px);outline:none}.theme-toggle{display:inline-flex;place-items:center;justify-content:center;width:3.7rem;height:3.7rem;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--nav-surface);color:var(--muted-strong);box-shadow:var(--panel-shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);cursor:pointer;transition:transform .26s cubic-bezier(.22,1,.36,1),background-color .32s cubic-bezier(.22,1,.36,1),border-color .32s cubic-bezier(.22,1,.36,1),color .32s cubic-bezier(.22,1,.36,1),box-shadow .32s cubic-bezier(.22,1,.36,1)}.theme-toggle:hover,.theme-toggle:focus-visible{transform:translateY(-1px);background:var(--nav-hover);color:var(--text);outline:none}.theme-toggle-glyph{display:inline-grid;place-items:center}.theme-toggle-icon{font-size:1.08rem;stroke-width:1.9}.layout{display:grid;grid-template-columns:minmax(16rem,20rem) minmax(0,1fr);gap:clamp(1.25rem,4vw,3rem);max-width:1480px;margin:0 auto;padding-left:clamp(1.25rem,5vw,5.5rem)}.sidebar{position:relative}.sidebar-inner{position:sticky;top:6.4rem}.identity-card{display:grid;gap:1rem;padding:1rem;border-radius:var(--radius-xl);background:var(--identity-surface);color:var(--identity-text);box-shadow:var(--panel-shadow)}.identity-media{display:grid}.identity-portrait{position:relative;overflow:hidden;aspect-ratio:1 / 1;min-height:0;border-radius:2.5rem;background:var(--identity-portrait-bg);border:1px solid var(--identity-portrait-border)}.identity-portrait-live{background:transparent;border:0;border-radius:48%}.identity-photo{display:block;width:100%;height:100%;border-radius:48%;object-fit:cover}.portrait-rings{position:absolute;inset:1.4rem;border-radius:50%;border:1px solid var(--identity-portrait-border);transform:scale(1.08)}.portrait-rings:before,.portrait-rings:after{content:"";position:absolute;inset:11%;border-radius:50%;border:1px solid var(--identity-portrait-border)}.portrait-rings:after{inset:24%}.portrait-monogram{position:absolute;inset:auto 1.5rem 2rem;font-size:clamp(3.2rem,14vw,6.3rem);font-weight:700;letter-spacing:-.08em;color:var(--identity-strong);line-height:.9}.portrait-caption{position:absolute;top:1.3rem;right:1.3rem;padding:.45rem .75rem;border-radius:999px;background:var(--identity-caption-bg);border:1px solid var(--identity-portrait-border);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase}.identity-copy{display:grid;gap:.45rem}.identity-label{margin:0;color:var(--identity-muted);font-size:.88rem;letter-spacing:.18em;text-transform:uppercase}.identity-name{margin:0;font-size:clamp(1.55rem,3vw,2.1rem);line-height:.98;letter-spacing:-.06em}.identity-summary{margin:0;color:var(--identity-summary);font-size:.92rem;line-height:1.65}.contact-row{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.contact-link{display:grid;place-items:center;width:3rem;height:3rem;border-radius:50%;background:var(--contact-pill-bg);color:var(--contact-pill-text);font-size:1rem;transition:transform .18s ease,background-color .18s ease,color .18s ease}.contact-link:hover,.contact-link:focus-visible{transform:translateY(-2px);background:var(--contact-pill-hover);color:var(--accent);outline:none}.content{min-width:0;padding-left:clamp(1rem,4vw,3.5rem)}.section{position:relative;padding:clamp(2.3rem,6vw,4.6rem) 0;scroll-margin-top:3rem;border-top:1px solid var(--line)}.hero.section{border-top:0;padding-top:clamp(1rem,4vw,2.2rem)}.hero-content{position:relative}.hero-eyebrow,.section-eyebrow{margin:0 0 1rem;color:var(--accent);font-size:.86rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase}.hero-display{display:grid;margin-bottom:1.1rem}.hero-display-line{display:block;font-size:clamp(4.1rem,13vw,9rem);line-height:.88;letter-spacing:-.1em;font-weight:700}.hero-display-line-accent{color:transparent;-webkit-text-stroke:1px var(--hero-stroke)}.hero-blurb{max-width:44rem;margin:0;color:var(--muted-strong);font-size:clamp(1.1rem,2vw,1.35rem);line-height:1.72}.hero-note{margin:1.25rem 0 0;color:var(--hero-note);font-family:"Instrument Serif",serif;font-size:clamp(1.4rem,2.5vw,2rem);font-style:italic}.hero-actions,.contact-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2rem}.button{display:inline-flex;align-items:center;gap:.65rem;padding:.95rem 1.25rem;border:1px solid var(--line);border-radius:999px;transition:transform .18s ease,border-color .18s ease,background-color .18s ease,color .18s ease}.button:hover,.button:focus-visible{transform:translateY(-2px);outline:none}.button-primary{background:var(--button-primary-bg);border-color:var(--button-primary-border);color:var(--button-primary-text);font-weight:700}.button-primary:hover,.button-primary:focus-visible{background:var(--button-primary-hover)}.button-secondary{background:var(--button-secondary-bg);color:var(--text)}.button-secondary:hover,.button-secondary:focus-visible{background:var(--button-secondary-hover);border-color:var(--line-strong)}.hero-chip-row{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem}.hero-chip,.tag{display:inline-flex;align-items:center;padding:.5rem .82rem;border-radius:999px;border:1px solid var(--line);background:var(--chip-bg);color:var(--chip-text);font-size:.88rem}.section-head{max-width:48rem;margin-bottom:2rem}.section-title{margin:0;font-size:clamp(2.1rem,5vw,3.8rem);line-height:1;letter-spacing:-.07em}.section-description{max-width:42rem;margin:1rem 0 0;color:var(--muted);font-size:1.02rem;line-height:1.8}.projects-list{display:grid}.project-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem 1.4rem;padding:1.45rem 0;border-top:1px solid var(--line)}.project-rail{display:grid;gap:.75rem;justify-items:start}.project-index{padding-top:.2rem;color:var(--muted);font-size:.86rem;font-weight:700;letter-spacing:.16em}.project-logo-placeholder{position:relative;overflow:hidden;display:grid;place-items:center;width:4.2rem;height:4.2rem;border-radius:1.35rem;border:1px solid var(--project-logo-border);background:var(--project-logo-surface);color:var(--project-logo-text);box-shadow:var(--project-logo-shadow)}.project-logo-image{width:100%;height:100%;object-fit:contain;padding:.65rem;background:var(--project-logo-image-bg)}.project-logo-placeholder span{font-size:.96rem;font-weight:700;letter-spacing:.12em}.project-main{display:grid;gap:.85rem;min-width:0}.project-title-row{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.project-title{margin:0;font-size:clamp(1.45rem,2.8vw,2.15rem);line-height:1;letter-spacing:-.05em}.project-period{margin:.35rem 0 0;color:var(--muted);font-size:.95rem}.project-summary{max-width:44rem;margin:0;color:var(--muted-strong);line-height:1.8}.tag-list{display:flex;flex-wrap:wrap;gap:.55rem}.project-links{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:flex-end;gap:.7rem}.project-link{display:inline-flex;align-items:center;justify-content:center;width:2.9rem;height:2.9rem;padding:0;border-radius:999px;border:1px solid var(--line);color:var(--muted-strong);background:var(--project-link-bg);transition:transform .18s ease,border-color .18s ease,background-color .18s ease,color .18s ease}.project-link svg{font-size:1rem}.project-link:hover,.project-link:focus-visible{background:var(--project-link-hover);border-color:var(--line-strong);color:var(--text);transform:translateY(-2px);outline:none}.extra-projects{overflow:hidden}.expand-button{display:inline-flex;align-items:center;gap:.75rem;margin-top:1.5rem;padding:.85rem 1.15rem;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);color:var(--text);cursor:pointer;transition:transform .18s ease,background-color .18s ease,border-color .18s ease}.expand-button:hover,.expand-button:focus-visible{transform:translateY(-2px);background:var(--surface-soft-strong);border-color:var(--line-strong);outline:none}.expand-dots{display:inline-block;min-width:2ch;color:var(--accent);font-weight:700}.known-for-list{display:grid}.known-for-row{display:grid;grid-template-columns:minmax(16rem,24rem) minmax(0,1fr);gap:1.25rem 2rem;padding:1.25rem 0;border-top:1px solid var(--line)}.known-for-title-block{display:grid;gap:.75rem}.known-for-count{color:var(--muted);font-size:.82rem;font-weight:700;letter-spacing:.18em}.known-for-title{margin:0;font-size:clamp(1.65rem,3vw,2.55rem);line-height:.98;letter-spacing:-.05em}.known-for-description{max-width:46rem;margin:0;color:var(--muted-strong);line-height:1.84}.badge-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;align-items:stretch;grid-auto-rows:1fr}.stack-tile{display:grid;grid-template-rows:auto 5.25rem minmax(3.3rem,auto) 1fr;gap:1rem;height:100%;min-height:18rem;padding:1.3rem;border-radius:var(--radius-lg);background:var(--tile-surface);color:var(--tile-text);box-shadow:var(--tile-shadow)}.tile-category{color:var(--tile-muted);font-size:.76rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.tile-icon-shell{display:grid;place-items:center;width:4.5rem;height:4.5rem;border-radius:1.4rem;background:var(--tile-tint);color:var(--tile-tone);box-shadow:inset 0 0 0 1px var(--tile-icon-ring)}.tile-icon{font-size:2rem}.tile-copy{display:grid;gap:.6rem;min-height:7.4rem;align-content:start}.tile-name{margin:0;font-size:1.6rem;line-height:1;letter-spacing:-.05em;align-self:end}.tile-description{margin:0;color:var(--tile-description);line-height:1.72}.contact-cta{display:grid;gap:1.2rem;align-items:start}.contact-mail{display:inline-block;max-width:fit-content;font-size:clamp(1.6rem,4vw,2.8rem);line-height:.95;letter-spacing:-.06em}.contact-mail:hover,.contact-mail:focus-visible{color:var(--accent);outline:none}@media(max-width:1180px){.layout{grid-template-columns:1fr}.sidebar-inner{position:static}.identity-card{max-width:28rem}.badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content{padding-left:0}}@media(max-width:820px){.page-shell{padding:1rem}.topbar{margin-bottom:1rem}.topbar-inner{padding-left:0}.topbar-actions{width:100%}.nav{flex:1 1 auto;width:auto;min-width:0}.hero-display-line{font-size:clamp(3.3rem,15vw,6.2rem)}.project-card,.known-for-row{grid-template-columns:1fr}.project-rail{grid-auto-flow:column;justify-content:flex-start;align-items:center}.project-links{justify-content:flex-start}.layout{padding-left:0}}@media(max-width:640px){.identity-portrait{min-height:0}.portrait-monogram{font-size:4rem}.badge-grid{grid-template-columns:1fr}.button,.expand-button{width:100%;justify-content:center}.nav{flex:1 1 auto;justify-content:space-between}.nav-link{width:2.75rem;height:2.75rem}.theme-toggle{width:3.55rem;height:3.55rem}.contact-actions{width:100%}.contact-actions .button{flex:1 1 100%}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
