@font-face{font-family:Iosevka Term;src:url(/assets/IosevkaTerm-Regular--MuE3F8r.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Iosevka Term;src:url(/assets/IosevkaTerm-Bold-UHCGts74.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Iosevka Term;src:url(/assets/IosevkaTerm-Italic-D-5ZswT7.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}:root{--bg:#000;--text:#ff79c6;--bright:#ffd6ec;--dim:#d070a8;--border:#8f3a6c;--red:#a50610;--blue:#0c2aa8;--link:#6ee7ff;--link-hover:#c4f5ff;--pages:#ffd447;--max-width:1100px;--font-display:"Silkscreen", monospace;--font-mono:"Iosevka Term", ui-monospace, "SFMono-Regular", Menlo, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-mono);font-size:17px;line-height:1.55}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{background:var(--bg);color:var(--text);margin:0}.lightning{z-index:0;pointer-events:none;opacity:.28;width:100%;height:100%;image-rendering:pixelated;position:fixed;inset:0}body:after{content:"";z-index:99;pointer-events:none;background:radial-gradient(#0000 65%,#00000073 100%);position:fixed;inset:0}::selection{background:var(--text);color:var(--bg)}a{color:var(--link)}a:hover{color:var(--link-hover)}main a:not(.button){text-underline-offset:.2em;text-decoration:underline}:focus-visible{outline:3px solid var(--link);outline-offset:3px}main:focus{outline:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:200;background:var(--link);color:var(--bg);padding:.3rem 1rem;text-decoration:none;position:absolute;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip-link:focus{transform:none}h1,h2,h3,h4{font-family:var(--font-display);text-transform:uppercase;margin:0 0 1rem;font-weight:400;line-height:1.15}.muted{color:var(--dim)}.aberration,h2{text-shadow:.1ex 0 var(--red), -.1ex 0 var(--blue)}.layout{max-width:var(--max-width);gap:2.5rem;margin:0 auto;padding:0 1rem;display:flex;position:relative}.main-column{z-index:1;flex:1;min-width:0;position:relative}.sidebar{z-index:1;text-align:center;flex-shrink:0;align-self:flex-start;width:230px;padding:3rem 0 2rem;position:sticky;top:0}.logo{font-family:var(--font-display);text-transform:uppercase;color:var(--text);font-size:1.6rem;line-height:1.1;text-decoration:none;display:block}.logo:hover{color:var(--bright)}.alias{color:var(--link);overflow-wrap:anywhere;margin:0 0 .5rem;font-size:.95rem}.line{background:var(--text);height:1px;margin:1.5rem 0}.focus{color:var(--text);gap:.3rem;margin:0;padding:0;font-size:.95rem;list-style:none;display:grid}.focus li:before{content:"// ";content:"// " / "";color:var(--dim)}.sidebar-links{text-transform:uppercase;gap:.4rem;margin:2.5rem 0 0;padding:0;list-style:none;display:grid}.sidebar-links a:before,.social a:before{content:"[";content:"[" / "";color:var(--dim);margin-right:.3em}.sidebar-links a:after,.social a:after{content:"]";content:"]" / "";color:var(--dim);margin-left:.3em}.sidebar-links a:before,.sidebar-links a:after,.social a:before,.social a:after,.nav-pages a:before,.link-icon{display:inline-block}.card-links .link-icon{margin-left:.3em}.back-link .link-icon{margin-right:.4em}.nav{z-index:10;background:var(--bg);border-bottom:1px dashed var(--border);box-shadow:0 1rem 0 var(--bg);gap:.4rem;padding:1.25rem 0 .9rem;display:grid;position:sticky;top:0}.nav-row{flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}.nav a{font-family:var(--font-display);text-transform:uppercase;color:var(--text);font-size:1rem;text-decoration:none}.nav a:hover{color:var(--bright);text-decoration:underline}.nav-pages a{color:var(--pages)}.nav-pages a:before{content:">";content:">" / "";margin-right:.4em}.nav-pages a:hover{color:var(--pages)}.nav-pages a[aria-current=page]{color:var(--bg);background:var(--pages);padding:0 .3em}section{border-bottom:1px dashed var(--border);padding:3.5rem 0}section:last-child{border-bottom:none}section>p{max-width:34em}section:not(.hero)>h2{font-size:1.5rem}.hero{padding:4rem 0 3.5rem}.eyebrow{color:var(--bright);letter-spacing:.2em;text-transform:uppercase;margin:0 0 1rem}.hero h1{margin-bottom:1rem;font-size:clamp(2rem,7vw,3.75rem)}.tagline{max-width:30em;color:var(--bright);font-size:1.3rem}.cursor{vertical-align:text-bottom;background:var(--text);width:.55em;height:1em;margin-left:.2em;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.glitch{color:var(--text);text-shadow:.06em 0 var(--red), -.06em 0 var(--blue), 0 0 18px #ff79c659;display:inline-block;position:relative}.glitch:before,.glitch:after{content:attr(data-text);content:attr(data-text) / "";text-shadow:none;position:absolute;inset:0;overflow:hidden}.glitch:before{color:var(--bright);animation:3.2s step-end infinite alternate-reverse glitch-top}.glitch:after{color:var(--link);animation:2.7s step-end infinite alternate-reverse glitch-bottom}@keyframes glitch-top{0%,82%,to{clip-path:inset(0 0 100%)}84%{clip-path:inset(10% 0 60%);transform:translate(-6px)}88%{clip-path:inset(40% 0 35%);transform:translate(5px)}92%{clip-path:inset(70% 0 5%);transform:translate(-3px)}}@keyframes glitch-bottom{0%,78%,to{clip-path:inset(100% 0 0)}80%{clip-path:inset(55% 0 20%);transform:translate(6px)}85%{clip-path:inset(20% 0 65%);transform:translate(-5px)}90%{clip-path:inset(80% 0 2%);transform:translate(3px)}}.actions{flex-wrap:wrap;gap:1rem;margin-top:2rem;display:flex}.button{text-transform:uppercase;color:var(--text);border:2px solid var(--text);padding:.35rem 1rem;font-size:1.15rem;text-decoration:none;display:inline-block}.button:before{content:"> ";content:"> " / ""}.button:hover,.button.primary{background:var(--text);color:var(--bg)}.button.primary:hover{background:var(--bright);border-color:var(--bright)}.tags{color:var(--dim);flex-wrap:wrap;gap:.25rem .75rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.tags li:before{content:"#";content:"#" / ""}.skill-mix{flex-wrap:wrap;align-items:center;gap:.6rem 1.1rem;margin:2rem 0 0;padding:0;list-style:none;display:flex}.skill{padding:.05rem .45rem;line-height:1.2;transition:transform .15s;display:inline-block}.skill:hover{transform:rotate(0)scale(1.08)}.skill:nth-child(3n){transform:rotate(-3deg)}.skill:nth-child(5n){transform:rotate(2.5deg)}.skill:nth-child(7n){transform:rotate(-1.5deg)translateY(4px)}.skill:nth-child(11n){transform:rotate(4deg)translateY(-3px)}.skill.size-1{font-size:1rem}.skill.size-2{font-size:1.35rem}.skill.size-3{font-family:var(--font-display);text-transform:uppercase;font-size:1.5rem}.skill.code{color:var(--bright)}.skill.hardware{color:var(--link);border:1px dashed}.skill.craft{color:var(--bg);background:var(--text)}.skill.life{color:var(--text);font-style:italic}.skill .comment{font-family:var(--font-mono);text-transform:none;color:var(--dim);font-size:.8rem;font-style:normal}.skill.craft .comment{color:var(--bg)}.grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr));gap:1.25rem;display:grid}.card{border:3px double var(--text);flex-direction:column;transition:box-shadow .1s;display:flex;position:relative}.card:hover,.card:focus-within{box-shadow:6px 6px 0 var(--border)}.card h2{background:var(--text);color:var(--bg);text-shadow:none;margin:0;padding:.25rem .6rem;font-size:.9rem}.card p{flex:1;margin:0;padding:.75rem .75rem 0}.card-linked p{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;flex:none;margin-bottom:auto;display:-webkit-box;overflow:hidden}.card-links{flex-wrap:wrap;gap:.25rem 1rem;padding:.75rem;display:flex}.card-links a{z-index:1;overflow-wrap:anywhere;position:relative}.card h2 a{color:inherit;text-decoration:none}.card-link:after{content:"";position:absolute;inset:0}.card-linked:hover h2 a{text-decoration:underline}.card-link:focus-visible{outline:none}.card-linked:has(.card-link:focus-visible){outline:2px solid var(--text);outline-offset:2px}.card-image{aspect-ratio:16/10;object-fit:cover;border-bottom:3px double var(--text);width:100%;display:block}.back-link{color:var(--pages);margin-bottom:1.5rem;display:inline-block}.project-hero{padding-bottom:2rem}.project-body{padding-top:0}.project-body>p{max-width:40em}.project-body>h2{margin-top:2.5rem;font-size:1.2rem}.project-images{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.project-images img{border:3px double var(--text);width:100%;height:auto;display:block}.project-links{flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}.project-list{padding-top:0}.hero:has(+.project-list){border-bottom:none}.more-builds{margin-top:2rem}.timeline{gap:1.75rem;margin:0;padding:0;list-style:none;display:grid}.timeline li{grid-template-columns:8rem 1fr;gap:1rem;display:grid}.timeline h4{font-family:var(--font-mono);color:var(--bright);margin-bottom:.2rem;font-size:1.2rem}.timeline h4 .muted{color:var(--dim)}.timeline p{margin:0}.period{color:var(--dim)}.details{margin:.4rem 0 0;padding-left:1.2rem;list-style:"> "}.subheading{color:var(--bright);margin:2.5rem 0 1.5rem;font-size:1.1rem}section>h2+.subheading{margin-top:0}.subheading:before{content:"-- ";content:"-- " / "";color:var(--dim)}.social{text-transform:uppercase;flex-wrap:wrap;gap:.5rem 1.5rem;margin:2rem 0 0;padding:0;list-style:none;display:flex}footer{text-align:center;color:var(--dim);border-top:1px dashed var(--border);padding:2rem 0 3rem}.workshop-list{gap:2rem;margin:3rem 0 0;padding:0;list-style:none;display:grid}.workshop{border:3px double var(--text)}.workshop h2{background:var(--text);color:var(--bg);text-shadow:none;margin:0;padding:.4rem .75rem;font-size:1.1rem}.workshop-body{display:grid}.workshop-body:has(.workshop-image){grid-template-columns:minmax(180px,16rem) 1fr}.workshop-image{aspect-ratio:1;object-fit:cover;border-right:3px double var(--text);width:100%;height:100%;display:block}.workshop-meta{border-bottom:1px dashed var(--border);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.5rem 1.5rem;margin:0;padding:.75rem;display:grid}.workshop-meta dt{color:var(--dim);text-transform:uppercase;font-size:.85rem}.workshop-meta dd{color:var(--bright);margin:0}.workshop p{max-width:34em;margin:.75rem}.workshop-links{flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;padding:0 .75rem .75rem;list-style:none;display:flex}.zoomable{cursor:zoom-in;background:0 0;border:0;padding:0;display:block}.lightbox{width:100%;max-width:none;height:100%;max-height:none;color:var(--text);cursor:zoom-out;background:#000000eb;border:0;margin:0;padding:3.5rem 1rem}.lightbox[open]{justify-content:center;align-items:center;display:flex}.lightbox::backdrop{background:0 0}.lightbox img{object-fit:contain;border:3px double var(--text);width:auto;max-width:100%;height:auto;max-height:100%;display:block}.lightbox button{font:inherit;font-family:var(--font-display);text-transform:uppercase;color:var(--pages);background:var(--bg);border:1px dashed var(--border);cursor:pointer;padding:.25rem .6rem}.lightbox button:hover{color:var(--bg);background:var(--pages)}.lightbox-close{position:absolute;top:.75rem;right:1rem}.lightbox-nav{white-space:nowrap;align-items:center;gap:1rem;display:flex;position:absolute;bottom:.75rem;left:50%;translate:-50%}body:has(.lightbox[open]){overflow:hidden}@media (width<=799px){:root{font-size:16px}.layout{flex-direction:column;gap:0}.sidebar{width:auto;padding:2rem 0 .5rem;position:relative}.line{margin:1rem 0}.focus{flex-wrap:wrap;justify-content:center;gap:.25rem 1rem;font-size:1rem;display:flex}.sidebar-links{flex-wrap:wrap;justify-content:center;gap:.25rem 1rem;margin-top:1rem;display:flex}.nav-row{justify-content:center;gap:.25rem 1rem}.nav a{font-size:.85rem}.timeline li{grid-template-columns:1fr;gap:.1rem}.workshop-body:has(.workshop-image){grid-template-columns:1fr}.workshop-image{aspect-ratio:16/10;border-right:none;border-bottom:3px double var(--text)}}@media (height<=600px){.sidebar{position:relative}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.cursor{animation:none}.skill{transition:none}.glitch:before,.glitch:after{display:none}}@media (prefers-contrast:more){body:after,.lightning{display:none}.aberration,h2,.glitch{text-shadow:none}.glitch:before,.glitch:after{display:none}}@media (forced-colors:active){body:after,.lightning,.glitch:before,.glitch:after{display:none}.card h2,.workshop h2{forced-color-adjust:none;color:canvas;background:canvastext}}
