:root{--ds-font-display:"Fraunces", Georgia, "Times New Roman", serif;--ds-font-text:-apple-system, "Helvetica Neue", Arial, sans-serif;--ds-ink:#f2edee;--ds-ink-2:#c9c2c4;--ds-ink-3:#979092;--ds-ink-4:#6a6365;--ds-page:#1a1517;--ds-raised:#262021;--ds-hairline:#383134;--ds-white:#fff;--ds-teal:#73a89a;--ds-teal-strong:#9fd1c3;--ds-red:#ff6b74;--ds-red-border:#7a3a40;--ds-scrim:#0000008c;--ds-hover:#f2edee0f;--ds-hover-strong:#f2edee1f;--ds-elevation-1:0 1px 2px #00000080, 0 6px 16px #0006;--ds-on-accent:#1d1819;--pn-bg:#1d1819;--pn-ink:#f4efec;--pn-ink-2:#d6d0d2;--pn-ink-3:#b9b3b5;--pn-headline:#fbf7f4;--pn-line:#3a3436;--pn-teal:#9fd1c3;--pn-teal-dim:#73a89a;--pn-node:#9a9395;--pn-edge:#5b5557;--pn-on-accent:#1d1819;--file-pad-x:24px;--file-text:16px}[data-theme=light]{--ds-ink:#241d1f;--ds-ink-2:#4d4447;--ds-ink-3:#6f6669;--ds-ink-4:#9a9295;--ds-page:#faf7f5;--ds-raised:#fff;--ds-hairline:#e3dcdd;--ds-teal:#4d8371;--ds-teal-strong:#35705f;--ds-red:#c9353f;--ds-red-border:#e0a3a8;--ds-scrim:#241d1f73;--ds-hover:#241d1f0f;--ds-hover-strong:#241d1f1f;--ds-elevation-1:0 1px 2px #241d1f14, 0 6px 16px #241d1f1a;--ds-on-accent:#fff;--pn-bg:#fff;--pn-ink:#2a2225;--pn-ink-2:#4d4447;--pn-ink-3:#6f6669;--pn-headline:#1d1819;--pn-line:#e3dcdd;--pn-teal:#35705f;--pn-teal-dim:#4d8371;--pn-node:#8a8284;--pn-edge:#cfc6c8;--pn-on-accent:#fff}@media (width>=640px){:root{--file-pad-x:36px}}*,:after,:before{box-sizing:border-box}html,body{background:var(--ds-page);margin:0}body{color:var(--ds-ink);font-family:var(--ds-font-text);-webkit-font-smoothing:antialiased}.file-card{width:100%;max-width:1040px;padding:24px var(--file-pad-x);background:var(--ds-page);color:var(--ds-ink);font-family:var(--ds-font-text);font-size:var(--file-text);letter-spacing:-.01em;flex-direction:column;gap:48px;margin:0 auto;font-weight:400;line-height:24px;display:flex}.file-card>*{min-width:0}@font-face{font-family:Fraunces;src:url(/assets/fraunces-latin-BOz5zopO.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;src:url(/assets/fraunces-latin-ext-D0uXyjCy.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}html,body,#root{min-height:100%;margin:0}html{scroll-behavior:smooth}body{background:var(--ds-page);color:var(--ds-ink)}.hero{border-bottom:1px solid var(--ds-hairline);padding:24px 0 28px}.eyebrow{color:var(--ds-teal-strong);letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:12px;font-weight:600}.hero h1{font-family:var(--ds-font-display,inherit);letter-spacing:-.035em;margin:0 0 14px;font-size:clamp(44px,12vw,88px);font-weight:400;line-height:.98}.role{max-width:36em;color:var(--ds-ink-2);margin:0 0 22px}.stage{background:var(--pn-bg);color:var(--pn-ink);border-radius:6px;padding:8px 8px 0}.graph{width:100%;height:auto;max-height:78vh;display:block}.edge{stroke:var(--pn-edge);stroke-width:1px;transition:stroke .2s,opacity .2s;animation:.9s ease-out backwards draw}.edge.hot{stroke:var(--pn-teal-dim);stroke-width:2px}.edge{stroke-width:1.5px}.edge.dim{opacity:.15}@keyframes draw{0%{opacity:0}}.graph.tall .lbl{stroke-width:5px;font-size:17px}.node{cursor:pointer;outline:none;transition:opacity .2s}.node.dim{opacity:.2}.node .hit{fill:#0000}.node .dot{fill:var(--pn-ink);transition:fill .2s,stroke .2s}.node.skill .dot{fill:var(--pn-node)}.node.project .dot{fill:var(--pn-headline);stroke:var(--pn-teal-dim);stroke-width:1.5px}.node.work .dot{fill:var(--pn-ink);stroke:var(--pn-node);stroke-width:1.5px}.node.learning .dot{fill:none;stroke:var(--pn-node);stroke-dasharray:2 3;stroke-width:1.5px}.node .ring{fill:none;stroke:var(--pn-teal-dim);stroke-opacity:.35}.node.work .ring{stroke:var(--pn-ink)}.node:hover .dot,.node:focus-visible .dot,.node.sel .dot{fill:var(--pn-headline);stroke:var(--pn-teal-dim);stroke-width:2.5px;filter:drop-shadow(0 2px 6px #73a89a73)}.node.sel .dot{stroke:var(--pn-teal-dim);stroke-width:3px}.node-icon{pointer-events:none}.node:focus-visible .ring{stroke-opacity:1;stroke-width:2px}.lbl{fill:var(--pn-ink);pointer-events:none;paint-order:stroke;stroke:var(--pn-bg);stroke-width:4px;font-size:13px;font-weight:600}.node.skill .lbl{fill:var(--pn-ink-2);font-size:12px;font-weight:400}.console{border-top:1px solid var(--pn-line);gap:4px;margin:4px 0 0;padding:12px 8px 14px;font-size:13px;display:grid}.console code{color:var(--pn-teal);word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console .hint{color:var(--pn-ink-3);min-height:20px}.legend{color:var(--ds-ink-2);flex-wrap:wrap;gap:16px;margin:10px 0 0;font-size:12px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.k{background:var(--pn-node);border-radius:50%;width:10px;height:10px;display:inline-block}.k.project{background:var(--pn-teal-dim)}.k.work{background:var(--pn-ink)}.k.learning{border:1.5px dashed var(--pn-node);box-sizing:border-box;background:0 0}.actions{flex-wrap:wrap;gap:12px;margin:16px 0 0;display:flex}.actions+.more{margin-top:14px}.btn{font:inherit;cursor:pointer;border:1px solid var(--ds-ink);min-height:44px;color:var(--ds-ink);background:0 0;border-radius:4px;justify-content:center;align-items:center;padding:0 20px;font-weight:600;text-decoration:none;display:inline-flex}.btn[data-primary=true]{background:var(--ds-ink);color:var(--ds-page)}.btn.ghost{border-color:var(--ds-hairline);color:var(--ds-ink-2)}.section{padding:40px 0 8px;scroll-margin-top:76px}.section h2,.section h3{font-family:var(--ds-font-display,inherit);letter-spacing:-.025em;margin:0 0 6px;font-weight:400}.section h2{font-size:32px}.sub{color:var(--ds-ink-2);margin:0 0 20px}.card{border:1px solid var(--ds-ink);background:var(--ds-page);border-radius:6px;margin:0 0 28px;scroll-margin-top:80px;transition:opacity .25s;overflow:hidden}.card.dim{opacity:.35}.shot{object-fit:cover;object-position:top left;background:var(--ds-raised);width:100%;height:260px;display:block}.shot.square{object-fit:contain;box-sizing:border-box;height:300px;padding:12px}.diagram{box-sizing:border-box;background:var(--ds-raised);flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;height:260px;padding:16px;display:flex}.diagram span{background:var(--ds-page);border:1px solid var(--ds-ink);border-radius:4px;padding:12px 16px;font-weight:600}.diagram i{color:var(--ds-teal-strong);font-size:22px;font-style:normal;font-weight:600}.body{padding:20px}.body h3{margin:0 0 8px;font-size:24px}.body p{margin:0 0 12px}.num{color:var(--ds-teal-strong);letter-spacing:.08em;font-size:12px;font-weight:600}.tags{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--ds-hairline);border-radius:3px;padding:3px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:20px}.note{color:var(--ds-ink-2);margin:12px 0 0;font-size:13px;line-height:20px}.action-note{align-self:center;max-width:260px;margin:0}.work{gap:8px;display:grid}.work p{margin:0}@media (width>=768px){.card{grid-template-columns:1fr 1fr;display:grid}.card:not(.open) .shot,.card:not(.open) .diagram{height:100%;min-height:320px}.card.open .shot,.card.open .diagram{object-fit:contain;object-position:top left;align-self:start;height:auto;min-height:0;max-height:380px}.card.open .shot.square{object-position:center}.card.open .diagram{height:260px}.work{grid-template-columns:1fr 1.6fr;gap:32px}}.node .num{fill:var(--pn-bg);letter-spacing:0;pointer-events:none;font-size:12px;font-weight:700}.node.work .num{fill:var(--pn-bg)}.card-badge{align-items:center;gap:10px;margin:0 0 12px;display:inline-flex}.card-badge-ico{background:var(--ds-raised);border:1px solid var(--ds-hairline);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s;display:inline-flex;box-shadow:0 1px 3px #0000000f}.card:hover .card-badge-ico{transform:scale(1.08)rotate(-3deg);box-shadow:0 4px 12px #0000001a}.card-badge-ico svg{display:block}.card-badge-era{color:var(--ds-teal-strong);letter-spacing:.02em;background:#73a89a1a;border:1px solid #73a89a40;border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.num2{color:var(--ds-teal-strong);letter-spacing:.08em;font-size:12px;font-weight:600;margin:0 0 6px!important}.num2 span{color:var(--ds-ink-2);letter-spacing:0;margin-left:8px;font-weight:400}.progress{background:var(--ds-teal);transform-origin:0;z-index:50;width:100%;height:3px;position:fixed;top:0;left:0;transform:scaleX(0)}.hero{position:relative}.hero:before{content:"";width:260px;height:260px;transform:translate(calc(var(--mx,0) * 40px), calc(var(--my,0) * 40px));pointer-events:none;z-index:-1;background:radial-gradient(circle,#73a89a59,#0000 70%);border-radius:50%;transition:transform .3s ease-out;position:absolute;top:10px;right:-40px}.ch{animation:.6s cubic-bezier(.2,.8,.2,1) backwards rise;display:inline-block}@keyframes rise{0%{opacity:0;transform:translateY(.5em)rotate(4deg)}}.hero h1{transform:translate(calc(var(--mx,0) * -8px), calc(var(--my,0) * -5px));transition:transform .25s ease-out}.stats{gap:28px;margin:0 0 20px;display:flex}.stat b{font-size:34px;font-weight:400;font-family:var(--ds-font-display,inherit);line-height:1;display:block}.stat span{color:var(--ds-ink-2);text-transform:uppercase;letter-spacing:.06em;font-size:12px}.stage{position:relative;overflow:hidden}.stage:after{content:"";left:var(--px,-200px);top:var(--py,-200px);pointer-events:none;background:radial-gradient(circle,#9fd1c329,#0000 65%);width:220px;height:220px;margin:-110px 0 0 -110px;position:absolute}.graph{touch-action:pan-y}.ripple{fill:none;stroke:var(--pn-teal);stroke-width:2px;pointer-events:none;animation:.9s ease-out forwards rip}@keyframes rip{to{r:70px;opacity:0}}.edge.hot{stroke-dasharray:6 4;animation:.8s linear infinite flow}@keyframes flow{to{stroke-dashoffset:-20px}}.js .rv{opacity:0;transition:opacity .6s,transform .6s cubic-bezier(.2,.8,.2,1);transform:translateY(22px)}.js .rv.in{opacity:1;transform:none}.card{transform:perspective(900px) rotateX(var(--rx,0)) rotateY(var(--ry,0));position:relative}.card.rv.in{transition:opacity .25s,transform .15s ease-out}.card:after,.fitrow:after{content:"";pointer-events:none;background:radial-gradient(circle at var(--gx,50%) var(--gy,50%), #73a89a1f, transparent 45%);opacity:0;transition:opacity .2s;position:absolute;inset:0}.card:hover:after,.fitrow:hover:after{opacity:1}.card.open{box-shadow:0 0 0 1px #73a89a80,0 14px 34px #00000080,0 3px 10px #0006}.more{font:inherit;cursor:pointer;border:1px solid var(--ds-ink);min-height:44px;color:var(--ds-ink);background:0 0;border-radius:4px;align-items:center;gap:10px;padding:0 16px;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.more i{border-bottom:2px solid;border-right:2px solid;width:8px;height:8px;transition:transform .3s;transform:rotate(45deg)translateY(-2px)}.more[aria-expanded=true] i{transform:rotate(225deg)}.burst{background:var(--ds-teal);opacity:.5;pointer-events:none;border-radius:50%;width:10px;height:10px;margin:-5px;animation:.6s ease-out forwards burst;position:absolute}@keyframes burst{to{opacity:0;transform:scale(14)}}.detail{grid-template-rows:0fr;transition:grid-template-rows .4s;display:grid}.detail[data-open=true]{grid-template-rows:1fr}.detail>div{overflow:hidden}.detail[data-open=true]>div{padding-top:16px}.plain{margin:0 0 12px;padding-left:20px}.plain li{margin:0 0 8px}.edu{gap:20px;margin-bottom:20px;display:grid}.edu h3,.work h3{font-size:22px}.sh{font-size:18px;margin:8px 0 10px!important}.contact{padding-bottom:40px}.contact p{margin:0 0 4px}@media (width>=640px){.work,.edu{grid-template-columns:1fr 2fr;gap:28px}.edu{grid-template-columns:1fr 1fr}}.graph.tall .lbl{font-size:14.5px}.graph.tall .node.skill .lbl{font-size:13.5px}.plain{list-style:outside}.plain li::marker{color:var(--ds-teal-strong)}.card{transform:none}@media (hover:hover) and (pointer:fine){.card:hover{transform:perspective(900px) rotateX(var(--rx,0)) rotateY(var(--ry,0))}}.detail{grid-template-rows:none;animation:.35s ease-out reveal;display:block}.detail[hidden]{display:none}.detail>:first-child{margin-top:16px}.detail>div{padding-top:0;overflow:visible}@keyframes reveal{0%{transform:translateY(-6px)}}.mini{font-family:var(--ds-font-display,inherit);letter-spacing:-.02em;margin:0 0 10px;font-size:20px;font-weight:400}.profile{border:1px solid var(--ds-hairline);border-radius:6px;gap:24px;margin:4px 0 22px;padding:20px;display:grid}.profile .plain{margin:0}.deg{gap:14px;margin:0;padding:0;list-style:none;display:grid}.deg li{align-items:flex-start;gap:12px;display:flex}.deg b{font-weight:600;display:block}.deg span{color:var(--ds-ink-2);font-size:14px}.ico{box-sizing:border-box;background:var(--ds-teal-strong);width:34px;height:34px;fill:var(--ds-on-accent);border-radius:50%;flex:none;padding:6px;transition:transform .3s}.deg li:hover .ico{transform:rotate(-8deg)scale(1.1)}.steps{gap:4px;margin:0 0 18px;padding:0;list-style:none;display:grid}.step{border:1px solid var(--ds-ink);background:var(--ds-page);animation:.6s cubic-bezier(.2,.8,.2,1) backwards stepin;animation-delay:calc(var(--i,0) * .12s);border-radius:6px;padding:16px 18px}.step h3{margin:4px 0 6px;font-size:20px}.step p{margin:0}.k2{color:var(--ds-teal-strong);letter-spacing:.08em;font-size:12px;font-weight:600}.link{color:var(--ds-teal-strong);justify-content:center;display:flex}.arr svg{stroke:currentColor;width:40px;height:16px;display:block;transform:rotate(90deg)}@keyframes stepin{0%{opacity:0;transform:translate(-16px)}}.arr svg path{stroke-dasharray:60;animation:1.2s ease-out .3s backwards drawarrow}@keyframes drawarrow{0%{stroke-dashoffset:60px}}@media (width>=760px){.profile{grid-template-columns:3fr 2fr}.steps{grid-template-columns:1fr auto 1fr auto 1fr;align-items:stretch;gap:0}.link{align-items:center;padding:0 8px}.arr svg{transform:none}}.journey{max-width:640px;margin:8px 0 18px;padding:0;list-style:none;display:block}.jstage{border:1px solid var(--ds-ink);background:var(--ds-page);border-radius:6px;padding:18px 20px;transition:border-color 1s,box-shadow 1.2s;position:relative;overflow:hidden}.jstage.lit{border-color:var(--ds-teal);box-shadow:0 0 0 3px #73a89a47,0 0 34px 6px #73a89a59}.jstage h3{margin:4px 0 8px;font-size:22px}.jstage p{margin:0}.chips{flex-wrap:wrap;gap:8px;margin:0 0 14px;display:flex}.chip{border:1px solid var(--ds-teal);color:var(--ds-ink);background:var(--ds-page);border-radius:3px;padding:3px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:20px}.chip.carried{border-style:dashed;border-color:var(--ds-hairline);color:var(--ds-ink-2)}.journey.live .jstage:not(.go):not(.done) .chip:not(.carried){opacity:.6}.journey.live .jstage.go .chip:not(.carried){animation:1.5s cubic-bezier(.22,.8,.2,1) both gather;animation-delay:calc(var(--n) * .32s)}@keyframes gather{0%{transform:translate(var(--dx), var(--dy)) scale(.65);opacity:.22}to{opacity:1;transform:none}}.track{height:104px;position:relative}.rail{background:var(--ds-hairline);width:2px;margin-left:-1px;position:absolute;top:0;bottom:14px;left:50%}.fill{background:linear-gradient(var(--ds-teal), var(--ds-teal));transform-origin:top;width:2px;margin-left:-1px;position:absolute;top:0;bottom:14px;left:50%;box-shadow:0 0 8px #73a89ab3}.journey.live .fill{transform:scaleY(0)}.journey.live .track.fly .fill{transition:transform 2s ease-in-out;transform:scaleY(1)}.star{pointer-events:none;opacity:0;background:radial-gradient(circle,#fffffff2 0%,#bee6dacc 12%,#73a89a66 34%,#73a89a00 70%);border-radius:50%;width:60px;height:60px;margin-left:-30px;display:none;position:absolute;top:-30px;left:50%}.journey.live .star{display:block}.journey.live .track.fly:not(.arrived) .star{animation:2s ease-in-out forwards flystar}@keyframes flystar{0%{opacity:0;top:-30px}12%{opacity:1}88%{opacity:1}to{opacity:0;top:calc(100% - 44px)}}.head{border-right:2px solid var(--ds-teal);border-bottom:2px solid var(--ds-teal);width:14px;height:14px;margin-left:-8px;position:absolute;bottom:0;left:50%;transform:rotate(45deg)scale(.7)}@media (width<=480px){.chip{--dx:calc(var(--dx))}}.plain a{color:var(--ds-ink);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--ds-teal);text-decoration-color:var(--ds-teal);font-weight:600}.contact .auth{color:var(--ds-ink-2);max-width:560px;margin-top:14px;font-size:14px}.hero{background:var(--pn-bg);color:var(--pn-ink);border-bottom:0;border-radius:8px;margin-top:8px;padding:clamp(28px,6vw,64px) clamp(20px,5vw,56px) clamp(24px,4vw,44px);overflow:hidden}.hero:before{background:radial-gradient(circle,#73a89a6b,#0000 68%);width:420px;height:420px;top:-60px;right:-90px}.hero .eyebrow{color:var(--pn-teal);text-transform:none;letter-spacing:.01em;margin-bottom:18px;font-size:15px;font-weight:500}.hero h1{letter-spacing:-.045em;color:var(--pn-headline);margin-bottom:26px;font-size:clamp(48px,13.5vw,128px);line-height:.92}.hero .role{color:var(--pn-ink-2);max-width:34em;margin-bottom:30px;font-size:clamp(17px,2.2vw,21px);line-height:1.55}.hero .profile{border:0;border-top:1px solid var(--pn-line);border-radius:0;margin:0 0 24px;padding:26px 0 0}.hero .mini{color:var(--pn-headline)}.hero .plain li,.hero .plain{color:var(--pn-ink)}.hero .profile p,.hero .profile span{color:var(--pn-ink-3)}.hero .profile b{color:var(--pn-headline)}.hero .btn{border-color:var(--pn-ink);color:var(--pn-ink);background:0 0}.hero .btn[data-primary=true]{background:var(--pn-teal);border-color:var(--pn-teal);color:var(--pn-on-accent)}.section{padding-top:clamp(56px,9vw,96px)}.section h2{letter-spacing:-.035em;margin-bottom:14px;font-size:clamp(38px,8.5vw,64px);line-height:1}.section>h2{background:linear-gradient(105deg, var(--ds-ink) 55%, var(--ds-teal-strong) 115%);color:#0000;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.sub{max-width:38em;font-size:clamp(16px,2vw,19px)}.tags li,.chip{border-radius:999px;padding:3px 12px;font-family:inherit;font-size:14px}.card{border-color:var(--ds-hairline)}.card.open{border-color:var(--ds-ink)}.jstage{border-color:var(--ds-hairline);border-radius:10px}.num,.k2,.num2{text-transform:none;letter-spacing:.01em;font-size:14px}.hero h1 .w{white-space:nowrap;display:inline-block}.hero h1 .w:not(:last-child){margin-right:.2em}.fx .hero{transform-origin:50% 0;scale:calc(1 - var(--hp,0) * .07);border-radius:calc(8px + var(--hp,0) * 36px);translate:0 calc(var(--hp,0) * 24px)}.fx .hero .profile,.fx .hero .actions{opacity:calc(1 - var(--hp,0) * .5)}.fx .card{translate:0 calc((1 - var(--cp,1)) * 48px);scale:calc(.94 + var(--cp,1) * .06);transform-origin:50% 100%}.fx .section>h2{scale:calc(.88 + var(--cp,1) * .12);transform-origin:0 100%;letter-spacing:calc(-.01em - var(--cp,1) * .02em)}.sw{transition:color .35s}.fx .scrub .sw{color:color-mix(in srgb, var(--ds-ink) 22%, transparent)}.fx .scrub .sw.lit{color:var(--ds-ink-2)}.card{border-radius:18px}.hero h1 .ch{text-shadow:0 0 36px #9fd1c338}.journey{max-width:680px;margin-left:auto;margin-right:auto}.card:not(.open) .shot.fig{object-fit:contain;object-position:center;box-sizing:border-box;align-self:center;width:100%;height:auto;min-height:0;max-height:none;padding:14px}.card.open .shot.fig{object-fit:contain;object-position:center;box-sizing:border-box;align-self:start;width:100%;height:auto;min-height:0;max-height:380px;padding:14px}.console{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;min-height:64px;display:flex}.console .cbtns{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-left:auto;display:flex}.console .btn{border-color:var(--pn-ink);color:var(--pn-ink);background:0 0;margin:0}.console .btn[data-primary=true]{background:var(--pn-teal);border-color:var(--pn-teal);color:var(--pn-on-accent)}.console .btn.ghost{border-color:var(--pn-edge);color:var(--pn-ink-2)}.section .grp{font-family:var(--ds-font-display,inherit);letter-spacing:-.02em;border-top:1px solid var(--ds-hairline);z-index:1;margin:0 0 36px;padding-top:28px;font-size:clamp(24px,4vw,34px);font-weight:400;position:relative}.mention-link{color:var(--ds-teal-strong);text-underline-offset:3px;cursor:pointer;font-weight:500;-webkit-text-decoration:underline #9fd1c373;text-decoration:underline #9fd1c373;transition:color .2s,text-decoration-color .2s}.mention-link:hover{color:var(--ds-ink);-webkit-text-decoration-color:var(--ds-teal-strong);text-decoration-color:var(--ds-teal-strong)}.hero .mention-link{color:var(--pn-teal);-webkit-text-decoration-color:color-mix(in srgb, var(--pn-teal) 55%, transparent);text-decoration-color:color-mix(in srgb, var(--pn-teal) 55%, transparent)}.hero .mention-link:hover{color:var(--pn-headline);-webkit-text-decoration-color:var(--pn-teal);text-decoration-color:var(--pn-teal)}.hero .inline-switch-btn,.hero .inline-project-link,.hero .where-link{color:var(--pn-teal)}.fit{gap:20px;margin-top:16px;display:grid}.fitrow{border:1px solid var(--ds-hairline);background:var(--ds-page);border-radius:14px;padding:22px 24px 18px;transition:border-color .25s,box-shadow .25s;position:relative;overflow:hidden}.fitrow:hover{border-color:var(--ds-teal);box-shadow:0 6px 24px #0000000a}.fitrow h3{color:var(--ds-ink);font-size:21px;font-weight:600;font-family:var(--ds-font-display,inherit);margin:0 0 8px}.fitrow .fdesc{color:var(--ds-ink-2);margin:0 0 14px;font-size:15px;line-height:1.5}.fitrow .plain{margin:0 0 14px}.fitrow .where{color:var(--ds-ink-2);border-top:1px solid var(--ds-hairline);margin:0;padding-top:12px;font-size:13.5px;line-height:1.4}.fitrow .where b{color:var(--ds-teal-strong);font-weight:600}@media (width>=820px){.fit{grid-template-columns:1fr 1fr}}.exp-grid{gap:20px;margin-top:28px;display:grid}@media (width>=680px){.exp-grid{grid-template-columns:1fr 1fr}}.exp-card{border:1px solid var(--ds-hairline);background:var(--ds-page);border-radius:14px;padding:20px 22px;transition:border-color .25s,box-shadow .25s}.exp-card:hover{border-color:var(--ds-teal);box-shadow:0 4px 20px #00000008}.exp-card h4{color:var(--ds-ink);font-size:19px;font-weight:600;font-family:var(--ds-font-display,inherit);margin:0 0 6px}.exp-card .meta{color:var(--ds-ink-2);margin:0 0 12px;font-size:13.5px}.exp-card .meta b{color:var(--ds-teal-strong);font-weight:600}.exp-card .plain{margin:0}.tags a:hover{color:var(--ds-teal-strong)}.cert-tags li{transition:border-color .2s,background .2s,transform .2s}.cert-tags li.has-link{cursor:pointer}.cert-tags li.has-link:hover{border-color:var(--ds-teal);background:#9fd1c314;transform:translateY(-1px)}.cert-link{color:inherit;text-decoration:none;display:inline-block}.cert-link:hover{color:var(--ds-teal-strong)}.cert-issuer{color:var(--ds-ink-2);margin-left:3px;font-weight:400}.cert-tags li.has-link:hover .cert-issuer{color:var(--ds-teal-strong)}.cert-subgroup{margin-top:36px}.cert-subhead h3{color:var(--ds-ink);font-size:clamp(22px,3.5vw,26px);font-weight:600;font-family:var(--ds-font-display,inherit);letter-spacing:-.015em;margin:0 0 6px}.cert-subhead .sub{color:var(--ds-ink-2);margin:0 0 16px;font-size:15px}.cert-preview-grid{grid-template-columns:1fr;gap:24px;display:grid}@media (width>=680px){.cert-preview-grid{grid-template-columns:repeat(2,1fr)}}.cert-preview-card{border:1px solid var(--ds-hairline);background:var(--ds-page);border-radius:16px;flex-direction:column;gap:14px;padding:16px;transition:border-color .25s,box-shadow .25s,transform .25s;display:flex}.cert-preview-card:hover{border-color:var(--ds-teal);transform:translateY(-2px);box-shadow:0 8px 24px #0000000d}.cert-img-wrap{aspect-ratio:805/680;background:#fff;border:1px solid #00000014;border-radius:10px;width:100%;text-decoration:none;display:block;position:relative;overflow:hidden;box-shadow:0 2px 10px #00000008}.cert-shot{object-fit:cover;object-position:center;width:100%;height:100%;transition:transform .3s;display:block}.cert-img-wrap:hover .cert-shot{transform:scale(1.025)}.cert-overlay{background:#1d181900;justify-content:center;align-items:center;transition:background .22s;display:flex;position:absolute;inset:0}.cert-img-wrap:hover .cert-overlay,.cert-img-wrap:focus-visible .cert-overlay{background:#1d181961}.cert-pill{color:#1d1819;opacity:0;background:#fff;border-radius:999px;padding:7px 18px;font-size:13px;font-weight:600;transition:opacity .22s,transform .22s;transform:translateY(6px);box-shadow:0 4px 16px #00000040}.cert-img-wrap:hover .cert-pill,.cert-img-wrap:focus-visible .cert-pill{opacity:1;transform:translateY(0)}.cert-card-body{flex-direction:column;flex:1;gap:10px;display:flex}.cert-card-body h4{color:var(--ds-ink);font-size:19px;font-weight:600;font-family:var(--ds-font-display,inherit);margin:0;line-height:1.3}.cert-card-desc{color:var(--ds-ink-2);margin:0;font-size:14px;line-height:1.5}.cert-card-skills{color:var(--ds-ink);border-top:1px solid var(--ds-hairline);margin-top:auto;padding-top:10px;font-size:13.5px;line-height:1.45}.cert-skills-label{color:var(--ds-teal-strong);margin-right:6px;font-weight:600}.cert-skills-list{color:var(--ds-ink-2)}.cert-card-actions{align-items:center;margin-top:4px;display:flex}.cert-link-btn{border:1.5px solid var(--ds-ink-2);color:var(--ds-ink);background:0 0;border-radius:999px;align-items:center;gap:6px;padding:7px 18px;font-size:13.5px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.cert-link-btn:hover{border-color:var(--ds-teal);color:var(--ds-teal);background:#9fd1c314;transform:translateY(-1px)}.cert-link-btn .arrow{transition:transform .2s}.cert-link-btn:hover .arrow{transform:translate(2px,-2px)}.inline-project-link,.where-link{color:var(--ds-teal-strong);text-underline-offset:3px;cursor:pointer;font-weight:500;-webkit-text-decoration:underline #9fd1c373;text-decoration:underline #9fd1c373;transition:color .15s,text-decoration-color .15s}.where-link{font-weight:600}.inline-project-link:hover,.where-link:hover{color:var(--ds-ink);-webkit-text-decoration-color:var(--ds-teal);text-decoration-color:var(--ds-teal)}.tag-link{color:inherit;cursor:pointer;text-decoration:none;transition:color .15s}.tags li:has(.tag-link){cursor:pointer;transition:border-color .2s,background .2s,transform .2s}.tags li:has(.tag-link):hover{border-color:var(--ds-teal);background:#9fd1c314;transform:translateY(-1px)}.tags li:has(.tag-link):hover .tag-link{color:var(--ds-teal)}.site-header-sticky{z-index:90;background:color-mix(in srgb, var(--ds-page) 92%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--ds-hairline);position:sticky;top:0;box-shadow:0 1px 12px #0000004d}.site-header-inner{max-width:1040px;padding:10px var(--file-pad-x);justify-content:space-between;align-items:center;gap:14px;margin:0 auto;display:flex}.site-brand{cursor:pointer;flex-shrink:0;align-items:center;gap:8px;text-decoration:none;display:flex}.site-brand-name{white-space:nowrap;font-family:var(--ds-font-display,inherit);letter-spacing:-.02em;color:var(--ds-ink);font-size:18px;font-weight:700}.site-brand-badge{white-space:nowrap;letter-spacing:.04em;color:var(--ds-teal-strong);background:#73a89a24;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:600}.profile-switcher{background:var(--ds-hover);border:1px solid var(--ds-hairline);border-radius:999px;align-items:center;padding:3px;display:inline-flex}.profile-tab{color:var(--ds-ink-2);font-size:13px;font-weight:500;font-family:var(--ds-font-text);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;transition:all .2s cubic-bezier(.2,.8,.2,1);display:inline-flex}.profile-tab:hover{color:var(--ds-ink)}.profile-tab.active{background:var(--ds-raised);color:var(--ds-ink);font-weight:600;box-shadow:0 2px 8px #0006}.profile-tab-icon{font-size:13px}.header-links{align-items:center;gap:12px;display:none}.header-nav-btn{font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.menu-wrap{position:relative}.menu-toggle{font:inherit;cursor:pointer;border:1px solid var(--ds-ink);min-height:40px;color:var(--ds-ink);background:0 0;border-radius:4px;align-items:center;gap:8px;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}.menu-toggle i{border-bottom:2px solid;border-right:2px solid;width:7px;height:7px;transition:transform .25s;transform:rotate(45deg)translateY(-2px)}.menu-toggle[aria-expanded=true] i{transform:rotate(225deg)translateY(-1px)}.menu-panel{background:var(--ds-raised);border:1px solid var(--ds-hairline);z-index:99;border-radius:8px;gap:2px;min-width:210px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 8px 28px #00000080}.menu-item{box-sizing:border-box;text-align:left;width:100%;font:inherit;color:var(--ds-ink);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:10px 12px;font-size:14px;font-weight:500;text-decoration:none;display:block}.menu-item:hover{background:var(--ds-hover)}.menu-sep{background:var(--ds-hairline);height:1px;margin:6px 4px}@media (width>=760px){.header-links{display:flex}.menu-wrap{display:none}}.header-link-btn{white-space:nowrap;color:var(--ds-ink-2);font-size:13px;font-weight:500;text-decoration:none;transition:color .15s}.header-link-btn:hover{color:var(--ds-teal-strong)}.header-icon{justify-content:center;align-items:center;padding:2px;display:inline-flex}.profile-crosslink-banner{border:1px solid var(--ds-hairline);background:#73a89a12;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:18px 0 0;padding:12px 18px;display:flex}.profile-crosslink-banner p{color:var(--ds-ink-2);margin:0;font-size:14px}.profile-crosslink-banner b{color:var(--ds-ink)}.crosslink-btn{background:var(--ds-teal-strong);color:var(--ds-on-accent);cursor:pointer;white-space:nowrap;border:none;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:600;transition:all .2s;display:inline-flex}.crosslink-btn:hover{background:#b9e2d6;transform:translateY(-1px)}.inline-switch-btn{font:inherit;color:var(--ds-teal-strong);text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline;transition:color .15s}.inline-switch-btn:hover{color:var(--ds-ink)}::selection{background:color-mix(in srgb, var(--ds-teal) 32%, transparent);color:var(--ds-ink)}html{scrollbar-color:#73a89a73 #141011}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#141011}::-webkit-scrollbar-thumb{background:#73a89a66;border:2px solid #1a1517;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#73a89a99}[data-theme=light]{scrollbar-color:#4d837180 #f1ebec}[data-theme=light] ::-webkit-scrollbar-track{background:#f1ebec}[data-theme=light] ::-webkit-scrollbar-thumb{background:#4d837166;border-color:#faf7f5}[data-theme=light] ::-webkit-scrollbar-thumb:hover{background:#4d837199}.ctl-stack{right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));z-index:80;gap:10px;display:grid;position:fixed}.ctl-btn{border:1px solid var(--ds-hairline);background:var(--ds-raised);width:44px;height:44px;color:var(--ds-ink);cursor:pointer;box-shadow:var(--ds-elevation-1);border-radius:50%;justify-content:center;align-items:center;padding:0;transition:border-color .2s,color .2s,opacity .25s,translate .2s;display:inline-flex}.ctl-btn:hover{border-color:var(--ds-teal);color:var(--ds-teal-strong)}.ctl-btn:focus-visible{outline:2px solid var(--ds-teal);outline-offset:2px}.ctl-btn svg{fill:currentColor;width:20px;height:20px}.ctl-top{opacity:0;pointer-events:none;translate:0 8px}.ctl-top[data-show=true]{opacity:1;pointer-events:auto;translate:0}[data-theme=light] .hero,[data-theme=light] .stage{border:1px solid var(--pn-line);box-shadow:var(--ds-elevation-1)}[data-theme=light] .hero h1{background:linear-gradient(105deg, var(--pn-headline) 25%, var(--pn-teal) 70%, #2f6b8f 115%);-webkit-background-clip:text;background-clip:text}[data-theme=light] .hero h1 .ch{text-shadow:none;color:#0000!important;-webkit-text-fill-color:transparent!important}[data-theme=light] .star{color:var(--pn-teal-dim);background:radial-gradient(circle,#35705fe6 0%,#4d8371a6 12%,#4d83714d 34%,#4d837100 70%)}.skill-search{flex-wrap:wrap;align-items:center;gap:12px;margin:18px 0 14px;display:flex}.skill-search input{font:inherit;color:var(--ds-ink);background:var(--ds-raised);border:1px solid var(--ds-hairline);border-radius:999px;outline:none;min-width:min(320px,100%);padding:10px 18px;font-size:15px;transition:border-color .2s,box-shadow .2s}.skill-search input::placeholder{color:var(--ds-ink-3)}.skill-search input:focus{border-color:var(--ds-teal);box-shadow:0 0 0 3px #73a89a47}.skill-search-count{color:var(--ds-teal-strong);font-size:13px;font-weight:600}.node.match .dot{fill:var(--pn-ink);stroke:var(--pn-teal);stroke-width:2.5px}.node.match .lbl{fill:var(--pn-headline)}.card-badge-metric{border:1px solid var(--ds-hairline);background:var(--ds-raised);color:var(--ds-ink-2);letter-spacing:.02em;border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.edge,.ch,.step,.arr svg path,.edge.hot,.ripple,.burst,.star,.journey.live .jstage.go .chip:not(.carried),.fill{animation:none!important}.journey.live .fill{transform:scaleY(1)}.js .rv{opacity:1!important;transition:none!important;transform:none!important}.detail{transition:none!important}.hero:before,.stage:after,.card:after,.fitrow:after{display:none}.fx .hero,.fx .card,.fx .section>h2{translate:none!important;scale:none!important}.card,.hero h1,.card-badge-ico,.ico,.cert-preview-card,.cert-shot,.cert-pill,.cert-link-btn,.crosslink-btn,.fitrow,.exp-card,.tags li,.cert-tags li{transition-property:color,background-color,border-color,box-shadow,opacity!important;transform:none!important}.more i,.menu-toggle i,.ctl-btn{transition:none!important}}.profile-note{border:1px solid var(--ds-hairline);background:var(--ds-page);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;margin:24px 0 0;padding:22px 24px;display:flex}.profile-note p{max-width:640px;color:var(--ds-ink-2);margin:0;font-size:15px;line-height:1.5}.profile-note .btn{flex-shrink:0;min-height:40px}@media (width<=759px){.profile-note{flex-direction:column;align-items:flex-start}}
