@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Instrument+Serif:ital@0;1&display=swap";:root{--bg:#fdfdfc;--fg:#1c1c1c;--fg-deep:#000;--muted:#6b6b6b;--faint:#a3a3a3;--line:#e8e8e6;--card:#fff;--accent:#0e8f8f;--accent-soft:#0e8f8f1a;--avatar-bg:#4a8a8a;--ghost:#0000000b;--ghost-text:#d4d4d0;--sans:"Inter", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--serif:"Instrument Serif", Georgia, serif;color-scheme:light}:root.dark{--bg:#0d0d0d;--fg:#d8d8d8;--fg-deep:#fff;--muted:#8f8f8f;--faint:#5c5c5c;--line:#222;--card:#141414;--accent:#3cc9c9;--accent-soft:#3cc9c91f;--avatar-bg:#3a9696;--ghost:#ffffff0a;--ghost-text:#363636;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;scroll-behavior:smooth;font-size:16px;line-height:1.7}body{background:0 0;min-height:100vh;margin:0;overflow-x:hidden}::selection{background:var(--accent-soft);color:var(--fg-deep)}a{color:inherit;text-decoration:none}.prose a,a.u{color:var(--fg-deep);border-bottom:1px solid var(--line);transition:border-color .2s}.prose a:hover,a.u:hover{border-bottom-color:var(--accent)}img{max-width:100%}.wrap{max-width:44rem;margin:0 auto;padding:0 1.25rem}main{padding:3.5rem 0 6rem}.nav{z-index:20;-webkit-backdrop-filter:blur(10px);background:color-mix(in srgb, var(--bg) 75%, transparent);position:sticky;top:0}.nav .wrap{justify-content:space-between;align-items:center;max-width:64rem;height:4rem;display:flex}.logo{font-family:var(--serif);color:var(--fg-deep);font-size:1.6rem;font-style:italic;line-height:1}.nav-links{align-items:center;gap:1.25rem;font-size:.925rem;display:flex}.nav-links a,.nav-links button{color:var(--muted);transition:color .2s}.nav-links a:hover,.nav-links button:hover,.nav-links a[aria-current=page]{color:var(--fg-deep)}.nav-links .icon{display:inline-flex}.nav-links button{cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.nav-sep{background:var(--line);width:1px;height:1rem}@media (width<=560px){.nav-links{gap:.9rem}.hide-sm{display:none!important}}h1,h2,h3{color:var(--fg-deep);font-weight:600;line-height:1.25}.page-title{letter-spacing:-.02em;margin:0 0 .5rem;font-size:2.25rem;font-weight:700}.page-sub{color:var(--muted);margin:0 0 3rem;font-style:italic}.eyebrow{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:0 0 1.25rem;font-size:.75rem}.mono{font-family:var(--mono)}.serif{font-family:var(--serif);font-style:italic;font-weight:400}section+section{margin-top:5rem}.hero{gap:1.5rem;display:grid}.hero-top{align-items:center;gap:1rem;display:flex}.avatar{object-fit:cover;background:var(--avatar-bg);border-radius:50%;width:56px;height:56px}.hero h1{letter-spacing:-.03em;margin:0;font-size:clamp(2.2rem,6vw,3.2rem);font-weight:700;line-height:1.1}.hero h1 .serif{color:var(--accent);font-size:1.08em}.rotator{vertical-align:bottom;margin:0 -.08em -.12em;padding:0 .08em .12em;display:inline-grid;overflow:hidden}.rotator .w{opacity:0;filter:blur(6px);grid-area:1/1;transition:opacity .5s,transform .6s cubic-bezier(.2,.8,.2,1),filter .5s;transform:translateY(70%)}.rotator .w.on{opacity:1;filter:none;transform:none}.rotator .w.out{opacity:0;filter:blur(6px);transform:translateY(-70%)}.hero-meta{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.8rem;display:flex}.dot-live{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:50%;display:inline-block}.hero p{color:var(--fg);margin:0;font-size:1.05rem}.hero p strong{color:var(--fg-deep);font-weight:600}.highlight{border:1px solid var(--line);background:var(--card);border-radius:12px;align-items:center;gap:.9rem;padding:.9rem 1.1rem;font-size:.925rem;transition:border-color .2s,transform .2s;display:flex}.highlight:hover{border-color:var(--accent);transform:translateY(-1px)}.highlight .star{color:var(--accent);font-size:1.1rem}.highlight small{color:var(--muted);font-size:.8rem;display:block}.socials{flex-wrap:wrap;gap:.6rem;display:flex}.pill{border:1px solid var(--line);color:var(--muted);background:var(--card);cursor:pointer;border-radius:999px;align-items:center;gap:.45rem;padding:.35rem .8rem;font-family:inherit;font-size:.85rem;transition:color .2s,border-color .2s;display:inline-flex}.pill:hover{color:var(--fg-deep);border-color:var(--faint)}.cards{gap:1rem;display:grid}.card{border:1px solid var(--line);background:var(--card);border-radius:14px;padding:1.35rem 1.4rem 1.2rem;transition:border-color .25s,transform .25s,box-shadow .25s;display:block;position:relative;overflow:hidden}.card:before{content:"";background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);opacity:0;pointer-events:none;background-size:22px 22px;transition:opacity .3s;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 100% 0,#000 0%,#0000 55%);mask-image:radial-gradient(circle at 100% 0,#000 0%,#0000 55%)}.card:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));transform:translateY(-2px);box-shadow:0 10px 30px -18px #00000040}.card:hover:before{opacity:1}.card-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.card h3{margin:0;font-size:1.1rem}.card .year{font-family:var(--mono);color:var(--faint);font-size:.75rem}.badge{color:var(--accent);background:var(--accent-soft);border-radius:999px;margin-top:.4rem;padding:.1rem .55rem;font-size:.72rem;font-weight:500;display:inline-block}.card p{color:var(--muted);margin:.6rem 0 0;font-size:.93rem;position:relative}.metric{border-top:1px dashed var(--line);font-family:var(--mono);color:var(--fg);margin-top:.85rem;padding-top:.75rem;font-size:.75rem;position:relative}.card-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:.85rem;display:flex;position:relative}.tags{flex-wrap:wrap;gap:.35rem;display:flex}.tag{font-family:var(--mono);border:1px solid var(--line);color:var(--muted);border-radius:5px;padding:.1rem .45rem;font-size:.7rem}.links{gap:.9rem;font-size:.82rem;display:flex}.links a{color:var(--muted);z-index:2;align-items:center;gap:.3rem;display:inline-flex;position:relative}.links a:hover{color:var(--accent)}.see-all{color:var(--muted);margin-top:1.25rem;font-size:.9rem;display:inline-flex}.see-all:hover{color:var(--fg-deep)}.year-block{position:relative}.year-block+.year-block{margin-top:2.25rem}.ghost-year{letter-spacing:-.03em;color:var(--bg);-webkit-text-stroke:3px var(--ghost-text);paint-order:stroke fill;user-select:none;margin:0 0 .9rem -.1rem;font-size:4.5rem;font-weight:800;line-height:1;display:block}@media (width<=560px){.ghost-year{font-size:3.4rem}}.tl{margin:0;padding:0;list-style:none;position:relative}.tl li{border-left:1px solid var(--line);padding:.55rem 0 .55rem 1.4rem;position:relative}.tl li:before{content:"";background:var(--bg);border:1.5px solid var(--faint);border-radius:50%;width:7px;height:7px;transition:border-color .2s,background .2s;position:absolute;top:1.15rem;left:-4px}.tl li:hover:before{border-color:var(--accent);background:var(--accent)}.tl-row{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.tl-title{color:var(--fg-deep);font-weight:500}.tl-org{color:var(--muted)}.tl-when{font-family:var(--mono);color:var(--faint);white-space:nowrap;font-size:.75rem}.tl-note{color:var(--muted);margin:.15rem 0 0;font-size:.87rem}.post-list{margin:0;padding:0;list-style:none}.post-list a{color:var(--fg);opacity:.75;align-items:baseline;gap:.75rem;padding:.5rem 0;transition:opacity .2s;display:flex}.post-list a:hover{opacity:1}.post-list .t{color:var(--fg-deep);font-size:1.05rem}.post-list .d{color:var(--faint);white-space:nowrap;font-size:.82rem}.plist{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:.5rem 1.5rem;display:grid}.pitem{border-radius:10px;margin:0 -.9rem;padding:.8rem .9rem;transition:background .2s;display:block}.pitem:hover{background:var(--ghost)}.pitem .n{color:var(--fg-deep);flex-wrap:wrap;align-items:center;gap:.5rem;font-weight:500;display:flex}.pitem .n .badge{margin:0}.pitem .b{color:var(--muted);margin:.2rem 0 0;font-size:.87rem;line-height:1.55}.contact{border:1px solid var(--line);background:var(--card);border-radius:16px;padding:2rem 1.75rem;position:relative;overflow:hidden}.contact:after{content:"";background:radial-gradient(circle, var(--accent-soft), transparent 70%);pointer-events:none;width:220px;height:220px;position:absolute;bottom:-60px;right:-60px}.contact h2{margin:0 0 .4rem;font-size:1.5rem}.contact p{color:var(--muted);margin:0 0 1.25rem}.prose{font-size:1.02rem}.prose h2{margin-top:2.5rem;font-size:1.4rem}.prose h3{margin-top:2rem}.prose code:not(pre code){font-family:var(--mono);background:var(--ghost);border-radius:4px;padding:.1em .35em;font-size:.88em}.prose pre{font-family:var(--mono);border:1px solid var(--line);border-radius:10px;padding:1rem 1.2rem;font-size:.85rem;line-height:1.6;overflow-x:auto}.prose blockquote{border-left:3px solid var(--line);color:var(--muted);margin:1.5rem 0;padding-left:1rem}:root.dark .astro-code,:root.dark .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}.astro-code,:root.dark .astro-code{background-color:#0000!important}footer{color:var(--faint);padding:2.5rem 0 3rem;font-size:.85rem}footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}footer a:hover{color:var(--fg)}#bg{z-index:-1;pointer-events:none;--col:max(50%, 26rem);mask-image:linear-gradient(to bottom, #000 0%, transparent 75%), linear-gradient(to right, #000 0, transparent calc(50% - var(--col) / 2), transparent calc(50% + var(--col) / 2), #000 100%);mask-composite:intersect;-webkit-mask-image:linear-gradient(to bottom, #000 0%, transparent 75%), linear-gradient(to right, #000 0, transparent calc(50% - var(--col) / 2), transparent calc(50% + var(--col) / 2), #000 100%);-webkit-mask-composite:source-in;position:fixed;inset:0}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.slide-enter>*{animation:.6s cubic-bezier(.2,.7,.2,1) both rise;animation-delay:calc(var(--i,0) * 70ms)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.i-moon,:root.dark .i-sun{display:none}:root.dark .i-moon{display:inline-flex}
