:root{--bg:#565651;--fg:#f4f4ee;--muted:#c9c9c0;--card:#4a4a46;--line:#6e6e68;--accent:#8DB2D9;--link:#ffd9a0}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font:17px/1.65 rubik,system-ui,-apple-system,segoe ui,sans-serif}a{color:var(--link)}main,.nav,footer{max-width:960px;margin:0 auto;padding-left:20px;padding-right:20px}.nav{display:flex;justify-content:space-between;align-items:center;padding-top:20px;padding-bottom:20px;flex-wrap:wrap;gap:8px}.nav nav a{margin-left:18px;color:var(--muted);text-decoration:none}.nav nav a:hover,.brand{color:var(--fg)}.brand{font-weight:700;text-decoration:none}section{padding:48px 0}.hero{border-top:0;padding:72px 0 56px}.eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-size:.8rem}h1{font-size:clamp(2.2rem,6vw,3.8rem);line-height:1.1;margin:.2em 0}h2{font-size:1.6rem;margin:0 0 1.2rem}h3{margin:0 0 .5rem;font-size:1.05rem}.accent{color:var(--link)}.lead{font-size:1.2rem;color:var(--muted);max-width:60ch}.chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.chips li{border:1px solid var(--line);border-radius:999px;padding:2px 12px;font-size:.88rem}.timeline{list-style:none;margin:0;padding:0 0 0 18px;border-left:2px solid var(--line)}.timeline li{margin-bottom:28px;position:relative}.timeline li::before{content:"";position:absolute;left:-25px;top:8px;width:10px;height:10px;border-radius:50%;background:var(--accent)}.timeline p{margin:0;color:var(--muted)}.period{font-size:.85rem;color:var(--muted)}.prose{max-width:65ch}footer{padding-top:32px;padding-bottom:48px;color:var(--muted);font-size:.9rem}.hero.compact{padding:32px 0 24px}.tag{display:inline-block;margin-left:8px;border:1px solid var(--line);border-radius:999px;padding:0 10px;font-size:.78rem}.article{padding:32px 0}.article .prose{max-width:70ch}.prose img{max-width:100%;height:auto}.prose pre{overflow-x:auto;padding:14px;border-radius:8px;font-size:.88rem}.prose code{font-size:.9em}.prose blockquote{margin:1em 0;padding-left:16px;border-left:3px solid var(--accent);color:var(--muted)}.hero{display:flex;align-items:center;gap:40px}.avatar{width:240px;height:240px;border-radius:50%;object-fit:cover;flex-shrink:0;border:4px solid var(--card);box-shadow:0 0 0 2px var(--accent)}.hero.compact{display:block}@media(max-width:700px){.hero{flex-direction:column;align-items:flex-start;gap:24px}.avatar{width:160px;height:160px}}.prose h3{margin:1.8em 0 .5em;font-size:1.15rem;color:var(--accent)}.prose ul{padding-left:1.2em}.prose li{margin:.4em 0}#about .prose{max-width:none}.timeline .team{font-size:.9rem;color:var(--muted);margin:0 0 .6rem}.timeline .bullets{margin:0 0 .9rem;padding-left:1.2em;color:var(--muted);font-size:.9rem}.timeline .bullets li{position:static;margin:.35em 0;padding:0}.timeline .bullets li::before{content:none}.timeline .bullets strong{color:var(--fg)}.timeline h3{font-size:1.25rem}.stack-rows{margin:0}.stack-row{display:grid;grid-template-columns:200px 1fr;gap:8px 24px;padding:18px 0;border-top:1px solid var(--line)}.stack-row dt{font-weight:500;color:var(--muted)}.stack-row dd{margin:0}@media(max-width:700px){.stack-row{grid-template-columns:1fr}}.stack-row dt{transition:color .3s,opacity .6s,transform .6s cubic-bezier(.2,.7,.2,1)}.stack-row .chips li{transition:border-color .3s,color .3s,transform .2s}@media(hover:hover){.stack-row .chips li:hover{border-color:var(--accent);transform:translateY(-2px)}}@supports not (animation-timeline:view()){.stack-rows.reveal .stack-row:not(.in) dt{opacity:0;transform:translateX(-18px)}.stack-rows.reveal .stack-row:not(.in) .chips li{opacity:0}.stack-rows.reveal .stack-row.in:not(.done) .chips li{animation:chip-pop .55s cubic-bezier(.34,1.56,.64,1)backwards;animation-delay:calc(var(--i)*45ms + 120ms)}}@keyframes chip-pop{from{opacity:0;transform:translateY(14px)scale(.8)}}@keyframes chip-scrub{from{opacity:0;transform:translateY(22px)scale(.82)}60%{opacity:1}to{opacity:1;transform:none}}@keyframes title-scrub{from{opacity:0;transform:translateX(-22px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:no-preference){@supports(animation-timeline:view()){.stack-row dt{animation:title-scrub linear both;animation-timeline:view();animation-range:entry 5% entry 70%}.stack-row .chips li{animation:chip-scrub linear both;animation-timeline:view();animation-range:entry 0% entry 100%}.stack-rows .stack-row.focus.done .chips li{animation:chip-scrub linear both,chip-wave .6s ease both;animation-timeline:view(),auto;animation-range:entry 0% entry 100%,normal;animation-delay:0s,calc(var(--i)*40ms)}}}.stack-rows.has-focus .stack-row{transition:opacity .35s}.stack-rows.has-focus .stack-row:not(.focus){opacity:.7}.stack-row{position:relative}.stack-row::before{content:"";position:absolute;left:-12px;top:18px;bottom:18px;width:3px;border-radius:2px;background:var(--link);transform:scaleY(0);transform-origin:top;transition:transform .45s cubic-bezier(.2,.7,.2,1)}.stack-rows .stack-row.focus::before{transform:scaleY(1)}.stack-rows .stack-row.focus dt{color:var(--link)}.stack-rows .stack-row.focus .chips li{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));color:var(--fg)}.stack-rows .stack-row.focus.done .chips li{animation:chip-wave .6s ease both;animation-delay:calc(var(--i)*40ms)}@keyframes chip-wave{40%{translate:0 -5px;border-color:var(--link)}}@media(prefers-reduced-motion:reduce){.stack-row dt,.stack-row .chips li,.stack-row::before{transition:none}.stack-row .chips li:hover{transform:none}}details.collapsible>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px}details.collapsible>summary::-webkit-details-marker{display:none}details.collapsible>summary::after{content:"";width:14px;height:14px;flex-shrink:0;color:var(--accent);background:linear-gradient(currentColor,currentColor)50%/100% 2px no-repeat,linear-gradient(currentColor,currentColor)50%/2px 100% no-repeat;transition:transform .3s ease,background-size .3s ease}details.collapsible[open]:not(.closing)>summary::after{transform:rotate(180deg);background-size:100% 2px,2px 0}@media(prefers-reduced-motion:reduce){details.collapsible>summary::after{transition:none}}.section-intro{margin:-.6rem 0 1.4rem;color:var(--muted)}.areas details.collapsible{position:relative;border-top:1px solid var(--line);padding:16px 0}.areas details.collapsible:last-of-type{border-bottom:1px solid var(--line)}.areas details.collapsible::before{content:"";position:absolute;left:-12px;top:18px;bottom:18px;width:3px;border-radius:2px;background:var(--link);transform:scaleY(0);transform-origin:top;transition:transform .45s cubic-bezier(.2,.7,.2,1)}.areas details.collapsible[open]:not(.closing)::before{transform:scaleY(1)}.areas details.collapsible>summary{gap:16px;align-items:flex-start}.areas details.collapsible>summary::after{margin-top:.5rem}.area-num{flex-shrink:0;width:2ch;margin-top:.3rem;font-size:.9rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--muted);transition:color .3s}.areas details.collapsible[open]:not(.closing) .area-num{color:var(--link)}.area-head{flex:1;min-width:0}.area-head h3{margin:0;font-size:1.2rem}.area-head .teaser{margin:.15rem 0 0;color:var(--muted);font-size:.92rem;line-height:1.45}.areas details.collapsible[open]:not(.closing)>summary{margin-bottom:.8rem}.area-body{padding-left:calc(2ch + 16px)}.area-body>:first-child{margin-top:0}.area-body>:last-child{margin-bottom:0}.area-project{margin:1.6rem 0 .4rem calc(2ch + 16px);padding-top:1.4rem;border-top:1px dashed var(--line)}.area-project .eyebrow{margin:0 0 .3rem;color:var(--link)}.area-project h4{margin:0 0 .6rem;font-size:1.15rem}.project-intro,.project-outro{max-width:70ch;color:var(--muted);margin:0}.area-project .loop{margin:1.4rem 0 1.2rem}@media(max-width:700px){.area-body{padding-left:0}.area-project{margin-left:0}.area-head h3{font-size:1.1rem}}@media(prefers-reduced-motion:reduce){.areas details.collapsible::before,.area-num{transition:none}}.timeline details.role>summary h3{margin:0}.timeline details.role[open]:not(.closing)>summary{margin-bottom:.6rem}.timeline .role-head h3{margin:0}@media(max-width:700px){body{font-size:16px}main,.nav,footer{padding-left:18px;padding-right:18px}section{padding:32px 0}.hero{padding:16px 0 32px}.avatar{width:112px;height:112px}h1{font-size:2rem}h2{font-size:1.4rem;margin-bottom:.9rem}.lead{font-size:1.05rem}.timeline h3{font-size:1.1rem}.timeline li{margin-bottom:18px}.stack-row{padding:14px 0}.chips li{font-size:.82rem;padding:1px 10px}}.article .prose.wide{max-width:none}.meta{font-size:.85rem;color:var(--muted)}body{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.nav,main,footer{width:100%}main{flex:1}.hero.compact .topics{margin-top:1.2rem}.post-list{padding-top:8px}.post-card{position:relative;display:flex;flex-direction:column;gap:.4rem;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 20px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.post-card:hover,.post-card:focus-within{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 24px rgba(0,0,0,.28)}.post-card h2{margin:0;font-size:1.1rem;line-height:1.3}.post-card h2 a{color:var(--fg);text-decoration:none}.post-card h2 a::after{content:"";position:absolute;inset:0;border-radius:12px}.post-card h2 a:focus-visible{outline:none}.post-card:focus-within{outline:2px solid var(--accent);outline-offset:3px}.post-meta{display:flex;gap:12px;font-size:.8rem;color:var(--muted)}.post-desc{margin:0;color:var(--muted);font-size:.92rem}.post-card .chips{margin:.1rem 0 0}.post-card .chips li{font-size:.76rem;padding:0 9px}.post-cta{margin-top:auto;padding-top:.2rem;font-size:.9rem;font-weight:500;color:var(--link)}.post-cta span{display:inline-block;transition:transform .25s ease}.post-card:hover .post-cta span{transform:translateX(5px)}.post-card.featured{padding:20px 24px;border-left:4px solid var(--accent)}.post-card.featured h2{font-size:1.4rem}.post-card.featured .post-desc{font-size:.95rem;max-width:60ch}.post-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-top:16px}@media(max-width:700px){.post-card,.post-card.featured{padding:16px}.post-card.featured h2{font-size:1.25rem}}@media(prefers-reduced-motion:reduce){.post-card,.post-cta span{transition:none}.post-card:hover,.post-card:focus-within{transform:none}.post-card:hover .post-cta span{transform:none}}.nav-end{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.lang{display:flex;gap:8px;margin-left:20px}.lang-link{display:block;line-height:0;border-radius:4px;opacity:.5;transition:opacity .25s ease,transform .25s ease,box-shadow .25s ease}.lang-link svg{display:block;border-radius:3px}.lang-link:hover,.lang-link:focus-visible{opacity:1;transform:translateY(-2px)}.lang-link.current{opacity:1;box-shadow:0 0 0 2px var(--accent)}.lang-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(prefers-reduced-motion:reduce){.lang-link{transition:none}.lang-link:hover,.lang-link:focus-visible{transform:none}}@media(max-width:480px){.lang{margin-left:14px}.nav nav a{margin-left:12px}}.tag-links{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:1.2rem 0 0;padding:0}.tag-link{display:inline-flex;align-items:center;gap:8px;padding:7px 16px 7px 12px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--fg);font-size:.88rem;font-weight:500;text-decoration:none;transition:transform .25s ease,border-color .25s ease,background-color .25s ease,box-shadow .25s ease}.tag-link svg{width:16px;height:16px;flex-shrink:0}.tag-link:hover,.tag-link:focus-visible{transform:translateY(-2px);border-color:var(--accent);background-color:rgba(141,178,217,.14);box-shadow:0 6px 16px rgba(0,0,0,.25)}.tag-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}#about{padding-top:0}#about .prose>p:nth-of-type(-n+2){font-size:1.15rem;line-height:1.6;color:var(--fg)}#about .prose>p:first-child{margin-top:0}@media(max-width:700px){#about .prose>p:nth-of-type(-n+2){font-size:1.02rem}}@media(prefers-reduced-motion:reduce){.tag-link{transition:none}.tag-link:hover,.tag-link:focus-visible{transform:none}}@media(max-width:480px){.tag-links{gap:6px}.tag-link{gap:6px;padding:6px 11px 6px 9px;font-size:.8rem}.tag-link svg{width:14px;height:14px}}#bg{position:fixed;top:0;left:0;z-index:-1;pointer-events:none}.rotator{margin:.1rem 0 0;font-size:1.15rem;color:var(--muted);min-height:1.7em}.rot-word{display:inline-block;color:var(--link);font-weight:500;transition:opacity .2s ease,transform .2s ease}.rot-word.out{opacity:0;transform:translateY(6px)}@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pop-in{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:none}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes glow{0%,100%{box-shadow:0 0 0 2px var(--accent),0 0 rgba(141,178,217,0)}50%{box-shadow:0 0 0 2px var(--accent),0 0 24px 4px rgba(141,178,217,.28)}}.hero .avatar{animation:pop-in .7s ease both,float 7s ease-in-out .7s infinite,glow 5s ease-in-out .7s infinite}.hero-text>*{animation:rise .6s ease both}.hero-text>*:nth-child(2){animation-delay:.08s}.hero-text>*:nth-child(3){animation-delay:.16s}.hero-text>*:nth-child(4){animation-delay:.24s}.loop{list-style:none;margin:1.2rem 0 .8rem;padding:0;counter-reset:s}.loop li{position:relative;counter-increment:s;padding:0 0 22px 52px;margin:0}.loop li:last-child{padding-bottom:0}.loop li::before{content:counter(s);position:absolute;left:0;top:0;width:34px;height:34px;border-radius:50%;border:2px solid var(--line);background:var(--bg);display:grid;place-items:center;font-weight:700;font-size:.9rem;animation:step-lit 10s ease-in-out infinite}.loop li::after{content:"";position:absolute;left:16px;top:38px;bottom:4px;width:2px;background:var(--line)}.loop li:last-child::after{display:none}.loop strong{display:block;color:var(--fg);font-size:1.02rem;animation:step-text 10s ease-in-out infinite}.loop span{display:block;color:var(--muted);font-size:.92rem}.loop li:nth-child(1)::before,.loop li:nth-child(1) strong{animation-delay:0s}.loop li:nth-child(2)::before,.loop li:nth-child(2) strong{animation-delay:2s}.loop li:nth-child(3)::before,.loop li:nth-child(3) strong{animation-delay:4s}.loop li:nth-child(4)::before,.loop li:nth-child(4) strong{animation-delay:6s}.loop li:nth-child(5)::before,.loop li:nth-child(5) strong{animation-delay:8s}@keyframes step-lit{0%,22%{border-color:var(--accent);background:var(--accent);color:#10233a;transform:scale(1.12)}30%,100%{border-color:var(--line);background:var(--bg);color:var(--fg);transform:none}}@keyframes step-text{0%,22%{color:var(--link)}30%,100%{color:var(--fg)}}@media(min-width:760px){.loop{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:18px}.loop li,.loop li:last-child{padding:46px 0 0}.loop li::after{left:44px;right:-14px;top:16px;bottom:auto;width:auto;height:2px}}@media(prefers-reduced-motion:reduce){.hero .avatar,.hero-text>*,.loop li::before,.loop strong{animation:none}.rot-word{transition:none}}