@font-face{font-family:Domino Brick;src:url(/fonts/domino-brick.otf)format("opentype");font-weight:400;font-style:normal}@font-face{font-family:Nineteen Ninety Six;src:url(/fonts/NineteenNinetySix.ttf)format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Extra_Thick;src:url(/fonts/ExtraThick.ttf)format("truetype");font-weight:400;font-style:normal}@font-face{font-family:unifont;src:url(/fonts/unifont.otf)format("opentype");font-weight:400;font-style:normal}:root{--basalt-base:#1a1818;--basalt-dark:#121111;--basalt-soft:#2a2828;--fg-bone:#f2ede7;--bone-grey:#a9a7a3;--warm-grey:#8a817c;--ash-grey:#5e5855;--citron-bright:#e2e0a5;--citron-dim:#b5b382;--champagne:#f7e1a0;--cherry-red:#ff4b6b;--cherry-soft:#d64d68;--error-red:#ff1f48;--mint-silver:#b5e8e0;--selection:#4a4d6d;--white:#fff;--color-bg-page:var(--basalt-base);--color-bg-surface:var(--basalt-dark);--color-bg-header:var(--basalt-soft);--color-bg-code:var(--basalt-soft);--color-bg-gradient-start:var(--basalt-soft);--color-bg-gradient-end:var(--basalt-base);--color-text-primary:var(--fg-bone);--color-text-header:var(--mint-silver);--color-text-nav:var(--cherry-red);--color-text-secondary:var(--bone-grey);--color-text-tertiary:var(--warm-grey);--color-text-inverted:var(--basalt-base);--color-text-link:var(--citron-bright);--color-text-link-hover:var(--champagne);--color-text-link-visited:var(--mint-silver);--color-border-subtle:var(--basalt-soft);--color-border-default:var(--ash-grey);--color-border-strong:var(--warm-grey);--color-shadow-sm:rgba(0,0,0,.4);--color-shadow-md:rgba(0,0,0,.5);--color-shadow-lg:rgba(0,0,0,.7);--color-accent:var(--mint-silver);--color-success:var(--mint-silver);--color-warning:var(--citron-bright);--color-error:var(--error-red);--font-size-xs:clamp(.75rem, .7rem + .25vw, .875rem);--font-size-sm:clamp(.875rem, .83rem + .23vw, 1rem);--font-size-base:clamp(1rem, .91rem + .45vw, 1.25rem);--font-size-lg:clamp(1.125rem, 1rem + .63vw, 1.5rem);--font-size-xl:clamp(1.5rem, 1.25rem + 1.25vw, 2.25rem);--font-size-2xl:clamp(2rem, 1.5rem + 2.5vw, 3.5rem);--font-size-display:clamp(3rem, 1.5rem + 7.5vw, 12rem);--header-height:2rem;--measure:70ch;--gutter:clamp(1rem, 5vw, 4rem);--shadow-text-striped:.03em .03em 0 var(--basalt-dark);--shadow-striped-color:var(--basalt-soft);--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease}@media (prefers-contrast:more){:root{--color-border-default:var(--warm-grey);--color-border-strong:var(--ash-grey);--color-text-secondary:var(--ash-grey)}@media (prefers-color-scheme:dark){:root{--color-bg-surface:var(--basalt-dark);--color-text-primary:var(--white);--color-border-default:var(--bone-grey);--color-border-strong:var(--warm-grey);--color-text-secondary:var(--fg-bone)}}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:100%}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{min-height:100dvh;font-family:Line Seed Sans App,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:var(--font-size-base);color:var(--color-text-primary);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;padding-top:2rem;padding-left:2rem;line-height:1.6}html{background-image:repeating-linear-gradient(45deg,transparent,transparent 5px,#000 5px,#000 10px),repeating-linear-gradient(-45deg,transparent,transparent 5px,#000 5px,#000 10px);background-size:10px 10px,10px 10px}.halftone-container{--halftone-size:4px;--halftone-bleed:.4;--halftone-rotation:0deg;background:#fff;width:50%;margin-left:auto;margin-right:auto;display:block;position:relative;overflow:hidden}.halftone-layer{--halftone-dot-size:calc(var(--halftone-size) * var(--halftone-bleed));--halftone-color-dot-size:var(--halftone-dot-size);filter:brightness(calc(.5 + var(--halftone-bleed) * .3 - .02)) blur(calc(var(--halftone-size) * .1)) contrast(1000) blur(.6px);box-sizing:border-box;position:relative;overflow:hidden}.halftone-layer .halftone-media{width:100%;display:block}.halftone-cmy .halftone-media{filter:invert()brightness(.75)invert()saturate(2)}.halftone-ink{mix-blend-mode:screen}.halftone-ink:before,.halftone-ink:after{content:"";background-size:var(--halftone-size) var(--halftone-size);background-blend-mode:multiply;mix-blend-mode:multiply;position:absolute;top:-30%;bottom:-30%;left:-30%;right:-30%}.halftone-ink:before{background-image:radial-gradient(var(--halftone-color-dot-size) at 25% 25%, #ff0, #ff6, #fff), radial-gradient(var(--halftone-color-dot-size) at 75% 75%, #ff0, #ff6, #fff);transform:rotate(30deg)}.halftone-ink:after{transform:rotate(calc(-21deg + var(--halftone-rotation))) translateX(calc(var(--halftone-size) * .58));background-image:radial-gradient(var(--halftone-color-dot-size) at 75% 25%, #f0f, #f6f, #fff), radial-gradient(var(--halftone-color-dot-size) at 25% 75%, #f0f, #f6f, #fff), radial-gradient(var(--halftone-color-dot-size) at 75% 75%, #0ff, #6ff, #fff), radial-gradient(var(--halftone-color-dot-size) at 25% 25%, #0ff, #6ff, #fff)}.halftone-k{mix-blend-mode:multiply;position:absolute;top:0;bottom:0;left:0;right:0}.halftone-k .halftone-media{filter:grayscale()brightness(2)}.halftone-k:after{content:"";background-size:var(--halftone-size) var(--halftone-size);background-blend-mode:multiply;mix-blend-mode:screen;background-image:radial-gradient(var(--halftone-color-dot-size) at 25% 25%, #000, #666, #ccc, #fff), radial-gradient(var(--halftone-color-dot-size) at 75% 75%, #000, #fff);position:absolute;top:-30%;bottom:-30%;left:-30%;right:-30%;transform:rotate(30deg)}header{z-index:100;writing-mode:vertical-rl;text-orientation:mixed;background-image:radial-gradient(1px at 0 0,#000 1px,transparent 0),radial-gradient(1px at 0 0,#000 1px,transparent 0);background-position:0 0,1px 1px;background-size:2px 2px,2px 2px;background-color:var(--mint-silver);width:fit-content;box-shadow:0 4px 12px var(--color-shadow-md);font-family:Nineteen Ninety Six,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-weight:bolder;position:fixed;top:0;bottom:0;rotate:180deg}header:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}header:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}header nav{max-width:var(--measure);color:#000;justify-content:space-between;align-items:center;gap:2rem;margin:0 auto;display:flex}header nav ul{height:100vh;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;justify-content:space-evenly;gap:max(1ch,min(2vw,3ch));font-weight:700;list-style:none;display:flex}header nav ul li{margin:0;padding:.2rem;transition:letter-spacing .3s;position:relative}header nav ul li:hover{letter-spacing:.5ch}main{background:var(--color-bg-page);filter:drop-shadow(0 0 30px rgba(255,255,255,.35));border-radius:15px;width:90%;min-height:100vh;margin-left:auto;margin-right:auto;box-shadow:0 0 40px 8px rgba(20,8,6,.55),0 0 80px 20px rgba(255,255,255,.02),0 0 160px 40px rgba(255,255,255,.01)}p:is(main){font-family:unifont;list-style:none}main li{font-family:unifont;list-style:none}main p{padding:2rem;font-size:1.2em;font-weight:700}h1{font-family:Extra Thick,serif;font-size:var(--font-size-display);color:var(--color-text-inverted);text-shadow:var(--shadow-text-striped);margin-bottom:1rem;line-height:1}h1:after{content:attr(data-shadow);z-index:-1;text-shadow:none;background-image:linear-gradient(45deg, transparent 45%, var(--shadow-striped-color) 45%, var(--shadow-striped-color) 55%, transparent 0);-webkit-text-fill-color:transparent;background-size:.05em .05em;-webkit-background-clip:text;background-clip:text;animation:15s linear infinite shadow-scroll;display:block;position:absolute;top:.06em}h1:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{left:.06em}h1:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{right:.06em}@media (prefers-reduced-motion:reduce){h1:after{animation:none}}@keyframes shadow-scroll{0%{background-position:0 0}to{background-position:100% -100%}}h2{font-family:Extra_Thick,serif;font-size:var(--font-size-2xl);color:var(--fg-bone);z-index:1;background:var(--basalt-base);background:var(--cherry-red);border-bottom:5px dashed var(--fg-bone);border-radius:15px;padding:2rem 2rem 0;position:relative;overflow:hidden}h2:before{content:"";z-index:-1;--dot-color:color-mix(in srgb, var(--basalt-base), black 30%);background-image:radial-gradient(var(--dot-color) 15%, transparent 15%);filter:url(#liquid-warp);background-size:20px 20px;position:absolute;top:-10%;bottom:-10%;left:-10%;right:-10%}h3{font-size:var(--font-size-xl);margin-top:2rem;margin-bottom:.75rem;font-weight:700;line-height:1.3}h4,h5,h6{font-size:var(--font-size-lg);margin-top:1.5rem;margin-bottom:.5rem;font-weight:700;line-height:1.4}a:link,a:visited,a:hover,a:active{color:inherit;text-decoration:none}article *{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) var(--color-bg-surface)}article ::-webkit-scrollbar{width:10px;height:10px}article ::-webkit-scrollbar-track{background:var(--color-bg-surface);border-radius:5px}article ::-webkit-scrollbar-thumb{background:var(--color-border-strong);border:2px solid var(--color-bg-surface);border-radius:5px}article ::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}article p{-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;text-wrap:pretty;max-width:65ch;margin-top:1.5em;margin-bottom:1.5em}article p:first-child{margin-top:0}article a{color:var(--color-text-link);text-underline-offset:.2em;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;transition:color var(--transition-fast);text-decoration:underline;text-decoration-thickness:1px}article a:visited{color:var(--color-text-link-visited)}article a:hover{color:var(--color-text-link-hover)}article :is(ul,ol){margin-top:1.5em;margin-bottom:1.5em}article :is(ul,ol):not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-left:2em}article :is(ul,ol):is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-right:2em}article :is(ul,ol) li{margin-top:.5em;margin-bottom:.5em}article :is(ul,ol) li::marker{color:var(--color-text-secondary)}article :is(ul,ol) :is(ul,ol){margin-top:.5em;margin-bottom:.5em}article blockquote{color:var(--color-text-secondary);margin-top:2rem;margin-bottom:2rem;margin-left:2rem;margin-right:2rem;font-style:italic}article blockquote:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-left:4px solid var(--color-accent);padding-left:1.5rem}article blockquote:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-right:4px solid var(--color-accent);padding-right:1.5rem}article blockquote cite{font-style:normal;font-size:var(--font-size-sm);color:var(--color-text-tertiary);margin-top:1rem;font-weight:700;display:block}article blockquote cite:before{content:"— "}@media (max-width:60ch){article blockquote{margin-left:0;margin-right:0}}article code{background:var(--color-bg-code);color:var(--color-text-primary);border-radius:.25em;padding:.2em .4em;font-family:ui-monospace,Courier New,monospace;font-size:.9em}article pre{background:oklch(var(--lch-black));color:oklch(var(--lch-gray-100));box-shadow:0 4px 12px var(--color-shadow-lg);border-radius:.5rem;margin-top:2rem;margin-bottom:2rem;padding:1.5rem;overflow-x:auto}article pre code{color:inherit;background:0 0;padding:0}article img{border-radius:.5rem;height:auto;max-width:100%}article figure{flex-direction:column;align-items:center;margin-top:3rem;margin-bottom:3rem;margin-left:0;margin-right:0;display:flex}article figure img{box-shadow:0 8px 24px var(--color-shadow-md)}article figure figcaption{font-size:var(--font-size-sm);color:var(--color-text-secondary);text-align:center;max-width:60ch;margin-top:1rem;font-style:italic}article figure:where(.wide,:has(img[width="100%"])){margin-inline:calc(var(--gutter) * -1);max-width:100vw}article table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm);margin-top:2rem;margin-bottom:2rem}article table thead{border-bottom:2px solid var(--color-border-strong)}article table th{color:var(--color-text-primary);background:var(--color-bg-code);padding:.75em 1em;font-weight:700}article table th:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}article table th:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}article table td{border-bottom:1px solid var(--color-border-subtle);padding:.75em 1em}article table tbody tr:hover{background:var(--color-bg-code)}article hr{border:none;border-top:1px solid var(--color-border-default);margin-top:4rem;margin-bottom:4rem}article sup{font-size:.7em}article sup a{padding-left:.2ch;padding-right:.2ch;font-weight:700;text-decoration:none}footer{padding-top:4rem;padding-bottom:4rem;padding-inline:var(--gutter);border-top:1px solid var(--color-border-default);text-align:center;font-size:var(--font-size-sm);color:var(--color-text-tertiary);margin-top:8rem}footer p{margin-top:1rem;margin-bottom:1rem}footer a{color:var(--color-text-link);text-decoration:none}footer a:hover{text-decoration:underline}footer ul{justify-content:center;gap:2rem;margin-top:2rem;margin-bottom:2rem;list-style:none;display:flex}footer ul img{height:1.5rem;width:auto;transition:transform var(--transition-fast)}footer ul img:hover{transform:scale(1.1)}button,input,textarea,select{font:inherit;color:inherit}button{background:var(--color-accent);color:var(--color-text-inverted);cursor:pointer;transition:background-color var(--transition-fast), transform var(--transition-fast);border:none;border-radius:.5em;padding:.75em 1.5em;font-weight:700}button:hover{background:oklch(from var(--color-accent) calc(l * .9) c h)}button:active{transform:scale(.98)}input,textarea,select{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:.25em;padding:.75em 1em}:is(input,textarea,select):focus{outline:2px solid var(--color-accent);outline-offset:2px;border-color:var(--color-accent)}@media (max-width:100ch){header{padding:1rem}header nav{flex-direction:column;gap:1rem}main{padding-left:1rem;padding-right:1rem}}@media (max-width:60ch){:root{--header-height:6rem}h1{font-size:max(2rem,min(12vw,4rem))}article blockquote{margin-left:0;margin-right:0}article figure:where(.wide){margin-left:-1rem;margin-right:-1rem}}@media print{header,footer,body:before,body:after{display:none}main{margin-top:0}article a{color:var(--color-text-primary);text-decoration:none}article a:after{content:" (" attr(href) ")";color:var(--color-text-tertiary);font-size:.8em}}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:.25em}.okay ul{margin:2%}li{width:50%}project-card{--card-border-radius:18px;--bg-clr:#111616;--card-clr:#222c2c;--clr0:#0ad591;--clr0-light:#54f8c1;--text-clr:#fff;--text2-clr:#999;--display-font:"Domino Brick", "Iosevka", monospace;--ease:cubic-bezier(.8, 0, 1, 1);color:var(--text-clr);box-sizing:border-box;grid-template:"img img"144px"title imgtail"72px"desc desc"min-content/minmax(min-content,7fr) 3fr;padding:.8em 0 0;display:grid}project-card:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}project-card:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}project-card .card-top{display:contents}project-card .card-image{border-radius:var(--card-border-radius);filter:contrast(.8);width:100%;height:100%;transition:filter .1s ease-out, margin .2s var(--ease), width .2s var(--ease);grid-area:img/img/imgtail/imgtail;display:block;position:relative;overflow:hidden}project-card .card-image .halftone-container{width:100%;height:100%;position:absolute;top:0;left:0}project-card .card-image .halftone-layer{width:100%;height:100%;position:absolute;top:0;left:0}project-card .card-image .halftone-media{object-fit:cover;object-position:center;width:100%;height:100%;display:block}project-card .card-header{background:var(--bg-clr);border-radius:var(--card-border-radius);border-top-right-radius:var(--card-border-radius);z-index:1;transition:margin .2s var(--ease), padding .2s var(--ease);grid-area:title;align-self:end;justify-self:start;padding:.8em 1.5em 0 0;position:relative}project-card .card-header:before{content:"";width:var(--card-border-radius);border-bottom-left-radius:var(--card-border-radius);height:36px;box-shadow:0 var(--card-border-radius) 0 var(--bg-clr);position:absolute;bottom:100%;left:0}project-card .card-header:after{content:"";width:36px;height:var(--card-border-radius);border-bottom-left-radius:var(--card-border-radius);box-shadow:calc(-1 * var(--card-border-radius)) 0 0 var(--bg-clr);position:absolute;bottom:0;left:100%}project-card .card-header h3{font-family:var(--display-font);letter-spacing:-.03em;margin:0;font-size:2rem;font-style:italic;font-weight:700;line-height:1.4}project-card .card-meta{color:var(--text2-clr);margin:.1em 0 0;padding:0;font-size:.8em;font-style:italic;font-weight:700;display:block}project-card .card-description{grid-area:desc;margin:18px 0;padding:0;font-size:15px;line-height:1.5}project-card:after{content:"";background-color:var(--clr0);mix-blend-mode:darken;pointer-events:none;transition:background-color 1s, margin .2s var(--ease);grid-area:img/img/imgtail/imgtail}@media (max-width:700px){project-card{grid-template:"img"180px"title""desc"/1fr}project-card .card-header{padding-right:0}project-card .card-header:after{display:none}}