*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0b0b12;--surface:#111120;--surface-2:#181828;--text:#e2e8f0;--muted:#556070;--accent:#38bdf8;--accent-dim:rgba(56,189,248,0.12);--accent-glow:rgba(56,189,248,0.25);--green:#34d399;--border:#1c1c30;--border-lit:#2a2a45;--max-width:740px;--font-sans:'Inter',system-ui,-apple-system,sans-serif;--font-mono:'Fira Code','Cascadia Code','JetBrains Mono',Consolas,monospace}[data-theme="light"]{--bg:#f4f6f9;--surface:#ffffff;--surface-2:#eaecf2;--text:#1a1b26;--muted:#7a8799;--accent:#0284c7;--accent-dim:rgba(2,132,199,0.08);--accent-glow:rgba(2,132,199,0.2);--green:#059669;--border:#dde3ec;--border-lit:#c5cedd}[data-theme="light"] body{background-image:radial-gradient(circle,#d0d7e4 1px,transparent 1px)}[data-theme="light"] .site{background:linear-gradient(to bottom,transparent 0%,var(--bg) 120px)}[data-theme="light"] .post-body{color:#374151}[data-theme="light"] .post-body pre{background:#1e1e2e;border-color:#2a2a45}[data-theme="light"] .post-body pre::before{color:#3a3a55}[data-theme="light"] .post-body hr::after{background:var(--bg)}html{font-size:17px}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.75;min-height:100vh;background-image:radial-gradient(circle,#1c1c30 1px,transparent 1px);background-size:28px 28px}.site{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;display:flex;flex-direction:column;min-height:100vh;background:linear-gradient(to bottom,transparent 0%,var(--bg) 120px)}main{flex:1;padding:3rem 0 5rem}.site-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem 0;border-bottom:1px solid var(--border)}.site-title{font-family:var(--font-mono);font-weight:600;font-size:1rem;color:var(--accent);text-decoration:none;letter-spacing:-0.01em}.site-title .prompt{color:var(--green);margin-right:0.1em}.site-title .cursor{display:inline-block;width:0.55em;height:1em;background:var(--accent);margin-left:0.15em;vertical-align:text-bottom;animation:blink 1.1s step-end infinite;border-radius:1px}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}.header-right{display:flex;align-items:center;gap:1rem}.site-header nav a{font-family:var(--font-mono);font-size:0.82rem;color:var(--muted);text-decoration:none;transition:color 0.15s}.site-header nav a:hover{color:var(--accent)}.icon-btn{background:none;border:1px solid var(--border-lit);border-radius:6px;color:var(--muted);cursor:pointer;padding:0.3rem 0.4rem;display:flex;align-items:center;justify-content:center;transition:color 0.15s,border-color 0.15s,background 0.15s;line-height:0;text-decoration:none}.icon-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}[data-theme="dark"] .icon-moon{display:none}[data-theme="light"] .icon-sun{display:none}.scroll-progress{position:fixed;top:0;left:0;height:2px;width:0%;background:var(--accent);z-index:200;box-shadow:0 0 8px var(--accent-glow);transition:width 0.08s linear;pointer-events:none}.site-footer{border-top:1px solid var(--border);padding:1.25rem 0;display:flex;align-items:center;justify-content:center;gap:0.5rem;font-family:var(--font-mono);font-size:0.78rem;color:var(--muted)}.site-footer::before{content:'//';color:var(--border-lit)}.site-footer a{color:var(--muted);text-decoration:none;transition:color 0.15s}.site-footer a:hover{color:var(--accent)}.post-list{list-style:none;display:flex;flex-direction:column;gap:1rem}.post-list li{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:0.3rem;transition:border-color 0.2s,box-shadow 0.2s,transform 0.15s;position:relative}.post-list li::before{content:'';position:absolute;inset:0;border-radius:8px;background:linear-gradient(135deg,var(--accent-dim) 0%,transparent 60%);opacity:0;transition:opacity 0.2s;pointer-events:none}.post-list li:hover{border-color:var(--border-lit);box-shadow:0 0 0 1px var(--border-lit),0 4px 24px rgba(0,0,0,0.4);transform:translateY(-1px)}.post-list li:hover::before{opacity:1}.post-list-meta{display:flex;align-items:center;gap:0.75rem}.post-list a{font-size:1.05rem;font-weight:600;color:var(--text);text-decoration:none;transition:color 0.15s;line-height:1.3}.post-list li{cursor:pointer}.post-list a:hover{color:var(--accent)}.post-list time{font-family:var(--font-mono);font-size:0.78rem;color:var(--muted);white-space:nowrap}.post-list p{color:var(--muted);font-size:0.9rem;line-height:1.5}.post-list .tags{margin-top:0.5rem}.post-header{margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.post-header h1{font-size:1.9rem;line-height:1.2;font-weight:700;margin-bottom:0.75rem;letter-spacing:-0.02em}.post-meta{display:flex;align-items:center;gap:0.75rem;margin-bottom:0.25rem}.post-header time{font-family:var(--font-mono);font-size:0.82rem;color:var(--muted)}.reading-time{font-family:var(--font-mono);font-size:0.78rem;color:var(--muted)}.reading-time::before{content:'· '}.post-nav{display:flex;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border)}.post-nav a{font-family:var(--font-mono);font-size:0.82rem;color:var(--muted);text-decoration:none;transition:color 0.15s;max-width:45%;line-height:1.4}.post-nav a:hover{color:var(--accent)}.post-nav .post-nav-next{text-align:right;margin-left:auto}.post-body pre{position:relative}.copy-btn{position:absolute;top:0.45rem;right:0.6rem;background:var(--surface-2);border:1px solid var(--border-lit);border-radius:4px;color:var(--muted);font-family:var(--font-mono);font-size:0.7rem;padding:0.15rem 0.5rem;cursor:pointer;opacity:0;transition:opacity 0.15s,color 0.15s,border-color 0.15s}.post-body pre:hover .copy-btn{opacity:1}.copy-btn:hover{color:var(--accent);border-color:var(--accent)}.copy-btn.copied{color:var(--green);border-color:var(--green);opacity:1}.tag-header{margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.tag-label{font-family:var(--font-mono);font-size:0.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:0.35rem}.tag-header h1{font-size:1.8rem;font-weight:700;color:var(--green);letter-spacing:-0.02em;margin-bottom:0.25rem}.tag-count{font-family:var(--font-mono);font-size:0.82rem;color:var(--muted)}.tags{display:flex;gap:0.4rem;flex-wrap:wrap;margin-top:0.75rem}.tag{font-family:var(--font-mono);font-size:0.72rem;background:var(--surface-2);color:var(--green);border:1px solid rgba(52,211,153,0.2);padding:0.15rem 0.6rem;border-radius:4px;letter-spacing:0.02em;text-decoration:none;transition:background 0.15s,border-color 0.15s}.tag:hover{background:rgba(52,211,153,0.1);border-color:rgba(52,211,153,0.5)}.search-title{font-size:1.6rem;font-weight:700;margin-bottom:1.5rem;letter-spacing:-0.02em}.search-box{position:relative;margin-bottom:2rem}#searchInput{width:100%;background:var(--surface);border:1px solid var(--border-lit);border-radius:8px;color:var(--text);font-family:var(--font-mono);font-size:0.95rem;padding:0.75rem 1rem;outline:none;transition:border-color 0.15s,box-shadow 0.15s}#searchInput:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}#searchInput::placeholder{color:var(--muted)}.search-empty{color:var(--muted);font-family:var(--font-mono);font-size:0.9rem}.post-body{max-width:66ch;color:#c8d0dc}.post-body h2{font-size:1.35rem;font-weight:700;margin:2.25rem 0 0.75rem;line-height:1.3;color:var(--text);letter-spacing:-0.015em}.post-body h3{font-size:1.1rem;font-weight:600;margin:1.75rem 0 0.5rem;color:var(--text)}.post-body h2::before{content:'## ';color:var(--border-lit);font-family:var(--font-mono);font-size:0.85em}.post-body h3::before{content:'### ';color:var(--border-lit);font-family:var(--font-mono);font-size:0.8em}.post-body p{margin-bottom:1.25rem}.post-body a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(56,189,248,0.35);transition:text-decoration-color 0.15s}.post-body a:hover{text-decoration-color:var(--accent)}.post-body ul,.post-body ol{margin:0 0 1.25rem 1.5rem}.post-body li{margin-bottom:0.4rem}.post-body ul li::marker{color:var(--accent)}.post-body ol li::marker{color:var(--muted);font-family:var(--font-mono);font-size:0.85em}.post-body blockquote{border-left:2px solid var(--accent);padding:0.1rem 1.25rem;color:var(--muted);font-style:italic;margin:1.5rem 0;background:var(--accent-dim);border-radius:0 6px 6px 0}.post-body pre{background:var(--surface);border:1px solid var(--border-lit);border-radius:8px;overflow-x:auto;font-family:var(--font-mono);font-size:0.84rem;line-height:1.65;margin:1.5rem 0;position:relative}.post-body pre::before{content:'● ● ●';display:block;padding:0.55rem 1rem;border-bottom:1px solid var(--border);color:#2a2a45;font-size:0.7rem;letter-spacing:0.2em}.post-body pre code{display:block;padding:1rem 1.25rem;background:none;color:#cdd6f4;border-radius:0;font-size:inherit}.post-body code{font-family:var(--font-mono);font-size:0.86em;background:var(--surface-2);color:var(--accent);padding:0.15em 0.45em;border-radius:4px;border:1px solid var(--border-lit)}.post-body img{max-width:100%;border-radius:8px;border:1px solid var(--border);margin:1.5rem 0}.post-body hr{border:none;border-top:1px solid var(--border);margin:2.5rem 0;position:relative}.post-body hr::after{content:'◆';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--bg);color:var(--border-lit);padding:0 0.5rem;font-size:0.6rem}.post-body table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:0.9rem}.post-body th{background:var(--surface-2);color:var(--accent);font-family:var(--font-mono);font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;padding:0.6rem 1rem;border:1px solid var(--border-lit);text-align:left}.post-body td{padding:0.55rem 1rem;border:1px solid var(--border);color:#b0bac8}.post-body tr:nth-child(even) td{background:var(--surface)}.post-body pre>code.hljs{background:transparent;padding:1rem 1.25rem}@media (max-width:600px){html{font-size:15px}.site{padding:0 1rem}main{padding:2rem 0 4rem}.post-list-meta{flex-direction:column;align-items:flex-start;gap:0.2rem}.post-list li{padding:1rem 1.1rem}.icon-btn{padding:0.5rem 0.55rem;min-height:44px;min-width:44px}.post-nav{flex-direction:column;gap:0.75rem}.post-nav a{max-width:100%}.post-nav .post-nav-next{text-align:left;margin-left:0}.post-header h1{font-size:1.55rem}.post-body h2::before,.post-body h3::before{display:none}.post-body pre{font-size:0.78rem}}