@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:optional;src:url(/fonts/vt323-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--bg: #111016;--text: #e6e3ec;--muted: #b0a8bd;--faint: #6e6478;--accent: #b0df9b;--line: #2c2735;font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font-size:15px;line-height:1.6}a{color:inherit;text-decoration-color:var(--faint);text-decoration-thickness:1px;text-underline-offset:.22em}a:hover{color:var(--accent);text-decoration-color:var(--accent)}p,h1,h2,h3,ul{margin:0}.site-shell{width:min(100%,760px);margin:0 auto;padding:28px 20px 64px;flex:1 1 auto}.site-pane{border:1px solid var(--line);background:#16131c;box-shadow:4px 4px #06050a}.site-pane>main{padding:36px 32px 44px}.site-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;row-gap:6px;column-gap:24px;margin-bottom:0;padding:14px 28px;background:#272330;border-bottom:1px solid var(--line);font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace}.site-name{color:#e6e3ec;font-weight:600;text-decoration:none;white-space:nowrap;flex-shrink:0}.site-name:before{content:"[ ";color:#887a99}.site-name:after{content:" ]";color:#887a99}.site-name.kbd-cursor{color:var(--accent)}.kbd-item:focus,.kbd-item:focus-visible,.list-item:focus{outline:none}.list-item:focus-visible{box-shadow:inset 0 0 0 1px #4eb8c48c}.site-nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:11px;flex:1 1 auto;min-width:0}.site-nav a{display:flex;align-items:center;gap:4px;color:var(--muted);text-decoration:none}.site-nav a[aria-current=page]{color:var(--text)}.site-nav .sel-arrow{opacity:0;color:var(--accent);font-size:12px;line-height:1;flex-shrink:0}.site-nav a.kbd-cursor .sel-arrow{opacity:1}.site-nav a.kbd-cursor{color:var(--text)}.intro{display:grid;gap:18px;margin-bottom:54px}.identity-line{color:var(--text);font-size:17px;line-height:1.45}p{max-width:58ch;color:var(--text)}.muted{color:var(--muted)}h1,h2{color:var(--text);font-weight:600;line-height:1.3}h1{font-size:22px;font-weight:700;letter-spacing:-.01em;margin-bottom:34px}h2{font-size:17px;margin-bottom:18px}.section+.section{margin-top:34px}.item-list,.work-list{display:grid;gap:30px}.item,.work-item{display:grid;gap:8px}.work-item+.work-item{border-top:1px solid var(--line);padding-top:30px}.item-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:baseline}.item-header h2,.item-header h3{min-width:0;color:var(--text);font-size:15px;font-weight:600;line-height:1.4}.item-header time,.date,.updated,.state-label,.tag-list{color:var(--muted);font-family:SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.5;white-space:nowrap}.state-label{color:var(--muted)}.state-label.stagnant{color:#7a6a48}.tag-list{display:flex;flex-wrap:wrap;gap:.45em;padding:0;list-style:none;color:var(--muted)}.tag-list li+li:before{content:"·";margin-right:.45em;color:var(--muted)}.email{display:inline-block;margin-top:58px;color:var(--text)}.updated{margin-top:42px}.proj-list{display:flex;flex-direction:column}.proj{border-top:1px solid var(--line);position:relative}.proj:last-child{border-bottom:1px solid var(--line)}.proj-head{display:grid;grid-template-columns:16px minmax(0,1fr) auto auto;align-items:baseline;gap:10px;width:100%;padding:16px 0;background:none;border:none;text-align:left;cursor:pointer;font:inherit;color:var(--text)}.proj-head:hover .proj-name,.proj-head.kbd-cursor .proj-name,.proj-head.kbd-cursor .proj-caret{color:var(--accent)}.proj-caret{color:var(--faint);font-size:14px;line-height:1;transition:transform .1s ease;display:inline-block}.proj.open .proj-caret{transform:rotate(90deg);color:var(--accent)}.tier-section+.tier-section{margin-top:28px}.tier-heading{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--faint);margin:0 0 8px}.tier-section[data-tier-group="!!!"] .tier-heading{color:var(--accent)}.tier-section[data-tier-group="!!"] .tier-heading{color:var(--muted)}.tier-section[data-tier-group="!"] .tier-heading{color:var(--faint)}.proj-move-controls{position:absolute;top:10px;right:-24px;display:inline-flex;flex-direction:column;z-index:1}.proj-move-button{background:none;border:none;color:var(--faint);font-size:9px;line-height:1;padding:1px 4px;cursor:pointer}.proj-move-button:hover{color:var(--accent)}.proj-name{min-width:0;font-size:15px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-state{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--muted);white-space:nowrap}.proj-state.active{color:#63b38a}.proj-state.prototype,.proj-state.research{color:var(--accent)}.proj-state.paused{color:#b08c3e}.proj-state.failed{color:#bd6b6b}.proj-state.archived{color:var(--muted)}.proj-date{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--muted);white-space:nowrap}.proj-body{display:none;padding:0 0 18px 26px}.proj.open .proj-body{display:block}.proj-body[hidden]{display:none}.proj-body p{margin:0 0 12px;color:var(--muted);font-size:13px;max-width:56ch}.project-repo{display:inline-block;margin-bottom:12px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.archive-intro{margin-bottom:48px}.archive-intro h1{margin-bottom:12px}.archive-intro p{color:var(--muted);font-size:13px;max-width:60ch}.archive-index{display:inline-grid;grid-template-columns:auto auto;gap:2px;width:fit-content;margin-top:20px;padding:3px;border:1px solid var(--line);font-family:SFMono-Regular,Consolas,monospace}.archive-switch{appearance:none;display:grid;grid-template-columns:12px auto auto;gap:8px;align-items:center;min-height:34px;padding:6px 10px;border:0;background:transparent;color:var(--muted);font:inherit;font-size:11px;text-align:left;cursor:pointer}.archive-switch:hover{background:#4eb8c412;color:var(--text)}.archive-switch:focus-visible{background:#4eb8c412;color:var(--text);outline:none;box-shadow:inset 0 0 0 1px var(--accent)}.archive-switch[aria-pressed=true]{background:#4eb8c41f;color:var(--text)}.archive-switch-marker{color:var(--accent);font-size:15px;line-height:1;opacity:0}.archive-switch[aria-pressed=true] .archive-switch-marker{opacity:1}.archive-count{color:var(--muted);font-variant-numeric:tabular-nums}.archive-section[hidden]{display:none}.archive-section{scroll-margin-top:24px}.archive-section .eyebrow{margin-bottom:8px}.archive-section-note{margin-bottom:22px;color:var(--muted);font-size:13px;max-width:60ch}.proj-body .project-description{margin:0 0 22px;color:var(--text);font-size:14px;line-height:1.65;max-width:60ch}.living-thesis{display:grid;gap:20px;padding-top:18px;border-top:1px solid var(--line)}.thesis-block{padding-left:13px;border-left:1px solid var(--line)}.thesis-block h3{margin:0 0 5px;color:var(--accent);font-family:SFMono-Regular,Consolas,monospace;font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.thesis-block p{margin:0;color:var(--muted);font-size:13px;line-height:1.65;max-width:60ch}.project-receipts .archive-proof{margin-top:2px}.archive-fields,.scheme-history-fields{display:grid;gap:12px;margin:0}.archive-field,.scheme-history-field{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;align-items:baseline}.archive-field dt,.scheme-history-field dt{color:var(--accent);font-family:SFMono-Regular,Consolas,monospace;font-size:10px;text-transform:uppercase}.archive-field dd,.scheme-history-field dd{margin:0;color:var(--muted);font-size:13px;max-width:58ch}.archive-proof{display:flex;flex-wrap:wrap;gap:5px 14px;margin:0;padding:0;list-style:none}.archive-proof li{font-family:SFMono-Regular,Consolas,monospace;font-size:10px}.archive-proof li:before{content:"[+]";margin-right:6px;color:var(--faint)}.archive-proof li:first-child:before{color:var(--accent)}.archive-tags{margin-top:16px}.scheme-summary{padding-bottom:18px}.scheme-decision{font-family:SFMono-Regular,Consolas,monospace;font-size:10px;text-transform:uppercase}.scheme-decision.pursue{color:#63b38a}.scheme-decision.hold{color:#b08c3e}.scheme-decision.drop{color:#bd6b6b}.scheme-history{margin:0;padding:0;border-top:1px solid var(--line);list-style:none}.scheme-history-item{padding:17px 0;border-bottom:1px solid var(--line)}.scheme-history-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.scheme-history-head time{color:var(--text);font-family:SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:600}.scheme-history-fields{gap:9px}.scheme-history-field{grid-template-columns:62px minmax(0,1fr)}.scheme-list .proj-body{padding-bottom:20px}.period-bar{display:flex;flex-wrap:wrap;gap:2px;margin-top:-6px;margin-bottom:14px}.period-btn{background:none;border:none;padding:4px 10px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--muted);cursor:pointer;border-radius:2px;transition:color 80ms}.period-btn:hover{color:var(--text)}.period-btn.active{color:var(--accent);background:#4eb8c414}.period-btn.kbd-cursor{color:var(--text);box-shadow:inset 0 0 0 1px #4eb8c48c}.music-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:4px}.grid-item{display:flex;flex-direction:column;gap:5px;text-decoration:none;color:inherit;min-width:0}.grid-item img,.grid-fallback{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:var(--faint)}.grid-fallback{display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;opacity:.4}.grid-item:hover .grid-label{color:var(--accent)}.grid-label{font-size:11px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.grid-sublabel{font-size:11px;color:#8896a4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;margin-top:-3px}.track-scroll{max-height:232px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 22px),transparent 100%);mask-image:linear-gradient(to bottom,#000 calc(100% - 22px),transparent 100%)}.track-scroll::-webkit-scrollbar{display:none}.top-tracks-scroll{max-height:340px}.track-item{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}.track-item:last-child{border-bottom:none}.top-track-item{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:baseline;gap:12px}.track-rank{color:var(--accent);font-family:SFMono-Regular,Consolas,monospace;font-size:11px;white-space:nowrap}.track-copy{display:flex;align-items:baseline;gap:6px;min-width:0;overflow:hidden}.track-copy .track-title{color:var(--text)}.track-copy .track-artist{color:var(--muted);overflow:hidden;text-overflow:ellipsis}.track-name{display:flex;align-items:baseline;gap:6px;min-width:0;flex-shrink:1;overflow:hidden}.track-artist{color:var(--text);white-space:nowrap}.track-title{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-sep{color:var(--faint);flex-shrink:0}.track-date{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--muted);white-space:nowrap;flex-shrink:0}.track-now .track-artist,.track-now .track-name{color:var(--accent)}.np-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;position:relative;top:-1px}@media(max-width:500px){.music-grid{grid-template-columns:repeat(2,1fr);gap:4px}}.mood-section{margin-bottom:4px}.mood-strip{position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%)}.mood-track{display:flex;gap:4px;width:max-content;padding:2px 0;animation:mood-scroll 70s linear infinite}@media(hover:hover)and (pointer:fine){.mood-strip:hover .mood-track{animation-play-state:paused}}.mood-strip:focus-within .mood-track{animation-play-state:paused}@keyframes mood-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.mood-item{flex:0 0 auto;width:108px;aspect-ratio:3 / 4;margin:0;overflow:hidden;background:var(--faint)}.mood-item img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(.55) contrast(1.12) brightness(.92)}.mood-veil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(160deg,#e65c9c42,#5a46aa4d 55%,#0a0a0e26);mix-blend-mode:color}.mood-veil:after{content:"";position:absolute;inset:0;opacity:.22;mix-blend-mode:overlay;background-image:url(/texture/grain.webp);background-size:150px 150px}@media(prefers-reduced-motion:reduce){.mood-track{animation:none}.mood-strip{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.mood-strip::-webkit-scrollbar{display:none}}@media(max-width:500px){.mood-item{width:84px}}.home{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:#111016}.home-statusbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:9px 18px;background:#19171f;border-bottom:1px solid #494151;font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px;line-height:1}.home-brand{color:#e6d9f7;font-weight:600}.home-host{color:#b0df9b}.home-tagline{color:var(--faint);white-space:nowrap;line-height:1}.home-statusbar-spacer{flex:1 1 auto}.home-now-playing{display:flex;align-items:center;gap:5px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#c6b1e4}.home-now-playing .np-note{color:var(--accent)}.home-clock,.home-visits{color:var(--faint);white-space:nowrap}.home-shortcuts-btn{background:none;border:1px solid var(--line);color:var(--muted);font:inherit;font-size:11px;padding:3px 9px;cursor:pointer;white-space:nowrap}.home-shortcuts-btn:hover,.home-shortcuts-btn:focus-visible{color:var(--text);border-color:var(--accent);outline:none}.shortcuts-dialog{border:1px solid var(--line);background:#16131c;color:var(--text);box-shadow:4px 4px #06050a;padding:0;width:min(90vw,360px);font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace}.shortcuts-dialog::backdrop{background:#06050ab3}.shortcuts-dialog-head{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#272330;border-bottom:1px solid var(--line);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#cbb8e1}.shortcuts-dialog-head button{background:none;border:none;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;padding:0}.shortcuts-dialog-head button:hover{color:var(--text)}.shortcuts-list{display:grid;grid-template-columns:auto 1fr;gap:10px 16px;padding:16px;margin:0;font-size:12px}.shortcuts-list dt{color:var(--text);white-space:nowrap}.shortcuts-list dd{margin:0;color:var(--muted)}.shortcuts-list kbd{border:1px solid var(--line);border-radius:2px;padding:1px 5px;font-size:11px;color:var(--text)}.glyph-fallback{font-family:DejaVu Sans Mono,Noto Sans Mono,sans-serif}@media(max-width:760px){.home-tagline,.home-now-playing,.home-clock,.home-visits{display:none}}.home-center{flex:1 1 auto;display:flex;align-items:center;justify-content:center;padding:28px}.home-pane{border:1px solid #494151;background:#16131c;box-shadow:4px 4px #06050a;width:min(100%,460px)}.home-pane-head{padding:8px 22px;background:#272330;border-bottom:1px solid #494151;font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:11px;color:#cbb8e1}.home-pane-head:before{content:"── ";color:#887a99}.home-inner{display:flex;flex-direction:column;align-items:center;gap:40px;padding:52px 40px}.wordmark{font-family:VT323,monospace;font-size:88px;font-weight:400;letter-spacing:.08em;color:#e6e3ec;margin:0;line-height:1;text-align:center;user-select:none}.selector{display:flex;flex-direction:column;gap:2px;width:100%}.sel-item{display:flex;align-items:center;gap:10px;text-decoration:none;color:#b0a8bd;font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1;padding:6px 8px;border:1px solid transparent}.sel-arrow{opacity:0;color:#b0df9b;width:10px;display:inline-block;flex-shrink:0}.sel-item.active{background:#1b221c;border-color:#3a2f49;box-shadow:2px 2px #06050a}.sel-item.active .sel-arrow{opacity:1}.sel-item.active .sel-label{color:#eee6f6}.page-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:18px}.page-head h1{margin-bottom:0}.reading-intro{color:var(--muted);font-size:13px;max-width:60ch;margin-bottom:40px}.reading-now{list-style:none;padding:0;display:flex;flex-direction:column}.reading-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid var(--line)}.reading-row:last-child{border-bottom:1px solid var(--line)}.reading-title{font-size:14px;font-weight:600;color:var(--text)}.reading-meta{display:flex;align-items:baseline;gap:12px;white-space:nowrap;flex-shrink:0}.reading-author{font-size:12px;color:var(--muted);white-space:nowrap}.reading-pct{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--accent)}.reading-date{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--muted)}.reading-soon{margin-top:40px;font-size:12px}.tier+.tier{margin-top:36px}.tier-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}.tier-tag{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--accent);white-space:nowrap}.tier-name{font-size:13px;font-weight:600;letter-spacing:.04em;margin-bottom:0}.tier-desc{color:var(--muted);font-size:12px;margin-bottom:16px;max-width:56ch}.book-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:14px}.book-line{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:10px}.book-stars{font-size:10px;color:var(--accent);letter-spacing:1px;white-space:nowrap}.book-stars-empty{color:var(--faint)}.book-title{font-size:14px;font-weight:600;color:var(--text);min-width:0}.book-author{font-size:12px;color:var(--muted);white-space:nowrap}.book-state{font-family:SFMono-Regular,Consolas,monospace;font-size:10px;white-space:nowrap;grid-column:2 / -1}.book-state.read{color:var(--shipped, #2d9e6b)}.book-note{margin:3px 0 0;color:var(--muted);font-size:12px;max-width:58ch}.shelf-section{margin-bottom:56px}.eyebrow,.shelf-head{font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--accent);text-transform:uppercase;margin-bottom:20px}.shelf-head-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:4px}.shelf-head-row .shelf-head{margin-bottom:0}.curriculum-intro{margin-bottom:32px}.book-check{font-size:10px;color:var(--shipped, #2d9e6b);letter-spacing:1px}.log-note{color:var(--muted);font-size:13px;max-width:60ch;margin-bottom:40px}.log-list{list-style:none;padding:0;display:flex;flex-direction:column}.log-entry{border-top:1px solid var(--line)}.log-entry-inner{padding:14px 12px;margin:0 -12px;outline:none}.log-entry-inner.kbd-cursor{background:var(--surface, rgba(176, 223, 155, .06));box-shadow:inset 2px 0 var(--accent)}.log-entry:last-child{border-bottom:1px solid var(--line)}.log-meta{display:flex;align-items:baseline;gap:12px;margin-bottom:5px}.log-date{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:700;color:var(--muted)}.log-kind{font-family:SFMono-Regular,Consolas,monospace;font-size:10px;color:var(--accent);text-transform:lowercase}.log-text{color:var(--muted);font-size:13px;max-width:60ch}@media(max-width:600px){.site-shell{padding:32px 20px}.site-header{align-items:flex-start;flex-direction:column;gap:10px;margin-bottom:44px}.site-nav{justify-content:flex-start;gap:13px}.site-nav a{position:relative;gap:0}.site-nav .sel-arrow{position:absolute;left:-10px}.item-header{grid-template-columns:1fr;gap:2px}.proj-head{grid-template-columns:16px minmax(0,1fr) auto;gap:8px}.proj-name{overflow:visible;text-overflow:clip;white-space:normal;line-height:1.35}.proj-date{grid-column:2 / -1}.proj-body{padding-left:24px}.archive-field,.scheme-history-field{grid-template-columns:1fr;gap:2px}.archive-index{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);width:100%}.archive-switch{gap:6px;padding-inline:8px}}
