:root{--paper:#f3f5f7;--surface:#fff;--ink:#0e1b2c;--muted:#56657a;--line:#c5ced8;--accent:#1f4fd1;--accent-soft:#1f4fd124;--font-display:"Barlow Condensed", "Arial Narrow", sans-serif;--font-text:"Barlow", system-ui, sans-serif;--step--1:.875rem;--step-0:1.0625rem;--step-1:1.3125rem;--step-2:1.75rem;--step-3:clamp(2.25rem, 4.5vw, 3rem);--gutter:clamp(16px, 4vw, 48px);--sheet:1180px;--radius:2px;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0c1726;--surface:#112036;--ink:#e6ecf3;--muted:#93a3b8;--line:#2a3a50;--accent:#7fa2ff;--accent-soft:#7fa2ff2e;color-scheme:dark}}:root[data-theme=dark]{--paper:#0c1726;--surface:#112036;--ink:#e6ecf3;--muted:#93a3b8;--line:#2a3a50;--accent:#7fa2ff;--accent-soft:#7fa2ff2e;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:72px}body{background:var(--paper);color:var(--ink);font-family:var(--font-text);font-size:var(--step-0);font-feature-settings:"tnum" 0;-webkit-font-smoothing:antialiased;margin:0;line-height:1.6;overflow-x:hidden}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0;font-weight:600;line-height:1.05}p{text-wrap:pretty;margin:0}ul,ol,dl,dd{margin:0;padding:0}a{color:inherit}img{max-width:100%;height:auto;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{left:var(--gutter);z-index:20;background:var(--ink);color:var(--paper);padding:8px 14px;text-decoration:none;position:absolute;top:-100px}.skip-link:focus{top:12px}.sheet{width:100%;max-width:calc(var(--sheet) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}strong{color:var(--ink);background:linear-gradient(transparent 62%, var(--accent-soft) 62%);font-weight:600}.btn{border:1.5px solid var(--ink);border-radius:var(--radius);min-height:44px;font:500 var(--step-0) / 1 var(--font-text);cursor:pointer;align-items:center;gap:10px;padding:10px 18px;text-decoration:none;transition:background-color .15s,color .15s;display:inline-flex}.btn svg{flex:none;width:18px;height:18px}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}.btn-ghost{color:var(--ink);background:0 0}.btn-ghost:hover{background:var(--ink);color:var(--paper)}.icon-link{width:44px;height:44px;color:var(--muted);border-radius:var(--radius);place-items:center;display:inline-grid}.icon-link:hover{color:var(--accent)}.icon-link svg{width:22px;height:22px}.topbar{z-index:10;background:color-mix(in srgb, var(--paper) 92%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0}.topbar-inner{align-items:center;gap:24px;min-height:60px;display:flex}.topbar-name{font:600 1.25rem / 1 var(--font-display);margin-right:auto;text-decoration:none}.topbar-nav{gap:22px;display:flex}.topbar-nav a,.topbar-lang{color:var(--muted);font-size:var(--step--1);font-weight:500;text-decoration:none}.topbar-nav a:hover,.topbar-lang:hover{color:var(--ink)}.topbar .btn{min-height:38px;font-size:var(--step--1);padding:8px 14px}@media (width<=980px){.topbar-nav{display:none}}@media (width<=420px){.topbar .btn span{display:none}}.hero{grid-template-columns:minmax(0,1fr) minmax(220px,340px);gap:clamp(40px,6vw,64px) clamp(24px,5vw,72px);padding-block:clamp(40px,7vw,88px) clamp(48px,6vw,72px);display:grid}.hero-name{letter-spacing:-.015em;margin-left:-.04em;font-size:clamp(3.75rem,12vw,9rem);font-weight:600;line-height:.86}.hero-name span{display:block}.hero-role{font:500 var(--step-2) / 1.1 var(--font-display);color:var(--accent);margin-top:24px}.hero-pitch{max-width:34em;font-size:var(--step-1);color:var(--muted);margin-top:16px;line-height:1.5}.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:32px;display:flex}.hero-actions .icon-links{margin-left:4px;display:flex}.portrait{align-self:end;margin:0;position:relative}.portrait img{aspect-ratio:4/5;object-fit:cover;object-position:center 20%;border-radius:var(--radius);filter:grayscale(.15)contrast(1.02);width:100%}.portrait:before,.portrait:after{content:"";border-color:var(--ink);pointer-events:none;border-style:solid;width:18px;height:18px;position:absolute}.portrait:before{border-width:1.5px 0 0 1.5px;top:-10px;left:-10px}.portrait:after{border-width:0 1.5px 1.5px 0;bottom:-10px;right:-10px}.hero-timeline,.title-block{grid-column:1/-1}@media (width<=760px){.hero{grid-template-columns:1fr}.portrait{grid-row:1;width:min(220px,60%);margin-left:10px}}.timeline-caption{font-size:var(--step--1);color:var(--muted);margin-bottom:14px}.dims{height:64px;list-style:none;position:relative}.dim{top:0;bottom:0;left:var(--start);width:var(--span);position:absolute}.dim a{text-align:center;grid-template-rows:1fr 14px 1fr;height:100%;text-decoration:none;display:grid}.dim-name{font:600 var(--step-1) / 1 var(--font-display);white-space:nowrap;align-self:end;padding-bottom:4px}.dim-len{font-size:var(--step--1);font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap;padding-top:4px}.dim-line{background:var(--ink);transform-origin:0;height:1.5px;animation:.7s cubic-bezier(.6,0,.2,1) both draw;animation-delay:calc(.25s + var(--i) * .45s);align-self:center;margin-inline:1px;position:relative}.dim-line:before,.dim-line:after{content:"";background:var(--ink);width:1.5px;height:15px;position:absolute;top:-7px;transform:rotate(45deg)}.dim-line:before{left:-1px}.dim-line:after{right:-1px}.dim a:hover .dim-line,.dim a:hover .dim-line:before,.dim a:hover .dim-line:after{background:var(--accent)}.dim a:hover .dim-name{color:var(--accent)}.dim-current .dim-line{background:var(--accent)}.dim-current .dim-line:after{display:none}.dim-current .dim-name{color:var(--accent)}@keyframes draw{0%{transform:scaleX(0)}}.axis{border-top:1px solid var(--line);height:30px;margin-top:10px;list-style:none;position:relative}.axis li{top:0;left:var(--at);font-variant-numeric:tabular-nums;color:var(--muted);font-size:.75rem;position:absolute;transform:translate(-50%)}.axis li:before{content:"";background:var(--line);width:1px;height:6px;margin:0 auto 2px;display:block}@media (width<=640px){.axis li.minor span{visibility:hidden}.dim-name{font-size:1.0625rem}.dim-len{font-size:.75rem}}.title-block{border:1.5px solid var(--ink);border-radius:var(--radius);grid-template-columns:minmax(0,.8fr) minmax(0,1.45fr) minmax(0,1fr) minmax(0,1.25fr) minmax(0,1.15fr);display:grid}.title-block div{border-left:1px solid var(--line);min-width:0;padding:12px 16px 14px}.title-block div:first-child{border-left:0}.title-block dt{color:var(--muted);font-size:.8125rem}.title-block dd{overflow-wrap:break-word;margin-top:2px;font-weight:500}.title-block a{text-decoration:none}.title-block a:hover{color:var(--accent)}@media (width<=960px){.title-block{grid-template-columns:repeat(2,minmax(0,1fr))}.title-block div{border-left:0;border-top:1px solid var(--line)}.title-block div:nth-child(2n){border-left:1px solid var(--line)}.title-block div:nth-child(-n+2){border-top:0}.title-block div:last-child{border-left:0;grid-column:1/-1}}@media (width<=480px){.title-block{grid-template-columns:1fr}.title-block div,.title-block div:nth-child(2n){border-left:0;border-top:1px solid var(--line)}.title-block div:first-child{border-top:0}}.section{border-top:1px solid var(--line);padding-block:clamp(56px,8vw,96px)}.section-title{font-size:var(--step-3);margin-bottom:clamp(28px,4vw,44px)}.split{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(20px,4vw,56px);display:grid}@media (width<=760px){.split{grid-template-columns:1fr}}.job{border-top:1px solid var(--line);padding-block:32px}.job:first-of-type{border-top:0;padding-top:0}.job-meta{font-size:var(--step--1);color:var(--muted);font-variant-numeric:tabular-nums}.job-dates{color:var(--ink);font-weight:500;font-size:var(--step-0);display:block}.job-company{font-size:var(--step-2)}.job-role{font-size:var(--step-1);color:var(--accent);margin-top:4px;font-weight:500}.job-points{max-width:44em;margin-top:16px;list-style:none}.job-points li{padding-left:22px;position:relative}.job-points li+li{margin-top:8px}.job-points li:before{content:"";background:var(--line);width:10px;height:1.5px;position:absolute;top:.8em;left:0}.project{margin-top:28px}.project+.project{border-top:1px dashed var(--line);padding-top:24px}.project-name{font-family:var(--font-text);font-size:var(--step-0);font-weight:600;line-height:1.4}.project-dates{font-weight:400;font-size:var(--step--1);color:var(--muted);display:block}.project .job-points{margin-top:10px}.stack{display:grid}.stack div{border-top:1px solid var(--line);grid-template-columns:minmax(0,5fr) minmax(0,8fr);gap:16px;padding-block:12px;display:grid}.stack div:first-child{border-top:0;padding-top:0}.stack dt{color:var(--muted)}.stack dd{font-weight:500}.side-block+.side-block{margin-top:40px}.side-block h3{font-size:var(--step-1);margin-bottom:12px}.plain-list{list-style:none}.plain-list li+li{margin-top:4px}.muted{color:var(--muted)}@media (width<=480px){.stack div{grid-template-columns:1fr;gap:2px}}.certs-intro{color:var(--muted);max-width:40em;margin-top:-20px;margin-bottom:36px}.cert-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:36px 28px;list-style:none;display:grid}.cert-grid a{text-decoration:none;display:block}.cert-grid img{object-fit:contain;width:112px;height:112px;margin-bottom:14px}.cert-name{font-weight:500;line-height:1.35}.cert-grid a:hover .cert-name{color:var(--accent)}.cert-issuer{font-size:var(--step--1);color:var(--muted);margin-top:2px}@media (width<=860px){.cert-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.cert-more{border-top:1px solid var(--line);margin-top:44px}.cert-more summary{cursor:pointer;align-items:center;gap:10px;min-height:44px;margin-top:16px;font-weight:500;list-style:none;display:inline-flex}.cert-more summary::-webkit-details-marker{display:none}.cert-more summary:before{content:"+";border:1.5px solid var(--ink);border-radius:var(--radius);place-items:center;width:22px;height:22px;font-size:1rem;line-height:1;display:inline-grid}.cert-more[open] summary:before{content:"−"}.cert-list{columns:2 320px;column-gap:48px;margin-top:20px;list-style:none}.cert-list li{break-inside:avoid;border-bottom:1px solid var(--line);padding-block:8px}.cert-list a{text-decoration:none}.cert-list a:hover{color:var(--accent)}.cert-list span{font-size:var(--step--1);color:var(--muted);display:block}.level{color:var(--muted);font-weight:400}.posts{list-style:none}.posts li{border-top:1px solid var(--line);padding-block:14px}.posts li:first-child{border-top:0;padding-top:0}.posts a{font:600 var(--step-1) / 1.25 var(--font-display);text-decoration:none}.posts a:hover{color:var(--accent)}.posts span{font-size:var(--step--1);color:var(--muted);margin-top:4px;display:block}.posts-all{margin-top:24px}.quotes{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,64px);display:grid}.quotes blockquote{border-left:1.5px solid var(--ink);margin:0;padding-left:20px}.quotes p{font-size:var(--step-1);font-style:italic;line-height:1.5}.quotes footer{font-size:var(--step--1);color:var(--muted);margin-top:16px}.quotes cite{color:var(--ink);font-style:normal;font-weight:600;font-size:var(--step-0);display:block}@media (width<=760px){.quotes{grid-template-columns:1fr}}.contact-intro{font-size:var(--step-1);max-width:24em;line-height:1.5}.channels{margin-top:28px;list-style:none}.channels li{border-top:1px solid var(--line)}.channels li:last-child{border-bottom:1px solid var(--line)}.channels a{overflow-wrap:anywhere;align-items:center;gap:12px;min-height:52px;font-weight:500;text-decoration:none;display:flex}.channels a:hover{color:var(--accent)}.channels svg{width:20px;height:20px;color:var(--muted);flex:none}.form{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px;display:grid}.field{gap:6px;display:grid}.field-wide{grid-column:1/-1}.field label{font-size:var(--step--1);color:var(--muted);font-weight:500}.field input,.field textarea{border:1.5px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--ink);font:inherit;padding:12px 14px}.field textarea{resize:vertical;min-height:160px}.field input:focus-visible,.field textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.form-footer{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:16px;display:flex}.form .btn[disabled]{opacity:.6;cursor:progress}.form-status{font-weight:500}.form-status.is-error{color:#c62828}:root[data-theme=dark] .form-status.is-error{color:#ff8a80}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .form-status.is-error{color:#ff8a80}}@media (width<=560px){.form{grid-template-columns:1fr}}.site-footer{border-top:1px solid var(--line);font-size:var(--step--1);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;padding-block:28px 40px;display:flex}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.dim-line{animation:none}}@media print{:root{--paper:#fff;--ink:#000;--muted:#444;--line:#bbb;--accent:#1f4fd1}body{font-size:11pt}.topbar,.hero-actions,.form,.cert-more summary,.skip-link{display:none!important}.cert-more>ul{display:block}.dim-line{animation:none}.section,.job{break-inside:avoid;padding-block:24px}a{text-decoration:none}}
