*{box-sizing:border-box;margin:0;padding:0}.skip-link{position:absolute;left:-9999px;top:auto;padding:8px 16px;background:var(--accent);color:var(--bg);font-size:.85rem;z-index:9999;text-decoration:none}.skip-link:focus{left:8px;top:8px}@view-transition{navigation: auto;}::view-transition-old(root){animation:vt-out .2s cubic-bezier(.4,0,1,1) forwards}::view-transition-new(root){animation:vt-in .25s cubic-bezier(0,0,.2,1) forwards}@keyframes vt-out{to{opacity:0;transform:translateY(6px)}}@keyframes vt-in{0%{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion: reduce){::view-transition-old(root),::view-transition-new(root){animation:none}}html{font-size:16px;background:var(--bg);scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar{display:none}body{background:var(--bg);color:var(--fg);font-family:JetBrains Mono,monospace;font-size:17px;line-height:1.7;max-width:780px;margin:0 auto;padding:48px 20px 64px}body.page.writing{max-width:860px}body.page.projects{max-width:min(960px,90vw)}a{color:var(--accent);text-decoration:none;transition:color .2s ease}a:hover{text-decoration:underline}p{margin-bottom:.8em}ul{list-style:none}li{padding:6px 0}body.page ul,.project-content ul{list-style:disc;padding-left:1.4em}body.page ol,.project-content ol{list-style:decimal;padding-left:1.4em}body.page li,.project-content li{padding:4px 0}body.page .highlight{margin:1.4em 0;border-radius:4px;overflow:hidden;border-left:3px solid var(--accent)}body.page .highlight pre{margin:0;border:none;border-radius:0;border-left:none}body.page pre{background:var(--code-bg);color:var(--code-fg);padding:1rem 1.2rem;border-radius:4px;overflow-x:auto;font-size:.82rem;line-height:1.65;margin:1.2em 0;border-left:3px solid var(--accent)}body.page code{font-family:JetBrains Mono,monospace;font-size:.85em}body.page pre code{background:none;padding:0;font-size:inherit}body.page :not(pre)>code{background:var(--border);color:var(--accent);padding:.15em .45em;border-radius:3px;font-size:.85em}.chroma{background:var(--code-bg);color:var(--code-fg)}.chroma .err{color:var(--code-err)}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr{color:var(--code-kw);font-style:italic}.chroma .kt{color:var(--code-type)}.chroma .na{color:var(--code-attr)}.chroma .nb,.chroma .nc{color:var(--code-type)}.chroma .nf,.chroma .fm{color:var(--code-fn)}.chroma .nn{color:var(--code-fg)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--code-str)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--code-num)}.chroma .o,.chroma .ow{color:var(--code-op)}.chroma .p{color:var(--code-fg)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--code-cmt);font-style:italic}.chroma .gi{color:var(--code-str)}.chroma .gd{color:var(--code-err)}.chroma .gu{color:var(--code-fn);font-weight:700}.chroma .ln,.chroma .lnt{color:var(--code-cmt);padding-right:1em;user-select:none}#read-progress{position:fixed;right:18px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:3px;opacity:.7;pointer-events:none;z-index:10}#read-progress canvas{display:block}@media (max-width: 1000px){#read-progress{display:none}}h1{font-size:1.6rem;font-weight:700}h2{color:var(--muted);margin:36px 0 16px;font-size:1.3rem;font-weight:700}.now-link{color:var(--muted)}.now-link:hover{color:var(--accent);text-decoration:none}hr{border:none;border-top:1px solid var(--border);margin:36px 0 0}h3{color:var(--muted);margin:28px 0 6px;font-size:1rem}header{margin-bottom:48px}.site-title{font-size:1.6rem;font-weight:700;letter-spacing:.02em}.site-title a{color:var(--fg);text-decoration:none;display:inline-flex;align-items:center;gap:16px}.site-title a:hover{text-decoration:none}.header-top{display:flex;justify-content:space-between;align-items:center}.nav{display:flex;flex-wrap:wrap;gap:6px 28px;margin-top:16px}.nav a{color:var(--accent);text-decoration:none;position:relative;padding:2px 0;transition:color .2s ease}.nav a:after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--fg);transition:width .25s cubic-bezier(.25,.46,.45,.94)}.nav a:hover{color:var(--fg)}.nav a:hover:after{width:100%}.nav a.nav-active{color:var(--fg)}.nav a.nav-active:before{content:"*";color:var(--accent);margin-right:2px;font-weight:700}.nav-primary{font-weight:700}.nav a:not(.nav-primary){color:var(--muted)}.nav a:not(.nav-primary):hover{color:var(--fg)}.tagline,.yr,footer{color:var(--muted)}.tagline{font-style:italic;margin:4px 0 20px}.li-name,.project-title{font-weight:700;font-size:1.15rem}.li-name-plain{font-weight:700;color:var(--fg)}.li-desc{color:color-mix(in srgb,var(--fg) 55%,var(--muted))}.li-meta{color:var(--muted);margin-top:3px}.empty-note{color:var(--muted)}body.projects li,body.home li,body.games li,body.writing li,body.music li,body.tools li{padding:14px 0;border-radius:0 4px 4px 0;transition:background .15s ease,padding-left .2s ease,box-shadow .15s ease}@media (hover: hover){body.projects li:hover,body.home li:hover,body.games li:hover,body.writing li:hover,body.music li:hover,body.tools li:hover{background:color-mix(in srgb,var(--accent) 6%,transparent);box-shadow:inset 2px 0 0 var(--accent);padding-left:12px}}.hero-pitch{font-size:1.15rem;color:var(--accent);font-style:italic;margin-bottom:24px;letter-spacing:.01em}.bio{margin-bottom:28px}.toggle{background:none;border:none;padding:2px 0;font:inherit;cursor:pointer;color:var(--muted);transition:color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}.toggle:hover{color:var(--accent)}.toggle:active{transform:scale(.92)}.header-controls{display:flex;gap:10px;align-items:center}.writing-li{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.writing-li a{color:var(--fg)}.writing-project{display:inline-block;color:var(--muted)!important;font-size:.75rem;letter-spacing:.03em;margin-top:2px}.writing-project:hover{color:var(--accent)!important}.article-nav{display:flex;justify-content:space-between;margin-top:40px}.article-nav-next{margin-left:auto}.album-cover{display:block;width:280px;height:280px;object-fit:cover;margin-bottom:20px}.contact-blurb{color:var(--muted);margin-bottom:10px}.contact-email{display:inline-block;font-weight:700;color:var(--accent);text-decoration:none;cursor:pointer;user-select:none}.contact-email:hover{text-decoration:underline}.contact-email .email-expand{font-weight:400;font-size:.85rem;color:var(--muted)}.contact-email:hover .email-expand{text-decoration:none}.back{display:inline-block;color:var(--muted);margin-bottom:28px}.back:hover{color:var(--accent);text-decoration:none}.project-title{font-size:1.4rem;margin-bottom:6px}body.page p{line-height:1.85;margin-bottom:1em}body.page.writing p{margin-bottom:1.4em}body.page h1{font-size:1.4rem;color:var(--fg);margin:0 0 8px}body.page h2{font-size:1.15rem;color:var(--fg);font-weight:700;margin:36px 0 10px}body.page h3{font-size:1rem;color:var(--fg);font-weight:700;margin:28px 0 8px}.project-meta{color:var(--muted);margin-bottom:20px}.jump-comments{background:none;border:none;padding:0;font:inherit;cursor:pointer;color:var(--muted);font-size:.82rem;transition:color .15s}.jump-comments:hover{color:var(--accent)}body.page .hero-img{width:60%;border-radius:6px;margin-bottom:28px;border:1px solid var(--border);box-shadow:0 2px 12px #00000026;opacity:.78;transition:opacity .3s,filter .3s}[data-theme=github-light] .hero-img,[data-theme=papercolor-light] .hero-img,[data-theme=rose-pine] .hero-img{opacity:1;filter:brightness(1.06)}[data-theme=github-light] body.page img:not(.hero-img):not(.no-invert),[data-theme=papercolor-light] body.page img:not(.hero-img):not(.no-invert),[data-theme=rose-pine] body.page img:not(.hero-img):not(.no-invert){filter:invert(.88) hue-rotate(180deg);transition:filter .2s ease}body.page mark{background:color-mix(in srgb,var(--accent) 15%,transparent);color:inherit;padding:1px 4px;border-radius:2px}.ant-icon{color:var(--accent);vertical-align:middle}.links{display:flex;gap:16px;margin-top:24px;flex-wrap:wrap}.links a{color:var(--accent)}.picks-intro{color:var(--muted);margin-bottom:8px}.picks-intro p{margin:0}.picks-list{display:flex;flex-direction:column;gap:0}.pick-card{padding:16px 0;border-bottom:1px solid var(--border)}.pick-card:first-child{border-top:1px solid var(--border)}.pick-head{display:flex;flex-direction:column;gap:2px}.pick-title{font-weight:700;font-size:1rem;color:var(--fg);text-decoration:none;transition:color .15s}a.pick-title:hover{color:var(--accent)}.pick-arrow{font-size:.8em;opacity:.5;transition:opacity .15s}a.pick-title:hover .pick-arrow{opacity:1}.pick-author{color:var(--muted);font-size:.82rem}.pick-body{color:var(--muted);font-size:.88rem;margin-top:6px;line-height:1.6}.pick-body p{margin:0}.comments-title{font-size:1.15rem;font-weight:700;margin-bottom:20px}.cmt-form{margin-bottom:28px}.cmt-input{width:100%;background:var(--code-bg);border:1px solid var(--border);color:var(--fg);font:inherit;font-size:.88rem;padding:10px 12px;outline:none;box-sizing:border-box;border-radius:4px;transition:border-color .15s}.cmt-input:focus{border-color:var(--accent)}.cmt-input::placeholder{color:var(--muted);opacity:.6}textarea.cmt-input{resize:vertical;min-height:80px}.cmt-form-row{display:flex;gap:8px;margin-top:8px}.cmt-name-input{flex:1}.cmt-name-input.cmt-prefilled{color:var(--muted)}.cmt-name-input.cmt-prefilled:focus{color:var(--fg)}.cmt-btn{background:transparent;border:1px solid var(--accent);color:var(--accent);font:inherit;font-size:.85rem;padding:8px 22px;cursor:pointer;white-space:nowrap;border-radius:4px;transition:background .15s,color .15s}.cmt-btn:hover{background:var(--accent);color:var(--bg)}.cmt-btn:disabled{opacity:.4;cursor:default}.cmt-status{font-size:.8rem;color:var(--muted);min-height:1.2em;margin-top:6px}.cmt-count{color:var(--muted);font-size:.8rem;margin-bottom:12px}.cmt-entry{padding:14px 16px;margin-bottom:6px;background:var(--code-bg);border-radius:4px}.cmt-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.cmt-name{font-weight:700;font-size:.88rem}.cmt-date{color:var(--muted);font-size:.72rem}.cmt-msg{font-size:.88rem;line-height:1.6;white-space:pre-wrap;word-break:break-word}.cmt-reply-btn{background:none;border:none;color:var(--muted);font:inherit;font-size:.72rem;cursor:pointer;padding:4px 0;margin-top:6px;transition:color .15s}.cmt-reply-btn:hover{color:var(--accent)}.cmt-replies{margin:8px 0 0 12px;padding-left:14px;border-left:2px solid var(--border)}.cmt-replies .cmt-entry{padding:10px 14px;margin-bottom:4px}.cmt-reply-form{margin:8px 0 0 12px;padding-left:14px;border-left:2px solid var(--accent)}.cmt-reply-form textarea{min-height:50px;font-size:.85rem}.cmt-reply-form .cmt-form-row{margin-top:6px}.cmt-reply-form .cmt-btn{font-size:.8rem;padding:6px 14px}.cmt-reply-form .cmt-name-input{font-size:.85rem}.go-top{display:block;margin:0 0 10px;background:none;border:none;padding:0;font:inherit;cursor:pointer;color:var(--muted);font-size:.82rem;transition:color .15s}.go-top:hover{color:var(--accent)}#copy-toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%) translateY(12px) scale(.95);background:var(--fg);color:var(--bg);font-size:.8rem;padding:8px 18px;border-radius:10px;opacity:0;pointer-events:none;transition:opacity .25s ease,transform .3s cubic-bezier(.175,.885,.32,1.1);z-index:999;box-shadow:0 4px 16px #0003}#copy-toast.show{opacity:1;transform:translate(-50%) translateY(0) scale(1)}
