.fade-in{transition:opacity .5s ease,transform .5s ease,background-color .18s ease,border-color .18s ease}.fade-in-waiting:not(:focus-within){opacity:0;transform:translateY(-1rem)}.fade-in-active:not(:focus-within){animation:fade-in-down .5s ease}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-1rem)}to{opacity:1;transform:translateY(0)}}:root{font-family:Overlock,Georgia,serif;color-scheme:light;color:#172033;background:#f8fafc;font-synthesis:none;text-rendering:optimizeLegibility;--page: #f8fafc;--surface: #ffffff;--surface-raised: #eef2f8;--text: #172033;--muted: #475569;--border: #64748b;--accent: #1d4ed8;--accent-soft: #dbeafe;--focus: #7c3aed;--shadow: 0 1rem 3rem rgb(15 23 42 / .08)}:root[data-theme=dark]{color-scheme:dark;color:#f1f5f9;background:#0c111b;--page: #0c111b;--surface: #141c2a;--surface-raised: #1b2637;--text: #f1f5f9;--muted: #c1ccdc;--border: #8493a8;--accent: #a9c5ff;--accent-soft: #1d2e4d;--focus: #d0a8ff;--shadow: 0 1rem 3rem rgb(0 0 0 / .22)}*{box-sizing:border-box}*,*:before,*:after{transition:background-color .18s ease,border-color .18s ease}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{min-height:100vh;margin:0;background:var(--page);color:var(--text);font-size:1.125rem;line-height:1.65}body,button,a{font-family:Overlock,Georgia,serif}button,a{-webkit-tap-highlight-color:transparent}a{color:var(--accent);text-underline-offset:.2em}a:hover{text-decoration-thickness:.12em}button{color:inherit}button:focus-visible,a:focus-visible{outline:.2rem solid var(--focus);outline-offset:.2rem}img,video{display:block;max-width:100%}.skip-link{position:fixed;z-index:1000;top:.5rem;left:.5rem;padding:.6rem 1rem;transform:translateY(-160%);border-radius:.5rem;background:var(--surface);color:var(--text)}.skip-link:focus{transform:translateY(0)}.site-header{position:sticky;z-index:20;top:0;border-bottom:1px solid var(--border);background:var(--surface)}.header-inner{display:flex;width:min(100% - 2rem,80rem);min-height:5.5rem;align-items:center;gap:.5rem;margin-inline:auto}.brand{display:grid;flex:0 0 auto;color:var(--text);line-height:1.2;text-decoration:none}.brand-name{font-size:1.4rem;font-weight:900}.brand-location{color:var(--muted);font-size:.875rem}.primary-navigation{display:flex;flex:1;align-items:center;justify-content:flex-end;gap:.2rem}.nav-link,.nav-group-toggle{display:inline-flex;min-height:2.75rem;align-items:center;padding:.5rem .7rem;border:0;border-radius:.65rem;background:transparent;color:var(--text);font-size:1rem;font-weight:700;text-decoration:none;white-space:nowrap}.primary-navigation>.nav-link,.nav-group-toggle{padding-inline:.65rem}.nav-link:hover,.nav-group-toggle:hover{background:var(--surface-raised);text-decoration:none}.nav-link.active,.nav-group-toggle.active{background:var(--accent-soft);color:var(--accent);text-decoration:underline;text-decoration-thickness:.12em}.nav-group{position:relative}.nav-group-toggle{gap:.3rem;cursor:pointer}.nav-group-toggle svg{width:1rem;height:1rem}.nav-group-links:not([hidden]){position:absolute;top:calc(100% + .4rem);right:0;display:grid;min-width:12rem;padding:.4rem;border:1px solid var(--border);border-radius:.8rem;background:var(--surface);box-shadow:var(--shadow)}.nav-group-links .nav-link{width:100%}.menu-toggle{display:none}.header-actions{display:flex;flex:0 0 auto;align-items:center;gap:.5rem}.theme-toggle,.menu-toggle,.hub-link{min-height:2.75rem;padding:.5rem .8rem;border:1px solid var(--border);border-radius:.65rem;background:var(--surface);cursor:pointer;font-size:.95rem}.theme-toggle{display:grid;width:2.75rem;flex:0 0 2.75rem;place-items:center;padding:0}.theme-toggle:hover,.menu-toggle:hover,.hub-link:hover{background:var(--surface-raised)}.theme-toggle svg,.menu-toggle svg,.social-links svg{width:1.4rem;height:1.4rem}.page-shell{width:min(100% - 3rem,76rem);min-height:calc(100vh - 12rem);margin:0 auto;padding-block:4.5rem 6rem}.home-page{width:min(100% - 3rem,80rem)}.hero{display:grid;min-height:29rem;grid-template-columns:minmax(0,1.35fr) minmax(16rem,.65fr);align-items:center;gap:4rem;padding:3rem;border:1px solid var(--border);border-radius:2rem;background:var(--surface)}.hero-copy{min-width:0;max-width:42rem}.eyebrow{margin:0 0 .65rem;color:var(--accent);font-size:.9rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.hero h1{margin:0;font-size:4rem;line-height:1.08}.hero h1 span{color:var(--accent)}.hero-location{margin:.6rem 0 0;color:var(--muted)}.hero-lede{max-width:38rem;margin-block:1.5rem;color:var(--muted);font-size:1.35rem}.hero-lede span{color:var(--accent)}.hero-portrait{width:min(100%,20rem);height:auto;justify-self:center;border-radius:1rem}.card-actions,.social-links{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.button{display:inline-flex;min-height:2.9rem;align-items:center;justify-content:center;padding:.6rem 1rem;border:1px solid var(--accent);border-radius:.65rem;font-weight:700;text-decoration:none}.button-primary{background:var(--accent);color:var(--page)}.button-secondary{background:var(--surface);color:var(--accent)}.button-secondary:hover{background:var(--accent-soft)}.hero-carousel{width:min(100%,28rem)}.carousel-window{min-width:0;overflow:hidden}.carousel-track{display:flex;width:max-content;animation:carousel-scroll 20s linear infinite}.hero-carousel:hover .carousel-track,.hero-carousel:focus-within .carousel-track{animation-play-state:paused}.carousel-group{display:flex;flex:0 0 auto;gap:.75rem;padding:.45rem .75rem .45rem .45rem}.carousel-group .button{white-space:nowrap}@keyframes carousel-scroll{to{transform:translate(-50%)}}.page-intro h1{margin:0;font-size:2.6rem;line-height:1.15}.card-number{color:var(--accent);font-size:.9rem;font-weight:700}.page-intro{max-width:52rem;margin-bottom:2.5rem}.page-intro h1{font-size:3.2rem}.projects-page .page-intro h1{color:var(--accent)}.interests-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;justify-content:space-between;column-gap:1.5rem;gap:1.5rem;margin-bottom:1.5rem}.interests-heading h1{margin:0;color:var(--accent);font-size:3.2rem;line-height:1.15}.interests-heading .work-tabs{flex:0 0 auto;grid-column:2;grid-row:1;margin:0}.interests-heading>.page-description{grid-column:1 / -1;grid-row:2;margin:0}.interest-actions{margin-bottom:1rem}.projects-page .page-intro,.experience-page .page-intro{display:grid;max-width:none;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:1.5rem;row-gap:.5rem;margin-bottom:1.5rem}.projects-page .page-intro h1{grid-column:1;grid-row:1}.projects-page .page-intro>.page-description{grid-column:1 / -1;grid-row:2;margin:0}.projects-page .page-intro>.work-tabs{grid-column:2;grid-row:1;margin:0}.experience-page .page-intro h1{grid-column:1;grid-row:1}.experience-page .page-intro>.page-description{grid-column:1 / -1;grid-row:2;margin:0}.page-description,.page-intro>p:not(.eyebrow){max-width:45rem;color:var(--muted);font-size:1.2rem}.page-intro>:last-child{margin-bottom:0}.home-about{margin:2rem auto 0;padding:3rem;border:1px solid var(--border);border-radius:2rem;background:var(--surface)}.home-about h2{margin:0;font-size:2.2rem;line-height:1.2}.home-about>p{color:var(--muted)}.home-about-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem;padding:1.75rem 0;border-top:1px solid var(--border)}.home-about-entry h3,.home-education h3,.home-skills h3{margin:0;font-size:1.45rem}.home-about-entry p,.home-education>p,.home-skills>p{margin-bottom:0;color:var(--muted)}.home-about-entry p,.home-skills>p{max-width:42rem}.home-education,.home-skills{padding:1.75rem 0;border-top:1px solid var(--border)}.technology-list{display:flex;flex-wrap:wrap;gap:.75rem;padding:0;margin:1.25rem 0 0;list-style:none}.technology-list li{display:inline-flex;align-items:center;gap:.65rem;padding:.4rem .75rem .4rem .4rem;border:1px solid var(--border);border-radius:.65rem;background:var(--surface);font-weight:700}.technology-logo{display:grid;width:3rem;height:3rem;flex:0 0 3rem;place-items:center;padding:.4rem;border-radius:.35rem;background:#fff}.technology-logo img{width:100%;height:100%;object-fit:contain}.education-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.25rem}.education-card{display:flex;align-items:center;gap:1rem;min-width:0;padding:1rem;border:1px solid var(--border);border-radius:.8rem}.education-logo{display:grid;width:4.5rem;height:4.5rem;flex:0 0 4.5rem;place-items:center;padding:.35rem;border-radius:.5rem;background:#fff}.education-logo img{width:100%;height:100%;object-fit:contain}.education-card h4{margin:0;font-size:1.1rem;line-height:1.3}.education-card p{margin:.35rem 0 0;color:var(--muted)}.section-tabs{display:flex;overflow-x:auto;gap:.65rem;padding:.25rem 0 1rem;margin-bottom:1.25rem}.section-tabs a,.section-tabs button,.project-navigation-links button,.card-actions a,.chess-card>a,.text-link{display:inline-flex;min-height:2.25rem;align-items:center;padding:.4rem .55rem;border:1px solid var(--border);border-radius:.45rem;background:var(--surface);color:var(--accent);font:inherit;font-size:.9rem;font-weight:700;text-decoration:none;white-space:nowrap}.section-tabs button{cursor:pointer}.section-tabs button:hover,.section-tabs a:hover,.project-navigation-links button:hover,.card-actions a:hover,.chess-card>a:hover,.text-link:hover{background:var(--accent-soft)}.work-tabs a{min-height:2.75rem;padding:.5rem .7rem;border:0;border-radius:.65rem;background:transparent;color:var(--text);font-size:1rem}.work-tabs a:hover{background:var(--surface-raised)}.work-tabs a[aria-current=page]{background:var(--accent-soft);color:var(--accent);text-decoration:underline;text-decoration-thickness:.12em}.work-tabs a:focus-visible,.project-navigation-links button:focus-visible,.section-tabs a:focus-visible{outline:.15rem solid var(--accent);outline-offset:.1rem}.work-tabs{overflow:visible;padding:0;margin-bottom:.75rem}.projects-layout,.experience-layout{display:grid;grid-template-columns:minmax(8rem,11rem) minmax(0,1fr);align-items:start;gap:1.25rem}.project-navigation{position:sticky;top:7rem;min-width:0;align-self:start}.project-navigation h2{margin:0 0 .5rem;color:var(--muted);font-size:.85rem;font-weight:700}.project-navigation-links{display:grid;gap:.35rem;padding:0;margin:.35rem 0 0;list-style:none}.project-navigation-links button{display:inline-flex;width:100%;min-height:2.5rem;gap:.4rem;padding:.5rem .65rem;text-align:left;line-height:1.35;cursor:pointer;white-space:normal}.project-navigation-links button span{flex:0 0 auto;color:var(--accent);font-size:.85rem;font-weight:700}.project-navigation-toggle{display:none}.project-navigation-toggle svg{width:1rem;height:1rem}.portfolio-list,.experience-list{display:grid;gap:1.5rem}.experience-fade{min-width:0}.experience-page .page-intro h1{color:var(--accent)}.content-card{scroll-margin-top:7rem;overflow:clip;border:1px solid var(--border);border-radius:1.25rem;background:var(--surface)}.content-card-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.content-card.has-marker .content-card-header{grid-template-columns:auto minmax(0,1fr) auto}.content-card-marker{color:var(--accent);font-size:.9rem;font-weight:700}.content-card-identity{display:flex;min-width:0;align-items:center;gap:1rem}.content-card-title{min-width:0}.content-card-title h2{margin:0;font-size:1.5rem;line-height:1.25}.content-card-subtitle,.content-card-date{margin-top:.35rem;color:var(--muted)}.content-card-date{margin-top:0;text-align:right;white-space:nowrap}.content-card-logo{width:4rem;height:4rem;flex:0 0 4rem;padding:.3rem;border-radius:.6rem;background:#fff;object-fit:contain}.content-card-subtitle a{font-weight:700}.content-card-body{min-width:0;padding:1.5rem}.content-card-body>:first-child{margin-top:0}.content-card-body>:last-child{margin-bottom:0}.content-card-body ul{padding-left:1.4rem;color:var(--muted)}.content-card-body li+li{margin-top:.5rem}.content-card-body.has-media{display:grid;grid-template-columns:minmax(0,1fr) minmax(15rem,.7fr);gap:1.5rem}.experience-status{color:var(--muted)}.portfolio-copy>:first-child{margin-top:0}.portfolio-copy ul{padding-left:1.4rem;color:var(--muted)}.portfolio-copy li+li{margin-top:.4rem}.portfolio-copy strong,.portfolio-copy h3{color:var(--text)}.portfolio-copy h3{margin-bottom:.5rem}.card-actions{margin-top:1rem}.media-button{position:relative;display:grid;min-height:12rem;align-self:center;overflow:hidden;place-items:center;padding:0;border:1px solid var(--border);border-radius:.8rem;background:var(--surface-raised);cursor:zoom-in}.media-button img,.media-button video{width:100%;max-height:25rem;object-fit:contain}.media-button span{position:absolute;right:.5rem;bottom:.5rem;padding:.2rem .45rem;border-radius:.35rem;background:var(--page);color:var(--text);font-size:.8rem}.lightbox{position:fixed;z-index:100;inset:0;display:grid;width:100%;max-width:none;height:100%;max-height:none;grid-template-rows:minmax(0,1fr) auto;place-items:center;gap:1rem;padding:2rem;border:0;background:#030712eb}.lightbox::backdrop{background:#030712eb}.lightbox-media{width:auto;max-width:min(100%,76rem);max-height:calc(100vh - 8rem);object-fit:contain}.lightbox-close{min-height:2.75rem;padding:.5rem 1rem;border:1px solid #cbd5e1;border-radius:.6rem;background:#fff;color:#172033;cursor:pointer}.photo-grid,.chess-grid,.music-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}.music-grid iframe{display:block;width:100%;height:9.5rem;border:0;border-radius:.75rem}.photo-card,.chess-card{overflow:hidden;margin:0;border:1px solid var(--border);border-radius:1rem;background:var(--surface)}.photo-card img{width:100%;aspect-ratio:4 / 3;object-fit:cover}.photo-card figcaption{padding:.85rem 1rem;font-weight:700}.chess-card{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;padding:1rem}.chess-card h2{margin:0;font-size:1.3rem}.chess-card img{width:100%;aspect-ratio:4 / 3;border-radius:.65rem;background:var(--surface-raised);object-fit:contain}.site-footer{display:grid;justify-items:center;gap:.75rem;padding:2rem 1.5rem 1rem;border-top:1px solid var(--border);background:var(--surface);text-align:center}.site-footer p{margin:0;font-size:1.2rem;font-weight:700}.site-footer small{color:var(--muted);font-size:.9rem}.social-links{justify-content:center}.social-links a{display:grid;width:3rem;min-height:2.75rem;place-items:center;border:1px solid var(--border);border-radius:.75rem;background:var(--surface);color:var(--text)}.social-links a:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}@media(max-width:62rem){.hero{gap:2rem}}@media(max-width:50rem){.projects-layout,.experience-layout{grid-template-columns:minmax(0,1fr);gap:1rem}.project-navigation{position:static}.project-navigation h2{display:block;margin-bottom:.35rem}.project-navigation-toggle{display:flex;width:100%;min-height:2.75rem;align-items:center;justify-content:space-between;padding:.5rem .75rem;border:1px solid var(--border);border-radius:.65rem;background:var(--surface);color:var(--text);font:inherit;font-weight:700;text-align:left;cursor:pointer}.project-navigation-toggle:hover,.project-navigation-toggle[aria-expanded=true]{background:var(--surface-raised)}.project-navigation-links{display:none}.project-navigation-links.is-open{display:grid;gap:.35rem;padding:.4rem;margin-top:.4rem;margin-bottom:.25rem;border:1px solid var(--border);border-radius:.8rem;background:var(--surface);box-shadow:var(--shadow);animation:navigation-dropdown-in .18s ease-out}@keyframes navigation-dropdown-in{0%{opacity:0;transform:translateY(-.35rem)}to{opacity:1;transform:translateY(0)}}.project-navigation-toggle:focus-visible{outline:.15rem solid var(--accent);outline-offset:.15rem}.project-navigation-links button{width:100%}.project-navigation-links li{min-width:0}.project-navigation-toggle svg{transition:transform .16s ease}.project-navigation-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.content-card-header,.content-card.has-marker .content-card-header{grid-template-columns:minmax(0,1fr);gap:.75rem;padding:1rem}.content-card.has-marker .content-card-header{grid-template-columns:auto minmax(0,1fr)}.content-card-date{grid-column:1;text-align:left}.content-card.has-marker .content-card-date{grid-column:2}.content-card-body{padding:1rem}.content-card-body.has-media{grid-template-columns:minmax(0,1fr)}.media-button{grid-row:1}.header-inner{min-height:0;flex-wrap:wrap;justify-content:space-between;gap:.35rem;padding-block:1rem}.menu-toggle{display:inline-flex;width:2.75rem;flex:0 0 2.75rem;align-items:center;justify-content:center;margin-left:auto;padding-inline:.5rem}.primary-navigation{display:none;order:4;flex:0 0 100%;width:100%;align-items:stretch;flex-direction:column;gap:.2rem;padding-top:.25rem}.primary-navigation.is-open{display:flex}.primary-navigation>.nav-link,.nav-group-toggle{width:100%}.nav-group-toggle{justify-content:space-between}.nav-group-links:not([hidden]){position:static;padding-left:.75rem;border:0;box-shadow:none}}@media(max-width:48rem){body{font-size:1rem}.page-shell,.home-page{width:min(100% - 2rem,76rem);padding-block:2.5rem 4rem}.hero{min-height:0;grid-template-columns:1fr;gap:2rem;padding:1.5rem;border-radius:1.25rem}.home-about{padding:1.5rem;border-radius:1.25rem}.hero h1{font-size:3rem}.hero-lede{font-size:1.2rem}.hero-portrait{width:min(65vw,18rem)}.hero-carousel{width:min(100%,28rem);margin-inline:auto}.carousel-window{overflow:hidden}.carousel-track{width:max-content}.carousel-group{justify-content:center;padding:.25rem 1rem}.page-intro h1{font-size:2.3rem}.projects-page .page-intro{grid-template-columns:minmax(0,1fr);row-gap:.5rem}.projects-page .page-intro h1,.projects-page .page-intro>.page-description,.projects-page .page-intro>.work-tabs{grid-column:1}.projects-page .page-intro h1{grid-row:1}.projects-page .page-intro>.page-description{grid-row:2}.projects-page .page-intro>.work-tabs{grid-row:3;margin-top:.25rem}.interests-heading{grid-template-columns:minmax(0,1fr);gap:.5rem}.interests-heading h1{grid-column:1;grid-row:1;font-size:2.3rem}.interests-heading .work-tabs{grid-column:1;grid-row:2;margin:0}.interests-heading>.page-description{grid-column:1;grid-row:3}.home-about-grid{grid-template-columns:1fr;gap:1.75rem}.education-list{grid-template-columns:1fr}}@media(max-width:34rem){.photo-grid,.chess-grid,.music-grid{grid-template-columns:1fr}.page-intro h1{font-size:2rem}.content-card-title h2{font-size:1.3rem}.lightbox{padding:1rem}}
