:root{--bg:#0b1015;--bg-2:#0f161d;--panel:#101820;--panel-2:#141e28;--border:#1d2933;--text:#dbe4ea;--text-2:#93a7b4;--text-3:#5e7280;--accent:#45d68a;--accent-2:#7be3ac;--accent-dim:#45d68a26;--cyan:#57c7e3;--amber:#e3b341;--mono:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--sans:'Inter', system-ui, -apple-system, sans-serif;--disp:'Space Grotesk', var(--sans);--max:720px;--radius:12px}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--sans);font-size:16px;line-height:1.7;color:var(--text);background:var(--bg);background-image:radial-gradient(ellipse 55% 38% at 18% -8%,#45d68a14,transparent 65%),radial-gradient(ellipse 45% 35% at 100% 12%,#57c7e30f,transparent 60%),linear-gradient(#141e2833 1px,transparent 1px),linear-gradient(90deg,#141e2833 1px,transparent 1px);background-size:auto,auto,44px 44px,44px 44px;background-attachment:fixed;min-height:100vh}::selection{background:var(--accent);color:#08110c}a{color:inherit;text-decoration:none}ul,ol{padding-left:1.5rem}img,svg{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.wrap{max-width:var(--max);margin:0 auto;padding:clamp(1.5rem,4vw,3rem)clamp(1.25rem,5vw,2.5rem)4rem;position:relative}.accent,.a{color:var(--accent)}.topnav{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-bottom:1.1rem;border-bottom:1px solid var(--border);margin-bottom:clamp(2.5rem,7vw,4.5rem)}.nav-id{font-family:var(--mono);font-weight:600;font-size:.95rem;color:var(--text)}.nav-id .accent{margin-right:.15rem;text-shadow:0 0 12px #45d68a99}.nav-links{display:flex;gap:clamp(.85rem,3vw,1.6rem)}.nav-links a{font-family:var(--mono);font-size:.85rem;color:var(--text-2);transition:color .15s ease}.nav-links a:hover{color:var(--accent-2)}.nav-links a.active{color:var(--accent)}.nav-links a.active::before{content:"./";opacity:.6}.prompt{font-family:var(--mono);font-size:.85rem;color:var(--text-3);margin-bottom:.85rem}.prompt .a,.sec-head .a{margin-right:.5em}.prompt::after{content:"▌";color:var(--accent);margin-left:.35em;animation:blink 1.2s steps(1)infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.prompt::after,.cursor{animation:none}}.name,.page-title{font-family:var(--disp);font-weight:700;font-size:clamp(2.5rem,8vw,3.75rem);line-height:1.05;letter-spacing:-.03em;margin:0 0 1.25rem;background:linear-gradient(105deg,#f2f7fa 55%,var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.bio{font-size:1.1rem;color:var(--text-2);max-width:34em;margin-bottom:clamp(2.5rem,6vw,3.5rem)}.bio p{margin-bottom:1em}.bio strong{color:var(--text);font-weight:600}.bio .mark{color:var(--accent-2);background:var(--accent-dim);padding:.05em .3em;border-radius:6px;font-family:var(--mono);font-size:.92em}.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:clamp(2.25rem,6vw,3.25rem)0 1rem;border-bottom:1px solid var(--border);padding-bottom:.7rem}.sec-head h2{font-family:var(--mono);font-weight:500;font-size:.9rem;color:var(--text-2);letter-spacing:0}.sec-head a,.sec-meta{font-family:var(--mono);font-size:.8rem;color:var(--text-3);white-space:nowrap;transition:color .15s ease}.sec-head a:hover{color:var(--accent)}.posts{display:grid;gap:.65rem}.post{display:grid;grid-template-columns:7.5rem 1fr;gap:1rem;align-items:baseline;padding:.9rem 1.1rem;background:linear-gradient(180deg,var(--panel),var(--bg-2));border:1px solid var(--border);border-radius:var(--radius);transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease;position:relative}.post:hover{border-color:#45d68a66;transform:translateY(-2px);box-shadow:0 10px 28px -14px #000a,0 0 0 1px #45d68a22,0 0 24px -8px #45d68a33}.post::after{content:"→";position:absolute;right:1.1rem;top:50%;transform:translateY(-50%)translateX(-4px);color:var(--accent);font-family:var(--mono);opacity:0;transition:opacity .18s ease,transform .18s ease}.post:hover::after{opacity:1;transform:translateY(-50%)translateX(0)}.p-date{font-family:var(--mono);font-size:.78rem;color:var(--text-3);white-space:nowrap}.p-title{font-family:var(--disp);font-weight:600;font-size:1.02rem;letter-spacing:-.01em;color:var(--text);padding-right:1.5rem;transition:color .18s ease}.post:hover .p-title{color:var(--accent-2)}.p-summary{margin:.3rem 0 0;font-size:.9rem;color:var(--text-2);padding-right:1.5rem}.p-tags{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.55rem}.tag{font-family:var(--mono);font-size:.72rem;color:var(--cyan);background:#57c7e314;border:1px solid #57c7e326;padding:.1rem .5rem;border-radius:999px}@media(max-width:560px){.post{grid-template-columns:1fr;gap:.25rem}}.contact{display:grid;gap:.65rem}.contact a{display:flex;align-items:baseline;gap:1rem;padding:.85rem 1.1rem;background:linear-gradient(180deg,var(--panel),var(--bg-2));border:1px solid var(--border);border-radius:var(--radius);transition:border-color .18s ease,transform .18s ease}.contact a:hover{border-color:#45d68a66;transform:translateY(-2px)}.contact .k{font-family:var(--mono);font-size:.8rem;color:var(--text-3);min-width:5.5rem}.contact .k::before{content:"--";margin-right:.35em;opacity:.5}.contact .v{font-family:var(--mono);font-size:.9rem;color:var(--accent-2);overflow-wrap:anywhere}.contact-form{display:grid;gap:.9rem;margin-bottom:1rem}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}@media(max-width:560px){.field-row{grid-template-columns:1fr}}.field{display:grid;gap:.3rem}.field label{font-family:var(--mono);font-size:.78rem;color:var(--text-3)}.field label::before{content:"--";margin-right:.35em;opacity:.5}.field input,.field textarea{font-family:var(--mono);font-size:.92rem;color:var(--text);background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:.75rem .9rem;transition:border-color .15s ease,box-shadow .15s ease;width:100%}.field input::placeholder,.field textarea::placeholder{color:var(--text-3);opacity:.7}.field input:focus,.field textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.field textarea{resize:vertical;min-height:7rem}.submit{justify-self:start;font-family:var(--mono);font-weight:600;font-size:.92rem;color:#08110c;background:var(--accent);border:0;border-radius:999px;padding:.75rem 1.4rem;cursor:pointer;transition:background-color .15s ease,transform .15s ease,box-shadow .15s ease;box-shadow:0 6px 20px -8px #45d68a80}.submit .a{color:#08110c;opacity:.7}.submit:hover{background:var(--accent-2);transform:translateY(-2px);box-shadow:0 10px 26px -8px #45d68a90}.submit:active{transform:translateY(0)}.article-title{font-family:var(--disp);font-weight:700;font-size:clamp(1.9rem,6vw,2.7rem);line-height:1.1;letter-spacing:-.025em;margin:0 0 .85rem;color:var(--text)}.article-meta{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;font-family:var(--mono);font-size:.8rem;color:var(--text-3);margin-bottom:1.75rem}.dot-sep{opacity:.5}.article-lede{font-size:1.12rem;color:var(--text-2);border-left:2px solid var(--accent);padding-left:1rem;margin:0 0 2rem}.prose{font-size:1.02rem;color:var(--text-2)}.prose p{margin:0 0 1.2em}.prose strong{color:var(--text);font-weight:600}.prose em{color:var(--text)}.prose h2,.prose h3,.prose h4{font-family:var(--disp);font-weight:600;letter-spacing:-.015em;color:var(--text);margin:2.2em 0 .6em;line-height:1.2}.prose h2{font-size:1.45rem}.prose h2::before{content:"## ";color:var(--accent);font-family:var(--mono);font-size:.85em}.prose h3{font-size:1.15rem}.prose h3::before{content:"### ";color:var(--accent);font-family:var(--mono);font-size:.85em;opacity:.8}.prose a{color:var(--accent-2);border-bottom:1px solid #45d68a55;transition:color .15s ease,border-color .15s ease}.prose a:hover{color:var(--accent);border-color:var(--accent)}.prose ul,.prose ol{margin:0 0 1.2em}.prose li{margin:.3em 0}.prose li::marker{color:var(--accent)}.prose blockquote{margin:1.5em 0;padding:.85em 1.2em;border-left:2px solid var(--accent);background:var(--panel);border-radius:0 var(--radius)var(--radius)0;color:var(--text-2)}.prose blockquote p:last-child{margin-bottom:0}.prose hr{border:0;border-top:1px solid var(--border);margin:2.5em 0}.prose img{max-width:100%;border-radius:var(--radius);border:1px solid var(--border)}.prose table{width:100%;border-collapse:collapse;font-size:.92rem;margin:1.5em 0;display:block;overflow-x:auto}.prose th,.prose td{padding:.55em .85em;border:1px solid var(--border);text-align:left}.prose th{font-family:var(--mono);font-size:.8rem;color:var(--text);background:var(--panel)}.prose code{font-family:var(--mono);font-size:.88em;color:var(--accent-2);background:var(--panel-2);border:1px solid var(--border);padding:.08em .4em;border-radius:6px}.prose pre{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem;overflow-x:auto;margin:1.5em 0;line-height:1.6}.prose pre code{background:0 0;border:0;padding:0;color:var(--text);font-size:.86rem}.highlight{margin:1.5em 0}.highlight pre{margin:0}.chroma .c,.chroma .c1,.chroma .cm,.chroma .ch{color:#5e7280;font-style:italic}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kr,.chroma .kc,.chroma .kt{color:#c792ea}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sh{color:#8fd9a8}.chroma .se{color:#e3b341}.chroma .m,.chroma .mi,.chroma .mf,.chroma .mh{color:#e3b341}.chroma .nb,.chroma .nf,.chroma .fm{color:#57c7e3}.chroma .nc,.chroma .nn{color:#ffcb6b}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi{color:#f78c6c}.chroma .o,.chroma .p{color:#93a7b4}.chroma .nt{color:#f07178}.chroma .na{color:#ffcb6b}.chroma .gp{color:#45d68a}.chroma .err{color:#f07178}.external-out{margin:2rem 0 0}.external-out a,.article-foot a{font-family:var(--mono);font-size:.88rem;color:var(--text-2);transition:color .15s ease}.external-out a:hover,.article-foot a:hover{color:var(--accent)}.article-foot{margin-top:3rem;padding-top:1.25rem;border-top:1px solid var(--border)}.sitefoot{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:clamp(3rem,8vw,5rem);padding-top:1.5rem;border-top:1px solid var(--border);font-family:var(--mono);font-size:.8rem;color:var(--text-3)}.cursor{color:var(--accent);animation:blink 1.2s steps(1)infinite}.foot-links{display:flex;gap:1.1rem;flex-wrap:wrap}.foot-links a{color:var(--text-3);transition:color .15s ease}.foot-links a:hover{color:var(--accent)}