@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Roboto:ital,wght@0,400;0,500;0,600;0,700;1,500&display=swap";:root{--bg:#18283c;--panel:#e7f2fb;--panel-2:#d5e7f5;--ink:#f3f7fb;--muted:#b9c7d5;--line:#62768b;--accent:#78b4e4;--accent-hover:#9acbef;--panel-ink:#0b1521;--panel-muted:#35495e;--galaxy:#244573;--serif:"Roboto", Arial, sans-serif;--sans:"Roboto", Arial, sans-serif;--mono:"DM Mono", monospace;--max:1240px;--radius:8px;--radius-large:14px;--surface-shadow:0 18px 50px #080b1014}*{box-sizing:border-box}html{scroll-behavior:smooth}.scroll-section,#home{scroll-margin-top:105px}body{background:radial-gradient(circle at 8% 8%, #132f5b0e, transparent 28rem), radial-gradient(circle at 92% 58%, #7aa5cc12, transparent 34rem), var(--bg);color:var(--ink);font-family:var(--sans);margin:0;font-size:16px;line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit}img{max-width:100%;display:block}.site-shell{min-height:100vh;position:relative}.section,.header,.footer,.page-intro{width:min(calc(100% - 64px), var(--max));margin-inline:auto}.header{border-bottom:1px solid var(--line);z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#18283cf2;justify-content:space-between;align-items:center;height:88px;transition:transform .2s;display:flex;position:sticky;top:0}.header-hidden{transform:translateY(-100%)}.brand{text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:13px;font-size:.78rem;display:flex}.brand span,.footer-mark{border:1px solid var(--accent);width:36px;height:36px;color:var(--accent);font:500 .75rem var(--mono);border-radius:var(--radius);place-items:center;display:grid}.nav{align-items:center;gap:48px;display:flex}.nav-links{gap:34px;display:flex}.nav-links a{color:var(--muted);letter-spacing:.06em;font-size:.8rem;position:relative}.nav-links a:hover,.nav-links a.active{color:var(--ink)}.nav-links a.active:after{content:"";background:var(--accent);height:1px;position:absolute;bottom:-15px;left:0;right:0}.socials{gap:10px;display:flex}.socials a{border:1px solid var(--line);border-radius:var(--radius);place-items:center;width:34px;height:34px;display:grid}.socials svg{width:15px}.socials a:hover{border-color:var(--accent);color:var(--accent)}.menu-toggle{color:var(--ink);background:0 0;border:0;display:none}.hero{grid-template-columns:1.18fr .82fr;align-items:center;gap:8vw;min-height:calc(90svh - 88px);padding:72px 0 36px;display:grid}.hero-copy{background:var(--panel);border-radius:var(--radius-large);box-shadow:var(--surface-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--panel-ink);border:1px solid #aeb8c6f2;padding:34px;position:relative;overflow:hidden}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font:500 .68rem var(--mono);color:var(--accent);margin:0 0 20px}.eyebrow span{background:var(--accent);border-radius:50%;width:6px;height:6px;margin-right:8px;display:inline-block}.hero h1,.page-intro h1{letter-spacing:-.065em;margin:0;font-size:clamp(3.6rem,6.5vw,6.6rem);font-weight:500;line-height:.98}.hero h1 em,.page-intro h1 em,.about-teaser h2 em{font-family:var(--serif);color:var(--accent);font-weight:500}.hero-copy h1 em{color:#174a7e;text-shadow:0 8px 30px #4684be2e;display:inline-block;position:relative}.hero-copy h1 em:after{content:"";opacity:.42;background:linear-gradient(90deg,#174a7eb3,#79b2e500);border-radius:999px;height:7px;position:absolute;bottom:-8px;left:4%;right:-2%}.hero-intro{color:var(--panel-muted);max-width:620px;margin:30px 0;font-size:1.1rem}.button-row{gap:12px;display:flex}.button{letter-spacing:.04em;border-radius:var(--radius);border:1px solid #0000;justify-content:center;align-items:center;gap:12px;min-height:49px;padding:0 22px;font-size:.78rem;font-weight:600;transition:all .2s;display:inline-flex}.button svg,.text-link svg,.card-actions svg{width:16px}.button.primary{background:var(--accent);color:#0b1a2a}.button.primary:hover{background:var(--accent-hover);transform:translateY(-2px)}.button.ghost{border-color:var(--line)}.button.ghost:hover,.button.outline:hover{border-color:var(--accent);color:var(--accent)}.button.outline{border-color:var(--line)}.hero-meta{color:var(--muted);font:400 .6rem var(--mono);letter-spacing:.1em;text-transform:uppercase;gap:22px;margin-top:65px;display:flex}.hero-project{aspect-ratio:4/5;border:1px solid var(--line);border-radius:var(--radius-large);width:min(100%,480px);box-shadow:18px 18px 0 var(--panel-2), 0 24px 55px #070b1221;isolation:isolate;margin-left:auto;position:relative;overflow:hidden}.hero-project>img{object-fit:cover;width:100%;height:100%;transition:transform .5s}.hero-project:after{content:"";z-index:0;background:linear-gradient(#0000 0%,#080b1040 30%,#080b10f5 100%);position:absolute;inset:0}.hero-project:hover>img{transform:scale(1.045)translateY(-2px)}.hero-project-overlay{z-index:1;color:#fff;padding:28px;position:absolute;inset:auto 0 0}.hero-project-overlay>span{font:500 .6rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#c4cfdd}.hero-project-overlay h2{margin:8px 0;font-size:clamp(1.8rem,3vw,2.6rem);line-height:1}.hero-project-overlay p{color:#d8e0e9;margin:0;font-size:.86rem;line-height:1.5}.hero-project-footer{justify-content:space-between;align-items:end;gap:16px;margin-top:20px;display:flex}.hero-project-footer div{flex-wrap:wrap;gap:6px;display:flex}.hero-project-footer small{font:400 .52rem var(--mono);border:1px solid #ffffff61;border-radius:999px;padding:4px 7px}.hero-project-footer svg{flex:none}.featured,.skills-section,.projects-page{padding-block:72px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:32px;display:flex}.section-heading h2,.about-teaser h2,.contact-panel h2{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,4vw,3.5rem);font-weight:500;line-height:1.1}.section-heading>p{color:var(--muted);max-width:420px;margin:0}.projects-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.featured-projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card{background:var(--panel);color:var(--panel-ink);border:1px solid var(--line);border-radius:var(--radius);transition:transform .28s cubic-bezier(.2,.7,.2,1),border-color .28s,box-shadow .28s;overflow:hidden;box-shadow:0 10px 30px #080b100f}.project-card .tags,.project-card .card-actions{color:#174a7e}.project-card:hover{border-color:var(--accent);transform:translateY(-7px);box-shadow:0 18px 42px #132f5b24}.project-image{transition:transform .5s cubic-bezier(.2,.7,.2,1),filter .35s}.project-card:hover .project-image{filter:saturate(1.06)contrast(1.02);transform:scale(1.035)}.project-visual{aspect-ratio:1.48;background:var(--panel-2);position:relative;overflow:hidden}.project-visual:after{content:"";pointer-events:none;z-index:1;background:linear-gradient(135deg,#0000 40%,#00000080);position:absolute;inset:0}.project-image{object-fit:cover;width:100%;height:100%}.project-image-controls{z-index:3;pointer-events:none;justify-content:space-between;align-items:center;padding:14px;display:flex;position:absolute;inset:0}.project-image-controls button{color:#fff;cursor:pointer;opacity:0;pointer-events:auto;background:#080b10c2;border:1px solid #ffffff8c;border-radius:50%;place-items:center;width:40px;height:40px;padding:0;transition:opacity .2s,transform .2s,background .2s;display:grid;transform:translate(-8px)}.project-image-controls button:last-child{transform:translate(8px)}.project-visual:hover .project-image-controls button,.project-image-controls button:focus-visible{opacity:1;transform:translate(0)}.project-image-controls button:hover{background:var(--accent)}.project-image-controls svg{width:21px}@media (hover:none){.project-image-controls button{opacity:1;transform:translate(0)}}.project-visual small{z-index:2;font:400 .55rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#fff;background:#080b10d6;padding:5px 8px;position:absolute;top:15px;left:15px}.scene{background-image:linear-gradient(#ffffff17 1px,#0000 1px),linear-gradient(90deg,#ffffff17 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0}.scene i{border:1px solid;position:absolute}.scene i:first-child{width:42%;height:42%;top:30%;left:29%;transform:rotate(45deg)}.scene i:nth-child(2){border-radius:50%;width:22%;height:22%;top:40%;left:39%}.scene i:nth-child(3){width:62%;height:1px;top:51%;left:19%}.scene span{font:300 2rem var(--mono);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.amber{color:#d5deeb;background:#1b355c}.blue{color:#c3d2e8;background:#132f5b}.green{color:#dde3eb;background:#36475e}.violet{color:#bfcbe0;background:#243b60}.coral{color:#e1e6ee;background:#111827}.orange{color:#c7d4e8;background:#294b78}.signal i:first-child{border-radius:50%;box-shadow:0 0 0 25px #132f5b1f}.tools i:first-child{border-radius:5px;transform:rotate(0)}.grid i:first-child{transform:rotate(12deg)}.web i:first-child{width:56%;height:48%;top:26%;left:22%;transform:none}.physics i:first-child{border-radius:50%}.project-card-body{padding:20px}.project-card h3{margin:8px 0;font-size:1.35rem}.project-card p{color:var(--panel-muted);min-height:68px;font-size:.88rem}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags span,.tags em{font:400 .62rem var(--mono);border:1px solid var(--line);color:var(--muted);border-radius:5px;padding:5px 8px;font-style:normal}.card-actions{border-top:1px solid var(--line);justify-content:space-between;align-items:center;margin-top:22px;padding-top:17px;display:flex}.card-actions a{align-items:center;gap:8px;font-size:.72rem;display:flex}.card-actions a:hover,.text-link:hover,.back-link:hover{color:var(--accent)}.center{text-align:center;margin-top:48px}.about-teaser{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:12vw;margin-top:65px;margin-bottom:70px;padding-block:100px;display:grid}.about-teaser>div:last-child{max-width:480px;color:var(--muted)}.text-link{color:var(--ink);align-items:center;gap:8px;margin-top:20px;font-size:.8rem;display:inline-flex}.page-intro{border-bottom:1px solid var(--line);grid-template-columns:.7fr 1.3fr;align-items:center;gap:50px;padding:56px 0;display:grid}.page-intro .eyebrow{grid-column:1/-1;margin-bottom:-20px}.page-intro h1{letter-spacing:-.04em;font-size:clamp(2rem,4vw,3.25rem);line-height:1.1}.page-intro .lede{color:var(--muted);max-width:440px;font-size:1rem}.page-intro .lede p{margin:0}#about .page-intro{border-top:1px solid var(--line);border-bottom:0;padding-bottom:26px}#about .about-main{padding-top:22px;padding-bottom:32px}.projects-section .page-intro{border-top:1px solid var(--line);border-bottom:0;padding-bottom:26px}.projects-section .projects-page{padding-top:38px}.about-main{grid-template-columns:.9fr 1.1fr;align-items:stretch;gap:clamp(28px,5vw,72px);padding-block:64px;display:grid}.about-photo{position:relative}.about-photo img{object-fit:cover;filter:grayscale(.2);border:1px solid var(--line);border-radius:var(--radius);width:100%;height:100%;box-shadow:var(--surface-shadow)}.prose>p:not(.eyebrow){color:#273244;font-size:clamp(1rem,1.6vw,1.35rem);line-height:1.5}.about-main .prose{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-large);box-shadow:var(--surface-shadow);color:var(--panel-ink);padding:30px}.prose .placeholder-note{color:var(--muted)!important;font-size:.72rem!important}.skills-section{border-top:1px solid var(--line)}.skills-list{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.skills-list span{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--panel-ink);padding:18px;font-size:.9rem}.skills-list small{font:400 .55rem var(--mono);color:#174a7e;margin-right:16px}.resume-section{padding-top:0;padding-bottom:72px}.resume-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-large);color:var(--panel-ink);box-shadow:var(--surface-shadow);grid-template-columns:auto 1fr auto;align-items:center;gap:28px;padding:30px;display:grid}.resume-icon{color:#174a7e;border:1px solid #7894ae;border-radius:50%;place-items:center;width:68px;height:68px;display:grid}.resume-icon svg{width:28px}.resume-copy .eyebrow{color:#174a7e;margin-bottom:8px}.resume-copy h2{margin:0;font-size:clamp(1.5rem,3vw,2.4rem);line-height:1.1}.resume-copy>p:last-child{max-width:590px;color:var(--panel-muted);margin:10px 0 0}.resume-actions{gap:8px;display:flex}.filters{flex-wrap:wrap;gap:8px;margin-bottom:28px;display:flex}.filters button{cursor:pointer;border:1px solid var(--line);color:var(--muted);border-radius:var(--radius);background:0 0;padding:9px 13px;font-size:.7rem}.filters button:hover,.filters button.active{background:var(--ink);color:var(--bg)}.filters sup{color:var(--accent);margin-left:7px}.detail{padding-block:60px 110px}.back-link{color:var(--muted);align-items:center;gap:8px;margin-bottom:60px;font-size:.72rem;display:inline-flex}.back-link svg{width:15px}.detail-head{justify-content:space-between;align-items:end;margin-bottom:55px;display:flex}.detail-head h1{letter-spacing:-.07em;margin:0;font-size:clamp(3.5rem,8vw,7.5rem);line-height:.9}.detail-head>div>p:last-child{color:var(--muted);max-width:580px;font-size:1.05rem}.detail-links{gap:8px;padding-bottom:8px;display:flex}.project-visual.large{aspect-ratio:2.4}.project-visual.large .scene{background-size:52px 52px}.project-visual.large .scene span{font-size:5rem}.detail-content{grid-template-columns:280px 1fr;gap:9vw;margin-top:75px;display:grid}.detail-content aside{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.detail-content aside>span{font:400 .57rem var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-top:24px}.detail-story{gap:60px;display:grid}.detail-story section{border-top:1px solid var(--line);padding-top:28px}.detail-story .large-copy{color:var(--ink);font-size:1.35rem}.detail-story li{color:var(--muted);margin:8px 0}.split{grid-template-columns:1fr 1fr;gap:40px;display:grid}.split p:last-child{color:var(--muted)}.contact-panel{border-top:1px solid var(--line);grid-template-columns:.7fr 1.3fr;align-items:start;gap:8vw;padding-block:60px;display:grid}.contact-panel h2{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,4vw,3.25rem);font-weight:500;line-height:1.1}.contact-panel header>p:last-child{color:var(--muted);margin:12px 0 0}.contact-links{gap:10px;display:grid}.contact-link{background:var(--panel);color:var(--panel-ink);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:16px;padding:17px 18px;transition:color .16s,border-color .16s,transform .16s;display:flex}.contact-link>svg:first-child{color:#174a7e;width:19px}.contact-link>svg:last-child{width:16px;margin-left:auto}.contact-link small{color:var(--panel-muted);font:400 .58rem var(--mono);text-transform:uppercase;letter-spacing:.12em;display:block}.contact-link:hover{color:#174a7e;border-color:#174a7e;transform:translate(4px)}.not-found{text-align:center;padding-block:180px}.not-found h1{margin:0;font-size:clamp(3rem,7vw,6rem)}.not-found>p:not(.eyebrow){color:var(--muted);margin-bottom:30px}.footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding-block:38px;display:flex}.footer>div{align-items:center;gap:15px;display:flex}.footer p{margin:0;font-size:.7rem}.footer small{color:var(--muted);display:block}.footer-links{gap:24px!important}.footer-links a{color:var(--muted);align-items:center;gap:6px;font-size:.68rem;display:flex}.footer-links svg{width:18px;height:18px}.footer-links a{border:1px solid var(--line);border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.footer-links a:hover{border-color:var(--accent);color:var(--accent)}.section-decor{isolation:isolate;position:relative}.section-decor:before{content:attr(data-decor);top:22px;right:max(3vw, calc((100vw - var(--max)) / 2));z-index:-1;color:#bedcf514;letter-spacing:-.06em;pointer-events:none;white-space:nowrap;font-size:clamp(4.5rem,13vw,11rem);font-weight:700;line-height:.8;position:absolute}.section-heading{position:relative}.motion-ready .page-intro,.motion-ready .projects-page,.motion-ready .skills-section,.motion-ready .about-main,.motion-ready .resume-section,.motion-ready .contact-panel{opacity:0;transition:opacity .6s,transform .6s cubic-bezier(.2,.7,.2,1);transform:translateY(18px)}.motion-ready .is-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.motion-ready .page-intro,.motion-ready .projects-page,.motion-ready .skills-section,.motion-ready .about-main,.motion-ready .resume-section,.motion-ready .contact-panel{opacity:1;transform:none}.project-card:hover,.project-card:hover .project-image,.hero-project:hover>img{transform:none}}@media (width<=900px){.section,.header,.footer,.page-intro{width:min(calc(100% - 36px), var(--max))}.menu-toggle{display:block}.nav{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:25px;display:none;position:absolute;top:72px;left:0;right:0}.nav.open{display:block}.nav-links{flex-direction:column;gap:20px}.nav-links a.active:after{display:none}.socials{margin-top:24px}.header{height:72px}.hero{grid-template-columns:1fr;gap:60px;min-height:calc(100svh - 72px);padding-block:70px}.hero-copy{order:0}.hero-project{order:1;width:min(88vw,470px);margin:auto}.projects-grid{grid-template-columns:repeat(2,1fr)}.page-intro{grid-template-columns:1fr}#about .page-intro{gap:12px}#about .page-intro .eyebrow{margin-bottom:0}.page-intro .lede{padding:0}.about-main{grid-template-columns:1fr;gap:32px}.about-photo{order:0;width:min(78vw,380px);margin-inline:auto}.about-photo img{aspect-ratio:4/5;height:auto}.about-main .prose{order:1}.skills-list{grid-template-columns:repeat(2,1fr)}.contact-panel{grid-template-columns:1fr;gap:42px}}@media (width<=620px){.section-decor:before{font-size:4.2rem;top:30px;right:10px}.hero{padding-top:45px}.hero-copy,.about-main .prose{padding:24px}.hero h1{font-size:clamp(2.85rem,14vw,4rem)}.page-intro h1{font-size:2rem}.hero-meta{display:none}.button-row{flex-direction:column;align-items:stretch}.hero-project{aspect-ratio:4/3;width:calc(100% - 10px);box-shadow:10px 10px 0 var(--panel-2)}.hero-project-overlay{padding:20px}.hero-project-overlay p{display:none}.section-heading{flex-direction:column;align-items:start;gap:20px}.projects-grid{grid-template-columns:1fr}.about-teaser,.about-main,.about-teaser{padding-block:52px}.about-photo{width:82%;margin:auto}.skills-list,.resume-card{grid-template-columns:1fr}.resume-actions{flex-direction:column;align-items:stretch}.page-intro{padding:52px 0 42px}.featured,.skills-section,.projects-page{padding-block:56px}.detail-head{display:block}.detail-links{margin-top:25px}.project-visual.large{aspect-ratio:1.35}.detail-content,.split{grid-template-columns:1fr}.footer{align-items:flex-start}.footer-links{flex-direction:column;gap:8px!important}.contact-panel{gap:28px;padding-block:48px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
