:root{--bg: #0a0a0b;--bg-elev: #101012;--bg-card: #0e0e10;--line: rgba(232, 228, 218, .09);--line-strong: rgba(232, 228, 218, .2);--ink: #e8e4da;--ink-dim: #a29c8e;--ink-faint: #847d6f;--accent: #ffffff;--accent-dim: rgba(255, 255, 255, .08);--underline: rgba(232, 228, 218, .28);--green: #3ecf8e;--red: #f2555a;--font-display: "Martian Mono", ui-monospace, monospace;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--font-body: "IBM Plex Sans", system-ui, sans-serif;--max-w: 1100px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2.5rem}body{background-color:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}::selection{background:var(--ink);color:var(--bg)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#26262a;border-radius:5px;border:2px solid var(--bg)}a{color:var(--ink);text-decoration:none}code{font-family:var(--font-mono);font-size:.86em;color:var(--ink);background:var(--accent-dim);padding:.05em .35em;border-radius:3px}.hero-links a,.vol-links a,.journal-content a{font-family:var(--font-mono);color:var(--ink);text-decoration:underline;text-decoration-color:var(--underline);text-decoration-thickness:1px;text-underline-offset:4px;transition:color .15s ease,text-decoration-color .15s ease}.hero-links a:hover,.vol-links a:hover,.journal-content a:hover{color:var(--accent);text-decoration-color:var(--accent)}.journal-content a{font-family:inherit}.hero-links a,.vol-links a{padding-block:.16rem}.link-caret{color:var(--accent);margin-right:.25rem}.prompt{color:var(--accent);margin-right:.5rem}.tech-tag{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint);border:1px solid var(--line);border-radius:3px;padding:.18rem .55rem}.status{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.12em;padding:.25rem .6rem;border:1px solid var(--line-strong);border-radius:3px;color:var(--ink);background:var(--accent-dim);white-space:nowrap}.status-shipped,.status-result{border-color:#e8e4da73}main{max-width:var(--max-w);margin:0 auto;padding:0 1.5rem}.site-head{max-width:var(--max-w);margin:0 auto;padding:2rem 1.5rem 1.5rem;display:flex;justify-content:space-between;align-items:baseline;gap:1rem 2rem;flex-wrap:wrap}.site-name{font-family:var(--font-mono);font-size:.82rem;font-weight:400;color:var(--ink)}.site-role{margin-left:1.25rem;color:var(--ink-faint)}.site-head-right{display:flex;align-items:center;gap:1rem 2rem;flex-wrap:wrap}.plain-section{padding-top:4.5rem}.plain-section:first-child{padding-top:1.5rem}.plain-section .sec-prompt{margin-bottom:1.5rem}.about{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:1.5rem 2.5rem;padding:.5rem 0 1.75rem;font-size:.86rem;line-height:1.65;color:var(--ink-dim)}.about-label{font-family:var(--font-mono);font-size:.78rem;font-weight:400;color:var(--ink);margin-bottom:.5rem}.about-faint{font-family:var(--font-mono);font-size:.76rem;color:var(--ink-faint);white-space:nowrap}.about-list.journal-content{padding:0;font-size:inherit;line-height:inherit}.about-list.journal-content ul{list-style:none;padding:0}.about-list.journal-content li{margin-bottom:.2rem}.about-more{margin-top:.6rem}.about-more summary{font-family:var(--font-mono);font-size:.76rem;color:var(--ink-faint);cursor:pointer;width:fit-content;text-decoration:underline;text-decoration-color:var(--underline);text-underline-offset:4px}.about-more summary:hover{color:var(--accent)}.about-more[open] summary{margin-bottom:.5rem}@media (max-width: 900px){.about{grid-template-columns:1fr 1fr}.about-col:first-child{grid-column:1 / -1}}@media (max-width: 720px){.about{grid-template-columns:1fr}}.plain-blog{list-style:none;display:flex;flex-direction:column;gap:.6rem}.plain-blog li{display:flex;gap:1.2rem;align-items:baseline}.plain-blog a{font-family:var(--font-mono);font-size:.88rem;color:var(--ink);text-decoration:underline;text-decoration-color:var(--underline);text-underline-offset:4px}.plain-blog a:hover{color:var(--accent);text-decoration-color:var(--accent)}.vol-period{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint);margin-bottom:.8rem}.shelf-overlay-body.journal-content{padding:0;font-size:.86rem;line-height:1.7;margin-bottom:1.1rem}.shelf-overlay-body.journal-content ul,.vol-body .journal-content ul{padding-left:1.1rem}.shelf-overlay-body.journal-content li,.vol-body .journal-content li{margin-bottom:.55rem}.section{padding-top:9rem}.sec-head{margin-bottom:3rem}.sec-prompt{font-family:var(--font-mono);font-size:.82rem;font-weight:400;line-height:1.6;color:var(--ink-dim)}.hero-links{display:flex;flex-wrap:wrap;gap:1.75rem;font-size:.82rem}.app.is-shelf{min-height:100svh;display:flex;flex-direction:column}.app.is-shelf .site-head{width:100%}.app.is-shelf main{flex:1;width:100%;display:flex;flex-direction:column}.shelf.is-3d,.shelf-frame{flex:1;display:flex;flex-direction:column}.shelf-frame{padding-bottom:1rem}.shelf-stage{position:relative;width:100%;flex:1;min-height:440px}.shelf-canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0}.shelf-canvas{display:block;width:100%;height:100%;touch-action:pan-y;outline:none}.shelf-canvas{transition:opacity .45s ease}.shelf.is-booting .shelf-canvas{opacity:0}.shelf-canvas:focus-visible{outline:1px solid var(--ink-faint);outline-offset:2px}.shelf-vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse 78% 68% at 50% 46%,transparent 42%,rgba(10,10,11,.55) 100%)}.shelf-booting{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;font-family:var(--font-mono);font-size:.75rem;color:var(--ink-faint);pointer-events:none}.shelf-overlay{position:absolute;top:0;right:0;width:min(440px,44%);height:100%;overflow-y:auto;overscroll-behavior:contain;background:var(--bg);border-left:1px solid var(--line);padding:1.6rem .4rem 1.6rem 2rem;display:flex;flex-direction:column;align-items:flex-start;animation:overlay-in .32s cubic-bezier(.22,1,.36,1)}.shelf-overlay>*{flex-shrink:0}.shelf-overlay>:first-child{margin-top:auto}.shelf-overlay>:last-child{margin-bottom:auto}@keyframes overlay-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.shelf-overlay-nav{align-self:stretch;display:flex;justify-content:space-between;align-items:center;margin-bottom:.7rem}.shelf-flip{display:flex;align-items:center}.shelf-count{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}.shelf-back{background:none;border:none;padding:.3rem .4rem;min-width:24px;margin-left:-.4rem;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-dim);cursor:pointer;transition:color .15s ease}.shelf-back:hover{color:var(--accent)}.shelf-flip .shelf-back{margin:0;font-size:.9rem}.shelf-overlay-title{font-family:var(--font-display);font-size:1.05rem;font-weight:700;line-height:1.35;margin-bottom:.4rem}.shelf-overlay-meta{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-faint);margin-bottom:1rem}.shelf-overlay-desc{font-size:.86rem;color:var(--ink-dim);margin-bottom:1.1rem}.shelf-overlay-visual{align-self:stretch;border:1px solid var(--line);background:var(--bg-card);overflow:hidden;margin-bottom:1.1rem}.shelf-overlay-visual img,.vol-visual img{filter:grayscale(1) contrast(1.06) brightness(.92)}.shelf-overlay-visual img{display:block;width:100%;max-height:220px;object-fit:contain;object-position:center;background:var(--bg)}.shelf-overlay .vol-tech:not(:last-child),.shelf-overlay .vol-links:not(:last-child){margin-bottom:.9rem}.shelf-ticks{list-style:none;display:flex;gap:0;margin-top:.7rem;flex-wrap:wrap}.shelf-ticks .is-row-start{margin-left:12px}.shelf-ticks:not(:focus-within){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.shelf-tip{position:absolute;z-index:2;max-width:300px;transform:translate(16px,18px);pointer-events:none;padding:.55rem .75rem;background:var(--bg);border:1px solid var(--line-strong);font-family:var(--font-mono)}.shelf-tip.is-flipped{transform:translate(calc(-100% - 16px),18px)}.shelf-tip-title{display:block;font-size:.8rem;font-weight:600;color:var(--ink);line-height:1.4}.shelf-tip-line{display:block;margin-top:.2rem;font-size:.72rem;color:var(--ink-dim);line-height:1.45}.shelf-tick{display:block;box-sizing:content-box;width:26px;height:3px;padding:11px 2px;border:none;background:var(--ink-faint);background-clip:content-box;opacity:.9;cursor:pointer;transition:opacity .15s ease,background .15s ease}.shelf-tick-reading{width:20px}.shelf-tick:hover,.shelf-tick:focus-visible{opacity:1}.shelf-tick:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.shelf-tick.is-active{background:var(--accent);background-clip:content-box;opacity:1}.shelf-tools{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:.6rem}.shelf-row-name{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-dim)}.shelf-hint{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-dim)}.shelf-toggle{background:none;border:1px solid var(--line-strong);border-radius:3px;color:var(--ink-dim);font-family:var(--font-mono);font-size:.72rem;padding:.35rem .7rem;cursor:pointer;transition:color .15s ease,border-color .15s ease}.shelf-toggle:hover{color:var(--accent);border-color:var(--accent)}.shelf.is-3d .shelf-fallback{display:none}.vol-list{list-style:none;border-top:1px solid var(--line)}.vol-item{border-bottom:1px solid var(--line)}.vol-row{display:grid;grid-template-columns:3.4rem minmax(11rem,14rem) 1fr 1.2rem;gap:1.1rem;align-items:baseline;width:100%;padding:.95rem .6rem;background:none;border:none;text-align:left;font:inherit;color:inherit;cursor:pointer;transition:background .15s ease,box-shadow .15s ease}.vol-row:hover,.vol-row:focus-visible{background:var(--bg-elev);box-shadow:inset 2px 0 0 var(--accent);outline:none}.vol-year{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint)}.vol-name{font-family:var(--font-mono);font-size:.84rem;font-weight:500;color:var(--ink)}.vol-award{display:block;font-size:.66rem;font-weight:400;color:var(--green);margin-top:.15rem}.vol-tagline{font-size:.86rem;color:var(--ink-dim)}.vol-caret{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-faint);justify-self:end;transition:color .15s ease,transform .2s ease}.vol-item.is-open .vol-caret{color:var(--accent);transform:rotate(90deg)}.vol-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}.vol-item.is-open .vol-body{grid-template-rows:1fr}.vol-body-inner{overflow:hidden;min-height:0}.vol-item.is-open .vol-body-inner{padding:.4rem .6rem 1.6rem}.vol-visual{border:1px solid var(--line);background:var(--bg-card);overflow:hidden;max-width:560px;margin-bottom:1.2rem}.vol-visual img{display:block;width:100%;max-height:340px;object-fit:contain;object-position:center;background:var(--bg)}.vol-desc{max-width:68ch;font-size:.9rem;color:var(--ink-dim);margin-bottom:1.1rem}.vol-tech{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.1rem}.vol-links{display:flex;flex-wrap:wrap;gap:.4rem 1.5rem;font-size:.8rem}.vol-note{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-faint);font-style:italic;margin-top:.9rem}.vol-reading-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.7rem 2.5rem}.vol-reading-list li{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:.55rem}.vol-book-title{font-size:.88rem;color:var(--ink)}.vol-book-author{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint);white-space:nowrap}.chart{display:block;width:100%;height:auto;padding:.75rem}.chart-grid line{stroke:#e8e4da0d;stroke-width:1}.chart-ref{stroke:var(--ink-faint);stroke-width:1;stroke-dasharray:5 5}.chart-ref-label,.chart-axis-label,.chart-legend,.chart-bar-label,.chart-bar-value{font-family:var(--font-mono);font-size:12px;fill:var(--ink-faint)}.chart-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-line-a{stroke:var(--ink)}.chart-line-b{stroke:var(--ink-dim);stroke-dasharray:3 3}.chart-legend-a{fill:var(--ink)}.chart-legend-b{fill:var(--ink-dim)}.chart-bar-track{fill:#e8e4da0a}.chart-bar-faint{fill:var(--ink-faint)}.chart-bar-dim{fill:var(--ink-dim)}.chart-bar-bright,.chart-bar-value.is-bright{fill:var(--ink)}.chart-bar-value,.chart-ref-label{paint-order:stroke;stroke:var(--bg-card);stroke-width:8px;stroke-linejoin:round}.chart-span{stroke:#e8e4da24;stroke-width:2}.chart-dot{stroke:var(--bg-card);stroke-width:2}.chart-dot-faint{fill:var(--ink-faint)}.chart-dot-dim{fill:var(--ink-dim)}.chart-dot-bright{fill:var(--ink)}.journal-content{font-size:.95rem;color:var(--ink-dim);line-height:1.85;padding:.25rem .6rem 2rem 2.1rem}.journal-content h1,.journal-content h2,.journal-content h3{font-family:var(--font-display);color:var(--ink);margin:1.75rem 0 .75rem;line-height:1.35;font-size:1.05rem}.journal-content p{margin-bottom:1.1rem}.journal-content blockquote{border-left:2px solid var(--line-strong);padding-left:1.25rem;color:var(--ink-faint);font-style:italic;margin:1.25rem 0}.journal-content ul,.journal-content ol{padding-left:1.5rem;margin-bottom:1.1rem}@media (max-width: 760px){.shelf-stage{flex:none;min-height:0}.shelf-canvas-wrap{position:relative}.shelf-overlay{position:static;width:100%;height:auto;max-height:none;overflow:visible;display:block;background:none;border-left:none;border-top:1px solid var(--line);padding:1.4rem 0 0}.shelf-tick{width:15px}.shelf-tick-reading{width:11px}.shelf-ticks .is-row-start{margin-left:8px}.shelf-canvas{min-height:340px}}@media (max-width: 720px){.site-role{display:block;margin:.35rem 0 0}.section{padding-top:6rem}.vol-row{grid-template-columns:3rem 1fr 1.2rem;grid-template-areas:"year name caret" "tag  tag  tag";gap:.35rem .9rem;padding:.9rem .4rem}.vol-year{grid-area:year}.vol-name{grid-area:name}.vol-caret{grid-area:caret}.vol-tagline{grid-area:tag;font-size:.82rem}.journal-content{padding-left:.6rem}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.shelf-overlay{animation:none}.shelf-canvas,.vol-body,.vol-caret{transition:none}}
