:root{--bg:#fff;--text:#0a0a0a;--text-secondary:#3a3a3a;--muted:#9a9a9a;--hairline:#ededed;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-heading:"Libre Franklin", "Inter", ui-sans-serif, system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg)}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.heading{font-family:var(--font-heading);font-weight:600}a{color:inherit}main{background:var(--bg);justify-content:flex-start;align-items:flex-start;min-height:100vh;padding:clamp(48px,8vh,104px) clamp(28px,8vw,140px) 120px;display:flex}.content{text-align:left;width:100%;max-width:600px}.photo{object-fit:cover;border:1px solid var(--hairline);background:#f6f6f6;border-radius:50%;width:92px;height:92px;display:block}.name{letter-spacing:-.01em;color:var(--text);margin:28px 0 0;font-size:clamp(44px,7vw,60px);line-height:1.02}.socials{flex-wrap:wrap;align-items:center;gap:20px;margin:22px 0 0;display:flex}.social-item{color:var(--text);align-items:center;gap:8px;text-decoration:none;transition:opacity .2s;display:inline-flex}.social-item:hover{opacity:.5}.social-handle{font-size:15px;font-weight:500;line-height:1}.social-button{cursor:pointer;font:inherit;background:0 0;border:none;margin:0;padding:0}.email-backdrop{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a0a0a47;justify-content:center;align-items:center;padding:24px;animation:.16s both email-fade;display:flex;position:fixed;inset:0}.email-card{background:var(--bg);border:1px solid var(--hairline);border-radius:14px;width:100%;max-width:340px;padding:22px 24px 20px;animation:.2s cubic-bezier(.22,1,.36,1) both email-pop;box-shadow:0 18px 50px #0a0a0a2e}.email-card-label{letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-size:12px;font-weight:600}.email-canvas{max-width:100%;display:block}.email-actions{gap:10px;margin-top:20px;display:flex}.email-action{color:var(--text);background:var(--bg);border:1px solid var(--hairline);cursor:pointer;border-radius:9px;flex:1;padding:9px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:border-color .18s,color .18s}.email-action:hover{border-color:var(--text)}@media (prefers-reduced-motion:no-preference){@keyframes email-fade{0%{opacity:0}}@keyframes email-pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}}.divider{background:var(--hairline);width:100%;height:1px;margin:36px 0}.prose{color:var(--text-secondary);text-wrap:pretty;max-width:520px;font-size:17px;line-height:1.65}.bio .prose+.prose{margin-top:18px}.dex-link{color:var(--text);border-bottom:1.5px solid var(--text);font-weight:600;text-decoration:none}.writing-label{letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:12px;font-weight:600}.writing-list{flex-direction:column;display:flex}.writing-row{border-bottom:1px solid var(--hairline);color:var(--text);justify-content:space-between;align-items:baseline;gap:24px;padding:16px 0;text-decoration:none;transition:opacity .2s;display:flex}.writing-row:hover{opacity:.55}.writing-row-title{font-size:17px;font-weight:500;line-height:1.4}.writing-row-date{color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:14px}.back-link{color:var(--muted);margin-bottom:40px;font-size:15px;text-decoration:none;transition:color .2s;display:inline-block}.back-link:hover{color:var(--text)}.article-title{letter-spacing:-.01em;color:var(--text);font-size:clamp(34px,5vw,44px);line-height:1.06}.article-date{color:var(--muted);font-variant-numeric:tabular-nums;margin:14px 0 0;font-size:14px}.article-body{margin-top:36px}.article-body>*+*{margin-top:20px}.article-h{color:var(--text);margin-top:34px;font-size:20px;font-weight:600;line-height:1.3}.article-ul{max-width:520px;padding-left:20px}.article-ul li{color:var(--text-secondary);text-wrap:pretty;font-size:17px;line-height:1.65}.article-ul li+li{margin-top:10px}.article-body a{color:var(--text);border-bottom:1px solid var(--muted);text-decoration:none;transition:border-color .2s}.article-body a:hover{border-color:var(--text)}.article-body strong{color:var(--text);font-weight:600}.article-body :not(pre)>code{background:#f6f6f6;border-radius:5px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:.9em}.codeblock{border:1px solid var(--hairline);background:#fafafa;border-radius:12px;overflow:hidden}.codeblock-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:12px;padding:9px 12px 9px 14px;display:flex}.codeblock-label{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;font-weight:500}.codeblock-copy{color:var(--text);background:var(--bg);border:1px solid var(--hairline);cursor:pointer;border-radius:7px;flex-shrink:0;padding:4px 12px;font-family:inherit;font-size:13px;font-weight:500;transition:border-color .18s}.codeblock-copy:hover{border-color:var(--text)}.codeblock-body{margin:0;padding:14px 16px;overflow-x:auto}.codeblock-body code{color:var(--text);white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.65}.page-not-found-title{margin-bottom:16px;font-size:clamp(34px,5vw,44px)}@media (prefers-reduced-motion:no-preference){@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.rise>*{animation:.65s cubic-bezier(.22,1,.36,1) both rise}.rise>:first-child{animation-delay:40ms}.rise>:nth-child(2){animation-delay:.1s}.rise>:nth-child(3){animation-delay:.18s}.rise>:nth-child(4){animation-delay:.26s}.rise>:nth-child(5){animation-delay:.34s}.rise>:nth-child(6){animation-delay:.42s}.rise>:nth-child(7){animation-delay:.5s}::view-transition-old(root){animation:.2s both vt-out}::view-transition-new(root){animation:.32s cubic-bezier(.22,1,.36,1) both vt-in}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0;transform:translateY(8px)}}}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}
