:root{--layer-0: #fff;--layer-1: #cfe3d6;--layer-2: #1b5a41;--layer-3: #0c2f23;--paper: #f7f9f6;--tint: #e9f1eb;--ink: #0f1f18;--muted: #4a5c53;--accent: #1b5a41;--on-dark: #fff;--rule-on-dark: rgba(255, 255, 255, 0.55);--sans: "Onest", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--rule: 1.5px;--radius: 6px;--wrap: 68rem;--gutter: 1.5rem;--label-col: 14rem;--measure: 62ch;--ease-out: cubic-bezier(0.2, 0.8, 0.2, 1)}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:1rem}body{margin:0;background:var(--paper);color:var(--ink);font:1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,p,ul,ol,dl,dd,figure,blockquote,pre{margin:0}h1,h2,h3{text-wrap:balance}h1,h2,h3,strong,b{font-weight:600}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:0.2em}img{max-width:100%;height:auto}code{font-family:var(--mono)}::selection{background:var(--layer-3);color:var(--on-dark)}:focus-visible{outline:2px solid currentColor;outline-offset:3px}main:focus{outline:none}[hidden]{display:none !important}.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}.skip-link{position:absolute;top:0.5rem;left:0.5rem;z-index:10;padding:0.5rem 0.9rem;background:var(--ink);color:var(--on-dark);transform:translateY(-200%)}.skip-link:focus{transform:none}.print-only{display:none}.btn{display:inline-flex;align-items:center;min-height:2.9rem;padding:0 1.3rem;background:var(--layer-3);color:var(--on-dark);border:var(--rule) solid var(--layer-3);border-radius:var(--radius);font-weight:500;text-decoration:none}.btn:hover{background:var(--layer-2);border-color:var(--layer-2)}.btn:active{transform:translateY(1px)}.btn--ghost{background:none;color:var(--ink);border-color:var(--ink)}.btn--ghost:hover{background:var(--ink);border-color:var(--ink);color:var(--on-dark)}.btn--small{min-height:2.75rem;padding:0 1rem;font-size:0.9rem}.ring-icon{flex:none}.ring-icon rect{fill:none;stroke:currentColor;stroke-width:1.5;opacity:0.45}.ring-icon .is-on{stroke-width:3.2;opacity:1}@media (prefers-reduced-motion: no-preference){.btn,.chip,.tech-tags li{transition:background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease}.job,.pkg{transition:opacity 0.35s var(--ease-out)}.ring{transition:transform 0.35s var(--ease-out)}}.top{display:flex;align-items:center;gap:2rem;max-width:var(--wrap);margin-inline:auto;padding:1.1rem var(--gutter)}.top__name{margin-right:auto;font-weight:600;text-decoration:none}.top__nav{display:flex;gap:1.5rem;font-size:0.95rem}.top__nav a{padding-block:0.6rem;color:var(--muted);text-decoration:none}.top__nav a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:0.35em}.top__nav a[aria-current]{color:var(--ink);font-weight:500;box-shadow:inset 0 calc(var(--rule) * -1) 0 var(--ink)}.foot{padding:4rem 0 5rem;background:var(--paper)}.foot__cta{margin-bottom:0.5rem;font-size:clamp(1.5rem, calc(1rem + 2vw), 2.4rem);font-weight:600;line-height:1.2;letter-spacing:-0.02em;overflow-wrap:anywhere}@media (max-width: 51.25em){.top{flex-wrap:wrap;gap:0.5rem 1.25rem}.top__nav{order:3;width:100%;justify-content:space-between;gap:1rem;white-space:nowrap;overflow-x:auto}}.hero{display:grid;grid-template-columns:minmax(0, 1.05fr) minmax(0, 1fr);gap:3rem;align-items:center;max-width:var(--wrap);margin-inline:auto;padding:3rem var(--gutter) 5.5rem}.hero h1{font-size:clamp(2.6rem, calc(1.4rem + 4.6vw), 4.6rem);font-weight:600;line-height:1;letter-spacing:-0.035em}.hero__role{margin-top:1rem;color:var(--accent);font-family:var(--mono);font-size:0.95rem}.hero__role span{white-space:nowrap}.hero__lead{max-width:30ch;margin-top:1.5rem;font-size:1.3rem;line-height:1.45;text-wrap:pretty}.hero__actions{display:flex;flex-wrap:wrap;gap:0.75rem;margin-top:2rem}.rings{position:relative;justify-self:end;width:100%;max-width:30rem;aspect-ratio:1 / 1}.rings figcaption{position:absolute;top:calc(100% + 0.9rem);left:0;color:var(--muted);font-size:0.85rem}.ring{position:absolute;display:block;border-radius:14px;text-decoration:none}.ring span{position:absolute;top:0.7rem;left:1rem;font-family:var(--mono);font-size:0.8rem}a.ring:hover{transform:scale(1.015)}a.ring:focus-visible{outline-offset:-6px}.ring--3{top:0;right:0;bottom:0;left:0;background:var(--layer-3);color:var(--on-dark)}.ring--2{top:13%;right:13%;bottom:13%;left:13%;background:var(--layer-2);color:var(--on-dark)}.ring--1{top:26%;right:26%;bottom:26%;left:26%;background:var(--layer-1);color:var(--ink)}.ring--0{top:37%;right:37%;bottom:37%;left:37%;display:grid;place-content:center;padding:0.5rem;background:var(--layer-0);color:var(--ink);border-radius:10px;text-align:center}.ring--0 strong{font-size:1.25rem;letter-spacing:-0.02em}.ring--0 span{position:static;color:var(--muted);font-size:0.7rem;line-height:1.35}.layer{padding:4.5rem 0}.layer h2{display:flex;align-items:center;gap:0.8rem;margin-bottom:1.75rem;font-size:2rem;font-weight:600;line-height:1.15;letter-spacing:-0.02em}.layer .h2--second{margin-top:4rem}.layer--0{background:var(--layer-0)}.layer--1{background:var(--layer-1)}.layer--2{background:var(--layer-2);color:var(--on-dark)}.layer--3{background:var(--layer-3);color:var(--on-dark)}.layer--2 ::selection,.layer--3 ::selection{background:var(--on-dark);color:var(--layer-3)}.prose-lead{max-width:var(--measure);font-size:1.1rem}.facts{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5rem;margin-top:2.5rem;padding-top:1.5rem;border-top:var(--rule) solid var(--ink)}.facts dt{color:var(--muted);font-family:var(--mono);font-size:0.8rem}.facts dd{font-weight:500}.hint{margin:-1rem 0 1.75rem;color:var(--layer-3)}.skill-row{display:grid;grid-template-columns:var(--label-col) minmax(0, 1fr);gap:1rem;padding:1rem 0;border-top:var(--rule) solid var(--ink)}.skill-row h3{font-size:1rem;font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:0.5rem}.chip{display:inline-block;padding:0.4rem 0.7rem;background:var(--layer-0);color:var(--ink);border:var(--rule) solid var(--ink);border-radius:5px;font-family:var(--mono);font-size:0.85rem;line-height:1.6}button.chip{cursor:pointer}button.chip:hover{background:var(--tint)}button.chip[aria-pressed="true"]{background:var(--ink);color:var(--on-dark)}.chip--static{background:none;border-color:rgba(15,31,24,0.4)}.filter{margin:-1rem 0 2rem;font-family:var(--mono);font-size:0.9rem}.filter button{padding:0.4rem;background:none;border:0;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:0.2em;cursor:pointer}.job{display:grid;grid-template-columns:var(--label-col) minmax(0, 1fr);gap:1rem;padding:2rem 0;border-top:var(--rule) solid var(--rule-on-dark)}.job h3{font-size:1.4rem;line-height:1.2;letter-spacing:-0.01em}.job__period{font-family:var(--mono);font-size:0.95rem}.job__org{margin-bottom:1rem;opacity:0.88}.job__bullets{max-width:var(--measure)}.job__bullets li{position:relative;margin-bottom:0.5rem;padding-left:1.2rem}.job__bullets li::before{content:"";position:absolute;top:0.76em;left:0;width:0.5rem;height:var(--rule);background:currentColor}.job.is-dim,.pkg.is-dim{opacity:0.5}.job:focus,.pkg:focus{outline:none}.layer--2:focus{outline:none}.tech-tags{display:flex;flex-wrap:wrap;gap:0.35rem 0.5rem;margin-top:1.1rem;font-family:var(--mono);font-size:0.78rem}.tech-tags li{padding:0.15rem 0.45rem;border:var(--rule) solid rgba(255,255,255,0.4);border-radius:5px}.tech-tags .is-hit{background:var(--on-dark);border-color:var(--on-dark);color:var(--layer-3)}.pkgs{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0 3rem}.pkg{padding:1.5rem 0;border-top:var(--rule) solid var(--rule-on-dark)}.pkg h3{font-size:1.05rem;font-weight:500;overflow-wrap:anywhere}.pkg p{margin-top:0.6rem}.pkg__links{display:flex;gap:1.25rem;font-weight:500}.post-teaser{max-width:var(--measure);padding:1.5rem 0;border-top:var(--rule) solid var(--rule-on-dark)}.post-teaser h3{font-size:1.4rem;line-height:1.2}.post-teaser__date{margin:0.2rem 0 0.6rem;font-family:var(--mono);font-size:0.85rem;opacity:0.85}.posts__more{margin-top:1rem;font-weight:500}@media (max-width: 51.25em){.hero{grid-template-columns:minmax(0, 1fr);gap:2.5rem;padding-top:1.5rem}.rings{justify-self:center;max-width:22rem}.ring--0{padding:0.25rem}.ring--0 strong{font-size:1.05rem}.ring--0 span{font-size:0.68rem}.hero__role span{display:block}.hero__role .hero__sep{display:none}.hero__actions{gap:0.5rem}.hero__actions .btn{padding:0 1rem}.layer{padding:3.25rem 0}.skill-row,.job{grid-template-columns:minmax(0, 1fr);gap:0.5rem}.facts,.pkgs{grid-template-columns:minmax(0, 1fr)}}.page-head{padding:3.5rem 0 3rem;background:var(--layer-3);color:var(--on-dark)}.page-head .wrap,.page-head+.page-body{max-width:46rem}.page-head h1{display:flex;align-items:center;gap:0.8rem;font-size:clamp(2rem, calc(1.4rem + 2.6vw), 3rem);font-weight:600;line-height:1.08;letter-spacing:-0.03em}.page-head ::selection{background:var(--on-dark);color:var(--layer-3)}.page-head__meta{margin-top:0.9rem;font-family:var(--mono);font-size:0.85rem;opacity:0.85}.page-body{padding-top:3rem;padding-bottom:2rem}.post-list li{padding:1.75rem 0;border-top:var(--rule) solid var(--ink)}.post-list li:first-child{padding-top:0;border-top:0}.post-list h2{font-size:1.6rem;line-height:1.2;letter-spacing:-0.015em}.post-list h2 a{text-decoration:none}.post-list h2 a:hover{text-decoration:underline}.post-list__date{margin:0.3rem 0 0.7rem;color:var(--muted);font-family:var(--mono);font-size:0.85rem}.post__image{display:block;max-height:13rem;margin:0 auto 2.5rem}.post__footer{margin-top:3.5rem;padding-top:1.25rem;border-top:var(--rule) solid var(--ink);font-weight:500}.prose>*+*{margin-top:1rem}.prose h2{margin-top:3rem;font-size:1.6rem;font-weight:600;line-height:1.2;letter-spacing:-0.02em}.prose h3{margin-top:2rem;font-size:1.15rem;font-weight:600}.prose>:first-child{margin-top:0}.prose a{color:var(--accent);font-weight:500}.prose ul,.prose ol{padding-left:1.3rem}.prose ul{list-style:square}.prose ol{list-style:decimal}.prose li+li,.prose li>ul,.prose li>ol{margin-top:0.5rem}.prose li::marker{color:var(--accent)}.prose code{padding:0.12em 0.4em;background:var(--tint);border-radius:4px;font-size:0.86em;overflow-wrap:anywhere}.prose h2 code,.prose h3 code{font-size:0.8em}.prose pre{padding:1rem 1.1rem;background:var(--layer-3);color:var(--on-dark);border-radius:var(--radius);overflow-x:auto}.prose pre code{padding:0;background:none;overflow-wrap:normal}.prose blockquote{padding:1rem 1.25rem;background:var(--layer-1);border-radius:var(--radius);font-size:1.1rem}.prose mark{background:none;color:inherit;font-weight:600}@media print{body{background:none;color:#000;font-size:0.82rem;line-height:1.45}.no-print,.skip-link,.top,.foot{display:none !important}.print-only{display:block;margin-top:0.5rem}.wrap,.hero{max-width:none;padding-inline:0}.hero{display:block;padding:0 0 1rem}.hero h1{font-size:2.2rem}.hero__role{margin-top:0.3rem;color:#000}.hero__lead{max-width:none;margin-top:0.6rem;font-size:1rem}.layer,.page-head{padding:0.9rem 0 0;background:none;color:#000}.layer h2,.page-head h2{margin-bottom:0.6rem;font-size:1.2rem}.layer .h2--second,.page-head .h2--second{margin-top:1.25rem}h2,h3{break-after:avoid}.ring-icon{display:none}.pkgs{grid-template-columns:repeat(2, minmax(0, 1fr));gap:0 2rem}.prose-lead{max-width:none;font-size:inherit}.facts{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1rem;margin-top:0.8rem;padding-top:0.6rem;border-color:#000}.facts dt{color:#000}.skill-row{grid-template-columns:13rem minmax(0, 1fr);padding:0.3rem 0;border-color:#000}.chip,.chip--static{padding:0 0.3rem;background:none;border:1px solid #000;font-size:0.72rem}.job{grid-template-columns:8rem minmax(0, 1fr);padding:0.7rem 0;border-color:#000;break-inside:avoid}.job.is-dim{opacity:1}.job h3{font-size:1.05rem}.job__org{margin-bottom:0.4rem;opacity:1}.job__bullets{max-width:none}.job__bullets li{margin-bottom:0.2rem}.post-teaser h3{font-size:1rem}.pkg.is-dim{opacity:1}.tech-tags{margin-top:0.4rem;gap:0.15rem 0.3rem;font-size:0.72rem}.tech-tags li,.tech-tags .is-hit{padding:0 0.25rem;background:none;border-color:#000;color:#000}.pkg,.post-teaser{padding:0.5rem 0;border-color:#000;break-inside:avoid}.pkg__links a::after{content:" (" attr(href) ")";font-weight:400}.pkg__links{flex-direction:column;gap:0}a{text-decoration:none}.prose pre,.prose blockquote,.prose code,.prose mark{background:none;color:#000;border:1px solid #000}}
