*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg: #0a0a0f;--bg-surface: #0f0f18;--text: #c8c8d0;--text-dim: #6a6a7a;--text-bright: #e8e8f0;--accent: #00e5a0;--accent-dim: #00b87d;--accent-glow: rgba(0, 229, 160, .08);--border: #1e1e2e;--code-bg: #12121c;--link: #00e5a0;--link-hover: #40ffca;--mono: "JetBrains Mono", "Courier New", monospace;--display: "Space Mono", monospace;--max-w: 82ch;--gutter: 1.5rem}html{background:var(--bg);color:var(--text);font-family:var(--mono);font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased;scroll-behavior:smooth;overflow-x:hidden}body{min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}::selection{background:var(--accent);color:var(--bg)}a{color:var(--link);text-decoration:none;transition:color .15s}a:hover{color:var(--link-hover)}.container{width:100%;max-width:var(--max-w);margin:0 auto;padding:0 var(--gutter)}main.container{flex:1;padding-top:2.5rem;padding-bottom:4rem}.site-nav{border-bottom:1px solid var(--border);padding:1rem 0;position:sticky;top:0;z-index:100;backdrop-filter:blur(12px);background:#0a0a0feb}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem}.nav-brand{color:var(--text-bright);font-size:.88rem;font-weight:700;letter-spacing:.04em}.nav-brand:hover{color:var(--accent)}.nav-brand .prompt{color:var(--accent-dim);font-weight:400}.nav-brand .cursor{color:var(--accent);animation:blink 1.2s step-end infinite}.nav-links{display:flex;gap:.25rem;list-style:none}.nav-links a{color:var(--text-dim);font-size:.82rem;padding:.35rem .65rem;transition:color .15s,background .15s;letter-spacing:.02em}.nav-links a:hover,.nav-links a.active{color:var(--accent);background:var(--accent-glow)}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.section-title{font-family:var(--display);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border);padding-bottom:.75rem;margin-bottom:1.5rem}.section-title:before{content:"# ";color:var(--accent-dim)}.home-section{margin-top:2.5rem}.post-list{list-style:none}.post-item{padding:.9rem 0;border-bottom:1px solid var(--border)}.post-row{display:flex;gap:2ch;align-items:baseline}.post-row time{flex-shrink:0;width:10ch;color:var(--text-dim);font-size:.8rem}.post-row .post-title{color:var(--text-bright);font-size:.98rem;font-weight:500;line-height:1.45;transition:color .15s}.post-row:hover .post-title{color:var(--accent)}.post-sub{margin-left:12ch}.post-description{margin-top:.3rem;font-size:.82rem;color:var(--text-dim);line-height:1.55}.post-tags{margin-top:.25rem;display:flex;gap:1.2ch;flex-wrap:wrap}.post-tag{font-size:.72rem;color:var(--text-dim)}.post-tag:before{content:"#";color:var(--accent-dim)}.post-back{font-size:.85rem;color:var(--text-dim);margin-bottom:2rem;display:inline-block}.post-back:hover{color:var(--accent)}.post-header{margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.post-header h1{font-family:var(--display);font-size:1.6rem;font-weight:700;color:var(--text-bright);line-height:1.3;letter-spacing:-.02em}.post-meta{margin-top:.75rem;font-size:.78rem;color:var(--text-dim);display:flex;gap:1.5ch;align-items:center;flex-wrap:wrap}.post-toc{background:var(--bg-surface);border:1px solid var(--border);padding:1.25rem 1.5rem;margin-bottom:2.5rem}.post-toc summary{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);cursor:pointer;list-style:none}.post-toc summary:before{content:"▸ ";color:var(--accent-dim)}.post-toc[open] summary:before{content:"▾ "}.post-toc ol{margin-top:.75rem;padding-left:1.25rem;list-style-type:decimal}.post-toc li{margin:.3rem 0;font-size:.82rem}.post-toc a{color:var(--text);transition:color .15s}.post-toc a:hover{color:var(--accent)}.post-content h2{font-family:var(--display);font-size:1.15rem;font-weight:700;color:var(--text-bright);margin:2.5rem 0 1rem}.post-content h2:before{content:"## ";color:var(--accent-dim)}.post-content h3{font-size:1rem;font-weight:600;color:var(--text-bright);margin:2rem 0 .75rem}.post-content h3:before{content:"### ";color:var(--accent-dim);font-weight:400}.post-content p{margin-bottom:1.2rem}.post-content ul,.post-content ol{margin-bottom:1.2rem;padding-left:1.5rem}.post-content li{margin-bottom:.4rem}.post-content code{font-family:var(--mono);font-size:.88em;background:var(--code-bg);padding:.15em .4em;color:var(--accent);word-break:break-word}.post-content pre{background:var(--code-bg)!important;border:1px solid var(--border);padding:1.25rem;margin-bottom:1.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;font-size:.82rem;line-height:1.6}.post-content pre code{background:none;padding:0;color:var(--text);word-break:normal}.post-content blockquote{border-left:3px solid var(--accent-dim);padding:.5rem 1rem;margin:1.5rem 0;color:var(--text-dim);background:var(--accent-glow)}.post-content img{max-width:100%;height:auto;border:1px solid var(--border);margin:1rem 0}.post-content a{border-bottom:1px solid var(--accent-dim)}.post-content a:hover{border-bottom-color:var(--link-hover)}.project-grid{display:grid;gap:1rem}.project-card{display:block;background:var(--bg-surface);border:1px solid var(--border);padding:1.25rem 1.5rem;transition:border-color .2s,box-shadow .2s;color:inherit;position:relative}.project-card:after{content:"↗";position:absolute;top:1.25rem;right:1.25rem;font-size:.85rem;color:var(--text-dim);opacity:0;transition:opacity .2s,color .2s}.project-card:hover{border-color:var(--accent-dim);box-shadow:0 0 20px #00e5a00a;color:inherit}.project-card:hover:after{opacity:1;color:var(--accent)}.project-name{font-weight:600;color:var(--text-bright);font-size:1rem}.project-desc{margin-top:.5rem;font-size:.85rem;color:var(--text-dim);line-height:1.5}.project-tech{margin-top:.75rem;display:flex;gap:.4rem;flex-wrap:wrap}.project-tech span{font-size:.68rem;padding:.15rem .5rem;border:1px solid var(--border);color:var(--accent-dim);letter-spacing:.03em}.gitlog-cmd{font-size:.78rem;color:var(--text-dim);margin-bottom:.6rem}.gitlog-cmd:before{content:"~$ ";color:var(--accent-dim)}.gitlog ul{list-style:none}.gitlog li{display:flex;gap:1.6ch;align-items:baseline;font-size:.78rem;padding:.28rem 0;white-space:nowrap;overflow:hidden}.gitlog-sha{flex-shrink:0;color:var(--accent)}.gitlog-sha:hover{color:var(--link-hover)}.gitlog li time{flex-shrink:0;width:10ch;color:var(--text-dim);font-size:.72rem}.gitlog-repo{flex-shrink:0;max-width:22ch;overflow:hidden;text-overflow:ellipsis;color:var(--text-dim)}.gitlog-msg{overflow:hidden;text-overflow:ellipsis;color:var(--text)}.gitlog-note{display:block;margin-top:.6rem;font-size:.68rem;color:var(--text-dim)}.project-live{margin-top:.7rem;padding-top:.6rem;border-top:1px solid var(--border);display:flex;gap:2ch;flex-wrap:wrap;font-size:.7rem;color:var(--text-dim)}.project-live .stars:before{content:"★ ";color:var(--accent-dim)}.project-live time{color:var(--text-dim)}.site-footer{margin-top:auto;border-top:1px solid var(--border);padding:1.5rem 0;text-align:center;font-size:.72rem;color:var(--text-dim);letter-spacing:.05em}.site-footer a{color:var(--text-dim)}.site-footer a:hover{color:var(--accent)}@media(max-width:768px){.project-card{padding:1rem 1.25rem}.post-content pre{font-size:.78rem;padding:1rem}}@media(max-width:600px){html{font-size:14px}:root{--gutter: 1rem}.nav-inner{gap:.5rem}.nav-links{gap:.1rem;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-links a{padding:.4rem .5rem;font-size:.75rem;white-space:nowrap;min-height:44px;display:flex;align-items:center}.post-row{flex-direction:column;gap:.1rem}.post-row time{width:auto;font-size:.72rem}.post-sub{margin-left:0}.post-header h1{font-size:1.3rem}.gitlog-repo{display:none}.post-toc{padding:1rem}.post-content pre{padding:.75rem;font-size:.75rem}.post-meta{font-size:.72rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border)}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}
