@font-face{font-family:droid sans mono;src:url(/fonts/DroidSansMono.woff2)format('woff2');font-weight:400;font-style:normal;font-display:swap}:root{--color-bg:#ffffff;--color-text:#1a1a2e;--color-text-muted:#64748b;--color-accent:#6366f1;--color-accent-hover:#4f46e5;--color-border:#e2e8f0;--color-border-muted:#f1f5f9;--color-code-bg:#f6f8fa;--font-sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;--font-mono:'Droid Sans Mono', 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Menlo, monospace}html.dark{--color-bg:#1a1a2e;--color-text:#e2e8f0;--color-text-muted:#94a3b8;--color-accent:#818cf8;--color-accent-hover:#a5b4fc;--color-border:#334155;--color-border-muted:#1e293b;--color-code-bg:#282a36}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;line-height:1.7;scroll-padding-top:5rem}body{font-family:var(--font-sans);color:var(--color-text);background-color:var(--color-bg);min-height:100vh;display:flex;flex-direction:column;transition:background-color .3s ease,color .3s ease}.container{max-width:48rem;margin:0 auto;padding:0 1.5rem;width:100%}.container.wide{max-width:1200px}.site-header{padding:2rem 0;position:sticky;top:0;background-color:var(--color-bg);z-index:100;transition:padding .3s ease,background-color .3s ease}.site-header.scrolled{padding:.75rem 0;box-shadow:0 2px 8px rgba(0,0,0,.1)}.site-header.scrolled .site-title{font-size:1.25rem}.header-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.site-title{font-size:1.75rem;font-weight:800;color:var(--color-text);text-decoration:none;letter-spacing:-.02em;transition:font-size .3s ease,color .2s ease}.site-title:hover{color:var(--color-accent)}.header-actions{display:flex;align-items:center;gap:1.5rem;margin-left:auto;min-height:2.975rem}.site-nav{display:flex;gap:1.5rem}.nav-link{display:inline-flex;align-items:center;gap:.5rem;font-weight:600;color:var(--color-text);text-decoration:none;padding:.25rem 0;transition:all .2s ease}.nav-link:hover,.nav-link.active{color:var(--color-accent)}.theme-toggle{background:0 0;border:none;cursor:pointer;padding:.25rem;line-height:1;color:var(--color-text)}.theme-toggle svg{display:block}.theme-toggle .theme-icon-light{display:none}html.dark .theme-toggle .theme-icon-dark{display:none}html.dark .theme-toggle .theme-icon-light{display:block}.width-toggle{background:0 0;border:none;cursor:pointer;padding:.25rem;line-height:1;color:var(--color-text)}.width-toggle svg{display:block}.width-toggle .width-icon-wide{display:block}.width-toggle .width-icon-narrow{display:none}html.wide .width-toggle .width-icon-wide{display:none}html.wide .width-toggle .width-icon-narrow{display:block}.width-toggle{display:none}html.show-width-toggle .header-actions .width-toggle{display:block}html.wide main.container{max-width:1200px}main{flex:1;padding:4rem 0 5rem}@media(max-width:768px){main{overflow-x:hidden}}main.centered{display:flex;flex-direction:column;justify-content:center}main.centered .page{width:100%}.page-home{display:flex;flex-direction:column;align-items:center;gap:2rem}.home-profile{flex-shrink:0;position:relative;width:256px;height:256px}.profile-image{border-radius:50%}.profile-image-light{display:block}.profile-image-dark{display:none}html.dark .profile-image-light{display:none}html.dark .profile-image-dark{display:block}.orbit{position:absolute;top:0;left:0;width:256px;height:256px;animation:orbit 30s linear infinite}.chibi{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)translateY(-160px);height:48px;z-index:1;width:auto}@keyframes orbit{from{transform:rotate(0)}to{transform:rotate(360deg)}}.home-content{flex:1}.home-links{display:flex;gap:1rem;margin-top:2rem}.home-link-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-weight:600;color:var(--color-text);background-color:var(--color-border-muted);border-radius:8px;text-decoration:none;transition:background-color .2s ease,color .2s ease}.home-link-btn:hover{background-color:var(--color-accent);color:#fff}@media(min-width:768px){.page-home{flex-direction:row-reverse;align-items:flex-start}.home-content{align-self:center}}.page-header{margin-bottom:3rem}.page-header h1{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;line-height:1.1}.page-description{margin-top:1rem;color:var(--color-text-muted)}.rss-link{display:inline-flex;align-items:center;gap:.375rem;margin-top:1rem;color:var(--color-text-muted);text-decoration:none;transition:color .2s ease}.rss-link:hover{color:var(--color-text)}.rss-link svg{color:#f97316}.posts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.post-card{position:relative;border:2px solid var(--color-border);border-radius:12px;overflow:hidden;transition:all .2s ease;display:flex;flex-direction:column}.post-card:hover{border-color:var(--color-accent);transform:translateY(-4px);box-shadow:0 12px 24px rgba(0,0,0,.1)}.post-thumbnail{display:block;overflow:hidden}.post-thumbnail img{display:block;width:100%;height:180px;object-fit:cover}.post-card-content{padding:1.25rem;flex:1;display:flex;flex-direction:column}.post-card .post-title{font-size:1.1rem;font-weight:700;margin-bottom:.5rem;letter-spacing:-.01em;line-height:1.4}.post-card .post-title a{color:var(--color-text);text-decoration:none}.post-card .post-title a::after{content:'';position:absolute;inset:0}.post-card .post-title a:hover{color:var(--color-accent)}.post-date{color:var(--color-text-muted);font-size:.8rem;font-weight:500}.post-header{margin-bottom:2.5rem}.post-header .post-title{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;line-height:1.2;margin:1rem 0}.post-meta{display:flex;align-items:center;justify-content:space-between}.post-actions{display:flex;align-items:center;gap:.5rem}.post-action-btn{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:4px;color:var(--color-text);text-decoration:none;transition:transform .1s ease}.post-action-btn:hover{transform:scale(1.1)}.post-content,.page-content{font-size:1rem;line-height:1.75}.post-content h2,.page-content h2{font-size:1.5rem;font-weight:700;margin-top:2.5rem;margin-bottom:1rem;letter-spacing:-.02em}.post-content h3,.page-content h3{font-size:1.25rem;font-weight:700;margin-top:2rem;margin-bottom:.75rem}.post-content p,.page-content p{margin-bottom:1.5rem}.post-content img,.page-content img{max-width:100%;height:auto;border-radius:8px;margin-bottom:1.5rem}.post-content figure,.page-content figure{margin:0 0 1.5rem}.post-content figure img,.page-content figure img{margin-bottom:0}.post-content figcaption,.page-content figcaption{font-size:.875rem;color:var(--color-text-muted);text-align:center}.post-content a,.page-content a{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:2px}.post-content a:hover,.page-content a:hover{color:var(--color-accent-hover)}.post-content ul,.post-content ol,.page-content ul,.page-content ol{margin-bottom:1.5rem;padding-left:1.5rem}.post-content li,.page-content li{margin-bottom:0}.footnotes li p{margin-bottom:1rem}.post-content hr,.page-content hr{border:none;border-top:1px solid var(--color-border);margin:2rem 0}.post-content table,.page-content table{width:100%;border-collapse:collapse;margin-bottom:1.5rem}.post-content th,.page-content th{text-align:left;font-weight:600;padding:.75rem;border-bottom:1px solid var(--color-border)}.post-content td,.page-content td{padding:.75rem;border-bottom:1px solid var(--color-border-muted)}.post-content tr:last-child td,.page-content tr:last-child td{border-bottom:none}.post-content blockquote,.page-content blockquote{border-left:4px solid var(--color-accent);padding-left:1.5rem;margin:1.5rem 0}.post-content code,.page-content code{font-family:var(--font-mono);font-size:.9em;background-color:var(--color-code-bg);color:var(--color-text);padding:.2em .4em;border-radius:4px}.post-content pre,.page-content pre{background-color:var(--color-code-bg);color:var(--color-text);border-radius:8px;padding:1.25rem;overflow-x:auto;margin-bottom:1.5rem;tab-size:4;-moz-tab-size:4}.post-content pre code,.page-content pre code{background:0 0;padding:0;font-size:.875rem;line-height:1.6}.post-footer{margin-top:2rem;padding-top:3rem;border-top:1px solid var(--color-border);text-align:center}.author-colophon{display:inline-flex;align-items:center;gap:1.5rem}.author-avatar{width:64px;height:64px;border-radius:50%;object-fit:cover}.author-avatar-dark{display:none}html.dark .author-avatar-light{display:none}html.dark .author-avatar-dark{display:inline}.author-name{font-size:1.1rem;font-weight:700;color:var(--color-text);margin-bottom:.5rem;text-align:left}.author-links{display:flex;gap:1.5rem}.author-links a{display:inline-flex;align-items:center;gap:.375rem;font-weight:600;color:var(--color-accent);text-decoration:none}.author-links a:hover{color:var(--color-accent-hover)}@media(max-width:640px){.author-links{flex-direction:column;gap:.75rem}.home-links{flex-direction:column}.home-link-btn{justify-content:center}}.page-header{margin-bottom:2rem}.page-title{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;position:relative;z-index:2}.site-footer{padding:3rem 0}.site-footer p{color:var(--color-text-muted);font-size:.875rem;text-align:center}.site-footer a{color:var(--color-text-muted);text-decoration:none}.site-footer a:hover{color:var(--color-text);text-decoration:underline}@media(max-width:640px){.site-footer .footer-sep{display:none}.site-footer a{display:block;margin-top:.5rem}}.bg{background-color:#f7f7f7}.chroma{background-color:#f7f7f7}.chroma .err{color:#f6f8fa;background-color:#82071e}.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:#dedede}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}html.dark .bg{color:#f8f8f2;background-color:#282a36}html.dark .chroma{color:#f8f8f2;background-color:#282a36}html.dark .chroma .hl{background-color:#3d3f4a}html.dark .chroma .lnt{color:#7f7f7f}html.dark .chroma .ln{color:#7f7f7f}html.dark .chroma .k{color:#ff79c6}html.dark .chroma .kc{color:#ff79c6}html.dark .chroma .kd{color:#8be9fd}html.dark .chroma .kn{color:#ff79c6}html.dark .chroma .kp{color:#ff79c6}html.dark .chroma .kr{color:#ff79c6}html.dark .chroma .kt{color:#8be9fd}html.dark .chroma .na{color:#50fa7b}html.dark .chroma .nc{color:#50fa7b}html.dark .chroma .nl{color:#8be9fd}html.dark .chroma .nt{color:#ff79c6}html.dark .chroma .nb{color:#8be9fd}html.dark .chroma .nv{color:#8be9fd}html.dark .chroma .vc{color:#8be9fd}html.dark .chroma .vg{color:#8be9fd}html.dark .chroma .vi{color:#8be9fd}html.dark .chroma .vm{color:#8be9fd}html.dark .chroma .nf{color:#50fa7b}html.dark .chroma .fm{color:#50fa7b}html.dark .chroma .nx{color:#50fa7b}html.dark .chroma .s{color:#f1fa8c}html.dark .chroma .sa{color:#f1fa8c}html.dark .chroma .sb{color:#f1fa8c}html.dark .chroma .sc{color:#f1fa8c}html.dark .chroma .dl{color:#f1fa8c}html.dark .chroma .sd{color:#f1fa8c}html.dark .chroma .s2{color:#f1fa8c}html.dark .chroma .se{color:#f1fa8c}html.dark .chroma .sh{color:#f1fa8c}html.dark .chroma .si{color:#f1fa8c}html.dark .chroma .sx{color:#f1fa8c}html.dark .chroma .sr{color:#f1fa8c}html.dark .chroma .s1{color:#f1fa8c}html.dark .chroma .ss{color:#f1fa8c}html.dark .chroma .m{color:#bd93f9}html.dark .chroma .mb{color:#bd93f9}html.dark .chroma .mf{color:#bd93f9}html.dark .chroma .mh{color:#bd93f9}html.dark .chroma .mi{color:#bd93f9}html.dark .chroma .il{color:#bd93f9}html.dark .chroma .mo{color:#bd93f9}html.dark .chroma .o{color:#ff79c6}html.dark .chroma .ow{color:#ff79c6}html.dark .chroma .p{color:#f8f8f2}html.dark .chroma .c{color:#6272a4}html.dark .chroma .ch{color:#6272a4}html.dark .chroma .cm{color:#6272a4}html.dark .chroma .c1{color:#6272a4}html.dark .chroma .cs{color:#6272a4}html.dark .chroma .cp{color:#ff79c6}html.dark .chroma .cpf{color:#ff79c6}html.dark .chroma .gd{color:#f55}html.dark .chroma .ge{text-decoration:underline}html.dark .chroma .gh{font-weight:700}html.dark .chroma .gi{color:#50fa7b;font-weight:700}html.dark .chroma .go{color:#44475a}html.dark .chroma .gu{font-weight:700}html.dark .chroma .gl{text-decoration:underline}.error-page{text-align:center;padding:2rem 0}.error-page h1{font-size:6rem;font-weight:800;letter-spacing:-.03em;line-height:1;margin-bottom:2rem}.error-page img{display:block;margin:0 auto 2rem}.error-page p{margin-bottom:1rem}.error-page a{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:2px}.error-page a:hover{color:var(--color-accent-hover)}.menu-toggle{display:none;background:0 0;border:none;cursor:pointer;padding:.5rem;line-height:1;color:var(--color-text);margin-left:auto}.menu-toggle svg{display:block}.sidebar-overlay{position:fixed;inset:0;background-color:rgba(0,0,0,.5);z-index:200;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.sidebar-overlay.open{opacity:1;visibility:visible}.sidebar{position:fixed;top:0;right:-280px;width:280px;height:100%;background-color:var(--color-bg);z-index:300;padding:1.5rem;display:flex;flex-direction:column;transition:right .3s ease}.sidebar.open{right:0}.sidebar-close{align-self:flex-end;background:0 0;border:none;cursor:pointer;padding:.5rem;line-height:1;margin-bottom:1.5rem;color:var(--color-text)}.sidebar-close svg{display:block}.sidebar-nav{display:flex;flex-direction:column;gap:1rem}.sidebar-link{display:inline-flex;align-items:center;gap:.5rem;font-size:1.25rem;font-weight:600;color:var(--color-text);text-decoration:none;padding:.5rem 0;border-bottom:2px solid transparent;transition:all .2s ease}.sidebar-link:hover,.sidebar-link.active{color:var(--color-accent)}.sidebar-actions{margin-top:auto;display:flex;gap:1rem}.sidebar-actions .width-toggle{display:none}body.sidebar-open{overflow:hidden}@media(max-width:960px){.posts-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.page-header h1,.post-header .post-title,.page-title{font-size:2rem}.page-header{text-align:center}.site-title{font-size:1.5rem}.header-inner{flex-direction:row;align-items:center}.header-actions{display:none}.menu-toggle{display:block}.posts-grid{grid-template-columns:1fr}}.like-button{background:0 0;border:1px solid var(--border-color);border-radius:4px;padding:.25rem .5rem;cursor:pointer;font-size:1rem;color:var(--color-text);transition:transform .1s ease}.like-button:hover{transform:scale(1.1)}.like-button:disabled{cursor:default;opacity:.7}.like-icon,.like-icon-filled{display:inline-flex;align-items:center}.like-icon-filled{display:none}.like-button.liked .like-icon{display:none}.like-button.liked .like-icon-filled{display:inline-flex}.like-button-link{display:inline-flex;align-items:center;gap:.375rem;font-weight:600;font-size:1rem;color:var(--color-accent);background:0 0;border:none;padding:0;cursor:pointer}.like-button-link:hover{color:var(--color-accent-hover);transform:none}.like-button-link.liked,.like-button-link.liked:hover{color:var(--color-accent);cursor:default}.like-button-link:disabled{opacity:.7}.like-button.liked{animation:like-pulse .3s ease}@keyframes like-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.2)}}.like-particle{position:fixed;width:6px;height:6px;background:#ff6b6b;border-radius:50%;pointer-events:none;animation:particle-burst .6s ease-out forwards}@keyframes particle-burst{0%{transform:translate(0,0)scale(1);opacity:1}100%{transform:translate( calc(cos(var(--angle)) * var(--velocity)),calc(sin(var(--angle)) * var(--velocity)) )scale(0);opacity:0}}