:root{color-scheme:light;--bg: #f6f3ec;--paper: #fffdf8;--paper-strong: #ffffff;--ink: #17191c;--muted: #62666d;--line: rgba(23, 25, 28, .13);--accent: #2457a6;--accent-strong: #173b78;--accent-soft: #dce6f6;--signal: #6f8f73;--signal-soft: #e7ede5;--shadow: 0 24px 80px rgba(23, 25, 28, .12);--max: 1120px;--radius: 8px;--font: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(180deg,#fffdf8e6,#f6f3ec00 34rem),linear-gradient(90deg,rgba(36,87,166,.08),transparent 18rem),var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.6}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.58;background-image:repeating-linear-gradient(0deg,transparent 0 31px,rgba(23,25,28,.026) 31px 32px),repeating-linear-gradient(90deg,transparent 0 63px,rgba(36,87,166,.028) 63px 64px);mix-blend-mode:multiply}a{color:inherit;text-decoration-color:#2457a659;text-underline-offset:.22em}a:hover,a:focus-visible{color:var(--accent-strong);text-decoration-color:currentColor}img{display:block;max-width:100%}h1,h2,h3,p{margin:0}h1{max-width:10ch;font-size:clamp(3.5rem,9vw,7rem);line-height:.95;letter-spacing:0;text-wrap:balance}h2{max-width:16ch;font-size:clamp(2rem,5vw,4.5rem);line-height:1;letter-spacing:0}h3{font-size:clamp(1.1rem,1.6vw,1.35rem);line-height:1.2}ul{margin:0;padding-left:1.1rem}li+li{margin-top:.35rem}.section-shell{width:min(100% - 2rem,var(--max));margin-inline:auto}.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);gap:clamp(2rem,6vw,5rem);align-items:end;min-height:78vh;padding-block:clamp(2.5rem,7vw,5rem);position:relative}.hero:after{content:"";position:absolute;left:0;bottom:clamp(2rem,6vw,4rem);width:min(15rem,38vw);height:3px;background:linear-gradient(90deg,var(--accent),transparent)}.hero__content{display:grid;gap:1.5rem}.eyebrow{color:var(--accent-strong);font-size:.76rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.lede{max-width:58rem;color:var(--muted);font-size:clamp(1.25rem,2vw,1.75rem);line-height:1.35}.tag-list{display:flex;flex-wrap:wrap;gap:.55rem}.tag{border:1px solid var(--line);border-radius:999px;background:#fffdf8d1;padding:.48rem .78rem;color:#2f343a;cursor:default;font-size:.9rem;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.tag:hover{border-color:#2457a666;background:#fffdf8f5;color:var(--accent-strong)}.tag--mobile{border-color:#2457a657;background:#dce6f6b8;color:var(--accent-strong)}.tag--platform{border-color:#6f8f7361;background:#e7ede5bd;color:#425f45}.tag--tooling{border-color:#17191c29;background:#fffdf8e0;color:#3f444a}.tag--solution{border-color:#2457a63d;background:linear-gradient(135deg,#dce6f6b3,#e7ede5bd);color:#254962}.hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;padding-top:.5rem}.contact-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--accent);border-radius:999px;padding:.7rem 1rem;color:var(--accent-strong);font-weight:800;text-decoration:none;transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}.contact-link:hover,.contact-link:focus-visible{border-color:var(--accent-strong);background:var(--accent-soft);color:var(--accent-strong);transform:translateY(-1px)}.contact-link--primary{background:var(--accent);color:#fff}.contact-link--primary:hover,.contact-link--primary:focus-visible{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.hero__portrait{display:grid;gap:0;border:1px solid rgba(36,87,166,.28);border-radius:calc(var(--radius) + 10px);background:linear-gradient(var(--paper-strong),var(--paper-strong)) padding-box,linear-gradient(135deg,#2457a657,#6f8f7342) border-box;box-shadow:var(--shadow);overflow:hidden}.portrait-media{position:relative;overflow:hidden;background:var(--accent-soft)}.portrait-media:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 58%,rgba(23,25,28,.18)),linear-gradient(135deg,rgba(36,87,166,.1),transparent 42%);mix-blend-mode:multiply}.portrait-media img{aspect-ratio:4 / 5;width:100%;border:0;border-radius:0;box-shadow:none;object-fit:cover;object-position:54% 30%}.portrait-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;border-top:1px solid var(--line);background:#fffdf8eb}.portrait-facts div{display:grid;gap:.2rem;min-width:0;padding:.85rem .9rem}.portrait-facts div+div{border-left:1px solid var(--line)}.portrait-facts dt{color:var(--accent);font-size:.68rem;font-weight:800;letter-spacing:.09em;line-height:1;text-transform:uppercase}.portrait-facts dd{margin:0;color:var(--ink);font-size:.86rem;font-weight:700;line-height:1.2}.contact-card{display:grid;gap:.75rem;border:0;border-top:1px solid var(--line);border-left:4px solid var(--accent);border-radius:0;background:#fffdf8e6;padding:1rem;color:var(--muted);font-size:.95rem;position:relative}.contact-card:before{content:"field note";width:fit-content;margin-bottom:.25rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);padding:.18rem .45rem;font-size:.68rem;font-weight:800;letter-spacing:.08em;line-height:1.2;text-transform:uppercase}.contact-card span{color:var(--ink);font-weight:800}.contact-card__links{display:grid;gap:.5rem}.contact-card .contact-link,.footer__links .contact-link{justify-content:flex-start;min-height:0;width:fit-content;border-color:transparent;border-radius:0;background:transparent;padding:0;text-decoration:underline;text-decoration-color:#2457a659;text-underline-offset:.22em}.contact-card .contact-link:hover,.contact-card .contact-link:focus-visible,.footer__links .contact-link:hover,.footer__links .contact-link:focus-visible{background:transparent;color:var(--accent-strong);text-decoration-color:currentColor;transform:none}.impact,.experience,.skills,.education,.footer{padding-block:clamp(2rem,5vw,3.75rem)}.section-heading{display:grid;gap:.75rem;margin-bottom:clamp(1rem,2.5vw,1.9rem)}.section-heading--split{grid-template-columns:minmax(0,1fr) minmax(18rem,24rem);align-items:end}.section-heading--split>p{color:var(--muted)}.impact-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.skill-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.impact-card,.skill-card{min-height:13rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fffdf8bd;padding:1.25rem}.impact-card{display:grid;align-content:start;cursor:default;transition:background-color .18s ease}.impact-card:hover{background:var(--paper-strong)}.impact-card__signal{width:fit-content;margin-bottom:2.2rem;border-bottom:2px solid var(--accent);color:var(--accent);font-size:.76rem;font-weight:900;letter-spacing:.1em;line-height:1;text-transform:uppercase}.impact-card p,.skill-card p{margin-top:1rem;color:var(--muted)}.impact-card .impact-card__signal{margin-top:0;color:var(--accent)}.skill-card{display:grid;align-content:start;cursor:default;min-height:10rem;transition:background-color .18s ease}.skill-card:hover{background:var(--paper-strong)}.skill-card h3{max-width:none;font-size:clamp(1rem,1.25vw,1.16rem);line-height:1.15}.skill-list{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1rem;padding:0;list-style:none}.skill-list li{border:1px solid rgba(23,25,28,.12);border-radius:999px;background:#fffdf8b8;padding:.28rem .5rem;color:var(--muted);font-size:.9rem;font-weight:700;line-height:1.2}.skill-list li+li{margin-top:0}.timeline{display:grid;gap:0;border-top:1px solid var(--line)}.timeline-item{display:grid;grid-template-columns:minmax(12rem,.32fr) minmax(0,1fr);gap:clamp(1.5rem,5vw,4rem);border-bottom:1px solid var(--line);padding-block:clamp(1.5rem,3vw,2.5rem);position:relative}.timeline-item:before{content:none;position:absolute;left:0;top:clamp(1.5rem,3vw,2.5rem);width:.55rem;height:.55rem;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px #2457a61f}.timeline-item__meta{color:var(--accent-strong);font-size:.9rem;font-weight:800}.timeline-item__body{display:grid;gap:.8rem}.company{color:var(--muted);font-weight:800}.company:before{content:none;color:var(--accent);font-weight:700}.role-summary{max-width:54rem;color:var(--muted);font-size:1.08rem}.education{border-top:1px solid var(--line)}.education>p{color:var(--muted);font-size:1.1rem}.footer{display:flex;justify-content:space-between;gap:2rem;border-top:1px solid var(--line);padding-bottom:4rem}.footer h2{max-width:18ch}.footer__links{display:grid;align-content:end;gap:.45rem;color:var(--muted);font-weight:700}.reveal{animation:rise-in .7s ease both}@keyframes rise-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media(max-width:860px){.hero,.section-heading--split,.timeline-item,.footer{grid-template-columns:1fr}.hero{min-height:auto}.hero__portrait{max-width:26rem}.impact-grid,.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.section-shell{width:min(100% - 1.25rem,var(--max))}h1{font-size:clamp(3.25rem,16vw,4.5rem)}.impact-grid,.skill-grid{grid-template-columns:1fr}.impact-card,.skill-card{min-height:auto}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;scroll-behavior:auto!important;transition-duration:1ms!important}}@media print{@page{size:A4;margin:12mm 14mm}*,*:before,*:after{animation:none!important;background:transparent!important;box-shadow:none!important;color:#111!important;transform:none!important;transition:none!important}body:before,.hero:after,.hero__portrait:after,.contact-card:before,.timeline-item:before,.company:before{content:none!important;display:none!important}html,body{background:#fff!important;margin:0;padding:0;font-size:9.5pt;line-height:1.32}main{width:auto;margin:0;padding:0}.screen-only,.portrait-media,.portrait-facts{display:none!important}.section-shell{width:auto;max-width:none;margin:0}.hero{display:block;min-height:0;padding:0 0 5mm;border-bottom:.25mm solid #999;break-after:avoid}.hero__content,.hero__portrait,.contact-card,.timeline-item__body{display:block}.hero__portrait{max-width:none;border:0!important;border-radius:0!important;padding:0!important;overflow:visible}h1{max-width:none;font-size:24pt;line-height:1}h2{max-width:none;font-size:12.5pt;line-height:1.1}h3{font-size:10.5pt}.eyebrow,.tag-list,.hero__actions{display:none}.lede{max-width:none;margin-top:2mm;font-size:10pt}.contact-card{margin-top:3mm;border:0!important;border-radius:0!important;padding:0!important;font-size:8.8pt}.contact-card__links{display:block;margin-top:1.5mm}.contact-link,.contact-card .contact-link,.footer__links .contact-link{display:block;width:auto;max-width:100%;min-height:0;margin-top:.8mm;border:0!important;border-radius:0!important;outline:0!important;padding:0;white-space:normal;overflow-wrap:anywhere;word-break:normal;text-decoration:none}.impact,.experience,.skills,.education,.footer{padding-block:4mm 0}.section-heading{margin-bottom:2mm}.section-heading--split{display:block}.section-heading--split>p,.footer{display:none}.impact-grid,.skill-grid{display:grid;grid-template-columns:repeat(2,1fr);border:0;gap:2.5mm 5mm}.impact-card,.skill-card{min-height:0;border:0;padding:0;break-inside:avoid}.impact-card p,.education>p,.company,.role-summary{margin-top:.7mm}.skill-list{display:block;margin-top:.7mm;padding:0}.skill-list li{display:inline;border:0;padding:0;font-size:inherit;font-weight:400}.skill-list li+li:before{content:", "}.impact-card__signal{margin-bottom:1mm;border-bottom:0;font-size:8pt}.timeline{border-top:0}.timeline-item{display:grid;grid-template-columns:30mm 1fr;gap:4mm;border-bottom:.25mm solid #ddd;padding-block:2.5mm;break-inside:avoid}.timeline-item ul{columns:1}li+li{margin-top:1mm}a{text-decoration:none}}
