@font-face{font-family:'JetBrains Mono';src:url('assets/JetBrainsMono-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Instrument Serif';src:url('assets/InstrumentSerif-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('assets/Inter-Variable.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:swap}
:root{--paper:#f3f2ed;--ink:#242522;--muted:#777970;--line:#d7d8cf;--accent:#304fe5;--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Consolas,monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px;scrollbar-width:thin;scrollbar-color:#a3a69a var(--paper)}
@supports not (scrollbar-width:thin){html::-webkit-scrollbar{width:8px;height:8px}html::-webkit-scrollbar-track{background:var(--paper)}html::-webkit-scrollbar-thumb{background:#a3a69a;border:2px solid var(--paper);border-radius:8px}html::-webkit-scrollbar-thumb:hover{background:#777970}}
@media(forced-colors:active){html{scrollbar-color:auto}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:white}.wrap{width:min(1280px,calc(100% - 112px));margin-inline:auto}.skip-link{position:fixed;top:-100px;left:20px;padding:14px;background:var(--ink);color:white;z-index:10}.skip-link:focus{top:20px}.site-header{display:flex;align-items:center;gap:48px;padding-block:30px;border-bottom:1px solid var(--line)}.wordmark{font-size:42px;font-weight:800;letter-spacing:-5px;line-height:1}.wordmark span{font-size:11px;letter-spacing:0;vertical-align:top;display:inline-block;margin:5px 0 0 7px}.header-note{font-size:11px;line-height:1.5;color:var(--muted)}nav{display:flex;gap:34px;margin-left:auto;font-size:13px}nav a:is(:hover,:focus-visible),.footer a:is(:hover,:focus-visible),.text-link:is(:hover,:focus-visible),.profile-links a:is(:hover,:focus-visible){color:var(--ink);text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.hero{padding-top:64px}.eyebrow,.small-label{font:10px/1.5 var(--mono);letter-spacing:1.5px}.eyebrow{margin:0 0 26px}.dot{display:inline-block;width:7px;height:7px;background:var(--accent);border-radius:50%;margin-right:9px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(58px,7.8vw,112px);font-weight:500;letter-spacing:-.065em;line-height:1.03;margin-bottom:50px}.muted{color:var(--muted)}.hero-bottom{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}.small-label{color:var(--muted)}.identity p{font-size:21px;margin:14px 0 0;letter-spacing:-.5px}.identity p span{display:block;font-size:12px;letter-spacing:0;color:var(--muted);margin-top:8px}.hero-intro{max-width:470px}.hero-intro p{font-size:17px;line-height:1.65;margin-bottom:22px}.text-link{display:inline-flex;gap:38px;font-size:13px;padding-bottom:8px}.hero-footer{display:flex;justify-content:space-between;margin-top:68px;padding:19px 0;border-block:1px solid var(--line);font:9px/1.5 var(--mono);letter-spacing:1.4px;color:var(--muted)}.hero-footer span span{margin-left:18px}.section{--section-padding:104px;padding-block:var(--section-padding)}.work{scroll-margin-top:calc(-1 * var(--section-padding) - 5px)}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:48px}h2{font-size:clamp(40px,4.5vw,65px);font-weight:500;letter-spacing:-.055em;line-height:1.08;margin-bottom:0}.section-description{font-size:13px;line-height:1.7;color:var(--muted);margin-bottom:4px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px 28px}.project-art{height:340px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.art-label,.art-bottom{position:absolute;left:25px;font:9px/1.5 var(--mono);letter-spacing:1px}.art-label{top:24px}.art-bottom{bottom:24px;font-size:8px}.art-link{position:absolute;bottom:19px;right:22px;font-size:23px;transition:transform .25s}.project-art:is(:hover,:focus-visible) .art-link{transform:translate(3px,-3px)}.art-merge{background:#e1e4db}.merge-diagram{display:grid;grid-template-columns:80px 20px 80px 20px 80px;justify-items:center;align-items:center}.cat{width:80px;height:85px;background:url('assets/cats.png') 0 0 / 400px auto no-repeat;image-rendering:pixelated;transition:transform .5s ease}.cat-result{background-position:-80px 0;transform:translateY(-8px)}.merge-plus,.merge-arrow{color:#727a69;font-size:20px}.merge-caption{grid-column:1 / -1;font:8px var(--mono);letter-spacing:1px;margin-top:22px;color:#58634e}.project-art:is(:hover,:focus-visible) .cat-first{transform:translateX(8px)}.project-art:is(:hover,:focus-visible) .cat-second{transform:translateX(-8px)}.project-art:is(:hover,:focus-visible) .cat-result{transform:translateY(-14px) scale(1.08)}.art-market{background:#e3e1ed}.market-diagram{display:flex;gap:10px;transform:rotate(-5deg);transition:transform .5s}.project-art:is(:hover,:focus-visible) .market-diagram{transform:rotate(0)}.collectible{width:100px;height:140px;background:#f4f2f7;border:1px solid #c9c6d6;padding:12px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;box-shadow:0 8px 15px #38334408;position:relative;transition:transform .5s,opacity .5s,box-shadow .5s}.collectible-match{transform:translateY(-15px);border-color:#756497;box-shadow:0 0 0 2px #75649730}.match-label{position:absolute;top:-24px;left:-1px;white-space:nowrap;font:7px var(--mono);letter-spacing:.5px;color:#574373}.project-art:is(:hover,:focus-visible) .collectible-match{transform:translateY(-23px);box-shadow:0 8px 24px #59447325,0 0 0 2px #756497}.project-art:is(:hover,:focus-visible) .collectible:not(.collectible-match){opacity:.5;transform:translateY(5px)}.collectible>span:last-child{font:7px var(--mono);align-self:start}.shape{display:block;width:65px;height:65px;margin-top:12px;background:#807691}.shape-one{border-radius:50%;background:radial-gradient(circle at 30% 30%,#b6adc8,#564966)}.shape-two{transform:rotate(30deg) scale(.8);background:linear-gradient(120deg,#b6adc8,#564966)}.shape-three{border-radius:50% 50% 5% 5%;background:linear-gradient(130deg,#b6adc8,#564966)}.art-crush{background:#272c2d;color:#ebeee9}.race-diagram{width:75%}.race-caption{display:flex;justify-content:space-between;font:8px var(--mono);color:#a2aaa6;margin-bottom:25px}.track{position:relative;height:53px;border-block:1px dashed #68706c;margin-top:12px;background:repeating-linear-gradient(90deg,transparent 0,transparent 39px,#ffffff04 40px)}.car{position:absolute;top:22px;width:62px;height:19px;border-radius:6px 12px 4px 4px;background:currentColor;box-shadow:inset 0 -5px #0002;transition:transform .6s}.car::after{content:'';position:absolute;right:0;top:5px;width:5px;height:5px;background:#f6e7af;border-radius:1px}.car-cabin{position:absolute;left:12px;top:-12px;width:33px;height:15px;background:#b8d4d8;border:4px solid currentColor;border-bottom:0;border-radius:10px 13px 0 0;transform:skewX(12deg)}.wheel{position:absolute;bottom:-5px;width:12px;height:12px;background:#b1b7b5;border:4px solid #171b1c;border-radius:50%}.wheel-back{left:8px}.wheel-front{right:8px}.car-up{left:55%;color:#6fa17b}.car-down{left:20%;color:#ce6b64}.project-art:is(:hover,:focus-visible) .car-up{transform:translateX(22px)}.project-art:is(:hover,:focus-visible) .car-down{transform:translateX(10px)}.art-dashboard{background:#dddde7}.dashboard-preview{display:block;width:76%;height:auto;max-height:70%;object-fit:contain;transform:perspective(800px) rotateY(-9deg) rotateX(5deg);box-shadow:10px 14px 24px #25233625;transition:transform .6s,box-shadow .6s}.project-art:is(:hover,:focus-visible) .dashboard-preview{transform:perspective(800px) rotateY(0) rotateX(0) scale(1.03);box-shadow:5px 8px 16px #25233620}.project-title{display:flex;justify-content:space-between;align-items:center;margin:21px 0 11px}.project-title h3{font-size:23px;letter-spacing:-.7px;font-weight:500;margin:0}.project-title>span{font:10px var(--mono);color:var(--muted)}.project>p{font-size:14px;line-height:1.65;color:#66695f;max-width:460px;margin-bottom:16px}.tags{display:flex;flex-wrap:wrap;gap:7px}.tags span{font:9px/1.5 var(--mono);border:1px solid var(--line);border-radius:3px;padding:5px 8px}.work-note{font:10px/1.6 var(--mono);color:var(--muted);margin:35px 0 0}.about{scroll-margin-top:40px;background:#e9eae3;border-block:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px}.about-content>p{font-family:'Inter',Arial,sans-serif;font-size:15px;font-weight:400;line-height:1.8;letter-spacing:-.015em;color:#62665c}.about-content .about-lead{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(28px,2.7vw,34px);line-height:1.25;letter-spacing:-.02em;color:var(--ink);margin-bottom:25px}.skill-list{margin:30px 0}.skill-list>div{display:grid;grid-template-columns:115px 1fr;gap:10px;padding:16px 0;border-top:1px solid #ccd0c3;font-size:12px}.skill-list>div:last-child{border-bottom:1px solid #ccd0c3}.skill-list dt{color:#656b5d}.skill-list dd{margin:0}.button{display:inline-flex;gap:30px;justify-content:space-between;padding:15px 20px;border:1px solid #8a8f81;background:transparent;font-size:12px}.button:disabled{color:#71756a;cursor:not-allowed}.contact{padding-top:110px;padding-bottom:85px}.contact h2{font-size:clamp(42px,6.8vw,96px)}.contact-bottom{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-top:45px}.contact-bottom p{font-family:'Inter',Arial,sans-serif;font-size:14px;line-height:1.7;color:#66695f;margin:0}.contact-invitation{display:block;font-family:'Instrument Serif',Georgia,serif;font-size:clamp(25px,2.3vw,30px);line-height:1.2;letter-spacing:-.02em;color:var(--ink);margin-bottom:10px}.footer{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-block:25px;font-size:10px;color:#66695f}.footer-note{font:8px var(--mono);letter-spacing:1px}.footer>div{display:flex;gap:23px}.reveal.is-pending{opacity:0;transform:translateY(20px)}.reveal{transition:opacity .65s ease,transform .65s ease}
.hero-intro p,.section-description,.project>p,.skill-list,.header-note,.identity p span{font-family:var(--mono);font-weight:400;letter-spacing:-.025em}.hero-intro p{font-size:15px;line-height:1.8}.project>p{font-size:13px;line-height:1.85}.section-description{font-size:12px}
.profile-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}.profile-links .button{align-items:center;gap:9px;padding:12px 14px;font-size:12px;min-height:44px}.profile-links img{flex-shrink:0}.profile-links a:is(:hover,:focus-visible){border-color:var(--ink)}.contact-bottom .profile-links{margin-top:0;justify-content:flex-end;max-width:540px}
/* Grain stays behind the content so small text and project images remain crisp. */
body,.about{background-image:url('assets/grain.svg');background-repeat:repeat}
h1,h2{font-family:'Instrument Serif',Georgia,serif;font-weight:400;font-synthesis:none;letter-spacing:-.025em}
h1{line-height:1.04}h2{line-height:1.1}
@media(min-width:1500px){.hero{padding-top:90px}}
@media(max-width:900px){.wrap{width:calc(100% - 56px)}.header-note{display:none}.hero-bottom,.about-grid{gap:35px}.project-art{height:290px}.market-diagram{gap:6px}.collectible{width:77px;height:118px;padding:8px}.shape{width:52px;height:52px}.section{--section-padding:75px}.section-description br{display:none}.section-description{max-width:230px}.art-label{left:18px;font-size:8px}.art-bottom{left:18px;font-size:7px}.footer-note{display:none}.dashboard-preview{width:80%}}
@media(max-width:600px){.wrap{width:calc(100% - 40px)}.site-header{padding-block:22px}.wordmark{font-size:36px}nav{gap:22px;font-size:12px}.hero{padding-top:45px}h1{font-size:clamp(42px,10.3vw,62px);margin-bottom:35px}.hero-bottom{grid-template-columns:1fr;gap:28px}.hero-intro p{font-size:15px}.identity p{font-size:18px}.identity p span{display:inline;margin-left:12px;font-size:10px}.hero-footer{margin-top:40px;font-size:7px;letter-spacing:.6px}.section-heading{display:block;margin-bottom:30px}.section-description{max-width:none;margin-top:22px}.section{--section-padding:60px}.project-grid{grid-template-columns:1fr;gap:38px}.project-art{height:310px}.collectible{width:88px;height:130px}.project-title h3{font-size:22px}.about-grid{grid-template-columns:1fr;gap:30px}.about h2 br{display:none}.about h2{max-width:330px}.contact h2{font-size:clamp(36px,8.3vw,50px)}.contact-bottom{display:block;margin-top:30px}.contact-bottom .profile-links{margin-top:25px;justify-content:flex-start}.footer{align-items:start;flex-direction:column;gap:18px}.footer>div{width:100%;justify-content:space-between}}
dialog{width:min(640px,calc(100% - 40px));max-height:calc(100% - 40px);padding:64px 32px 48px;text-align:center;border:1px solid var(--line);background:var(--paper) url('assets/grain.svg') repeat;color:var(--ink);box-shadow:0 24px 100px #0003}dialog::backdrop{background:#20221f70;backdrop-filter:blur(5px)}body:has(dialog[open]){overflow:hidden}.dialog-close-form{position:absolute;top:18px;right:18px;margin:0}.dialog-close{background:none;border:0;font-size:27px;line-height:1;cursor:pointer;color:var(--ink);padding:0 5px}dialog h2{font-size:32px;margin:0 0 16px}#live-status{font:12px/1.7 var(--mono);color:var(--muted);margin:0 0 32px}#live-status::before{display:inline-block;content:'';width:7px;height:7px;border-radius:50%;margin-right:8px;background:#a34f48}#live-status.online::before{background:#4e8056}.dialog-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}.dialog-actions .button{align-items:center;gap:13px;cursor:pointer}.dialog-actions .button:not([aria-disabled="true"]):hover{background:var(--ink);color:var(--paper)}.dialog-actions [aria-disabled="true"]{color:var(--muted);border-color:var(--line);cursor:not-allowed}#live-link[aria-disabled="false"]{background:var(--ink);color:var(--paper)}#live-link[aria-disabled="false"]:hover{background:#3c3e38;border-color:var(--ink)}
@media(max-width:480px){dialog{padding:60px 24px 32px}.dialog-actions{flex-direction:column}.dialog-actions .button{justify-content:center}dialog h2{font-size:28px}}
.back-to-top{position:fixed;right:12px;top:50%;transform:translateY(-50%);z-index:5;display:flex;align-items:center;justify-content:center;gap:9px;width:80px;height:48px;border:1px solid var(--ink);border-radius:24px;background:var(--paper);color:var(--ink);font:12px var(--mono)}.back-to-top span{font-size:20px}.back-to-top[hidden]{display:none}.back-to-top:is(:hover,:focus-visible){background:#e6e6de}
@media(max-width:600px){.back-to-top{right:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.reveal.is-pending{opacity:1;transform:none}}
