:root,:root[data-theme=light]{--bg:#fbfaf8;--ink:#1a1a1a;--text:#3a3a3a;--muted:#5c5c5c;--faint:#6a6a6a;--line:#e7e5e1;--accent:#1a1a1a;--accent-ink:#1a1a1a;--accent-dim:#0000004d;--underline:#0000002e;--underline-hover:#0009;--bubble-bg:#ffffffeb;--bubble-border:#00000017;--bubble-shadow:0 10px 28px #0000001a,0 2px 6px #0000000d;--ridge:#1a1a1a0d;--ridge-h:min(40vh,26vw);--sky-1:#9696a012;--sky-2:#8c96960f;--grain:0.038;--font-sans:"Outfit",system-ui,-apple-system,sans-serif;--font-display:var(--font-sans);--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--maxw:1140px;--pad-x:clamp(24px,6vw,76px);--pad-top:clamp(56px,9vh,92px);--gap-section:clamp(52px,9vh,80px);--ease:cubic-bezier(0.22,0.68,0.16,1);color-scheme:light}:root[data-theme=dark]{--bg:#17131a;--ink:#f5ece0;--text:#d8ccbf;--muted:#a99a8c;--faint:#8d8073;--line:#f1e7d91c;--accent:#ffffffad;--accent-ink:#ffffffeb;--accent-dim:#ffffff38;--underline:#ffffff29;--underline-hover:#ffffff85;--bubble-bg:#ffffff17;--bubble-border:#ffffff24;--bubble-shadow:0 12px 32px #0000008c,0 2px 8px #0006;--gloss:linear-gradient(var(--gloss-angle,90deg),#ffffff29,#ffffff94 50%,#ffffff29);--bloom:0 0 8px #ffffff2e;--ridge:#05030899;--sky-1:#44646a26;--sky-2:#58608829;--grain:0.05;color-scheme:dark}*,:after,:before{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fbfaf8;background:var(--bg);text-rendering:optimizeLegibility}body{-webkit-tap-highlight-color:transparent;background:#0000;color:#3a3a3a;color:var(--text);font-family:Outfit,system-ui,-apple-system,sans-serif;font-family:var(--font-sans);font-size:16px;line-height:1.7;margin:0;text-transform:lowercase}::selection{background:#1a1a1a;background:var(--accent);color:#fbfaf8;color:var(--bg)}html:before{animation:haze 48s cubic-bezier(.22,.68,.16,1) infinite alternate;animation:haze 48s var(--ease) infinite alternate;background:radial-gradient(62% 44% at 16% -4%,#9696a012,#0000 72%),radial-gradient(56% 40% at 90% 2%,#8c96960f,#0000 74%);background:radial-gradient(62% 44% at 16% -4%,var(--sky-1),#0000 72%),radial-gradient(56% 40% at 90% 2%,var(--sky-2),#0000 74%);content:"";inset:-20%;pointer-events:none;position:fixed;will-change:transform;z-index:-3}@keyframes haze{0%{transform:translateZ(0)}to{transform:translate3d(-2.5%,2.5%,0)}}body:before{--ridges:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 400'%3E%3Cg fill='%23fff'%3E%3Cpath opacity='.26' d='m0 252 120-46 92 28 120-74 100 56 110-38 150 60 110-40 130 48 130-56 120 42 110-36 148 46v158H0Z'/%3E%3Cpath opacity='.46' d='m0 302 140-39 112 31 110-48 110 42 130-36 120 46 140-40 120 36 130-44 130 40 100-27 98 33v104H0Z'/%3E%3Cpath d='m1142 240-4 24m20-24 4 24m-22-11h20' opacity='.56' stroke='%23fff' stroke-width='2.2' fill='none'/%3E%3Cg opacity='.56'%3E%3Cpath d='M1136 224h28v16h-28zM1130 224l20-12 20 12Z'/%3E%3C/g%3E%3Cg opacity='.78'%3E%3Cpath d='m0 340 112-21 110 23 120-31 110 27 130-25 120 31 120-27 120 23 130-25 120 27 120-23 128 19v62H0Z'/%3E%3Cpath d='m54 330 7-28 7 28Zm74-10 8-32 8 32Zm48 10 6-24 6 24Zm86 16 8-32 8 32Zm40-16 7-30 7 30Zm98-6 8-32 8 32Zm98 8 6-24 6 24Zm62-12 8-34 8 34Zm80 12 7-28 7 28Zm52 12 6-24 6 24Zm68-12 8-34 8 34Zm80-12 7-26 7 26Zm60 10 6-24 6 24Zm100 4 8-34 8 34Zm48-14 7-28 7 28Zm80 18 6-24 6 24Zm80 2 8-32 8 32Zm70-20 7-30 7 30Zm70 6 6-24 6 24Zm70 8 8-32 8 32Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");--fade:linear-gradient(180deg,#000 0 40%,#0000004d);background-color:#1a1a1a0d;background-color:var(--ridge);bottom:0;height:min(40vh,26vw);height:var(--ridge-h);left:0;-webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-image:var(--ridges),var(--fade);mask-image:var(--ridges),var(--fade);-webkit-mask-position:bottom center,bottom center;mask-position:bottom center,bottom center;-webkit-mask-repeat:no-repeat,no-repeat;mask-repeat:no-repeat,no-repeat;-webkit-mask-size:100% auto,100% 100%;mask-size:100% auto,100% 100%;right:0;z-index:-2}body:after,body:before{content:"";pointer-events:none;position:fixed}body:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");inset:0;opacity:.038;opacity:var(--grain);z-index:-1}.page{margin:0 auto;max-width:1140px;max-width:var(--maxw);padding:clamp(56px,9vh,92px) clamp(24px,6vw,76px) clamp(110px,20vh,180px);padding:var(--pad-top) var(--pad-x) clamp(110px,20vh,180px);position:relative}.masthead{align-items:flex-start;border-bottom:1px solid #e7e5e1;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:18px 32px;justify-content:space-between;margin-bottom:clamp(52px,9vh,80px);padding-bottom:22px}.brand{color:#1a1a1a;color:var(--ink);font-family:Outfit,system-ui,-apple-system,sans-serif;font-family:var(--font-display);font-size:25px;font-weight:800;letter-spacing:-.02em;line-height:1;text-decoration:none;transition:color .3s cubic-bezier(.22,.68,.16,1);transition:color .3s var(--ease)}.brand:hover{color:#1a1a1a;color:var(--accent-ink)}.nav{align-items:center;display:flex;gap:22px}.nav__link{color:#5c5c5c;color:var(--muted);font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;font-family:var(--font-mono);font-size:13px;font-weight:400;letter-spacing:.01em;padding-bottom:4px;position:relative;text-decoration:none;transition:color .28s cubic-bezier(.22,.68,.16,1);transition:color .28s var(--ease)}.nav__link.is-active,.nav__link:hover{color:#1a1a1a;color:var(--ink)}.nav__link.is-active{font-weight:500}.nav__link.is-active:after{background:#1a1a1a;background:var(--accent);bottom:0;content:"";height:1.5px;left:0;position:absolute;right:0}.nav__sep{background:#e7e5e1;background:var(--line);height:14px;width:1px}.socials{align-items:center;gap:13px}.socials,.socials a{display:flex}.socials img{height:17px;opacity:.42;transition:opacity .28s cubic-bezier(.22,.68,.16,1);transition:opacity .28s var(--ease);width:17px}.socials a:hover img{opacity:.85}:root[data-theme=dark] .socials img{filter:invert(1);opacity:.4}:root[data-theme=dark] .socials a:hover img{opacity:.8}:root[data-theme=dark] .entry:before,:root[data-theme=dark] .nav__link.is-active:after{background:var(--gloss);box-shadow:var(--bloom)}:root[data-theme=dark] .entry:before{--gloss-angle:180deg}:root[data-theme=dark] .brand:hover,:root[data-theme=dark] .entry--post:hover .entry__title,:root[data-theme=dark] .link:hover{text-shadow:0 0 12px #ffffff26}.theme-toggle{-webkit-tap-highlight-color:transparent;align-items:center;background:none;border:0;color:#1a1a1a;color:var(--ink);cursor:pointer;display:flex;justify-content:center;line-height:0;padding:0}.theme-toggle svg{height:17px;opacity:.42;transition:opacity .28s cubic-bezier(.22,.68,.16,1),transform .5s cubic-bezier(.22,.68,.16,1);transition:opacity .28s var(--ease),transform .5s var(--ease);width:17px}.theme-toggle:hover svg{opacity:.85}.theme-toggle:active svg{transform:rotate(-25deg)}.theme-toggle:focus-visible{border-radius:2px;outline:1px solid #5c5c5c;outline:1px solid var(--muted);outline-offset:4px}.section{grid-column-gap:56px;grid-row-gap:10px;column-gap:56px;display:grid;grid-template-columns:150px 1fr;row-gap:10px}.section__label{color:#1a1a1a;color:var(--ink);font-family:Outfit,system-ui,-apple-system,sans-serif;font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:-.01em;line-height:1.4;padding-top:6px}.section__body{min-width:0}.entry{border-bottom:1px solid #e7e5e1;border-bottom:1px solid var(--line);padding:26px 0;position:relative}.entry:first-child{padding-top:4px}.entry:last-child{border-bottom:0;padding-bottom:0}@media (hover:hover){.entry:before{background:#1a1a1a;background:var(--accent);content:"";height:0;left:-22px;opacity:0;position:absolute;top:30px;transition:height .4s cubic-bezier(.22,.68,.16,1),opacity .4s cubic-bezier(.22,.68,.16,1);transition:height .4s var(--ease),opacity .4s var(--ease);width:2px}.entry:first-child:before{top:8px}.entry:hover:before{height:20px;opacity:.8}}.entry__head{align-items:baseline;display:flex;gap:12px 48px;justify-content:space-between}.entry__title{color:#1a1a1a;color:var(--ink);font-family:Outfit,system-ui,-apple-system,sans-serif;font-family:var(--font-display);font-size:18.5px;font-weight:700;letter-spacing:-.01em;line-height:1.42;margin:0}.entry__title .sep{color:#0000004d;color:var(--accent-dim);font-weight:400;margin:0 9px}.entry__task{color:#3a3a3a;color:var(--text);font-family:Outfit,system-ui,-apple-system,sans-serif;font-family:var(--font-sans);font-size:16.5px;font-weight:400}.entry__side,.entry__when{color:#5c5c5c;color:var(--muted);flex-shrink:0;letter-spacing:.02em;text-align:right;white-space:nowrap}.entry__side,.entry__stack,.entry__when{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;font-family:var(--font-mono);font-size:12.5px}.entry__stack{color:#6a6a6a;color:var(--faint);letter-spacing:.01em;line-height:1.72;margin:11px 0 0}.entry__desc{color:#3a3a3a;color:var(--text);font-size:15.5px;line-height:1.7;margin:11px 0 0;max-width:64ch}.entry--post{color:inherit;display:block;text-decoration:none}.entry--post .entry__title{transition:color .28s cubic-bezier(.22,.68,.16,1);transition:color .28s var(--ease)}.entry--post:hover .entry__title{color:#1a1a1a;color:var(--accent-ink)}.entry__sub{color:#5c5c5c;color:var(--muted);font-size:15px;margin:9px 0 0;max-width:62ch}.post{align-items:flex-start;display:flex;gap:clamp(13px,1.6vw,20px)}.post__main{flex:1 1;min-width:0}.post__back{align-items:center;border:1px solid #e7e5e1;border:1px solid var(--line);border-radius:50%;color:#5c5c5c;color:var(--muted);display:flex;flex:none;height:32px;justify-content:center;margin-top:3px;text-decoration:none;transition:color .28s cubic-bezier(.22,.68,.16,1),border-color .28s cubic-bezier(.22,.68,.16,1),background .28s cubic-bezier(.22,.68,.16,1);transition:color .28s var(--ease),border-color .28s var(--ease),background .28s var(--ease);width:32px}.post__back svg{height:15px;transition:transform .28s cubic-bezier(.22,.68,.16,1);transition:transform .28s var(--ease);width:15px}.post__back:hover{background:#ffffffeb;background:var(--bubble-bg);border-color:#0000;color:#1a1a1a;color:var(--ink)}.post__back:hover svg{transform:translateX(-2px)}.post__title{color:#1a1a1a;color:var(--ink);font-size:clamp(23px,3.2vw,29px);font-weight:700;letter-spacing:-.02em;line-height:1.22;margin:0;max-width:24ch}.post__meta{color:#5c5c5c;color:var(--muted);font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;font-family:var(--font-mono);font-size:12.5px;letter-spacing:.02em;margin:14px 0 clamp(26px,4vh,36px)}.post__sub:before{content:"·";margin:0 9px;opacity:.55}.post .prose:first-of-type{margin-top:0}.prose{color:#3a3a3a;color:var(--text);font-size:17px;line-height:1.8;margin:3px 0 0;max-width:68ch}.prose+.prose{margin-top:1.15em}.facts{list-style:none;margin:3px 0 0;max-width:68ch;padding:0}.facts li{color:#3a3a3a;color:var(--text);font-size:16px;line-height:1.78;margin-bottom:24px;padding-left:24px;position:relative}.facts li:last-child{margin-bottom:0}.facts li:before{color:#6a6a6a;color:var(--faint);content:"✧";font-size:11px;left:0;position:absolute;top:.05em}.link{border-bottom:1px solid #0000002e;border-bottom:1px solid var(--underline);color:inherit;text-decoration:none;transition:border-color .28s cubic-bezier(.22,.68,.16,1),color .28s cubic-bezier(.22,.68,.16,1);transition:border-color .28s var(--ease),color .28s var(--ease)}.link:hover{border-bottom-color:#0009;border-bottom-color:var(--underline-hover);color:#1a1a1a;color:var(--accent-ink)}.term{position:relative}.term__bubble{text-wrap:balance;-webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);background:#ffffffeb;background:var(--bubble-bg);border:1px solid #00000017;border:1px solid var(--bubble-border);border-radius:13px;bottom:calc(100% + 11px);box-shadow:0 10px 28px #0000001a,0 2px 6px #0000000d;box-shadow:var(--bubble-shadow);color:#3a3a3a;color:var(--text);font-size:13.5px;left:50%;letter-spacing:0;line-height:1.5;max-width:min(264px,72vw);opacity:0;padding:8px 13px;pointer-events:none;position:absolute;text-align:center;transform:translate(-50%,5px) scale(.96);transform-origin:50% 100%;transition:opacity .1s cubic-bezier(.22,.68,.16,1),transform .1s cubic-bezier(.22,.68,.16,1),visibility .1s cubic-bezier(.22,.68,.16,1);transition:opacity .1s var(--ease),transform .1s var(--ease),visibility .1s var(--ease);visibility:hidden;width:-webkit-max-content;width:max-content;z-index:10}.term:hover .term__bubble{opacity:1;transform:translate(-50%) scale(1);transition:opacity .22s cubic-bezier(.22,.68,.16,1) 90ms,transform .22s cubic-bezier(.22,.68,.16,1) 90ms,visibility .22s cubic-bezier(.22,.68,.16,1) 90ms;transition:opacity .22s var(--ease) 90ms,transform .22s var(--ease) 90ms,visibility .22s var(--ease) 90ms;visibility:visible}.divider{align-items:center;display:flex;gap:18px;margin:clamp(52px,9vh,80px) 0;margin:var(--gap-section) 0}.divider:after,.divider:before{background:linear-gradient(90deg,#0000,#e7e5e1 22%,#e7e5e1 78%,#0000);background:linear-gradient(to right,#0000,var(--line) 22%,var(--line) 78%,#0000);content:"";flex:1 1;height:1px}.divider span{animation:pulse 6s cubic-bezier(.22,.68,.16,1) infinite;animation:pulse 6s var(--ease) infinite;color:#6a6a6a;color:var(--faint);font-size:12px}@keyframes pulse{0%,to{opacity:.45}50%{opacity:.9}}.reveal-ready [data-reveal]{opacity:0;transform:translateY(14px);transition:opacity .8s cubic-bezier(.22,.68,.16,1),transform .8s cubic-bezier(.22,.68,.16,1);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:0ms;transition-delay:var(--d,0ms)}.reveal-ready [data-reveal].is-in{opacity:1;transform:none}@media (max-width:900px){.section{column-gap:40px;grid-template-columns:130px 1fr}}@media (max-width:620px){.section{grid-template-columns:1fr;row-gap:14px}.section__label{padding-top:0}.entry__head{align-items:flex-start;flex-direction:column;gap:6px}.entry__side,.entry__when{text-align:left}.brand{font-size:22px}}@media (prefers-reduced-motion:reduce){.divider span,html:before{animation:none}.divider span{opacity:.75}.reveal-ready [data-reveal]{opacity:1!important;transform:none!important;transition:none!important}}
/*# sourceMappingURL=main.a04adab0.css.map*/