:root{--sky-1: #0a52c4;--sky-2: #0f74dd;--sky-3: #2196f3;--sky-4: #4fc3f7;--sky-5: #8ee0fb;--sky-6: #c9f2ff;--water-1: #7ee8e0;--water-2: #2fc4d8;--water-3: #109dc4;--water-deep: #0a6ea8;--leaf: #5cc95c;--leaf-deep: #2e9e3f;--aqua: #7fffd4;--aqua-deep: #06a58a;--sun: #fff8d4;--win-body-top: rgba(255, 255, 255, .95);--win-body-bottom: rgba(232, 247, 255, .9);--win-bar-top: #d6efff;--win-bar-bottom: #8ecff2;--win-border: rgba(255, 255, 255, .95);--ink: #062338;--ink-soft: #114a70;--ink-mute: #4a7b9c;--radius: 16px;--radius-pill: 999px;--shell: 1120px;--measure: 78ch;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;font-size:17px}body{margin:0;min-height:100dvh;font-family:Segoe UI,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:var(--sky-3);overflow-x:hidden;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;line-height:1.15;letter-spacing:-.012em}p{margin:0}a{color:inherit}.sky-stack{position:fixed;inset:0;z-index:-20;pointer-events:none;overflow:hidden}.sky-grad{position:absolute;inset:0;background:radial-gradient(60vmax 42vmax at 86% 4%,rgba(255,246,214,.55) 0%,transparent 58%),linear-gradient(180deg,#0b4fc6,#1274dd 15%,#2e9bef 32%,#56bcf6 50%,#86d6fa 66%,#b4e8fc 80%,#dcf6ff 92%,#eafbff)}.sky-haze{position:absolute;left:0;right:0;bottom:0;height:34vh;background:linear-gradient(180deg,transparent 0%,rgba(255,255,255,.1) 55%,rgba(255,255,255,.26) 100%)}.cloud-band{position:absolute;left:0;width:200%;animation-name:cloud-drift;animation-timing-function:linear;animation-iteration-count:infinite;will-change:transform}.cloud-band svg{display:block;width:100%;height:100%}@keyframes cloud-drift{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.sun{position:absolute;top:2.5vh;right:5vw;width:19vmin;height:19vmin;animation:sun-pulse 11s ease-in-out infinite}@keyframes sun-pulse{0%,to{transform:scale(1);opacity:.95}50%{transform:scale(1.04);opacity:1}}.sun span{position:absolute;border-radius:50%;display:block}.sun__core{inset:24%;background:radial-gradient(circle,#fff,#fffdf2 46%,#fff8d6bf);filter:blur(1.5px)}.sun__bloom--mid{inset:-38%;background:radial-gradient(circle,rgba(255,253,240,1) 0%,rgba(255,246,205,.68) 24%,rgba(255,236,170,.24) 44%,transparent 62%);filter:blur(4px)}.sun__bloom--wide{inset:-140%;background:radial-gradient(circle,rgba(255,250,225,.32) 0%,rgba(200,232,255,.14) 30%,transparent 58%);filter:blur(14px)}.sun__spikes{inset:-280%;border-radius:0;background:conic-gradient(from 0deg,transparent 0deg,rgba(255,255,255,.55) 1deg,transparent 3deg,transparent 16deg,rgba(255,255,255,.28) 17deg,transparent 18.5deg,transparent 42deg,rgba(255,255,255,.4) 43.5deg,transparent 45.5deg,transparent 66deg,rgba(255,255,255,.2) 67deg,transparent 68deg,transparent 88deg,rgba(255,255,255,.6) 90deg,transparent 92deg,transparent 112deg,rgba(255,255,255,.22) 113deg,transparent 114deg,transparent 133deg,rgba(255,255,255,.35) 135deg,transparent 137deg,transparent 160deg,rgba(255,255,255,.25) 161deg,transparent 162deg,transparent 178deg,rgba(255,255,255,.5) 180deg,transparent 182deg,transparent 200deg,rgba(255,255,255,.24) 201deg,transparent 202deg,transparent 223deg,rgba(255,255,255,.38) 225deg,transparent 227deg,transparent 250deg,rgba(255,255,255,.2) 251deg,transparent 252deg,transparent 268deg,rgba(255,255,255,.55) 270deg,transparent 272deg,transparent 292deg,rgba(255,255,255,.22) 293deg,transparent 294deg,transparent 313deg,rgba(255,255,255,.36) 315deg,transparent 317deg,transparent 340deg,rgba(255,255,255,.26) 341deg,transparent 342deg,transparent 360deg);-webkit-mask-image:radial-gradient(circle,#000 4%,rgba(0,0,0,.5) 22%,transparent 52%);mask-image:radial-gradient(circle,#000 4%,rgba(0,0,0,.5) 22%,transparent 52%);filter:blur(1.2px);animation:spin-slow 90s linear infinite}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sun__streak{top:50%;left:-320%;width:740%;height:3.5%;border-radius:50%;transform:translateY(-50%);background:linear-gradient(90deg,transparent,rgba(190,225,255,.32) 26%,rgba(255,252,235,.75) 50%,rgba(190,225,255,.32) 74%,transparent);filter:blur(4px);animation:streak-breathe 8s ease-in-out infinite}@keyframes streak-breathe{0%,to{opacity:.55;transform:translateY(-50%) scaleX(1)}50%{opacity:.9;transform:translateY(-50%) scaleX(1.12)}}.flare{position:absolute;border-radius:50%;mix-blend-mode:screen;animation:flare-breathe 12s ease-in-out infinite}.flare--a{top:24vh;right:27vw;width:84px;height:84px;background:radial-gradient(circle,rgba(255,240,180,.4),transparent 68%)}.flare--b{top:40vh;right:43vw;width:150px;height:150px;background:radial-gradient(circle,rgba(160,255,235,.26),transparent 68%);animation-delay:-3s}.flare--c{top:56vh;right:59vw;width:58px;height:58px;background:radial-gradient(circle,rgba(255,255,255,.5),transparent 66%);animation-delay:-6s}.flare--d{top:68vh;right:71vw;width:108px;height:108px;background:radial-gradient(circle,rgba(190,200,255,.22),transparent 70%);animation-delay:-9s}@keyframes flare-breathe{0%,to{opacity:.45;transform:scale(1)}50%{opacity:.85;transform:scale(1.16)}}.birds{position:absolute;width:120px;height:40px;animation:bird-cross linear infinite;will-change:transform}.birds--1{top:15vh;animation-duration:78s}.birds--2{top:27vh;animation-duration:112s;animation-delay:-40s;transform:scale(.7)}@keyframes bird-cross{0%{transform:translate(-14vw) translateY(0)}50%{transform:translate(50vw) translateY(-2vh)}to{transform:translate(114vw) translateY(1vh)}}.water{position:fixed;left:0;right:0;bottom:0;height:42vh;z-index:-14;pointer-events:none;overflow:hidden}.water__svg{display:block;width:100%;height:100%}.water:after{content:"";position:absolute;top:0;left:0;right:0;height:12%;background:linear-gradient(180deg,var(--sky-6),transparent);opacity:.75}.foliage{position:fixed;bottom:0;z-index:-13;pointer-events:none;width:42vmin;height:36vmin}.foliage--left{left:0}.foliage--right{right:0;transform:scaleX(-1)}.leaf{position:absolute;transform-origin:50% 100%;animation-name:sway;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;will-change:transform}.leaf img{display:block;width:100%;height:auto;transform-origin:50% 100%;filter:drop-shadow(0 6px 12px rgba(3,54,31,.34))}@keyframes sway{0%{transform:rotate(-2deg)}to{transform:rotate(2.2deg)}}.drops{position:fixed;inset:0;z-index:40;pointer-events:none;overflow:hidden}.drop{position:absolute;border-radius:52% 48% 46% 54%/56% 54% 46% 44%;background:radial-gradient(circle at 30% 24%,rgba(255,255,255,.85) 0%,rgba(255,255,255,.35) 9%,transparent 22%),radial-gradient(circle at 62% 74%,rgba(255,255,255,.3) 0%,transparent 26%);backdrop-filter:blur(.4px) brightness(1.06) saturate(1.3) contrast(1.05);-webkit-backdrop-filter:blur(.4px) brightness(1.06) saturate(1.3) contrast(1.05);box-shadow:inset .5px 1px 2px #fff9,inset -1px -1.5px 3px #00466e66,0 1px 2px #002d5047;opacity:.75;animation:drop-shimmer 7s ease-in-out infinite}@keyframes drop-shimmer{0%,to{opacity:.62}50%{opacity:.85}}.drop--run{top:0;animation-name:drop-run;animation-timing-function:cubic-bezier(.45,0,.85,.35);animation-iteration-count:infinite}.drop--run:before{content:"";position:absolute;left:50%;bottom:55%;transform:translate(-50%);width:44%;height:26vh;border-radius:50%;background:linear-gradient(180deg,transparent,rgba(255,255,255,.16) 70%,rgba(255,255,255,.3))}@keyframes drop-run{0%{transform:translateY(-14vh);opacity:0}7%{opacity:1}93%{opacity:1}to{transform:translateY(114vh);opacity:0}}.bubbles{position:fixed;inset:0;z-index:-12;pointer-events:none;overflow:hidden}.bubble{position:absolute;bottom:-20vh;border-radius:50%;background:radial-gradient(circle at 30% 26%,rgba(255,255,255,1) 0%,rgba(255,255,255,.55) 12%,transparent 30%),radial-gradient(circle at 72% 74%,rgba(255,255,255,.6) 0%,transparent 22%),radial-gradient(circle at 50% 50%,rgba(190,245,255,.28) 0%,rgba(120,220,255,.16) 60%,transparent 74%);box-shadow:inset 0 0 22px #ffffffbf,inset -6px -8px 18px #78d7ff80,0 0 18px #fff6;border:1px solid rgba(255,255,255,.8);animation-name:bubble-rise;animation-timing-function:linear;animation-iteration-count:infinite;will-change:transform,opacity}.bubble:after{content:"";position:absolute;inset:6%;border-radius:50%;background:conic-gradient(from 200deg,#ffb4dc38,#b4dcff38,#b4ffe138,#fff5b438,#ffb4dc38);mix-blend-mode:screen;opacity:.75}@keyframes bubble-rise{0%{transform:translateZ(0) scale(.7);opacity:0}9%{opacity:.9}50%{transform:translate3d(3vw,-62vh,0) scale(1);opacity:.8}to{transform:translate3d(-2vw,-132vh,0) scale(1.12);opacity:0}}.win{position:relative;border-radius:var(--radius);border:1px solid var(--win-border);background:linear-gradient(180deg,var(--win-body-top),var(--win-body-bottom));backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);box-shadow:0 26px 60px -18px #03305c8c,0 4px 12px -4px #03305c4d,inset 0 1px #fff;overflow:hidden}.win__bar{display:flex;align-items:center;gap:.6rem;padding:.5rem .8rem;background:linear-gradient(180deg,var(--win-bar-top) 0%,#b3e0f8 48%,var(--win-bar-bottom) 52%,#a2d6f5 100%);border-bottom:1px solid rgba(255,255,255,.9);box-shadow:inset 0 1px #fff,0 1px 2px #0a467824}.win__icon{width:15px;height:15px;border-radius:4px;background:linear-gradient(180deg,#fff,var(--aqua) 60%,var(--aqua-deep));box-shadow:inset 0 1px #fff,0 1px 2px #06504266;flex:none}.win__title{font-size:.82rem;font-weight:700;color:#0e4a70;letter-spacing:.01em;text-shadow:0 1px 0 rgba(255,255,255,.9)}.win__controls{margin-left:auto;display:flex;gap:.3rem}.win__ctl{width:20px;height:16px;border-radius:4px;border:1px solid rgba(255,255,255,.85);background:linear-gradient(180deg,#fffffff2,#d6efffbf);box-shadow:inset 0 1px #fff,0 1px 2px #0a467833;display:grid;place-items:center;font-size:9px;color:#2b6a92;line-height:1}.win__ctl--close{background:linear-gradient(180deg,#ffd9d3,#f69c8e);border-color:#fffc;color:#7a2418}.win__body{padding:clamp(1.1rem,2.6vw,1.7rem)}.btn{display:inline-flex;align-items:center;gap:.5em;padding:.8em 1.6em;border-radius:var(--radius-pill);font-size:.95rem;font-weight:700;text-decoration:none;color:#073b5e;background:linear-gradient(180deg,#fff,#d3efff 46%,#93d3f7 50%,#bfe8ff);border:1px solid rgba(255,255,255,.95);box-shadow:0 6px 16px -4px #063c6473,inset 0 1px #fff,inset 0 -3px 7px #6ebeeb99;transition:transform .18s ease,filter .18s ease}.btn:hover{transform:translateY(-2px);filter:brightness(1.06)}.btn:active{transform:translateY(0)}.btn--aqua{color:#033f34;background:linear-gradient(180deg,#fff,#c4fff0 46%,#6fecd0 50%,#a8ffe8);box-shadow:0 6px 16px -4px #0450426b,inset 0 1px #fff,inset 0 -3px 7px #50d7b999}.pill{display:inline-flex;align-items:center;padding:.3em .8em;border-radius:var(--radius-pill);font-size:.76rem;font-weight:600;color:#124f77;background:linear-gradient(180deg,#fff,#dceffb);border:1px solid rgba(255,255,255,.95);box-shadow:inset 0 1px #fff,0 1px 3px #0a467838;white-space:nowrap}.js-reveal .reveal{opacity:0;transform:translateY(18px) scale(.995);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1)}.js-reveal .reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.sun,.sun__spikes,.sun__streak,.flare,.cloud-band,.birds,.leaf,.bubble,.drop{animation:none!important}.drops,.birds,.bubbles,.clouds{display:none}.reveal{opacity:1;transform:none;transition:none}}@media print{.sky-stack,.water,.bubbles,.foliage,.drops,.no-print{display:none!important}body{background:#fff;color:#000;font-size:11pt}.win{background:#fff;backdrop-filter:none;border:0;box-shadow:none;border-radius:0;break-inside:avoid}.win__bar{background:none;border-bottom:1px solid #999;padding-left:0}.win__controls,.win__icon{display:none}.reveal{opacity:1;transform:none}}.to-pro{position:fixed;top:1rem;left:1rem;z-index:45;display:inline-flex;align-items:center;padding:.5em 1em;font-size:.82rem;font-weight:700;text-decoration:none;color:#06334f;border-radius:var(--radius-pill);background:linear-gradient(180deg,#fffffff5,#d6efffdb);border:1px solid rgba(255,255,255,.95);box-shadow:0 4px 12px -2px #063c6466,inset 0 1px #fff;backdrop-filter:blur(8px);transition:transform .18s ease,filter .18s ease}.to-pro:hover{transform:translateY(-1px);filter:brightness(1.05)}.to-pro:active{transform:translateY(0);filter:brightness(.98)}@media (max-width: 860px){.to-pro{top:auto;left:.75rem;bottom:.75rem;padding:.5em .95em;font-size:.78rem;color:#f2fbff;text-shadow:0 1px 2px rgba(2,22,38,.55);background:linear-gradient(180deg,#185680ed,#0c3a5eed 49.9%,#062640f2 50%,#0e4064ed);border-color:#a8e2fa8c;box-shadow:0 10px 24px -8px #021a2dcc,0 0 0 1px #021a2d59,0 0 14px #7ecdf059,inset 0 1px #ffffff61}}.shell[data-astro-cid-enmio7ql]{max-width:var(--shell);margin:0 auto;padding:clamp(1rem,3vw,2.5rem) clamp(.85rem,3vw,2rem) 5rem;display:flex;flex-direction:column;gap:clamp(1.5rem,3vw,2.25rem)}.hero[data-astro-cid-enmio7ql]{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(240px,1fr);gap:clamp(1rem,2vw,1.5rem);align-items:start;margin-top:clamp(.5rem,4vh,2.5rem)}.hero__side[data-astro-cid-enmio7ql]{display:flex;flex-direction:column;gap:clamp(1rem,2vw,1.5rem)}@media (max-width: 860px){.hero[data-astro-cid-enmio7ql]{grid-template-columns:1fr}}.eyebrow[data-astro-cid-enmio7ql]{font-size:.78rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-mute)}.hero[data-astro-cid-enmio7ql] h1[data-astro-cid-enmio7ql]{font-size:clamp(2.5rem,7.5vw,4.2rem);font-weight:800;color:var(--ink);margin:.3rem 0 .15rem;text-shadow:0 1px 0 rgba(255,255,255,.95)}.role[data-astro-cid-enmio7ql]{font-size:clamp(1.05rem,2.4vw,1.3rem);font-weight:700;color:var(--aqua-deep)}.lede[data-astro-cid-enmio7ql]{max-width:var(--measure);margin-top:1.1rem;font-size:1rem;line-height:1.65;color:var(--ink-soft)}.actions[data-astro-cid-enmio7ql]{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.5rem}.status[data-astro-cid-enmio7ql]{display:flex;align-items:center;gap:.55rem;font-size:1.05rem;font-weight:800;color:var(--leaf-deep)}.led[data-astro-cid-enmio7ql]{width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d6ffd0,var(--leaf) 55%,var(--leaf-deep));box-shadow:0 0 0 4px #5cc95c47,0 0 8px #5cc95ce6}.status-note[data-astro-cid-enmio7ql]{margin-top:.6rem;font-size:.86rem;line-height:1.55;color:var(--ink-soft)}.quick[data-astro-cid-enmio7ql]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.45rem}.quick[data-astro-cid-enmio7ql] a[data-astro-cid-enmio7ql]{font-size:.88rem;font-weight:600;color:var(--ink-soft);text-underline-offset:3px}.quick[data-astro-cid-enmio7ql] a[data-astro-cid-enmio7ql]:hover{color:var(--aqua-deep)}.roles[data-astro-cid-enmio7ql]{display:flex;flex-direction:column;gap:1.6rem}.role-block[data-astro-cid-enmio7ql]+.role-block[data-astro-cid-enmio7ql]{border-top:1px solid rgba(120,180,215,.35);padding-top:1.5rem}.role-head[data-astro-cid-enmio7ql] h3[data-astro-cid-enmio7ql]{font-size:1.18rem;font-weight:800;color:var(--ink)}.place[data-astro-cid-enmio7ql]{margin-top:.18rem;font-size:.84rem;color:var(--ink-mute)}.positions[data-astro-cid-enmio7ql]{list-style:none;padding:0 0 0 .9rem;margin:.85rem 0 0;display:flex;flex-direction:column;gap:.5rem;border-left:2px solid var(--aqua)}.pos-row[data-astro-cid-enmio7ql]{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.pos-title[data-astro-cid-enmio7ql]{font-weight:700;font-size:.96rem;color:var(--ink)}.pos-dates[data-astro-cid-enmio7ql]{margin-left:auto;font-size:.84rem;color:var(--ink-mute);font-variant-numeric:tabular-nums}.pos-note[data-astro-cid-enmio7ql]{margin-top:.12rem;font-size:.81rem;font-style:italic;color:var(--ink-mute)}.pill--type[data-astro-cid-enmio7ql]{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em}.body[data-astro-cid-enmio7ql]{margin-top:.9rem;max-width:var(--measure);font-size:.93rem;line-height:1.62;color:var(--ink-soft)}.bullets[data-astro-cid-enmio7ql]{margin:.8rem 0 0;padding-left:1.1rem;max-width:var(--measure);display:flex;flex-direction:column;gap:.38rem;font-size:.92rem;line-height:1.58;color:var(--ink-soft)}.bullets[data-astro-cid-enmio7ql] li[data-astro-cid-enmio7ql]::marker{color:var(--aqua-deep)}.tags[data-astro-cid-enmio7ql]{list-style:none;display:flex;flex-wrap:wrap;gap:.34rem;padding:0;margin:.95rem 0 0}.tags--lg[data-astro-cid-enmio7ql]{margin-top:1rem}.proj-grid[data-astro-cid-enmio7ql]{display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:1.4rem}.proj-grid--tight[data-astro-cid-enmio7ql]{margin-top:1rem}.proj[data-astro-cid-enmio7ql] h3[data-astro-cid-enmio7ql]{font-size:1.05rem;font-weight:800;color:var(--ink)}.proj[data-astro-cid-enmio7ql] h3[data-astro-cid-enmio7ql] a[data-astro-cid-enmio7ql]{text-decoration:none}.proj[data-astro-cid-enmio7ql] h3[data-astro-cid-enmio7ql] a[data-astro-cid-enmio7ql]:hover{text-decoration:underline}.more[data-astro-cid-enmio7ql]{margin-top:1.6rem;border-top:1px solid rgba(120,180,215,.35);padding-top:1rem}.more[data-astro-cid-enmio7ql] summary[data-astro-cid-enmio7ql]{cursor:pointer;font-weight:700;color:var(--ink-soft)}.skills[data-astro-cid-enmio7ql]{margin:0;display:flex;flex-direction:column;gap:.8rem}.skill-row[data-astro-cid-enmio7ql]{display:grid;grid-template-columns:minmax(110px,160px) 1fr;gap:.7rem;align-items:start}.skill-row[data-astro-cid-enmio7ql] dt[data-astro-cid-enmio7ql]{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-mute);padding-top:.3rem}.skill-row[data-astro-cid-enmio7ql] dd[data-astro-cid-enmio7ql],.skill-row[data-astro-cid-enmio7ql] .tags[data-astro-cid-enmio7ql]{margin:0}@media (max-width: 620px){.skill-row[data-astro-cid-enmio7ql]{grid-template-columns:1fr;gap:.3rem}}.edu[data-astro-cid-enmio7ql]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.6rem}.edu[data-astro-cid-enmio7ql] li[data-astro-cid-enmio7ql]{display:flex;flex-wrap:wrap;align-items:baseline;gap:.45rem .7rem}.edu-degree[data-astro-cid-enmio7ql]{font-weight:700;color:var(--ink)}.edu-school[data-astro-cid-enmio7ql]{color:var(--ink-soft)}.edu-meta[data-astro-cid-enmio7ql]{margin-left:auto;font-size:.85rem;color:var(--ink-mute);font-variant-numeric:tabular-nums}.edu-note[data-astro-cid-enmio7ql]{margin-top:.9rem;font-size:.87rem;font-style:italic;line-height:1.55;color:var(--ink-mute)}.colophon[data-astro-cid-enmio7ql]{text-align:center;font-size:.8rem;font-weight:600;color:#06456b;text-shadow:0 1px 0 rgba(255,255,255,.7)}
