:root{--bg: #050505;--bg-soft: #090909;--panel: #0d0d0d;--panel-strong: #121212;--text: #f4f1e8;--text-soft: #d5d0c4;--muted: #918d83;--line: #1d1a1a;--line-strong: #2a2a25;--accent: #ff7566;--accent-hot: var(--accent);--accent-soft: rgba(200, 255, 102, .12);--danger: #ff7a7a;--page-gutter: clamp(1.1rem, 4vw, 2.4rem);--content-width: 1040px;--home-content-width: 720px;--radius: 18px;--font-main: "Avenir Next", "Segoe UI Variable", "Helvetica Neue", sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", "Menlo", monospace}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}html{scrollbar-gutter:stable;scrollbar-color:var(--line-strong) var(--bg)}@supports not (scrollbar-gutter: stable){body{overflow-y:scroll}}body{font-family:var(--font-main);background:var(--bg);color:var(--text);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body::-webkit-scrollbar{width:12px}body::-webkit-scrollbar-track{background:var(--bg)}body::-webkit-scrollbar-thumb{background:var(--line-strong);border:2px solid var(--bg);border-radius:999px}body::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--accent-hot) 18%,var(--line-strong) 82%)}a{color:inherit}button,input,textarea,select{font:inherit}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:40;background:#050505f5;border-bottom:1px solid var(--line)}.topbar-inner{width:min(100%,var(--content-width));margin:0 auto;display:flex;align-items:center;gap:1rem;padding:.95rem var(--page-gutter)}.brand{display:inline-flex;align-items:center;text-decoration:none}.brand-logo{width:2.2rem;height:2.2rem;object-fit:cover;border-radius:.7rem;border:1px solid var(--line);background:var(--panel)}.nav{margin-left:auto;display:inline-flex;align-items:center;gap:.45rem}.nav-link,.projects-link-chip,.text-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:.4rem .78rem;color:var(--muted);background:transparent;transition:border-color .18s ease,color .18s ease,background-color .18s ease,transform .18s ease}.nav-link{font-size:.82rem;white-space:nowrap;box-shadow:0 0 #0000;transition:border-color .18s ease,color .18s ease,background-color .18s ease,transform .18s ease,box-shadow .22s ease}.nav-link:hover{color:var(--text);border-color:color-mix(in srgb,var(--accent-hot) 38%,var(--line-strong) 62%);background:transparent;box-shadow:0 0 0 1px #e000001f,0 0 12px #e000001f,0 0 24px #ff4d0024}.projects-link-chip:hover,.text-button:hover{color:var(--text);border-color:var(--line-strong);background:var(--panel)}.nav-link.is-active,.nav-link.router-link-exact-active{color:var(--text-soft);border-color:color-mix(in srgb,var(--accent-hot) 20%,var(--line-strong) 80%);background:transparent;box-shadow:0 0 0 1px #e0000014,0 0 10px #ff4d0014}.github-link{width:2.15rem;height:2.15rem;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;transition:border-color .18s ease,color .18s ease,transform .18s ease}.github-link:hover{color:var(--text);border-color:var(--line-strong);transform:translateY(-1px)}.github-icon{width:1rem;height:1rem;fill:currentColor}.main-content{width:min(100%,var(--content-width));margin:0 auto;padding:2.1rem var(--page-gutter) 3.5rem;display:grid;gap:2rem;min-width:0}.page-header{display:grid;gap:.9rem}.eyebrow,.project-section-kicker,.year-label,.support-quick-title,.support-card-kicker,.contact-card-badge,.entry-kicker{margin:0;color:var(--muted);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.page-title{margin:0;max-width:18ch;font-size:clamp(2rem,5vw,3.25rem);line-height:1.02;letter-spacing:-.04em}.page-lead,.page-lorem,.home-line,.home-status,.gh-muted,.gh-description,.gh-message,.contact-card-bestfor,.contact-note{margin:0;max-width:70ch;color:var(--text-soft);line-height:1.72}.page-lorem,.home-line,.home-status,.gh-muted,.gh-description,.contact-card-bestfor{color:var(--muted)}.home-hero,.article-page,.gh-activity,.home-support{width:min(100%,var(--home-content-width));margin-inline:auto}.home-hero{gap:.88rem}.home-hero .page-title,.home-hero .page-lead,.home-hero .home-line{max-width:none}.projects-shell{grid-template-columns:minmax(0,1.3fr) minmax(260px,.9fr);align-items:start;gap:1.4rem 2.5rem}.projects-hero-copy,.projects-hero-meta{display:grid;gap:1rem}.projects-hero-copy .page-title,.projects-hero-copy .page-lead{max-width:19ch}.projects-hero-copy .page-lead{max-width:62ch}.projects-index{display:flex;flex-wrap:wrap;gap:.55rem}.projects-index-link{display:inline-flex;align-items:center;text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:.3rem .62rem;color:var(--muted);font-family:var(--font-mono);font-size:.72rem;transition:border-color .18s ease,color .18s ease,background-color .18s ease}.projects-index-link:hover{color:var(--text);border-color:var(--line-strong);background:var(--panel)}.projects-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.projects-stat-card,.support-quick-item,.support-card,.support-panel,.contact-tip-panel,.contact-card,.contact-topic-chip,.contact-note{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.projects-stat-card{padding:.9rem .95rem;display:grid;gap:.35rem}.projects-stat-value{font-size:clamp(1.4rem,4vw,2rem);line-height:1;letter-spacing:-.05em}.projects-stat-label{color:var(--muted);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.projects-link-row,.action-row{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.stack-lines{margin-top:.2rem;display:grid;gap:.5rem}.stack-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:.4rem .7rem}.stack-title{min-width:6.5rem;color:var(--muted);font-size:.84rem}.stack-items{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:.34rem .42rem}.stack-chip{display:inline-flex;align-items:center;gap:.4rem;max-width:100%;min-width:0;overflow-wrap:anywhere;text-decoration:none;border:1px solid var(--line);border-radius:999px;background:var(--panel);padding:.26rem .56rem;color:var(--text-soft);font-family:var(--font-mono);font-size:.76rem;transition:border-color .18s ease,color .18s ease,background-color .18s ease}.stack-chip[href]:hover{color:var(--text);border-color:var(--line-strong);background:var(--panel-strong)}.stack-chip[href]:focus-visible,.projects-index-link:focus-visible,.projects-link-chip:focus-visible,.text-button:focus-visible,.nav-link:focus-visible,.github-link:focus-visible,.projects-load-more:focus-visible,.entry-action:focus-visible,.entry-anchor:focus-visible,.gh-link:focus-visible,.post-back-link:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 70%,white 30%);outline-offset:2px}.stack-chip-logo{width:.94rem;height:.94rem;object-fit:cover;border-radius:999px;flex-shrink:0}.stack-separator{color:var(--muted);font-size:.82rem}.social-logo{fill:currentColor;border:1px solid var(--line);background:var(--panel-strong)}.social-logo-github,.social-logo-telegram{color:var(--text-soft)}.home-copy{margin-top:.2rem;display:grid;gap:.8rem}.text-button{font-size:.82rem}.section-title,.gh-title,.support-panel-title,.support-card-title,.contact-card-title{margin:0;font-size:1rem;color:var(--text);line-height:1.35}.divider{width:100%;margin:0;border:0;border-top:1px solid var(--line)}.gh-activity{display:grid;gap:.7rem}.gh-activity-header{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem}.gh-link,.post-back-link{width:fit-content;text-decoration:none;color:color-mix(in srgb,var(--text) 88%,var(--accent) 12%);border-bottom:1px solid color-mix(in srgb,var(--accent) 24%,var(--line) 76%)}.gh-link:hover,.post-back-link:hover,.markdown-body a:hover{color:var(--text);border-bottom-color:color-mix(in srgb,var(--accent) 48%,var(--line) 52%)}.gh-error{margin:.64rem 0 0;color:var(--danger)}.gh-content{display:grid;gap:.44rem}.gh-meta,.gh-time,.post-head-meta{margin:0;color:var(--muted);font-family:var(--font-mono);font-size:.74rem}.gh-meta a{color:var(--text-soft)}.gh-meta code,.contact-card-badge{border:1px solid var(--line);border-radius:999px;background:var(--panel-strong);padding:.14rem .42rem}.post-head-meta{display:flex;flex-wrap:wrap;gap:.62rem}.list-section{display:grid;gap:1.5rem}.project-section{display:grid;gap:.95rem}.project-section-head{position:relative;display:grid;gap:.55rem;padding:1rem 1.05rem 1.05rem;border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb,var(--panel) 92%,black 8%);box-shadow:inset 0 1px #ffffff05}.project-section-head-plain{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.project-section-kicker{display:inline-flex;width:fit-content;padding:.22rem .48rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--panel-strong);color:var(--text-soft)}.project-section-head-plain .project-section-kicker{padding:0;border:0;border-radius:0;background:transparent}.project-section-title{margin:0;max-width:32ch;font-size:clamp(1.25rem,3.2vw,1.75rem);line-height:1.1;letter-spacing:-.035em;color:var(--text)}.project-section-copy{margin:0;max-width:66ch;color:var(--text-soft);line-height:1.72}.entry-list{display:grid;border-top:1px solid var(--line)}.entry-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.9rem;align-items:start;padding:1rem .25rem;border-bottom:1px solid var(--line);color:inherit;text-decoration:none;transition:background-color .18s ease,transform .18s ease}.entry-row:after{content:"↗";position:absolute;right:.2rem;top:1rem;color:var(--muted);opacity:0;transform:translate(-4px);transition:opacity .18s ease,transform .18s ease}.entry-row:hover{background:#ffffff04;transform:translate(4px)}.entry-row:hover:after{opacity:1;transform:translate(0)}.entry-main{min-width:0}.entry-kicker{display:flex;align-items:center;gap:.35rem;margin-bottom:.4rem;overflow-wrap:anywhere}.entry-kicker-divider{color:color-mix(in srgb,var(--accent) 34%,var(--muted) 66%)}.entry-title{margin:0;font-size:1rem;line-height:1.32}.entry-title-content{display:inline-flex;align-items:center;gap:.55rem;min-width:0}.entry-logo{width:1.15rem;height:1.15rem;object-fit:cover;border-radius:.3rem;border:1px solid var(--line);background:var(--panel-strong);flex-shrink:0}.entry-anchor{text-decoration:none}.entry-anchor:hover{color:color-mix(in srgb,var(--text) 88%,var(--accent) 12%)}.entry-summary{margin:.36rem 0 0;color:var(--text-soft);font-size:.94rem;line-height:1.62;max-width:68ch}.entry-tags{margin:.48rem 0 0;color:var(--muted);font-family:var(--font-mono);font-size:.74rem;line-height:1.6}.entry-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.68rem}.entry-action{display:inline-flex;align-items:center;text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:.24rem .58rem;color:var(--muted);background:transparent;font-family:var(--font-mono);font-size:.72rem;transition:border-color .18s ease,color .18s ease,background-color .18s ease}.entry-action:hover{color:var(--text);border-color:var(--line-strong);background:var(--panel)}.entry-date{white-space:nowrap;color:var(--muted);font-family:var(--font-mono);font-size:.72rem;padding-right:1rem}.projects-load-sentinel{width:100%;height:1px}.projects-load-more{width:fit-content;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text-soft);padding:.5rem .95rem;cursor:pointer;transition:border-color .18s ease,color .18s ease,background-color .18s ease}.projects-load-more:hover{color:var(--text);border-color:var(--line-strong);background:var(--panel-strong)}.support-hero,.contact-hero{gap:1rem}.home-offer-grid{width:100%}.home-offer-card{min-height:100%}.support-quick-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.support-quick-item,.support-card,.support-panel,.contact-tip-panel,.contact-card{padding:.95rem 1rem;display:grid;gap:.45rem}.support-card-grid,.contact-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem}.support-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.support-checklist,.support-steps{margin:.1rem 0 0;padding-left:1.15rem;color:var(--text-soft);line-height:1.65}.support-checklist li+li,.support-steps li+li{margin-top:.28rem}.contact-card-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.contact-card-badge{color:var(--muted)}.contact-note,.contact-topic-chip{padding:.72rem .84rem}.contact-topic-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.56rem}.year-group{display:grid;gap:.68rem}.article-page{display:grid;gap:.88rem;min-width:0}.project-detail-page{gap:1rem}.project-detail-summary{max-width:64ch}.post-content{margin-top:.3rem;min-width:0}.markdown-body{color:var(--text-soft);line-height:1.74;overflow-wrap:anywhere}.markdown-body h2,.markdown-body h3,.markdown-body h4{margin:1.25rem 0 .54rem;color:var(--text);line-height:1.3}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body pre,.markdown-body blockquote{margin:.72rem 0}.markdown-body ul,.markdown-body ol{padding-left:1.2rem}.markdown-body code{font-family:var(--font-mono);font-size:.84em;border:1px solid var(--line);border-radius:7px;background:var(--panel-strong);padding:.14rem .3rem}.markdown-body pre{border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:.8rem .92rem;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.markdown-body pre code{border:0;background:transparent;padding:0}.markdown-body blockquote{border-left:2px solid color-mix(in srgb,var(--accent) 44%,var(--line) 56%);padding-left:.85rem;color:var(--muted)}.markdown-body table{width:max-content;max-width:100%;min-width:100%;border-collapse:collapse;margin:.95rem 0;font-size:.86rem;line-height:1.55;display:block;overflow-x:auto}.markdown-body img,.markdown-body video,.markdown-body iframe,.markdown-body svg{max-width:100%;height:auto}.markdown-body th,.markdown-body td{border:1px solid var(--line);padding:.5rem .62rem;text-align:left;vertical-align:top;min-width:10rem}.markdown-body th{color:var(--text);font-weight:600}.markdown-body tbody tr:nth-child(2n){background:#ffffff05}.markdown-body a{color:color-mix(in srgb,var(--text) 86%,var(--accent) 14%);border-bottom:1px solid color-mix(in srgb,var(--accent) 20%,var(--line) 80%);text-decoration:none}.footer{margin-top:auto;width:min(100%,var(--content-width));margin-left:auto;margin-right:auto;padding:1.3rem var(--page-gutter) 1.8rem;border-top:1px solid var(--line);color:var(--muted);font-size:.8rem;display:flex;flex-wrap:wrap;gap:.45rem 1rem;justify-content:space-between}.footer p{margin:0}.footer a{color:inherit;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 18%,var(--line) 82%)}.footer a:hover{color:var(--text-soft)}.reveal{animation:reveal .3s ease both}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 920px){.topbar-inner{flex-wrap:wrap;row-gap:.65rem}.nav{order:3;width:100%;margin-left:0;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;padding-bottom:.1rem}.nav::-webkit-scrollbar{display:none}.github-link{margin-left:auto}.projects-shell,.support-layout{grid-template-columns:1fr}.projects-hero-copy .page-title,.projects-hero-copy .page-lead{max-width:none}.main-content{padding-top:1.7rem}}@media (max-width: 720px){.page-title{max-width:14ch;font-size:clamp(1.8rem,9vw,2.45rem)}.projects-stat-grid,.support-quick-grid{grid-template-columns:1fr}.stack-title{min-width:auto;width:100%}.entry-row{grid-template-columns:1fr;gap:.48rem;padding-right:1.1rem}.entry-date{padding-right:0;font-size:.7rem}.entry-row:after{top:auto;bottom:1rem}.contact-card-head{align-items:flex-start}.contact-topic-grid,.support-card-grid,.contact-card-grid{grid-template-columns:1fr}.markdown-body{font-size:.95rem;line-height:1.68}.markdown-body th,.markdown-body td{min-width:8rem;padding:.44rem .5rem}.footer{justify-content:flex-start}}@media (max-width: 480px){:root{--page-gutter: 1rem}.topbar-inner{gap:.7rem;padding-top:.8rem;padding-bottom:.8rem}.nav-link,.projects-link-chip,.text-button,.projects-load-more{font-size:.76rem}.main-content{gap:1.5rem;padding-top:1.35rem;padding-bottom:2.7rem}.support-card,.contact-card,.support-panel,.contact-tip-panel,.support-quick-item,.projects-stat-card{padding:.82rem .86rem}}@media (prefers-reduced-motion: reduce){.reveal{animation:none}.entry-row,.nav-link,.projects-link-chip,.text-button,.github-link,.stack-chip,.projects-load-more,.entry-action{transition:none}.entry-row:after{transition:none}}
