:root{--bg:#1a1a1a;--panel:#1c2126;--surface:#2a2a2a;--surface-2:#3a3a3a;--border:#404040;--border-2:#4a4a4a;--text:#e0e0e0;--text-strong:#fff;--muted:#b0b0b0;--faint:#888;--accent:#d4af37;--accent-hover:#e6c547;--accent-tint:#d4af371a;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--radius:8px;--measure:56rem;color-scheme:dark;scrollbar-color:var(--border-2)var(--panel)}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:1.0625rem/1.65 var(--font);display:flex;flex-direction:column;min-height:100vh}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.15em}a:hover{color:var(--accent-hover)}h1,h2,h3{color:var(--text-strong);line-height:1.25;margin:1.6em 0 .5em}h1{font-size:2rem;margin-top:0}h2{font-size:1.4rem}h3{font-size:1.1rem}.wrap{width:100%;max-width:var(--measure);margin-inline:auto;padding-inline:1.25rem}main.wrap{flex:1;padding-block:2.5rem 4rem}.site-header{background:var(--panel);border-bottom:1px solid var(--border)}.header-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1.5rem;padding-block:.9rem}.brand{color:var(--accent);font-weight:700;font-size:1.25rem;text-decoration:none;letter-spacing:.02em}.site-header nav{display:flex;gap:1.25rem}.site-header nav a{color:var(--muted);text-decoration:none;font-weight:500}.site-header nav a:hover,.site-header nav a[aria-current]{color:var(--accent)}.site-footer{border-top:1px solid var(--border);color:var(--faint);font-size:.9rem;padding-block:1.5rem}.site-footer a{color:var(--muted)}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-top:3rem}.section-head h2{margin:0 0 1rem}.section-head a{font-size:.95rem;white-space:nowrap}.home-grid{display:grid;grid-template-columns:minmax(0,1fr)15rem;gap:3rem;align-items:start}.home-main .section-head{margin-top:1.5rem}.home-main .post-item{grid-template-columns:8.5rem 1fr}.home-side{display:grid;gap:1.25rem;position:sticky;top:1.5rem}.side-box{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.side-box h2{font-size:1rem;margin:0 0 .75rem;color:var(--accent);text-transform:uppercase;letter-spacing:.06em}.side-intro h1{font-size:1.15rem;margin:0 0 .4rem}.side-intro p{margin:0;color:var(--muted);font-size:.93rem;line-height:1.55}.latest-label{margin:0 0 .4rem;color:var(--accent);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.latest h1 a{color:var(--text-strong);text-decoration:none}.latest h1 a:hover{color:var(--accent)}.earlier{margin-top:1rem;padding-top:.5rem;border-top:1px solid var(--border)}.mini-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.mini{display:flex;gap:.75rem;align-items:center;padding:.35rem;margin:-.35rem;border-radius:6px;text-decoration:none;color:var(--text)}.mini:hover{background:var(--accent-tint);color:var(--text)}.mini img,.mini-blank{flex:none;width:4rem;height:4rem;border-radius:4px;border:1px solid var(--border);background:var(--surface-2);object-fit:cover}.mini-text{display:grid;gap:.1rem;min-width:0}.mini-title{font-weight:600;font-size:.95rem;line-height:1.3}.mini:hover .mini-title{color:var(--accent)}.mini-tags{color:var(--faint);font-size:.8rem}.side-more{display:inline-block;margin-top:1rem;font-size:.9rem}@media(max-width:48rem){.home-grid{grid-template-columns:minmax(0,1fr);gap:2rem}.home-side{position:static}}.post-list{list-style:none;padding:0;margin:0}.post-item{display:grid;grid-template-columns:10rem 1fr;gap:.25rem 1.25rem;padding-block:.9rem;border-bottom:1px solid var(--border)}.post-item time{color:var(--faint);font-size:.9rem;padding-top:.15rem}.post-item a{font-weight:600}.post-item p{margin:.25rem 0 0;color:var(--muted);font-size:.95rem}.kind{font-size:.75rem;color:var(--accent);background:var(--accent-tint);border-radius:4px;padding:.1rem .4rem;margin-left:.3rem;vertical-align:middle}@media(max-width:36rem){.post-item,.home-main .post-item{grid-template-columns:1fr}}.card-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1.25rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:border-color .2s ease,transform .2s ease}.card:hover{border-color:var(--accent);transform:translateY(-2px)}.card-link{color:inherit;text-decoration:none;flex:1}.card-link:hover{color:inherit}.card-img{aspect-ratio:3/2;background:var(--surface-2)}.card-img img{width:100%;height:100%;object-fit:cover}.card-body{padding:.9rem 1rem .25rem}.card-body h3{margin:0 0 .35rem;color:var(--accent)}.card-body p{margin:0;color:var(--muted);font-size:.93rem}.card-tags{padding:.75rem 1rem 1rem}.tags,.card-tags{display:inline-flex;flex-wrap:wrap;gap:.4rem}.tag{font-size:.8rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--border-2);border-radius:999px;padding:.1rem .6rem;text-decoration:none}.tag:hover{color:var(--accent);border-color:var(--accent)}.tag span{color:var(--faint);margin-left:.25rem}.term-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.article-head{margin-bottom:1.5rem}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;color:var(--faint);font-size:.95rem;margin:0}.prose{max-width:46rem}.prose .cover{border-radius:var(--radius);border:1px solid var(--border);margin-bottom:1.5rem}.prose ul,.prose ol{padding-left:1.4rem}.prose blockquote{margin:1.5rem 0;padding:.25rem 1rem;border-left:3px solid var(--accent);background:var(--accent-tint);color:var(--muted)}.prose hr{border:0;border-top:1px solid var(--border);margin:2.5rem 0}.prose table{border-collapse:collapse;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);padding:.4rem .75rem;text-align:left}.prose th{background:var(--panel)}figure{margin:1.75rem 0}figure img{border-radius:var(--radius);border:1px solid var(--border)}figcaption{color:var(--faint);font-size:.9rem;margin-top:.5rem;text-align:center}.project-links{display:flex;flex-wrap:wrap;gap:.6rem}.button{display:inline-block;background:var(--accent);color:var(--bg);font-weight:600;text-decoration:none;border-radius:4px;padding:.45rem .9rem}.button:hover{background:var(--accent-hover);color:var(--bg)}code,pre{font-family:var(--mono);font-size:.9em}:not(pre)>code{background:var(--surface-2);border:1px solid var(--border-2);border-radius:4px;padding:.1em .35em}pre{background:var(--panel)!important;border:1px solid var(--border);border-radius:var(--radius);padding:1rem;overflow-x:auto;line-height:1.5}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.6rem;margin:1.75rem 0}.gallery a{display:block;border-radius:6px;overflow:hidden;border:1px solid var(--border);aspect-ratio:1}.gallery a:hover{border-color:var(--accent)}.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .25s ease}.gallery a:hover img{transform:scale(1.04)}.lightbox{padding:0;border:0;background:0 0;max-width:95vw;max-height:95vh;overflow:visible}.lightbox::backdrop{background:#000000d9}.lightbox img{max-width:95vw;max-height:88vh;width:auto;border-radius:6px}.lightbox-caption{color:var(--text);text-align:center;margin:.6rem 0 0}.lightbox button{position:absolute;top:-.75rem;right:-.75rem;width:2.25rem;height:2.25rem;border-radius:50%;border:1px solid var(--accent);background:var(--panel);color:var(--accent);font-size:1.4rem;line-height:1;cursor:pointer}.video{position:relative;aspect-ratio:16/9;margin:1.75rem 0;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);background:#000}.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .nx{color:#e6edf3}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{color:#d2a8ff;font-weight:700}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .or{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}