:root{--paper: #F3F5F7;--ink: #0F1B2D;--graphite: #5A6777;--rule: #CBD3DB;--secure: #0A7A55;--alert: #D92D20;--band-bg: #0F1B2D;--band-fg: #E9EEF4;--band-dim: #93A3B7;--band-secure: #3DDC97;--band-alert: #FF7A6B;--band-line: #2B3C55;--gutter: clamp(18px, 5vw, 72px);font-family:Archivo,Helvetica Neue,sans-serif}:root[data-theme=dark]{--paper: #0B1320;--ink: #E8EDF3;--graphite: #98A6B6;--rule: #243247;--secure: #3DDC97;--alert: #FF7A6B;--band-bg: #15233A}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: #0B1320;--ink: #E8EDF3;--graphite: #98A6B6;--rule: #243247;--secure: #3DDC97;--alert: #FF7A6B;--band-bg: #15233A}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}@keyframes show{0%{opacity:0}to{opacity:1}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-size:1.0625rem;line-height:1.6}a{color:inherit;text-decoration-thickness:1.5px;text-underline-offset:3px}a:hover{text-decoration-color:var(--secure)}:focus-visible{outline:3px solid var(--secure);outline-offset:3px;border-radius:3px}h1,h2,h3{margin:0;font-stretch:118%;letter-spacing:-.02em;line-height:1.1}p{margin:0 0 1rem}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--paper);padding:8px 14px;z-index:9}.skip:focus{left:8px}.top{display:flex;align-items:center;gap:1.5rem;padding:18px var(--gutter)}.mark{font-weight:800;font-stretch:125%;text-decoration:none;letter-spacing:-.02em}.top nav{margin-left:auto;display:flex;gap:1.25rem;font-size:.9375rem}.toggle{font:inherit;font-size:.875rem;font-weight:600;color:var(--graphite);background:none;border:0;padding:6px 4px;cursor:pointer;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.toggle:hover{color:var(--ink);text-decoration-color:var(--secure)}.top nav a{text-decoration:none}.top nav a:hover{text-decoration:underline}.btn{display:inline-block;font:inherit;font-weight:600;font-size:.9375rem;padding:10px 20px;border-radius:6px;border:2px solid var(--ink);text-decoration:none;background:transparent;color:var(--ink);cursor:pointer}.btn.primary{background:var(--ink);color:var(--paper)}.btn:hover{text-decoration:none;background:var(--secure);border-color:var(--secure);color:#fff}@media (max-width: 960px){.top nav{display:none}.top .toggle{margin-left:auto}}.hero{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(24px,5vw,72px);align-items:end;padding:clamp(36px,7vw,96px) var(--gutter) clamp(36px,5vw,64px)}.hero h1{font-weight:800;font-stretch:125%;font-size:clamp(2.5rem,8.6vw,8rem);line-height:.94;letter-spacing:-.035em}.hero h1 span{display:block}.role{font-weight:600;font-stretch:112%;color:var(--secure);margin:0 0 .5rem}.status{display:flex;align-items:center;gap:8px;margin:0 0 .75rem;font-size:.9375rem;color:var(--graphite)}.status i{width:9px;height:9px;border-radius:50%;background:var(--secure);flex:none}.cycle{display:inline-block;animation:show .5s ease-out}.lede{max-width:46ch}.social{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;margin:1.25rem 0 0;font-weight:600;font-size:.9375rem}.actions{display:flex;gap:12px;flex-wrap:wrap;margin:1.25rem 0 0}@media (max-width: 860px){.hero{grid-template-columns:1fr}}.band{background:var(--band-bg);color:var(--band-fg);padding:clamp(28px,4vw,56px) var(--gutter) clamp(32px,4vw,60px)}.band h2{font-size:clamp(1.4rem,1rem + 1.6vw,2.1rem);font-weight:800;margin-bottom:28px}.picks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px clamp(20px,3vw,44px)}.pick{display:flex;flex-direction:column;gap:.75rem;border-top:2px solid var(--band-fg);padding-top:16px}.pick h3{font-size:clamp(1.25rem,1rem + .8vw,1.65rem);font-weight:800;line-height:1.1}.pick p{margin:0;color:var(--band-dim);font-size:.9375rem;line-height:1.55}.pick a{margin-top:auto;padding-top:.25rem;color:var(--band-secure);font-weight:600}@media (max-width: 1100px){.picks{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 620px){.picks{grid-template-columns:1fr}}section.sec{display:grid;grid-template-columns:minmax(10rem,15rem) minmax(0,52rem);gap:12px clamp(24px,5vw,72px);padding:clamp(40px,6vw,88px) var(--gutter) 0}section.sec>h2{font-size:clamp(1.4rem,1rem + 1.4vw,2rem);font-weight:800;position:sticky;top:24px;align-self:start}@media (max-width: 860px){section.sec{grid-template-columns:1fr}section.sec>h2{position:static}}.group+.group{margin-top:2.5rem}.group h3{font-size:1.0625rem;font-weight:700;color:var(--graphite);margin-bottom:.5rem;font-stretch:100%;letter-spacing:0}.proj{border-top:2px solid var(--ink)}.proj:last-child{border-bottom:1px solid var(--rule)}.proj summary{list-style:none;display:grid;grid-template-columns:minmax(0,1fr) auto 1.25rem;gap:1rem;align-items:baseline;padding:14px 0;cursor:pointer}.proj summary::-webkit-details-marker{display:none}.p-name{font-weight:700;font-stretch:112%;font-size:1.1875rem;line-height:1.25}.p-sub{display:block;font-weight:400;font-stretch:100%;color:var(--graphite);font-size:.9375rem;margin-top:2px}.p-stack{color:var(--graphite);font-size:.875rem;text-align:right;max-width:22rem}.plus{position:relative;width:14px;height:14px;justify-self:end;align-self:center}.plus:before,.plus:after{content:"";position:absolute;background:var(--ink);left:0;top:6px;width:14px;height:2px;transition:transform .2s}.plus:after{transform:rotate(90deg)}.proj[open] .plus:after{transform:rotate(0)}.proj summary:hover .p-name{text-decoration:underline;text-decoration-color:var(--secure);text-decoration-thickness:2px;text-underline-offset:4px}.p-body{padding:0 0 18px;max-width:62ch}.p-links{display:flex;gap:1.25rem;margin:0;font-weight:600}@media (max-width: 620px){.p-stack{display:none}.proj summary{grid-template-columns:1fr 1.25rem}}@media (prefers-reduced-motion: no-preference){.proj[open] .p-body{animation:show .25s ease-out}}.entry{display:grid;grid-template-columns:10.5rem minmax(0,1fr);gap:1.25rem;padding:16px 0 6px;border-top:2px solid var(--ink)}.entry+.entry{margin-top:0}.entry h3{font-size:1.1875rem;font-weight:700;font-stretch:112%;line-height:1.25;margin-bottom:4px}.entry p{max-width:62ch}.when{color:var(--graphite);font-size:.9375rem;font-variant-numeric:tabular-nums;margin:3px 0 0}.tag{display:block;margin-top:2px;font-size:.8125rem;font-weight:600}.tag.earned{color:var(--secure)}.cert{display:flex;gap:16px;align-items:flex-start}.cert img{width:72px;height:72px;object-fit:contain;border-radius:8px;background:#fff;padding:6px;flex:none}.where{color:var(--graphite);font-size:.9375rem;margin-bottom:.6rem!important}@media (max-width: 620px){.entry{grid-template-columns:1fr;gap:2px}}.skills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2rem}.skill{border-top:2px solid var(--ink);padding:14px 0 10px}.skill h3{font-size:1rem;font-weight:700;font-stretch:112%;margin-bottom:4px}.skill p{margin:0;color:var(--graphite);font-size:.9375rem}@media (max-width: 620px){.skills{grid-template-columns:1fr}}.contact a.mail{font-weight:800;font-stretch:118%;font-size:clamp(1.4rem,1rem + 2.2vw,2.4rem);letter-spacing:-.02em;line-height:1.15;overflow-wrap:anywhere}.links{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.25rem;font-weight:600}footer{padding:clamp(40px,6vw,80px) var(--gutter) 40px;color:var(--graphite);font-size:.875rem}.qr{display:flex;align-items:center;gap:16px;margin-top:1.75rem;max-width:30rem;color:var(--graphite);font-size:.9375rem}.qr img{width:96px;height:96px;border-radius:6px;background:#fff;padding:6px;flex:none}.qr p{margin:0}.scrolltop{position:fixed;right:var(--gutter);bottom:20px;z-index:5;padding:9px 16px;border-radius:6px;background:var(--ink);color:var(--paper);font-weight:600;font-size:.875rem;text-decoration:none}.scrolltop:hover{background:var(--secure);color:#fff;text-decoration:none}@keyframes widen{0%{font-stretch:62%;opacity:0}to{font-stretch:125%;opacity:1}}@keyframes pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--secure) 55%,transparent)}70%,to{box-shadow:0 0 0 9px transparent}}@media (prefers-reduced-motion: no-preference){.hero h1 span{animation:widen .9s cubic-bezier(.2,.8,.2,1) both}.hero h1 span:nth-child(2){animation-delay:.12s}.hero>div>*{animation:show .6s ease-out both}.hero>div>:nth-child(1){animation-delay:.4s}.hero>div>:nth-child(2){animation-delay:.5s}.hero>div>:nth-child(3){animation-delay:.6s}.hero>div>:nth-child(4){animation-delay:.7s}.hero>div>:nth-child(5){animation-delay:.8s}.status i{animation:pulse 2.4s ease-in-out 1.2s infinite}.scrolltop{animation:show .25s ease-out}}@supports (interpolate-size: allow-keywords) and selector(::details-content){@media (prefers-reduced-motion: no-preference){:root{interpolate-size:allow-keywords}.proj::details-content{block-size:0;overflow:clip;transition:block-size .3s ease,content-visibility .3s allow-discrete}.proj[open]::details-content{block-size:auto}}}@supports (animation-timeline: view()){@media (prefers-reduced-motion: no-preference){.pick{animation:show linear both;animation-timeline:view();animation-range:entry 0% entry 60%}.pick:nth-child(2){animation-range:entry 8% entry 68%}.pick:nth-child(3){animation-range:entry 16% entry 76%}.pick:nth-child(4){animation-range:entry 24% entry 84%}}}
