@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-vietnamese-400-normal.DdKr49mV.woff2)format("woff2"),url(/_astro/newsreader-vietnamese-400-normal.BekUZro8.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-ext-400-normal.svq1FPys.woff2)format("woff2"),url(/_astro/newsreader-latin-ext-400-normal.DYA1XoQK.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-400-normal.BFBkh4jY.woff2)format("woff2"),url(/_astro/newsreader-latin-400-normal.gRTjlS2D.woff)format("woff");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}@font-face{font-family:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-vietnamese-400-italic.bZegYFuM.woff2)format("woff2"),url(/_astro/newsreader-vietnamese-400-italic.QbB8kb5s.woff)format("woff");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:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-ext-400-italic.BMTE_bNQ.woff2)format("woff2"),url(/_astro/newsreader-latin-ext-400-italic.qdgKLcPG.woff)format("woff");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:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-400-italic.CEihAR-f.woff2)format("woff2"),url(/_astro/newsreader-latin-400-italic.CNZoH1hn.woff)format("woff");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{color-scheme:light dark;--bg:#fff;--fg:#171717;--muted:#5f5f5c;--faint:#747470;--border:#e7e5e0;--surface:#f7f6f3;--hair:#00000014;--prose-link:#44403c;--serif:"Newsreader", Georgia, "Times New Roman", serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--measure:42rem;--wide:58rem;--gutter:1.5rem;--ease:cubic-bezier(.2, 0, 0, 1)}@media (prefers-color-scheme:dark){:root{--bg:#0c0a09;--fg:#fafaf9;--muted:#a8a29e;--faint:#817a75;--border:#292524;--surface:#1c1917;--hair:#ffffff1a;--prose-link:#d6d3d1}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;min-height:100vh;font-size:1rem;line-height:1.6;display:flex}a{color:inherit;text-decoration:none}::selection{background:var(--fg);color:var(--bg)}.stat-value,.work-company,.metric-value,.post-title,.home-title,.section-title{font-family:var(--serif);letter-spacing:-.015em;font-weight:400;line-height:1.06}.work-section h3,.link-label,.timeline-date,.timeline-section h3,.post-meta-header,.blog-card-header,.blog-count,.home-section-header h2,.home-section-header span,.home-section-header a,.page-kicker,.blog-label{font-family:var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--faint);font-size:.72rem}.header{width:100%;max-width:var(--wide);padding:2rem var(--gutter);justify-content:space-between;align-items:baseline;gap:1rem;margin:0 auto;display:flex}.logo{font-family:var(--serif);letter-spacing:-.01em;color:var(--fg);font-size:1.35rem;font-weight:400}.menu{align-items:baseline;gap:1.4rem;font-size:.9rem;display:flex}.menu-separator{display:none}.menu-item{color:var(--muted);transition:color .15s var(--ease)}.menu-item:hover,.menu-item.active{color:var(--fg)}.footer{width:100%;max-width:var(--wide);padding:2rem var(--gutter);border-top:1px solid var(--border);color:var(--faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:6rem auto 0;font-size:.85rem;display:flex}.footer-nav{gap:1.4rem;display:flex}.footer-nav a{color:var(--muted);transition:color .15s var(--ease)}.footer-nav a:hover,.footer-nav a.active{color:var(--fg)}.info-wrapper{flex:1;width:100%}.content-section{width:100%;padding:3rem var(--gutter) 2rem}.section-inner{max-width:var(--measure);margin:0 auto}.page-kicker,.blog-label{margin-bottom:1.25rem;display:block}.section-title{margin-bottom:1.5rem;font-size:clamp(2.75rem,5.5vw,3.5rem)}.section-content{color:var(--muted);font-size:1.0625rem}.section-content p{text-wrap:pretty;margin-bottom:1.25rem}.section-content strong{color:var(--fg);font-weight:600}.lede{color:var(--fg);text-wrap:pretty;font-size:1.25rem;line-height:1.55;margin-bottom:1.75rem!important}.home-inner{max-width:var(--wide)}.home-hero{max-width:var(--measure);padding:1rem 0 1.5rem}.home-title{text-wrap:balance;max-width:12ch;margin-bottom:1.75rem;font-size:clamp(3rem,7vw,4.75rem)}.home-intro{max-width:38rem;color:var(--muted);text-wrap:pretty;margin-bottom:1.75rem;font-size:1.125rem;line-height:1.65}.home-primary-links{flex-wrap:wrap;gap:1rem 1.75rem;font-size:.95rem;display:flex}.home-primary-links a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:4px;transition:text-decoration-color .15s var(--ease)}.home-primary-links a:hover{text-decoration-color:var(--fg)}.home-section{margin-top:4.5rem}.project-deck-section{margin-top:5rem}.project-deck-intro{color:var(--muted);text-wrap:pretty;margin:-.25rem 0 0;font-size:.95rem;line-height:1.55}.project-deck{isolation:isolate;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;min-height:25rem;padding:2.5rem 1.75rem 3.5rem;display:grid}.project-card{--card-rotation:0deg;--card-offset:0rem;--card-ink:#3a3428;aspect-ratio:.72;min-width:0;color:var(--card-ink);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");border-radius:.8rem;outline:1px solid #0000001f;flex-direction:column;justify-content:space-between;padding:1rem;display:flex;position:relative;box-shadow:0 1px 1px #00000012,0 10px 22px #0000001f}.project-card:after{content:var(--card-serial,"Nº 00");z-index:2;letter-spacing:.14em;opacity:.55;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.58rem;position:absolute;top:.85rem;left:.95rem}.project-card{transform:perspective(1100px) translate(var(--nx,0px), var(--ny,0px)) translateY(var(--card-offset)) rotate(var(--card-rotation)) rotateY(var(--ry,0deg)) scale(var(--s,1));transform-origin:50% 85%;transition-property:box-shadow,z-index;transition-duration:.32s,0s;transition-delay:0s,.42s;transition-timing-function:var(--ease)}.project-card+.project-card{margin-left:-1.25rem}.project-card:hover,.project-card:focus-visible{z-index:6;transition-delay:0s;box-shadow:0 1px 1px #00000012,0 16px 32px #00000029}.project-card:focus-visible{outline:2px solid var(--fg);outline-offset:4px}.project-deck.is-enhanced .project-card{will-change:transform}.project-deck:not(.is-enhanced) .project-card{transition-property:transform,box-shadow,z-index;transition-duration:.26s,.26s,0s;transition-delay:0s,0s,.26s}.project-deck:not(.is-enhanced) .project-card:hover,.project-deck:not(.is-enhanced) .project-card:focus-visible{--s:1.035}.project-deck:not(.is-enhanced) .project-card:active{--s:.97}.project-card .project-artwork--card{border-radius:.8rem .8rem 0 0;width:calc(100% + 2rem);margin:-1rem -1rem 0;overflow:hidden}.project-card .project-artwork--card svg [class^=anim-],.project-card .project-artwork--card svg [class*=\ anim-]{transform-box:fill-box;transform-origin:50%}.project-card--stone{--card-rotation:-7deg;--card-offset:1rem;--card-surface:#f0e1c1;--card-serial:"Nº 01";--art-depth-opacity:.12;z-index:1;background-color:#f0e1c1}.project-card--turntable{--card-rotation:4deg;--card-offset:2.15rem;--card-surface:#ead9b5;--card-serial:"Nº 02";--art-depth-opacity:.12;z-index:2;background-color:#ead9b5}.project-card--birdbrain{--card-rotation:-2deg;--card-offset:-.4rem;--card-surface:#e4d7c7;--card-serial:"Nº 03";--art-depth-opacity:.12;z-index:3;background-color:#e4d7c7}.project-card--fitroom{--card-rotation:-2deg;--card-offset:-.4rem;--card-surface:#ead8cf;--card-serial:"Nº 06";--art-depth-opacity:.12;z-index:3;background-color:#ead8cf}.project-card--tabbit{--card-rotation:3deg;--card-offset:2rem;--card-surface:#dfe3c3;--card-serial:"Nº 04";--art-depth-opacity:.12;z-index:4;background-color:#dfe3c3}.project-card--garatch{--card-rotation:7deg;--card-offset:.6rem;--card-surface:#e5d5bc;--card-serial:"Nº 05";--art-depth-opacity:.12;z-index:5;background-color:#e5d5bc}.project-card--strid{--card-surface:#d6dfbd;--card-serial:"Nº 07";--art-depth-opacity:.12;background-color:#d6dfbd}.project-card--kaze{--card-surface:#e3d2c4;--card-serial:"Nº 08";--art-depth-opacity:.12;background-color:#e3d2c4}.project-card--reelserver{--card-surface:#ead0bc;--card-serial:"Nº 09";--art-depth-opacity:.12;background-color:#ead0bc}.project-card--irem{--card-surface:#d8ded0;--card-serial:"Nº 10";--art-depth-opacity:.12;background-color:#d8ded0}.project-card--paperfolio{--card-surface:#ead4b0;--card-serial:"Nº 12";--art-depth-opacity:.12;background-color:#ead4b0}.project-artwork{color:currentColor;align-items:center;width:calc(100% + 1rem);min-height:54%;margin:-.5rem;display:flex;position:relative}.project-artwork svg{shape-rendering:geometricprecision;width:100%;height:auto;display:block;overflow:visible}.project-artwork svg rect,.project-artwork svg circle,.project-artwork svg ellipse,.project-artwork svg path,.project-artwork svg polygon,.project-artwork svg line,.project-artwork svg polyline{fill:none;stroke:currentColor;stroke-width:.8px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.project-artwork svg text{fill:currentColor;stroke:none}.project-artwork--card svg rect,.project-artwork--card svg circle,.project-artwork--card svg ellipse,.project-artwork--card svg path,.project-artwork--card svg polygon,.project-artwork--card svg line,.project-artwork--card svg polyline{stroke-width:.7px;stroke-opacity:.58}.project-artwork--card svg text{display:none}.project-artwork--card svg .artwork-card-essential{display:block}.project-artwork--card svg .artwork-hero{stroke-width:1.05px;stroke-opacity:.95}.project-artwork--card svg .artwork-structure{stroke-width:.78px;stroke-opacity:.72}.project-artwork--card svg .artwork-support{stroke-width:.6px;stroke-opacity:.3}.project-artwork--card svg .artwork-plane,.project-artwork--card svg .artwork-shadow-plane{fill:currentColor;stroke:none}.project-artwork--card svg .artwork-plane{fill-opacity:.045}.project-artwork--card svg .artwork-shadow-plane{fill-opacity:.085}.project-artwork--card svg .artwork-surface{fill:var(--card-surface);fill-opacity:1}.project-artwork--card svg .artwork-soft-surface{fill:currentColor;fill-opacity:.045}.project-artwork--card svg .artwork-hatch path{fill:none;stroke-width:.55px;stroke-opacity:var(--art-depth-opacity,.2)}.project-artwork--card .artwork-detail,.project-artwork--blueprint .artwork-card-only,.project-artwork--blueprint .artwork-plane,.project-artwork--blueprint .artwork-shadow-plane{display:none}.project-artwork--blueprint svg rect,.project-artwork--blueprint svg circle,.project-artwork--blueprint svg ellipse,.project-artwork--blueprint svg path,.project-artwork--blueprint svg polygon,.project-artwork--blueprint svg line,.project-artwork--blueprint svg polyline{stroke-width:.68px;stroke-opacity:.44}.project-artwork--blueprint svg text{fill-opacity:.6}.project-artwork--blueprint svg .artwork-hero{stroke-width:1.1px;stroke-opacity:.92}.project-artwork--blueprint svg .artwork-structure{stroke-width:.78px;stroke-opacity:.62}.project-artwork--blueprint svg .artwork-support{display:none}.project-artwork--blueprint svg .artwork-soft-surface{fill:currentColor;fill-opacity:.07}.project-artwork--blueprint svg .artwork-hatch path{fill:none;stroke-width:.55px;stroke-opacity:.17}.page-software .section-inner{max-width:var(--wide)}.page-software .section-title{margin-bottom:1.25rem}.software-header{max-width:var(--measure);margin-inline:auto}.software-intro{max-width:38rem;color:var(--muted);text-wrap:pretty;font-size:1.05rem;line-height:1.65}.software-grid{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1.75rem;margin-top:3rem;display:grid}.software-card{aspect-ratio:.74;min-width:0;color:var(--card-ink,#3a3428);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");border-radius:.8rem;outline:1px solid #0000001a;flex-direction:column;justify-content:space-between;padding:1rem;display:flex;position:relative}.software-card:after{content:var(--card-serial,"Nº 00");z-index:2;letter-spacing:.14em;opacity:.55;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.58rem;position:absolute;top:.85rem;left:.95rem}.software-card{transition-property:box-shadow;transition-duration:.2s;transition-timing-function:var(--ease);box-shadow:0 1px 2px #0000000f,0 10px 24px #00000014}.software-card:hover,.software-card:focus-visible{box-shadow:0 1px 2px #0000000f,0 16px 36px #00000026}.software-card:focus-visible{outline:2px solid var(--fg);outline-offset:4px}.software-card .project-artwork--card{border-radius:.8rem .8rem 0 0;width:calc(100% + 2rem);margin:-1rem -1rem 0;overflow:hidden}.software-card .project-artwork--card svg [class^=anim-],.software-card .project-artwork--card svg [class*=\ anim-]{transform-box:fill-box;transform-origin:50%}.software-card:hover .project-card-arrow,.software-card:focus-visible .project-card-arrow{opacity:.72;transform:translate(0)}.project-card-blurb{opacity:.78;text-wrap:pretty;font-size:.82rem;line-height:1.5;display:block}.project-card-copy{color:var(--card-label-ink,currentColor);gap:.55rem;display:grid}.project-card-copy strong{font-family:var(--serif);letter-spacing:-.02em;text-wrap:balance;font-size:clamp(1.45rem,2.2vw,1.95rem);font-weight:400;line-height:1}.project-card-heading{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.project-card-date{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;flex:none;font-size:.62rem;line-height:1}.project-card-arrow{color:var(--card-label-ink,currentColor);opacity:0;transition-property:opacity,transform;transition-duration:.16s;transition-timing-function:var(--ease);font-size:.8rem;position:absolute;top:.8rem;right:.85rem;transform:translate(-.2rem,.2rem)}.project-card:hover .project-card-arrow,.project-card:focus-visible .project-card-arrow{opacity:.72;transform:translate(0)}.home-section-header{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem;display:flex}.home-section-header a{color:var(--muted);transition:color .15s var(--ease);text-decoration:none}.home-section-header a:hover{color:var(--fg)}.home-list{border-top:1px solid var(--border)}.home-list-item{border-bottom:1px solid var(--border);grid-template-columns:minmax(8rem,.7fr) minmax(16rem,2fr) auto;align-items:baseline;gap:1rem 2rem;padding:1.4rem 0;display:grid}.home-list-item:hover .home-list-title{text-decoration-color:currentColor}.home-list-title{color:var(--fg);text-underline-offset:4px;transition:text-decoration-color .15s var(--ease);font-size:1rem;font-weight:600;text-decoration:underline #0000}.home-list-description{color:var(--muted);text-wrap:pretty;line-height:1.55}.home-list-meta{color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8rem}.home-terminal-link{color:var(--faint);margin-top:3rem;font-size:.9rem}.home-terminal-link a{color:var(--muted);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px}.blog-header-top{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.blog-label{margin-bottom:0}.blog-count{align-items:center;gap:.5rem;display:inline-flex}.count-indicator{background:var(--fg);opacity:.6;border-radius:50%;width:6px;height:6px}.blog-description{color:var(--muted);text-wrap:pretty;margin-bottom:3rem;font-size:1.15rem}.blog-grid{flex-direction:column;display:flex}.blog-card{border-top:1px solid var(--border)}.blog-card:last-child{border-bottom:1px solid var(--border)}.blog-card-link{transition:opacity .15s var(--ease);padding:1.75rem 0;display:block}.blog-card-link:hover .blog-title{text-underline-offset:4px;text-decoration:underline 1px}.blog-card-link:hover .blog-card-cta{color:var(--fg)}.blog-card-header{gap:1rem;margin-bottom:.75rem;display:flex}.blog-date{font-variant-numeric:tabular-nums}.blog-tag{color:var(--faint)}.blog-title{font-family:var(--sans);letter-spacing:-.015em;text-wrap:balance;margin-bottom:.5rem;font-size:1.125rem;font-weight:600;line-height:1.25}.blog-excerpt{color:var(--muted);text-wrap:pretty;margin-bottom:1rem;font-size:1.0625rem}.blog-card-footer{color:var(--faint);justify-content:space-between;align-items:center;gap:1rem;font-size:.85rem;display:flex}.blog-meta{align-items:center;gap:.5rem;display:flex}.meta-separator{opacity:.5}.blog-card-cta{color:var(--muted);transition:color .15s var(--ease)}.blog-footer{color:var(--faint);margin-top:2rem;font-size:.9rem}.blog-post .section-inner,.work-detail .section-inner{max-width:var(--measure)}.post-back,.work-back{margin-bottom:2.5rem;font-size:.9rem}.post-back a,.work-back a{color:var(--muted);transition:color .15s var(--ease)}.post-back a:hover,.work-back a:hover{color:var(--fg)}.post-meta-header{gap:1rem;margin-bottom:1rem;display:flex}.post-date{font-variant-numeric:tabular-nums}.post-title{text-wrap:balance;margin-bottom:1.5rem;font-size:clamp(2.25rem,5.5vw,3.25rem)}.post-info{color:var(--faint);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:2.5rem;padding-bottom:2rem;font-size:.9rem;display:flex}.post-content{color:var(--muted);font-size:1.0625rem;line-height:1.75}.post-content h2,.post-content h3,.post-content h4{font-family:var(--sans);letter-spacing:-.015em;color:var(--fg);text-wrap:balance;margin:2.5rem 0 1rem;font-weight:600;line-height:1.25}.post-content h2{font-size:1.125rem}.post-content h3{font-size:1rem}.post-content h4{font-size:.9375rem}.post-content p{text-wrap:pretty;margin-bottom:1.4rem}.post-content a{color:var(--prose-link);text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--border);transition:text-decoration-color .15s var(--ease)}.post-content a:hover{text-decoration-color:var(--fg)}.post-content strong{color:var(--fg);font-weight:600}.post-content ul,.post-content ol{margin:0 0 1.4rem 1.25rem}.post-content ul li,.post-content ol li{margin-bottom:.5rem}.post-content blockquote{border-left:2px solid var(--border);color:var(--muted);margin:1.75rem 0;padding-left:1.25rem;font-style:italic}.post-content code{font-family:var(--mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.1em .35em;font-size:.9em}.post-content pre{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin:1.75rem 0;padding:1.25rem;font-size:.9rem;line-height:1.6;overflow-x:auto}.post-content pre code{background:0 0;border:0;padding:0}.post-content .code-block{--astro-code-foreground:#d7d7d4;--astro-code-background:transparent;--astro-code-token-constant:#c4c6c3;--astro-code-token-string:#b7bbb7;--astro-code-token-comment:#747976;--astro-code-token-keyword:#ececea;--astro-code-token-parameter:#d0d1ce;--astro-code-token-function:#dcddd9;--astro-code-token-string-expression:#b7bbb7;--astro-code-token-punctuation:#9fa39f;--astro-code-token-link:#c4c6c3;background:#181919;border-radius:10px;margin:1.75rem 0 2rem;overflow:hidden;box-shadow:0 0 0 1px #ffffff14,0 1px 2px #0000002e,0 8px 24px #0000001f}.post-content .code-block .code-header{background:#0000001f;align-items:center;min-height:2.5rem;padding:0 1.25rem;display:flex;box-shadow:inset 0 -1px #ffffff12}.post-content .code-block .code-lang{color:#ffffff75;font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;font-size:.6875rem;font-weight:600;line-height:1}.post-content .code-block pre{tab-size:2;border:0;border-radius:0;margin:0;padding:1.25rem;font-size:clamp(.78rem,2vw,.875rem);line-height:1.65;background:0 0!important}.post-content img{border:1px solid var(--hair);border-radius:10px;max-width:100%;height:auto;margin:1.75rem 0}.post-content hr{border:0;border-top:1px solid var(--border);margin:2.5rem 0}.post-footer-nav{border-top:1px solid var(--border);margin-top:3.5rem;padding-top:1.5rem}.nav-link{color:var(--muted);transition:color .15s var(--ease);font-size:.9rem}.nav-link:hover{color:var(--fg)}.section-rule{background:var(--border);border:0;width:44px;height:1px;margin:3.5rem auto}.testimonials{flex-direction:column;align-items:center;display:flex}.testimonial{text-align:center;max-width:34rem}.testimonial+.testimonial{margin-top:3.5rem}.testimonial-quote{font-family:var(--serif);letter-spacing:-.01em;color:var(--fg);text-wrap:balance;margin-bottom:1.5rem;font-size:1.7rem;font-weight:400;line-height:1.4}.testimonial-cite{text-align:left;align-items:center;gap:.85rem;display:inline-flex}.testimonial-avatar{background:var(--surface);border:1px solid var(--border);letter-spacing:.02em;width:40px;height:40px;color:var(--muted);border-radius:50%;flex-shrink:0;place-items:center;font-size:.8rem;font-weight:600;display:grid}.testimonial-name{color:var(--fg);font-size:.95rem;font-weight:600;display:block}.testimonial-role{color:var(--faint);font-size:.85rem;display:block}.about-metrics{border-top:1px solid var(--border);border-bottom:1px solid var(--border);grid-template-columns:repeat(3,1fr);gap:1.5rem;margin:3rem 0;padding:2rem 0;display:grid}.metric-value{color:var(--fg);margin-bottom:.4rem;font-size:2.25rem;display:block}.metric-label{color:var(--faint);font-size:.85rem;line-height:1.4;display:block}.timeline-section{margin-top:3.5rem}.timeline-section h3{margin-bottom:1.5rem}.timeline{flex-direction:column;display:flex}.timeline-item{border-top:1px solid var(--border);padding:1.5rem 0}.timeline-item:last-child{border-bottom:1px solid var(--border)}.timeline-marker{display:none}.timeline-header{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.35rem;display:flex}.timeline-header h4{font-family:var(--serif);font-size:1.4rem;font-weight:400}.timeline-header h4 a{transition:text-decoration-color .15s var(--ease);text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--border)}.timeline-header h4 a:hover{text-decoration-color:var(--fg)}.timeline-date{white-space:nowrap;flex-shrink:0}.timeline-role{color:var(--fg);margin-bottom:.2rem;font-size:.95rem}.timeline-location{color:var(--faint);font-size:.9rem}.contact-links{flex-direction:column;margin-top:2.5rem;display:flex}.contact-link{border-top:1px solid var(--border);transition:opacity .15s var(--ease);align-items:center;gap:1.25rem;padding:1.35rem 0;display:flex}.contact-link:last-child{border-bottom:1px solid var(--border)}.contact-link:hover .link-arrow{color:var(--fg);transform:translate(4px)}.contact-link:hover .link-value{color:var(--fg)}.link-icon{font-family:var(--mono);letter-spacing:.05em;color:var(--faint);flex-shrink:0;width:2rem;font-size:.75rem}.link-copy{flex-direction:column;gap:.15rem;display:flex}.link-value{color:var(--muted);transition:color .15s var(--ease)}.link-arrow{font-family:var(--mono);color:var(--faint);transition:transform .15s var(--ease), color .15s var(--ease);margin-left:auto}.work-company{margin-bottom:1rem;font-size:clamp(2.25rem,5.5vw,3.25rem)}.work-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;font-size:.95rem;display:flex}.work-separator{color:var(--faint)}.work-header{border-bottom:1px solid var(--border);margin-bottom:2.5rem;padding-bottom:2rem}.work-detail--personal .section-inner{max-width:var(--wide)}.work-detail--personal .work-header>:not(.project-blueprint),.work-detail--personal .work-content{max-width:var(--measure);margin-inline:auto}.work-detail--personal .work-link{display:block}.project-blueprint{--plate-accent:#80745d;color:#eee9df;background:#151412;border-radius:.8rem;margin-top:2.75rem;padding:1rem 1.1rem .9rem;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff14,0 1px 2px #0000002e,0 12px 32px #00000024}.project-blueprint .project-artwork{z-index:1;width:min(100%,45rem);min-height:0;color:inherit;margin:.75rem auto .25rem;position:relative}.project-blueprint figcaption{z-index:1;color:#eee9df94;text-align:left;text-wrap:pretty;border-top:1px solid #ffffff14;max-width:none;margin:.65rem 0 0;padding-top:.75rem;font-size:.75rem;line-height:1.5;position:relative}.project-blueprint--stone{--plate-accent:#d95b2b}.project-blueprint--turntable{--plate-accent:#80745d}.project-blueprint--birdbrain{--plate-accent:#4a95ce}.project-blueprint--tabbit{--plate-accent:#4eae69}.project-blueprint--garatch{--plate-accent:#55534f}.project-blueprint-labels{z-index:1;color:#eee9df8c;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:1rem;font-size:.62rem;display:flex;position:relative}.project-blueprint-labels span:first-child{align-items:center;gap:.55rem;display:inline-flex}.project-blueprint-labels span:first-child:before{content:"";background:var(--plate-accent);border-radius:50%;flex:none;width:.38rem;height:.38rem}.project-screenshot{margin:0 0 2.75rem}.project-screenshot img{outline-offset:-1px;border-radius:.8rem;outline:1px solid #0000001a;width:100%;height:auto;display:block;box-shadow:0 1px 2px #00000014,0 16px 40px #0000001a}.project-screenshot figcaption{max-width:var(--measure);color:var(--faint);text-wrap:pretty;margin:.75rem auto 0;font-size:.75rem;line-height:1.5}.project-screenshot--tabbit{background:#121212;border-radius:.8rem;padding:2rem;box-shadow:inset 0 0 0 1px #ffffff14,0 1px 2px #00000014,0 16px 40px #0000001a}.project-screenshot--tabbit img{border-radius:.65rem;outline-color:#ffffff1a;width:min(100%,22.5rem);margin-inline:auto;box-shadow:0 18px 48px #0000004d}.project-screenshot--tabbit figcaption{color:#ffffff80}.work-link{color:var(--muted);text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--border);transition:color .15s var(--ease);font-size:.9rem;display:inline-block}.work-link:hover{color:var(--fg)}.work-content{color:var(--fg);font-size:1.0625rem}.work-section{margin-bottom:2.75rem}.work-section h3{margin-bottom:1rem}.work-section p{color:var(--muted);text-wrap:pretty;margin-bottom:1.25rem}.achievement-list{list-style:none}.achievement-list li{color:var(--muted);text-wrap:pretty;margin-bottom:.8rem;padding-left:1.35rem;position:relative}.achievement-list li:before{content:"";background:var(--faint);border-radius:50%;width:5px;height:5px;position:absolute;top:.65em;left:0}.achievement-list li strong{color:var(--fg);font-weight:600}.tech-grid{flex-wrap:wrap;gap:.5rem;display:flex}.tech-tag{font-family:var(--mono);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:.35rem .75rem;font-size:.8rem}.impact-stats{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:1.5rem;display:grid}.stat-value{color:var(--fg);margin-bottom:.3rem;font-size:2rem}.stat-label{color:var(--faint);font-size:.85rem;line-height:1.4}@media (width<=640px){.header{flex-direction:column;align-items:flex-start;gap:.375rem;padding-block:1.5rem 1rem}.menu{flex-wrap:nowrap;justify-content:flex-start;gap:clamp(.75rem,4vw,1rem);width:100%;font-size:.85rem}.menu-item{align-items:center;min-height:2.5rem;display:inline-flex}.content-section{padding:1.5rem var(--gutter) 1rem}.home-title{font-size:clamp(2.75rem,13vw,3.5rem)}.home-section{margin-top:3.5rem}.project-deck-section{margin-top:4rem}.project-deck{height:27rem;margin-inline:calc(var(--gutter) * -1);padding:0;display:block;position:relative;overflow:visible}.project-card{width:min(15.5rem,74vw);transform:translate(-50%, -50%) translate(var(--tx,0px), var(--ty,0px)) rotate(var(--rot,0deg)) scale(var(--sc,1));touch-action:pan-y;user-select:none;-webkit-user-drag:none;transition:box-shadow .15s cubic-bezier(.23,1,.32,1);position:absolute;top:50%;left:50%}.project-card+.project-card{margin-left:0}.project-card.is-lifted{box-shadow:0 2px 3px #0000001a,0 18px 36px #00000038,0 30px 64px #0000001f}.project-card .project-card-blurb{opacity:0;transition:opacity .18s cubic-bezier(.23,1,.32,1)}.project-card.is-top .project-card-blurb{opacity:.78}.project-card:hover,.project-card:focus-visible,.project-card:active{transform:translate(-50%, -50%) translate(var(--tx,0px), var(--ty,0px)) rotate(var(--rot,0deg)) scale(var(--sc,1));transition-delay:0s}.home-list-item{grid-template-columns:1fr;gap:.45rem}.home-list-meta{white-space:normal}.project-blueprint{border-radius:.65rem;margin-top:2rem;padding:.85rem .8rem .75rem}.project-blueprint .project-artwork{width:110%;margin:.55rem 0 .15rem -5%}.project-blueprint figcaption{margin-top:.5rem;padding-top:.6rem;font-size:.68rem}.project-screenshot{margin-bottom:2rem}.project-screenshot img{border-radius:.65rem}.project-screenshot--tabbit{padding:1rem}.project-screenshot--tabbit img{border-radius:.5rem}.about-metrics{text-align:left;grid-template-columns:1fr;gap:1.25rem}.timeline-header{flex-direction:column;gap:.25rem}.blog-card-footer{flex-direction:column;align-items:flex-start;gap:.5rem}.footer{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto}.project-card,.project-card-arrow{transition-duration:.01ms}}
