@font-face{font-family:Pixel Code;src:url(/fonts/PixelCodeBlocks-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Pixel Code;src:url(/fonts/PixelCode-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--bg:#0c0805;--panel:#140d07;--accent:#ffb000;--text:#f0c27e;--dim:#9a7346;--link:#ffe6a8;--hot:#ff5a1f;--code:#ffd84d;--line:color-mix(in srgb, var(--accent) 28%, transparent);--glow:0 0 10px var(--accent), 0 0 20px var(--accent);color-scheme:dark}:root[data-theme=green]{--bg:#0a0a0a;--panel:#0d120d;--accent:#0f0;--text:#b9f5b9;--dim:#6f9a6f;--link:#0ff;--hot:#f0f;--code:#ffd400}:root[data-theme=ice]{--bg:#05080c;--panel:#0a1018;--accent:#7fd4ff;--text:#c6e4fa;--dim:#5f7d96;--link:#e8f6ff;--hot:#ff7ab8;--code:#ffe27a}:root[data-theme=fuchsia]{--bg:#0d0508;--panel:#160a10;--accent:#ff2e7e;--text:#f4a9c4;--dim:#9a5872;--link:#ffd3e3;--hot:#ff6b3d;--code:#e98bff}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);scroll-behavior:smooth}::-webkit-scrollbar{background:0 0;width:10px;height:10px}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-button{display:none}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--accent) 45%, transparent) padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:var(--accent)}@supports not selector(::-webkit-scrollbar){*{scrollbar-color:color-mix(in srgb, var(--accent) 45%, transparent) transparent;scrollbar-width:thin}}body{background:var(--bg);min-height:100vh;color:var(--text);-webkit-font-smoothing:none;flex-direction:column;font:16px/1.65 Pixel Code,monospace;display:flex}pre,code,kbd,samp,button,input{font-family:inherit}body{-webkit-user-select:none;user-select:none}.prose :is(pre,code,kbd,samp),input,textarea{-webkit-user-select:text;user-select:text}::selection{background:var(--accent);color:var(--bg)}a{color:var(--link);text-underline-offset:3px}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--hot);outline-offset:3px}img{max-width:100%;height:auto;display:block}.wrap{width:min(1100px,100% - 32px);margin-inline:auto}.scanlines{pointer-events:none;z-index:100;background:linear-gradient(transparent, color-mix(in srgb, var(--accent) 9%, transparent) 50%, transparent) 0 0 / 100% 4px;animation:8s linear infinite scanlines;position:fixed;inset:-8px 0 0}@keyframes scanlines{0%{transform:translateY(0)}to{transform:translateY(8px)}}.site-header,.site-footer{color:var(--dim);letter-spacing:.08em;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;font-size:.8rem;display:flex}.site-header{border-bottom:1px dashed var(--line)}.site-footer{border-top:1px dashed var(--line);margin-top:auto}.site-header a{color:var(--accent);text-decoration:none}.site-header a:hover{text-shadow:var(--glow)}.site-header nav{align-items:center;gap:20px;display:flex}.theme-switch{border:1px solid var(--line);color:var(--dim);font-size:inherit;letter-spacing:inherit;cursor:pointer;white-space:nowrap;background:0 0;padding:2px 8px}.theme-switch:hover{border-color:var(--accent);color:var(--accent)}main{padding-bottom:64px}.hero{text-align:center;padding:56px 0 40px;overflow:hidden}.ascii-art{text-align:left;white-space:pre;color:var(--accent);text-shadow:var(--glow);font-size:clamp(.35rem,1.2vw,.9rem);line-height:1.2;animation:2s ease-in-out infinite alternate glow;display:inline-block}@keyframes glow{0%{opacity:.8}to{opacity:1}}.tagline{color:var(--hot);letter-spacing:.4em;margin-top:28px;font-size:clamp(.8rem,2.4vw,1.1rem)}.cursor{animation:1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px 24px;margin-bottom:24px;display:flex}.section-head h2{color:var(--accent);font-size:1.2rem;font-weight:400}.prompt{color:var(--hot)}.filters{flex-wrap:wrap;gap:8px;display:flex}.filters button{border:1px solid var(--line);color:var(--dim);cursor:pointer;background:0 0;padding:4px 10px;font-size:.85rem}.filters button:hover{color:var(--accent);border-color:var(--accent)}.filters button[aria-pressed=true]{color:var(--bg);background:var(--accent);border-color:var(--accent)}.filters .count{opacity:.7}.grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:20px;list-style:none;display:grid}.grid>li,.card{grid-row:span 5;grid-template-rows:subgrid;row-gap:10px;display:grid}.card{grid-row:1/-1}.grid>li[hidden]{display:none}.empty{color:var(--dim);padding:24px 0}.card{border:1px solid var(--line);background:var(--panel);color:inherit;text-decoration:none;transition:border-color .15s,box-shadow .15s}.card:hover,.card:focus-visible{border-color:var(--accent);box-shadow:0 0 14px color-mix(in srgb, var(--accent) 25%, transparent);color:inherit}.card:hover h3{text-shadow:var(--glow)}.card-cover{aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid var(--line);width:100%;margin-bottom:6px}.card-cover.line-art{background:radial-gradient(var(--line) 1px, transparent 1.5px) 0 0 / 16px 16px;display:block;position:relative}.card-cover.line-art:before,.card-cover.line-art>div{mask:var(--art) center / cover no-repeat;position:absolute;inset:0}.card-cover.line-art:before{content:"";background:var(--panel);mask-mode:alpha}.card-cover.line-art>div{background:var(--accent);mask-mode:luminance}.card-cover.blank{background:radial-gradient(var(--line) 1px, transparent 1.5px) 0 0 / 16px 16px;place-items:center;display:grid}.card-cover.blank img{object-fit:contain;width:30%;height:50%}.card-body{display:contents}.card-body>*{padding-inline:16px}.card-body>:last-child{padding-bottom:16px}.card-meta{flex-wrap:wrap;align-items:baseline;gap:6px 12px;display:flex}.card-meta :is(time,.period){color:var(--dim);margin-left:auto;font-size:.75rem}.card h3{color:var(--accent);font-size:1.15rem;line-height:1.3}.card p{font-size:.9rem}.card .tags{align-self:end}.badges{letter-spacing:.06em;flex-wrap:wrap;gap:6px;font-size:.75rem;display:flex}.badge{white-space:nowrap}.badge.software,.badge.hardware{color:var(--link)}.badge.finished{color:var(--accent)}.badge.in-progress{color:var(--hot)}.badge.idea{color:var(--code)}.badge.draft{color:var(--bg);background:var(--code);padding:0 4px}.title{align-items:center;gap:.5em;display:flex}.title .icon{object-fit:contain;flex:none;width:1.75em;height:1.75em}.title .prefix{color:var(--dim);text-shadow:none}.members{margin-top:48px}.members h2{color:var(--accent);margin-bottom:24px;font-size:1.2rem;font-weight:400}.tags{color:var(--dim);flex-wrap:wrap;gap:4px 12px;font-size:.8rem;list-style:none;display:flex}.tags li:before{content:"#"}.project{max-width:820px;padding-top:40px}.back{margin-bottom:24px;text-decoration:none;display:inline-block}.path{color:var(--dim);font-size:.85rem}.project h1{color:var(--accent);text-shadow:var(--glow);margin:8px 0 12px;font-size:clamp(1.6rem,5vw,2.4rem);line-height:1.2}.lead{margin:20px 0;font-size:1.1rem}.actions{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:28px;display:flex}.links{flex-wrap:wrap;gap:10px;list-style:none;display:flex}.button{border:1px solid var(--link);align-items:center;gap:.6em;padding:6px 14px;text-decoration:none;display:inline-flex}.button:before{content:"";width:.875em;height:.875em;mask:var(--icon) center / contain no-repeat;--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 7 7' shape-rendering='crispEdges'%3E%3Cpath d='M2 0h1v1h-1zM3 0h1v1h-1zM4 0h1v1h-1zM5 0h1v1h-1zM6 0h1v1h-1zM6 1h1v1h-1zM6 2h1v1h-1zM6 3h1v1h-1zM6 4h1v1h-1zM5 1h1v1h-1zM4 2h1v1h-1zM3 3h1v1h-1zM2 4h1v1h-1zM1 5h1v1h-1zM0 6h1v1h-1z'/%3E%3C/svg%3E");background:currentColor;flex:none}.button:hover{background:var(--link);color:var(--bg)}.install{flex-wrap:wrap;align-items:center;gap:12px 16px;list-style:none;display:flex}.install a:not(.button){display:block}.button.download{border-color:var(--accent);color:var(--accent)}.button.download:before{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 7 7' shape-rendering='crispEdges'%3E%3Cpath d='M3 0h1v1h-1zM3 1h1v1h-1zM3 2h1v1h-1zM3 3h1v1h-1zM3 4h1v1h-1zM1 2h1v1h-1zM5 2h1v1h-1zM2 3h1v1h-1zM4 3h1v1h-1zM0 6h1v1h-1zM1 6h1v1h-1zM2 6h1v1h-1zM3 6h1v1h-1zM4 6h1v1h-1zM5 6h1v1h-1zM6 6h1v1h-1z'/%3E%3C/svg%3E")}.button.download:hover{background:var(--accent);color:var(--bg)}.release-badge{width:auto;height:28px;display:block}.store-badge{width:auto;height:60px;display:block}.figure{margin:28px 0}.figure img,model-viewer{border:1px solid var(--line)}.figure figcaption{color:var(--dim);margin-top:8px;font-size:.85rem}model-viewer{background:radial-gradient(var(--line) 1px, transparent 1.5px) 0 0 / 16px 16px, radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--accent) 8%, var(--bg)), var(--bg) 70%);--poster-color:transparent;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;outline:none;width:100%;height:min(70vh,520px)}model-viewer:focus-visible{border-color:var(--accent);outline:none}.prose{margin-top:32px}.prose :is(p,ul,ol,pre,blockquote,table,img,hr){margin-bottom:1em}.prose h2,.prose h3{color:var(--accent);margin:1.8em 0 .6em;font-weight:400;line-height:1.3}.prose h2{font-size:1.3rem}.prose h3{font-size:1.1rem}.prose h2:before{content:"## ";color:var(--dim)}.prose h3:before{content:"### ";color:var(--dim)}.prose ul,.prose ol{padding-left:1.6em}.prose ul{list-style:none}.prose ul>li:before{content:"-";color:var(--accent);width:1.6em;margin-left:-1.6em;display:inline-block}.prose li+li{margin-top:.3em}.prose strong{color:var(--accent)}.prose blockquote{border-left:2px solid var(--hot);color:var(--dim);padding-left:16px}.prose code{color:var(--code);background:var(--panel);border:1px solid var(--line);overflow-wrap:anywhere;padding:0 .3em}.prose pre{border:1px solid var(--line);border-left:2px solid var(--code);background:var(--panel);color:var(--code);white-space:pre-wrap;overflow-wrap:anywhere;padding:12px 16px}.prose pre code{background:0 0;border:0;padding:0}.prose pre:is([data-language=sh],[data-language=bash],[data-language=shell]){white-space:pre;overflow-x:auto}.prose pre:is([data-language=sh],[data-language=bash],[data-language=shell]):before{content:"$ ";color:var(--hot)}.prose hr{border:0;border-top:1px dashed var(--line)}.prose img{border:1px solid var(--line)}.prose table{border-collapse:collapse;width:100%}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:6px 10px}.gallery{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:16px;margin-top:40px;list-style:none;display:grid}.gallery .figure{margin:0}.gallery img{width:100%}.gallery.square img{aspect-ratio:1;object-fit:cover}.gallery.original{grid-template-columns:repeat(auto-fill,minmax(min(45%,150px),1fr))}.works{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:20px;margin-top:40px;list-style:none;display:grid}.work{border:1px solid var(--line);background:var(--panel);flex-direction:column;display:flex}.work-shot{border-bottom:1px solid var(--line);display:block}.work-shot img,img.work-shot{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%}.work-body{flex-direction:column;flex:1;gap:10px;padding:16px;display:flex}.work-title{color:var(--accent);justify-content:space-between;align-items:baseline;gap:12px;font-size:1.1rem;line-height:1.3;display:flex}.work-year{color:var(--dim);white-space:nowrap;font-size:.75rem;font-weight:400}.work p{font-size:.9rem}.work-credits{font-size:.85rem}.work-credits div{gap:8px;display:flex}.work-credits dt{color:var(--dim);flex:none;width:8ch}.work-credits dt:after{content:":"}.work .links{margin-top:auto;padding-top:6px}.work.featured{border-color:var(--accent);box-shadow:0 0 14px color-mix(in srgb, var(--accent) 20%, transparent);grid-column:1/-1}.work.featured .work-shot img,.work.featured img.work-shot{aspect-ratio:auto;height:auto}.work.featured .work-body{flex-flow:wrap;align-items:flex-end;gap:12px 32px;padding:20px 24px}.work.featured .work-title,.work.featured .work-body>p{flex-basis:100%}.work.featured .work-title{font-size:1.35rem}.work.featured .work-body>p{font-size:.95rem}.work.featured .tags{flex:auto;min-width:max-content}.work.featured .links{margin:0 0 0 auto;padding:0}.work .button{padding:4px 10px;font-size:.85rem}.button.archived{border-color:var(--accent);color:var(--accent)}.button.archived:hover{background:var(--accent);color:var(--bg)}a[data-lightbox]{cursor:zoom-in;display:block}html:has(.lightbox[open]){overflow:hidden}.lightbox{background:var(--bg);width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--text);border:0;padding:0}.lightbox::backdrop{background:var(--bg)}.lightbox[open]{place-items:center;display:grid}.lightbox figure{flex-direction:column;align-items:center;gap:10px;padding:0 72px;display:flex}.lightbox img{object-fit:contain;border:1px solid var(--line);max-width:calc(100vw - 144px);max-height:calc(100dvh - 110px)}.lightbox figcaption{color:var(--dim);text-align:center;font-size:.85rem}.lb-count{color:var(--accent)}.lightbox button{background:var(--bg);border:1px solid var(--line);color:var(--accent);cursor:pointer;padding:6px 12px;font-size:1.1rem;position:fixed}.lightbox button:hover,.lightbox button:focus-visible{background:var(--accent);color:var(--bg);outline:none}.lb-close{top:16px;right:16px}.lb-prev,.lb-next{top:50%;transform:translateY(-50%)}.lb-prev{left:16px}.lb-next{right:16px}.lightbox.single :is(.lb-prev,.lb-next){display:none}@media (width<=640px){.lightbox figure{padding:0 16px}.lightbox img{max-width:calc(100vw - 32px);max-height:calc(100dvh - 150px)}.lb-prev,.lb-next{top:auto;bottom:16px;transform:none}}:root{--t0:0s}.intro{--t0:1.1s}@keyframes type{0%{clip-path:inset(-40px 100% -40px -40px)}to{clip-path:inset(-40px)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@keyframes boot-out{to{opacity:0;visibility:hidden}}.boot{display:none}.intro .boot{z-index:90;background:var(--bg);justify-content:center;align-items:center;padding:16px;animation:.2s steps(3,end) .95s forwards boot-out;display:flex;position:fixed;inset:0}.boot pre{color:var(--accent);text-shadow:0 0 6px color-mix(in srgb, var(--accent) 60%, transparent);font-size:clamp(.8rem,2.6vw,1rem);line-height:1.9}.boot .line{animation:.16s steps(14,end) both type;animation-delay:calc(var(--i) * .15s);display:block}.boot .ok{color:var(--link)}.ascii-art .row{animation:.3s steps(18,end) both type;animation-delay:calc(var(--t0) + var(--i) * 50ms);display:block}.tagline .typed{animation:.8s steps(29,end) both type;animation-delay:calc(var(--t0) + .7s);display:inline-block}.tagline .cursor{animation:rise 0s calc(var(--t0) + 1.5s) both, blink 1s steps(1) calc(var(--t0) + 1.5s) infinite}.reveal{animation:.45s ease-out both rise;animation-delay:calc(var(--t0) + var(--d,0s))}.grid.filtered>li{animation-delay:calc(min(var(--i), 8) * 40ms)}.project{animation:.4s ease-out both rise}.not-found{text-align:center;padding-top:18vh}.not-found h1{color:var(--hot);letter-spacing:.3em;margin-bottom:16px;font-weight:400}@media (width<=600px){.tagline{letter-spacing:.2em}.site-header .version{display:none}.site-header{letter-spacing:.02em;gap:10px}.site-header nav{gap:12px}.theme-switch{padding:2px 6px}.theme-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (width<=359px){.site-header{font-size:.72rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}html{scroll-behavior:auto}}
