:root{color-scheme:dark;--bg:#080b12;--surface:#0f1521;--surface-raised:#151d2c;--ink:#f2f5f9;--muted:#9ca9ba;--line:#253044;--accent:#62d9c7;--accent-strong:#8cf5df;--accent-secondary:#819cff;--accent-soft:#62d9c71a;--shell:1040px;--reading:760px;--font:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(circle at 82% 8%, #4f62cd29, transparent 29rem), radial-gradient(circle at 8% 34%, #1f8f801a, transparent 24rem), var(--bg);color:var(--ink);font-family:var(--font);text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.65}::selection{background:var(--accent);color:#07110f}img{max-width:100%;display:block}a{color:inherit;text-underline-offset:.22em}a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[id]{scroll-margin-top:1.5rem}p,h1,h2,h3,figure{margin-top:0}h1,h2,h3{line-height:1.12}h1{letter-spacing:-.055em;font-size:clamp(2.8rem,7vw,5.5rem)}h2{letter-spacing:-.035em;font-size:clamp(1.7rem,3.8vw,2.8rem)}h3{letter-spacing:-.015em;font-size:1.2rem}.shell{width:min(var(--shell), calc(100% - 3rem));margin-inline:auto}.reading-width{max-width:var(--reading)}.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}.skip-link{z-index:100;background:var(--ink);color:var(--bg);padding:.65rem .9rem;position:fixed;top:-5rem;left:1rem}.skip-link:focus{top:1rem}.kicker{color:var(--accent);letter-spacing:.095em;text-transform:uppercase;margin-bottom:.8rem;font-size:.76rem;font-weight:700}.inline-list{color:var(--muted);font-size:.88rem}.text-links{flex-wrap:wrap;gap:.7rem 1.25rem;display:flex}.text-links a,.standalone-link,.back-link,.project-row .text-links a{color:var(--accent);font-weight:650;text-decoration-thickness:1px}.button{border:1px solid var(--accent);background:var(--accent);color:#07110f;align-items:center;min-height:42px;padding:.55rem .85rem;font-weight:700;text-decoration:none;display:inline-flex}.site-header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(16px)}.header-inner{align-items:center;gap:2rem;min-height:68px;display:flex}.brand{color:var(--ink);font-size:.98rem;font-weight:750;text-decoration:none}.main-nav{align-items:center;gap:1.5rem;margin-left:auto;display:flex}.main-nav a,.language-link{color:var(--muted);font-size:.88rem;font-weight:550;text-decoration:none}.main-nav a:hover,.main-nav a:focus-visible,.language-link:hover,.language-link:focus-visible{color:var(--accent)}.header-actions{border-left:1px solid var(--line);align-items:center;gap:1rem;padding-left:1.25rem;display:flex}.home-main{padding-bottom:4rem}.home-intro{grid-template-columns:minmax(0,1fr) 230px;align-items:center;gap:clamp(2rem,6vw,5rem);padding-block:3.5rem;display:grid}.home-copy h1{margin-bottom:1.2rem;font-size:clamp(2.4rem,4.8vw,3.8rem)}.home-bio{max-width:660px;color:var(--muted);margin-bottom:1rem;font-size:1.02rem}.home-skills{color:var(--muted);margin-bottom:1.4rem;font-size:.85rem}.home-portrait{object-fit:cover;object-position:center 30%;border:1px solid var(--line);border-radius:4px;width:230px;height:270px}.home-section+.home-section{margin-top:3.5rem}.home-section-heading{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem 2rem;padding-block:1.5rem;display:flex}.home-section-heading h2{margin-bottom:.6rem;font-size:1.8rem}.home-section-heading p{color:var(--muted);margin-bottom:0;font-size:.95rem}.home-section-heading>a{flex-shrink:0;font-size:.88rem}.home-projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5rem;display:grid}.home-projects .project-row{padding-block:.5rem 1.6rem;display:block}.home-projects .project-row h3{margin-bottom:1rem;font-size:1.6rem}.home-projects .project-row .kicker{margin-bottom:.6rem}.home-projects .project-media{margin-bottom:1rem}.home-projects .project-card-content>p:not(.inline-list){color:var(--muted)}.home-projects .text-links{font-size:.9rem}.home-talks{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5rem;display:grid}.home-talk{border-bottom:1px solid var(--line);padding-block:.5rem 1.6rem}.home-talk h3{margin-bottom:.8rem;font-size:1.3rem}.home-talk h3 a{text-decoration:none}.home-talk h3 a:hover{color:var(--accent)}.home-talk>p:not(.inline-list){color:var(--muted);font-size:.95rem}.home-talk .inline-list{margin-bottom:.65rem}.home-talk .text-links{font-size:.9rem}.home-experience{margin:0;padding:0;list-style:none}.home-experience li{border-bottom:1px solid var(--line);grid-template-columns:210px minmax(0,1fr);gap:2rem;padding-block:1.2rem;display:grid}.home-experience h3{margin-bottom:.3rem;font-size:1.05rem}.home-company{color:var(--accent);margin:0;font-size:.9rem}.home-current-summary{max-width:700px;color:var(--muted);margin:.75rem 0 0;font-size:.95rem}.talk-permalink{text-decoration:none}.talk-permalink:hover{color:var(--accent)}.page-main{min-height:calc(100vh - 69px);padding-bottom:7rem}.page-header{padding-top:clamp(4.5rem,9vw,7.5rem);padding-bottom:clamp(3rem,7vw,5rem)}.page-header h1{margin-bottom:1.3rem}.page-header>p:last-child{max-width:690px;color:var(--muted);margin-bottom:0;font-size:1.08rem}.experience-list,.talk-list,.project-list{border-top:1px solid var(--line)}.experience-row,.talk-row{border-bottom:1px solid var(--line);grid-template-columns:180px minmax(0,1fr);gap:clamp(2rem,6vw,5rem);padding-block:2.25rem;display:grid}.experience-period,.talk-meta{color:var(--muted);margin:0;font-size:.82rem;line-height:1.5}.experience-content header{margin-bottom:1rem}.experience-content h2{margin-bottom:.35rem;font-size:1.45rem}.experience-content header p{color:var(--accent);margin:0;font-weight:600}.experience-content>p:not(.inline-list){max-width:700px;color:var(--muted)}.experience-content .inline-list{margin-bottom:0}.simple-cta{border-top:1px solid var(--line);border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:2rem;margin-top:3rem;padding:1.5rem 0;display:flex}.simple-cta p{color:var(--muted);margin:0}.simple-cta a{color:var(--accent);font-weight:650}.project-list>h2{border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0;padding-block:1.2rem;font-size:.82rem}.project-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(220px,.65fr) minmax(0,1.35fr);gap:clamp(2rem,7vw,6rem);padding-block:2.4rem;display:grid}.project-row h3{font-size:clamp(1.5rem,3vw,2.1rem)}.project-row h3 a{color:var(--ink);text-decoration:none}.project-row h3 a:hover{color:var(--accent)}.project-row>div>p:first-child{color:var(--muted);font-size:1.02rem}.project-card-content{min-width:0}.project-media{border:1px solid var(--line);background:var(--surface);margin-bottom:1.5rem;display:block;overflow:hidden}.project-media img{aspect-ratio:3.6;object-fit:contain;width:100%;transition:transform .24s}.project-media:hover img{transform:scale(1.015)}.project-header{padding-top:4rem;padding-bottom:3rem}.project-header .back-link{margin-bottom:4rem;display:inline-block}.project-header h1{margin-bottom:1.2rem}.project-header>p:not(.kicker,.inline-list){color:var(--muted);font-size:1.15rem}.project-hero{border:1px solid var(--line);background:var(--surface);margin-bottom:3rem;overflow:hidden}.project-hero img{width:100%;height:auto}.case-content{border-top:1px solid var(--line)}.case-content section{border-bottom:1px solid var(--line);padding-block:2.2rem}.case-content h2{margin-bottom:1rem;font-size:1.45rem}.case-content p,.case-content li{color:var(--muted)}.case-content ul{margin:0;padding-left:1.25rem}.case-content li+li{margin-top:.55rem}.talk-meta time{color:var(--ink);margin-bottom:.65rem;font-weight:650;display:block}.talk-meta p{margin:0}.talk-content h2{margin-bottom:1rem;font-size:clamp(1.6rem,3vw,2.2rem)}.talk-content>p:not(.inline-list,.materials-pending){color:var(--muted)}.materials-pending{color:var(--muted);margin:1rem 0 0;font-size:.86rem;font-style:italic}.site-footer{border-top:1px solid var(--line);background:#0f15219e}.footer-inner{color:var(--muted);grid-template-columns:1fr auto;align-items:start;gap:1.5rem 3rem;padding-block:2.5rem;font-size:.82rem;display:grid}.footer-inner p{margin:0}.footer-name{color:var(--ink);font-weight:700}.footer-links{flex-wrap:wrap;gap:1rem;display:flex}.footer-links a{color:var(--accent)}.footer-meta{border-top:1px solid var(--line);grid-column:1/-1;padding-top:1.2rem}.cv-body{color:#111526;background:#dfe2e9}.cv-toolbar{justify-content:space-between;align-items:center;width:min(210mm,100% - 2rem);margin:1.5rem auto;font-size:.85rem;display:flex}.cv-toolbar .button{color:#fff}.cv-page{color:#202020;background:#fff;width:210mm;min-height:297mm;margin:0 auto 3rem;padding:12mm 14mm 10mm;font-family:Arial,sans-serif;font-size:9.5pt;line-height:1.28;box-shadow:0 18px 55px #10172d29}.cv-page h1,.cv-page h2,.cv-page h3{letter-spacing:0;font-family:Arial,sans-serif}.cv-header{justify-content:space-between;align-items:flex-start;gap:10mm;min-height:29mm;display:flex}.cv-header-copy{min-width:0;padding-top:1mm}.cv-header h1{color:#315b9d;margin:0;font-size:23pt}.cv-header .cv-role{color:#202020;margin:1mm 0 1.5mm;font-size:11pt;font-weight:700}.cv-header address{flex-wrap:wrap;align-items:center;gap:.8mm 2mm;max-width:145mm;font-size:9pt;font-style:normal;display:flex}.cv-header a{color:#315b9d;text-underline-offset:.8mm}.cv-photo-frame{border:.5mm solid #202020;border-radius:50%;flex:none;width:27mm;height:27mm;overflow:hidden;box-shadow:0 1mm 2mm #0000002e}.cv-photo{object-fit:cover;object-position:50% 19%;transform-origin:50% 27%;width:100%;height:100%;transform:scale(1.45)}.cv-page section{margin-top:3.2mm}.cv-page section>h2{color:#315b9d;letter-spacing:0;text-transform:none;border-bottom:.3mm solid #315b9d;margin:0 0 1.4mm;padding-bottom:.5mm;font-size:10.5pt;font-weight:400}.cv-summary p{margin:0}.cv-list{gap:1.8mm;display:grid}.cv-entry header{justify-content:space-between;gap:5mm;display:flex}.cv-entry h3,.cv-mini-entry h3{margin:0;font-size:9.5pt}.cv-entry h3 span,.cv-education-entry h3 span{color:#666;font-style:italic;font-weight:400}.cv-entry time,.cv-education-entry time{flex:none;font-size:8.7pt}.cv-entry ul{margin:.5mm 0 0;padding-left:4mm}.cv-entry li{padding-left:.4mm}.cv-skills p,.cv-additional p{margin:0 0 .7mm}.cv-education-entry header{justify-content:space-between;gap:5mm;display:flex}.cv-mini-entry+.cv-mini-entry{margin-top:1mm}.cv-project-entry p{margin:0}.cv-mini-entry a{color:#315b9d;text-underline-offset:.6mm}@media (width<=760px){.shell{width:min(100% - 1.5rem, var(--shell))}.header-inner{grid-template-columns:1fr auto;gap:0;min-height:0;padding-top:.9rem;display:grid}.header-actions{border-left:0;padding-left:0}.main-nav{border-top:1px solid var(--line);grid-area:2/1/auto/-1;gap:1.1rem;width:100%;margin:0;padding-block:.75rem .9rem}.home-intro{grid-template-columns:1fr 150px;align-items:start;gap:1.5rem;padding-block:2rem}.home-portrait{width:150px;height:190px}.home-section-heading{flex-wrap:wrap}.home-projects,.home-talks{gap:1.5rem}.home-experience li{grid-template-columns:170px minmax(0,1fr);gap:1rem}.experience-row,.talk-row,.project-row{grid-template-columns:1fr;gap:1.1rem}.experience-period br{display:none}.project-header .back-link{margin-bottom:3rem}.footer-inner{grid-template-columns:1fr}.footer-meta{grid-column:1}.cv-page{width:100%;min-height:0;margin:0;padding:1.2rem}.cv-toolbar{width:calc(100% - 1.5rem)}.cv-header,.cv-entry header,.cv-education-entry header{flex-direction:column;gap:1mm}.cv-photo-frame{width:23mm;height:23mm}}@media (width<=540px){.home-intro{grid-template-columns:1fr}.home-portrait{grid-row:1;width:112px;height:128px}.home-copy h1{font-size:2.4rem}.home-projects,.home-talks{grid-template-columns:1fr}.home-experience li{grid-template-columns:1fr;gap:.5rem}.home-section+.home-section{margin-top:2.5rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}@page{size:A4;margin:0}@media print{:root{color-scheme:light}.cv-body{background:#fff}.cv-toolbar{display:none}.cv-page{width:210mm;height:297mm;min-height:297mm;box-shadow:none;margin:0;overflow:hidden}.cv-page a{text-decoration:none}}
