:root{--bg: #efe9db;--paper: #f6f1e6;--ink: #1a1a1a;--mute: #8a8580;--rule: #cfc6b3;--soft: #e0d8c6;--accent: #b04a2a;--green: #5a7a3a;--scrim: rgba(20,18,15,.18)}[data-theme=dark]{--bg: #1a1714;--paper: #221e19;--ink: #ede5d0;--mute: #8a8270;--rule: #3a342c;--soft: #2a261f;--accent: #d6885a;--green: #8aa56a;--scrim: rgba(0,0,0,.55)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #1a1714;--paper: #221e19;--ink: #ede5d0;--mute: #8a8270;--rule: #3a342c;--soft: #2a261f;--accent: #d6885a;--green: #8aa56a;--scrim: rgba(0,0,0,.55)}}*{margin:0;padding:0;box-sizing:border-box}html{height:100%}body{font-family:JetBrains Mono,ui-monospace,Menlo,monospace;background:var(--bg);color:var(--ink);font-size:12px;line-height:1.55;padding:36px 44px;display:flex;flex-direction:column;min-height:100vh;-webkit-font-smoothing:antialiased}body:has(.drawer.show){overflow:hidden}.corner{position:fixed;width:14px;height:14px;border-color:var(--ink);z-index:1}.c1{top:16px;left:16px;border-top:1px solid;border-left:1px solid}.c2{top:16px;right:16px;border-top:1px solid;border-right:1px solid}.c3{bottom:16px;left:16px;border-bottom:1px solid;border-left:1px solid}.c4{bottom:16px;right:16px;border-bottom:1px solid;border-right:1px solid}header{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:14px;border-bottom:1px solid var(--ink)}.name{font-size:28px;font-weight:700;letter-spacing:-.01em}.classification{color:var(--mute);font-size:11px;text-align:right;line-height:1.4}.classification b{color:var(--ink);font-weight:500}.bio{margin:22px 0;max-width:56ch;font-size:13px;line-height:1.65}.bio .em{color:var(--accent)}.drawer-filter{display:flex;flex-wrap:wrap;align-items:baseline;padding:12px 0 14px;font-size:10px;letter-spacing:.16em;gap:2px}.drawer-filter .label{color:var(--mute);font-weight:500;letter-spacing:.22em;margin-right:12px;text-transform:uppercase}.drawer-filter .clear{background:transparent;border:0;padding:0;font:inherit;color:var(--accent);cursor:pointer;font-size:10px;letter-spacing:.18em;margin-left:14px}.drawer-filter .clear:hover{text-decoration:underline}.tag{background:transparent;border:0;padding:2px 6px;margin:-2px;font:inherit;color:var(--mute);text-decoration:none;font-size:10px;letter-spacing:.16em;text-transform:uppercase;display:inline-flex;align-items:baseline;white-space:nowrap}.row-tags,.drawer-filter{display:flex;flex-wrap:wrap;align-items:baseline}.row-tags .tag+.tag:before,.drawer-filter .tag+.tag:before{content:"·";color:var(--rule);margin:0 8px 0 2px;letter-spacing:0;font-size:12px}.row-tags .tag,.drawer-filter .tag{gap:0}.grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:36px;padding-top:6px;min-height:0;transition:opacity .15s}.last-opened{margin-top:auto;padding-top:16px;border-top:1px dashed var(--rule)}.last-opened.is-empty .lo-items{display:none}.last-opened .lo-empty{display:none;color:var(--mute);font-size:11px;font-style:italic;letter-spacing:.04em}.last-opened.is-empty .lo-empty{display:block}.last-opened .lo-label{color:var(--mute);font-size:10px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;margin-bottom:12px}.last-opened .lo-items{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.last-opened .lo-item{display:block;text-decoration:none;color:var(--ink);border-left:1px solid var(--rule);padding-left:12px;transition:border-color .15s}.last-opened .lo-item:hover{border-left-color:var(--accent)}.last-opened .lo-kind{color:var(--mute);font-size:9px;letter-spacing:.18em;text-transform:uppercase}.last-opened .lo-title{display:block;font-size:13px;margin-top:4px;line-height:1.4}.last-opened .lo-item:hover .lo-title{color:var(--accent)}@media(max-width:768px){.grid{grid-template-columns:1fr;gap:28px}.last-opened .lo-items{grid-template-columns:1fr;gap:12px}}.col{display:flex;flex-direction:column;min-width:0}.col-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;padding:4px 0 6px;background:transparent;border:0;border-bottom:1px solid transparent;font:inherit;color:var(--mute);text-align:left;width:100%;cursor:pointer;transition:color .15s,border-color .15s}.col-head:hover{color:var(--ink);border-bottom-color:var(--ink)}.col-head:hover .open-hint{opacity:1;transform:translate(0)}.col-head h2{font-size:10px;font-weight:700;letter-spacing:.18em;display:flex;align-items:baseline;gap:8px}.col-head .count{color:var(--mute);font-weight:500}.col-head .open-hint{font-size:10px;letter-spacing:.16em;opacity:0;transform:translate(-4px);transition:opacity .2s,transform .2s}.col ul{list-style:none;display:flex;flex-direction:column;gap:12px}.col li{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:baseline}.col li .n{color:var(--mute);font-variant-numeric:tabular-nums;font-size:10px}.col li a{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent;transition:color .15s,border-color .15s;display:block;cursor:pointer}.col li a:hover{color:var(--accent);border-bottom-color:var(--accent)}.col li a .ext{color:var(--mute);font-size:10px;margin-left:4px}.col li a:hover .ext{color:var(--accent)}.col li .meta{display:block;color:var(--mute);font-size:10px;margin-top:1px}.col li .row-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.col-foot{margin-top:14px;padding-top:10px;border-top:1px dotted var(--rule)}.col-foot button{background:transparent;border:0;font:inherit;color:var(--mute);font-size:10px;letter-spacing:.16em;cursor:pointer;padding:0;transition:color .15s}.col-foot button:hover{color:var(--accent)}.col-foot .arrow{display:inline-block;transition:transform .2s}.col-foot button:hover .arrow{transform:translate(3px)}footer{margin-top:28px;padding-top:14px;border-top:1px solid var(--ink);display:flex;justify-content:space-between;align-items:center;color:var(--mute);font-size:10px;letter-spacing:.08em}footer .links a,.drawer-foot .links a{color:var(--ink);text-decoration:none;margin-left:14px}footer .links a:hover,.drawer-foot .links a:hover{color:var(--accent)}.drawer-foot{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:12px 44px;border-top:1px solid var(--ink);background:var(--paper);color:var(--mute);font-size:10px;letter-spacing:.08em}.theme-toggle{background:transparent;border:1px solid var(--rule);color:var(--mute);padding:3px 8px;font:inherit;font-size:9px;letter-spacing:.18em;cursor:pointer;margin-left:14px;display:inline-flex;align-items:center;gap:7px;transition:color .15s,border-color .15s}.theme-toggle:hover{color:var(--ink);border-color:var(--ink)}.theme-toggle .glyph{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ink);border:1px solid var(--ink)}[data-theme=dark] .theme-toggle .glyph,:root:not([data-theme=light]) .theme-toggle .glyph{background:transparent}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .glyph{background:transparent}}.cursor{display:inline-block;width:7px;height:12px;background:var(--ink);vertical-align:-2px;margin-left:2px;animation:blink 1.1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.drawer-scrim{position:fixed;inset:0;background:var(--scrim);opacity:0;pointer-events:none;transition:opacity .25s;z-index:20}.drawer-scrim.show{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;bottom:0;width:100%;background:var(--paper);transform:translate(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;z-index:30;box-shadow:-1px 0 0 var(--ink),-24px 0 40px #00000014}.drawer.show{transform:translate(0);animation:drawer-slide-in .35s cubic-bezier(.4,0,.2,1) forwards}@keyframes drawer-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-corner{position:absolute;width:14px;height:14px;border-color:var(--ink);z-index:2}.drawer .dc1{top:16px;left:16px;border-top:1px solid;border-left:1px solid}.drawer .dc2{top:16px;right:16px;border-top:1px solid;border-right:1px solid}.drawer .dc3{bottom:16px;left:16px;border-bottom:1px solid;border-left:1px solid}.drawer .dc4{bottom:16px;right:16px;border-bottom:1px solid;border-right:1px solid}.drawer-head{flex-shrink:0;padding:36px 44px 0;border-bottom:1px solid var(--ink);display:flex;flex-direction:column;gap:12px}.drawer-head .top{display:flex;justify-content:space-between;align-items:baseline;gap:20px}.crumb{background:transparent;border:0;font:inherit;color:var(--mute);font-size:10px;letter-spacing:.18em;cursor:pointer;padding:0;display:flex;align-items:center;gap:8px;flex-shrink:0}.crumb .arrow{display:inline-block;transition:transform .2s}.crumb:hover{color:var(--ink)}.crumb:hover .arrow{transform:translate(-3px)}.drawer-head .title{font-size:22px;font-weight:700;letter-spacing:.04em}.drawer-head .title .label{color:var(--mute);font-size:10px;letter-spacing:.18em;margin-right:10px;font-weight:500}.drawer-head .meta{color:var(--mute);font-size:10px;letter-spacing:.16em;text-align:right;line-height:1.5;flex-shrink:0}.drawer-head .meta b{color:var(--ink);font-weight:500}.close-x{background:transparent;border:1px solid var(--rule);width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--mute);font:inherit;font-size:14px;transition:all .15s;margin-left:14px}.close-x:hover{color:var(--ink);border-color:var(--ink)}.drawer-filter-wrap{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px}.drawer-body{flex:1;overflow-y:auto;padding:22px 44px 44px}.entries{display:flex;flex-direction:column}.entry{position:relative;display:grid;grid-template-columns:40px 130px 1fr auto;gap:24px;align-items:baseline;padding:18px 0;border-bottom:1px solid var(--soft);cursor:pointer;transition:padding-left .2s,color .15s,opacity .15s;background:transparent;border-left:0;border-right:0;border-top:0;font:inherit;color:var(--ink);text-align:left;width:100%;text-decoration:none}.entry .entry-link{position:absolute;inset:0}.entry:hover{padding-left:8px}.entry:hover .title-text{color:var(--accent)}.entry:hover .arrow-go{opacity:1;transform:translate(0)}.entry.filtered-out{opacity:.18}.entry .n{font-size:10px;color:var(--mute);font-variant-numeric:tabular-nums;letter-spacing:.1em}.entry .when{font-size:10px;color:var(--mute);letter-spacing:.14em;text-transform:uppercase}.entry .when .section-badge{display:inline-block;margin-right:8px;padding:2px 6px;border:1px solid var(--rule);color:var(--ink);font-size:9px;letter-spacing:.18em}.entry .title-text{font-size:16px;font-weight:500;transition:color .15s;margin-bottom:4px;display:block}.entry .sub{font-size:11px;color:var(--mute);line-height:1.5;max-width:60ch}.entry .row-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.entry .arrow-go{opacity:0;transform:translate(-4px);transition:all .2s;color:var(--accent);font-size:11px;letter-spacing:.14em}.entry .status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:1px;background:var(--mute)}.entry .status-dot.active{background:var(--green);animation:pulse 2.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.group-head{display:flex;align-items:baseline;justify-content:space-between;padding:22px 0 10px;margin-top:14px;border-bottom:1px solid var(--ink);font-size:10px;font-weight:700;letter-spacing:.22em;color:var(--ink)}.group-head:first-child{margin-top:0}.group-head .ct{color:var(--mute);font-weight:500}.group-empty{padding:12px 0 0;color:var(--mute);font-style:italic;font-size:11px}.detail-head{max-width:720px;margin:0 auto 28px;padding-bottom:18px;border-bottom:1px solid var(--soft)}.detail-head .label{font-size:10px;color:var(--mute);letter-spacing:.18em;margin-bottom:14px;display:flex;gap:18px}.detail-head h3{font-family:Newsreader,Georgia,serif;font-size:38px;line-height:1.15;font-weight:500;letter-spacing:-.015em;text-align:left}.detail-head h3 em{color:var(--accent);font-style:italic}.detail-head .row-tags{margin-top:16px;display:flex;flex-wrap:wrap;gap:12px}.detail-body{font-family:Newsreader,Georgia,serif;font-size:17px;line-height:1.65;max-width:720px;margin:0 auto}.detail-body p{margin-bottom:1em}.detail-body img,.readme img{display:block;max-width:100%;height:auto;margin:1.5em auto;border:1px solid var(--soft);border-radius:2px}.detail-body figure,.readme figure{margin:1.5em 0}.detail-body figure img,.readme figure img{margin:0 auto .6em}.detail-body figcaption,.readme figcaption{font-family:JetBrains Mono,ui-monospace,Menlo,monospace;font-size:11px;color:var(--mute);text-align:center;letter-spacing:.04em}.detail-body figure.narrow img,.readme figure.narrow img{max-width:420px}.detail-foot{max-width:720px;margin:36px auto 0;padding-top:16px;border-top:1px dotted var(--rule);display:flex;justify-content:space-between;color:var(--mute);font-size:10px;letter-spacing:.16em}.detail-foot button{background:transparent;border:0;font:inherit;color:var(--mute);cursor:pointer;letter-spacing:.16em;transition:color .15s}.detail-foot button:hover{color:var(--accent)}.detail-foot .arrow{display:inline-block;transition:transform .2s}.detail-foot .prev:hover .arrow{transform:translate(-3px)}.detail-foot .next:hover .arrow{transform:translate(3px)}.proj-head{max-width:720px;margin:0 auto 22px;padding-bottom:18px;border-bottom:1px solid var(--soft)}.proj-head .row{display:flex;gap:14px;align-items:center;margin-bottom:16px;font-size:10px;letter-spacing:.18em;color:var(--mute)}.status-pill{display:inline-flex;align-items:center;padding:4px 10px;border:1px solid var(--rule);font-size:10px;letter-spacing:.18em;color:var(--mute)}.status-pill.active{color:var(--green);border-color:var(--green)}.status-pill .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--mute);margin-right:8px}.status-pill.active .dot{background:var(--green);animation:pulse 2.2s ease-in-out infinite}.proj-head h3{font-family:Newsreader,Georgia,serif;font-size:42px;line-height:1.1;font-weight:500;letter-spacing:-.015em;margin-bottom:10px}.proj-head .tagline{font-family:Newsreader,serif;font-style:italic;font-size:18px;color:var(--mute);max-width:56ch;line-height:1.45}.proj-head .row-tags{margin-top:16px;display:flex;flex-wrap:wrap;gap:12px}.video-slot{max-width:720px;margin:0 auto 28px;aspect-ratio:16 / 9;background:repeating-linear-gradient(45deg,var(--soft) 0px,var(--soft) 1px,transparent 1px,transparent 14px),var(--paper);border:1px solid var(--rule);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--mute);font-size:11px;letter-spacing:.18em;position:relative}.video-slot.has-video{aspect-ratio:auto;background:var(--ink);padding:0;gap:0;overflow:hidden}.video-slot.has-video video{display:block;width:100%;aspect-ratio:16 / 9;background:#000}.video-slot.has-video .label{width:100%;padding:8px 12px;text-align:center;color:var(--paper);background:var(--ink)}.video-slot .play{width:56px;height:56px;border:1px solid var(--ink);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink);background:var(--paper);margin-bottom:6px}.video-slot .play:after{content:"";width:0;height:0;border-left:14px solid var(--ink);border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}.video-slot .label{color:var(--ink)}.video-slot .hint{font-size:9px;color:var(--mute);letter-spacing:.22em}.proj-meta{max-width:720px;margin:0 auto 28px;display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:18px 0;border-bottom:1px solid var(--soft)}.proj-meta .block .label{font-size:9px;letter-spacing:.22em;color:var(--mute);margin-bottom:10px}.tags-row{display:flex;flex-wrap:wrap;gap:6px}.tags-row .tech-tag{border:1px solid var(--rule);padding:3px 8px;font-size:10px;letter-spacing:.1em;color:var(--ink)}.proj-links{display:flex;flex-direction:column;gap:4px}.proj-links a{color:var(--ink);text-decoration:none;font-size:12px;transition:color .15s}.proj-links a:hover{color:var(--accent)}.proj-links a .ext{color:var(--mute);margin-left:4px}.readme{font-family:Newsreader,Georgia,serif;font-size:16px;line-height:1.65;max-width:720px;margin:0 auto}.readme h4{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.22em;color:var(--ink);margin:28px 0 12px;padding-top:18px;border-top:1px dotted var(--rule)}.readme h4:first-child{margin-top:0;padding-top:0;border-top:0}.readme p{margin-bottom:1em}.readme p em{color:var(--accent);font-style:italic}.readme a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:3px}.readme a:hover{text-decoration-color:var(--accent)}.entry.ext-entry{cursor:pointer}.entry.ext-entry .arrow-go{color:var(--ink)}.entry.ext-entry:hover .title-text{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
