@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f7f5ed;--ink:#1c1c1b;--muted:#565750;--line:#cbc9bc;--blue:#263de0;--sans:"Space Grotesk Variable",Arial,sans-serif;--mono:"Courier New",monospace;color:var(--ink);background:var(--paper);font:16px/1.55 var(--sans)}*{box-sizing:border-box}body{flex-direction:column;min-height:100vh;margin:0;display:flex}a{color:inherit;text-decoration:none}a:hover{color:var(--blue)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}img{max-width:100%;display:block}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--blue);outline-offset:5px}h1,h2,h3,p,ul,figure,dl{margin:0}button,input,textarea,select{border-radius:0}input,textarea,select{min-width:0}main{flex:1}.shell{width:min(100% - 8rem,1280px);margin-inline:auto}.skip{z-index:100;background:var(--paper);color:var(--ink);padding:.6rem 1rem;position:fixed;top:.5rem;left:.5rem;transform:translateY(-150%)}.skip:focus{transform:translateY(0)}.site-head,.site-foot{justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.site-head{border-bottom:1px solid var(--line);min-height:74px}.brand{letter-spacing:-.045em;overflow-wrap:anywhere;align-items:center;gap:.65rem;font-size:1.12rem;font-weight:700;display:flex}.brand img{flex:none}.site-head nav,.site-foot nav{align-items:center;gap:clamp(1.1rem,3vw,2.75rem);display:flex}.site-head nav a{font-size:.91rem;font-weight:650}.site-head nav a[aria-current]{color:var(--blue);text-underline-offset:.35em;text-decoration:underline}.site-foot{border-top:1px solid var(--line);min-height:95px;color:var(--muted);margin-top:4.75rem;padding-block:1.2rem;font-size:.86rem}.site-foot nav{flex-wrap:wrap;justify-content:flex-end;row-gap:.5rem}.mobile-github{display:none}.home-intro{grid-template-columns:minmax(0,1fr) minmax(240px,290px);align-items:end;gap:2.2rem;padding:clamp(3.8rem,9.2vh,8.25rem) 0 clamp(3.7rem,7vh,6.8rem);display:grid}.home-intro h1{letter-spacing:-.106em;overflow-wrap:anywhere;margin-left:-.045em;font-size:clamp(4rem,10.6vw,10rem);font-weight:700;line-height:.78}.home-intro h1 span,.page-title h1 span{color:var(--blue)}.intro-copy{border-left:2px solid var(--blue);color:#363731;padding-left:1.1rem;font-size:clamp(.96rem,1.26vw,1.16rem);line-height:1.5}.intro-copy .profile{color:var(--muted);white-space:pre-line;margin-top:.65rem}.section-head{border-top:1px solid var(--ink);justify-content:space-between;align-items:baseline;gap:1rem;padding:.86rem 0 1.15rem;display:flex}.section-head h2{text-transform:uppercase;letter-spacing:.12em;font-size:.85rem;font-weight:700}.section-head a{color:var(--blue);white-space:nowrap;font-size:.88rem;font-weight:700}.section-head a:hover{text-underline-offset:4px;text-decoration:underline}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.75rem 1.4rem;padding:0;list-style:none;display:grid}.project-entry{height:100%;display:block}.project-image{aspect-ratio:1.88;background:repeating-linear-gradient(135deg,#dddedb 0 1px,#e6e7e1 1px 17px);position:relative;overflow:hidden}.project-image.stratum{background:#324544}.project-image.hollow{background:#122431}.project-image img{object-fit:cover;width:100%;height:100%;transition:transform .35s;position:absolute;inset:0}.project-image.hollow img{object-position:center 46%}.project-entry:hover img{transform:scale(1.035)}.image-arrow{background:var(--paper);width:2.75rem;height:2.75rem;color:var(--ink);place-items:center;font-size:1.45rem;font-weight:500;transition:background .2s,color .2s;display:grid;position:absolute;bottom:0;right:0}.project-entry:hover .image-arrow{background:var(--blue);color:#fff}.project-meta{color:var(--muted);font-size:.74rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.055em;justify-content:space-between;gap:.65rem;margin-top:.9rem;display:flex}.project-entry h3{letter-spacing:-.073em;overflow-wrap:anywhere;margin:.35rem 0 .32rem;font-size:clamp(1.95rem,3.1vw,3.2rem);line-height:1.1}.project-entry p{max-width:51ch;color:var(--muted);font-size:.99rem}.home-notes{margin-top:4rem}@media (width>=691px) and (width<=890px){.home-intro h1{font-size:10vw}}.page-body{padding-top:clamp(2.4rem,6vw,5.75rem)}.page-title{margin:0 0 2.25rem}.page-title h1{letter-spacing:-.091em;overflow-wrap:anywhere;font-size:clamp(3.4rem,8vw,7rem);line-height:.93}.page-title p{color:var(--muted);margin-top:1rem;font-size:1.05rem}.filters{grid-template-columns:minmax(150px,1.6fr) repeat(4,minmax(110px,1fr)) auto;align-items:end;gap:.7rem;margin-bottom:1.8rem;display:grid}.filters label,.editor label,.backup-form label{gap:.3rem;font-size:.89rem;font-weight:650;display:grid}input:not([type=checkbox]),select,textarea{width:100%;color:var(--ink);background:#fffdf5;border:1px solid #a3a294;min-height:2.75rem;padding:.55rem .65rem}input[type=checkbox]{accent-color:var(--blue);vertical-align:middle;width:1.1rem;height:1.1rem;margin:0}.button{border:1px solid var(--blue);background:var(--blue);color:#fff;text-align:center;justify-content:center;align-items:center;min-height:2.75rem;padding:.52rem .95rem;font-weight:700;line-height:1.25;display:inline-flex}.button:hover{color:#fff;background:#1427b0}.button.secondary{color:var(--blue);background:0 0}.button.secondary:hover{background:#e8e9ff}.muted,.empty{color:var(--muted)}.empty{border-top:1px solid var(--line);padding:1.35rem 0}.note-list{border-bottom:1px solid var(--line);padding:0;list-style:none}.note-list a{border-top:1px solid var(--line);grid-template-columns:8.4rem minmax(0,1fr) auto;align-items:baseline;gap:1rem;padding:1.1rem 0;display:grid}.note-list time,.prose time{color:var(--muted);font:.8rem var(--mono)}.note-list strong{font-size:1.2rem}.note-list p{color:var(--muted)}.back{color:var(--blue);margin-bottom:1.5rem;font-weight:650;display:inline-flex}.prose{overflow-wrap:anywhere;max-width:69ch}.prose h1{letter-spacing:-.075em;margin:.45rem 0 1.15rem;font-size:clamp(2.5rem,6vw,5rem);line-height:1.02}.prose h2,.prose h3{margin:1.4em 0 .5em}.prose p,.prose blockquote,.prose pre,.prose li{margin-bottom:.8rem}.prose a{text-underline-offset:.18em;text-decoration:underline}.prose pre{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid;padding:1rem}.prose .lede{font-size:1.3rem}@media (width<=1000px){.shell{width:calc(100% - 4rem)}.home-intro{grid-template-columns:minmax(0,1fr) minmax(170px,215px);gap:1rem}.filters{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=690px){.shell{width:calc(100% - 2rem)}.site-head{gap:.65rem;min-height:62px}.site-head nav{gap:1rem}.site-head nav a{font-size:.86rem}.site-head .nav-github{display:none}.mobile-github{display:inline}.home-intro{padding:3.9rem 0 3rem;display:block}.home-intro h1{letter-spacing:-.095em;font-size:clamp(3.4rem,14vw,6rem)}.intro-copy{max-width:36ch;margin-top:1.5rem}.project-grid{grid-template-columns:1fr;row-gap:2rem}.project-entry h3{font-size:2.15rem}.site-foot{align-items:start;gap:1rem;margin-top:3.5rem}.site-foot nav{gap:.6rem 1rem}.filters{grid-template-columns:repeat(2,minmax(0,1fr))}.search-field{grid-column:1/-1}.note-list a{grid-template-columns:minmax(0,1fr) auto;gap:.35rem .85rem}.note-list time{grid-column:1/-1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
