[data-astro-cid-7jjqptxk],[data-astro-cid-7jjqptxk]:before,[data-astro-cid-7jjqptxk]:after{box-sizing:border-box;margin:0;padding:0}:root{--mono: "Space Mono", monospace;--sans: "Space Grotesk", sans-serif;--accent2: #8fa8e8}body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100vh;min-height:100svh;line-height:1.75;position:relative;overflow-x:hidden;cursor:none}#cursor[data-astro-cid-7jjqptxk]{width:8px;height:8px;background:var(--accent);border-radius:50%;position:fixed;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);transition:width .2s,height .2s}#cursor-ring[data-astro-cid-7jjqptxk]{width:32px;height:32px;border:1px solid var(--cursor-ring);border-radius:50%;position:fixed;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);transition:transform .12s ease-out,width .25s,height .25s,border-color .2s}body:has(a:hover) #cursor[data-astro-cid-7jjqptxk]{width:12px;height:12px}body:has(a:hover) #cursor-ring[data-astro-cid-7jjqptxk]{width:48px;height:48px;border-color:var(--cursor-ring-hover)}body:before{content:"";position:fixed;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:60px 60px;pointer-events:none;z-index:1;opacity:.55;animation:gridBreathe 5s ease-in-out infinite}@keyframes gridBreathe{0%,to{opacity:.48}50%{opacity:.82}}html[data-theme=light] body:before{opacity:.32}html[data-theme=light] body.portfolio-atmo:before{animation:gridBreatheLight 5s ease-in-out infinite}@keyframes gridBreatheLight{0%,to{opacity:.28}50%{opacity:.45}}.wrap[data-astro-cid-7jjqptxk]{max-width:42rem;margin:0 auto;padding:4rem 1.5rem 5rem;position:relative;z-index:2}.outline-progress[data-astro-cid-7jjqptxk]{position:fixed;right:1.1rem;top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;gap:.45rem}.outline-progress__dot[data-astro-cid-7jjqptxk]{width:7px;height:7px;border-radius:999px;border:1px solid color-mix(in srgb,var(--line2) 64%,var(--accent) 36%);background:color-mix(in srgb,var(--bg2) 78%,transparent);transition:transform .18s ease,background .18s ease,border-color .18s ease}.outline-progress__dot[data-astro-cid-7jjqptxk].is-active{transform:scale(1.35);border-color:color-mix(in srgb,var(--accent) 82%,var(--line2) 18%);background:color-mix(in srgb,var(--accent) 78%,#ffffff 22%)}.back[data-astro-cid-7jjqptxk]{display:inline-block;margin-bottom:2rem;font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-decoration:none;border:none}.back[data-astro-cid-7jjqptxk]:hover{color:var(--accent)}.post-meta[data-astro-cid-7jjqptxk]{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-dim);margin-bottom:1.25rem}.post-title[data-astro-cid-7jjqptxk]{font-size:clamp(1.5rem,4vw,2rem);font-weight:500;letter-spacing:-.02em;margin-bottom:2rem;line-height:1.25;text-wrap:balance}.prose[data-astro-cid-7jjqptxk]{color:var(--muted);font-size:1.05rem;line-height:1.85}.prose[data-astro-cid-7jjqptxk] h1,.prose[data-astro-cid-7jjqptxk] h2{font-size:1.15rem;color:var(--text);margin:2rem 0 .75rem}.prose[data-astro-cid-7jjqptxk] h1:first-child{display:none}.prose[data-astro-cid-7jjqptxk] h3,.prose[data-astro-cid-7jjqptxk] h4{color:var(--text);margin:1.6rem 0 .7rem}.prose[data-astro-cid-7jjqptxk] p{margin-bottom:1rem}.prose[data-astro-cid-7jjqptxk] ul,.prose[data-astro-cid-7jjqptxk] ol{margin:1rem 0 1rem 1.25rem}.prose[data-astro-cid-7jjqptxk] li{margin-bottom:.35rem}.prose[data-astro-cid-7jjqptxk] pre{margin:1.25rem 0;padding:1rem 1.1rem;border-radius:8px;border:1px solid var(--line2);background:var(--bg2);overflow-x:auto;font-family:var(--mono);font-size:.82rem}.prose[data-astro-cid-7jjqptxk] code{font-family:var(--mono);font-size:.88em}.prose[data-astro-cid-7jjqptxk] blockquote{margin:1.2rem 0;padding:.35rem 0 .35rem .9rem;border-left:2px solid color-mix(in srgb,var(--accent) 45%,var(--line2) 55%);color:color-mix(in srgb,var(--muted) 85%,var(--text) 15%)}.prose[data-astro-cid-7jjqptxk] hr{border:0;border-top:1px solid color-mix(in srgb,var(--line2) 72%,transparent);margin:1.4rem 0}.prose[data-astro-cid-7jjqptxk] table{width:100%;border-collapse:collapse;margin:1.25rem 0;font-size:.95rem}.prose[data-astro-cid-7jjqptxk] th,.prose[data-astro-cid-7jjqptxk] td{border-bottom:1px solid color-mix(in srgb,var(--line2) 70%,transparent);padding:.55rem .45rem;text-align:left;vertical-align:top}.prose[data-astro-cid-7jjqptxk] thead th{color:var(--text)}.prose[data-astro-cid-7jjqptxk] img,.prose[data-astro-cid-7jjqptxk] video,.prose[data-astro-cid-7jjqptxk] iframe{max-width:100%;height:auto;border-radius:8px;margin:1rem 0}.prose[data-astro-cid-7jjqptxk] del{opacity:.8}.prose[data-astro-cid-7jjqptxk] a{color:var(--accent)}.prose[data-astro-cid-7jjqptxk] .data-snapshot{margin:1.25rem 0 1.75rem;padding:1rem;border:1px solid color-mix(in srgb,var(--line2) 70%,var(--accent) 30%);border-radius:14px;background:color-mix(in srgb,var(--bg2) 72%,transparent)}.prose[data-astro-cid-7jjqptxk] .data-bars{display:grid;gap:.52rem}.prose[data-astro-cid-7jjqptxk] .data-bars__row{display:grid;grid-template-columns:6.5rem minmax(0,1fr);gap:.6rem;align-items:center}.prose[data-astro-cid-7jjqptxk] .data-bars__row>span{font-family:var(--mono);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.prose[data-astro-cid-7jjqptxk] .data-bars__track{height:8px;border-radius:999px;background:color-mix(in srgb,var(--line2) 56%,transparent);overflow:hidden}.prose[data-astro-cid-7jjqptxk] .data-bars__track>i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 85%,#fff 15%),color-mix(in srgb,var(--accent) 65%,#8fa8e8 35%));transform-origin:left center;animation:data-bar-in 1.1s cubic-bezier(.2,.8,.2,1)}@keyframes data-bar-in{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media(max-width:640px){.outline-progress[data-astro-cid-7jjqptxk]{display:none}.prose[data-astro-cid-7jjqptxk] .data-bars__row{grid-template-columns:1fr;gap:.35rem}}.skiptranslate iframe,.goog-te-banner-frame.skiptranslate{display:none!important}body{top:0!important}
