:root{color-scheme:light;--paper: #fbf7ef;--paper-cool: #f4f0ff;--ink: #111111;--ink-soft: #35323a;--muted: #68616d;--line: #111111;--panel: #ffffff;--pink: #ff4fb8;--cyan: #21c7e8;--lime: #d7ff3f;--violet: #8d75ff;--orange: #ff9f43;--shadow-hard: 10px 10px 0 var(--ink);--shadow-soft: 0 22px 58px rgba(17, 17, 17, .12);--radius: 8px;--max: 1180px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(135deg,rgba(255,79,184,.09),transparent 28%),linear-gradient(220deg,rgba(33,199,232,.12),transparent 32%),var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}a{color:inherit}button,input,textarea,select{font:inherit}::selection{background:var(--lime);color:var(--ink)}.site-shell{width:min(100%,var(--max));margin:0 auto;padding:28px}.eyebrow,.cv-kicker,.build-card__meta,.detail-meta span,.tag-row span,.tool-cloud span,.cv-item__head span,.cv-project p{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;letter-spacing:0;text-transform:uppercase}.eyebrow{margin:0;color:var(--pink);font-size:.78rem;font-weight:900}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:11px 16px;border:3px solid var(--ink);border-radius:var(--radius);color:var(--ink);font-weight:950;text-decoration:none;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}.button:hover,.button:focus-visible{transform:translate(-2px,-2px);outline:none}.button--dark{background:var(--ink);color:var(--paper);box-shadow:5px 5px 0 var(--pink)}.button--dark:hover,.button--dark:focus-visible{background:#2a2531;box-shadow:8px 8px 0 var(--pink)}.button--light{background:var(--panel);box-shadow:5px 5px 0 var(--cyan)}.button--light:hover,.button--light:focus-visible{background:var(--lime);box-shadow:8px 8px 0 var(--cyan)}.text-link{display:inline-flex;width:fit-content;border-bottom:3px solid currentColor;color:var(--ink);font-weight:950;text-decoration:none}.text-link:hover,.text-link:focus-visible{color:var(--pink);outline:none}.page-trail{display:flex;flex-wrap:wrap;gap:18px;align-items:center;padding:8px 0 22px}.section{padding:84px 0}.section__heading{max-width:760px;margin-bottom:30px}.section__heading h2,.page-hero h1{margin:8px 0 14px;font-size:3.15rem;line-height:.98;letter-spacing:0}.section__heading p,.page-hero p,.build-detail__header p{max-width:760px;color:var(--ink-soft);font-size:1.08rem}.build-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.build-card{display:flex;flex-direction:column;gap:16px;min-height:310px;padding:24px;border:4px solid var(--ink);border-radius:var(--radius);background:var(--panel);box-shadow:8px 8px #1111112e;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}.build-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard);background:#fffdf8}.build-card__meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;color:var(--muted);font-size:.76rem;font-weight:950}.build-card h3{margin:0;font-size:1.55rem;line-height:1.05;letter-spacing:0}.build-card h3 a{text-decoration:none}.build-card h3 a:hover,.build-card h3 a:focus-visible{color:var(--pink);outline:none}.build-card p{flex:1;margin:0;color:var(--ink-soft)}.tag-row,.tool-cloud{display:flex;flex-wrap:wrap;gap:8px}.tag-row span,.tool-cloud span,.detail-meta span{display:inline-flex;align-items:center;min-height:30px;border:2px solid var(--ink);border-radius:6px;background:var(--paper-cool);padding:4px 9px;color:var(--ink);font-size:.76rem;font-weight:900}.tag-row span:nth-child(3n+1),.tool-cloud span:nth-child(3n+1){background:#ffe5f4}.tag-row span:nth-child(3n+2),.tool-cloud span:nth-child(3n+2){background:#dcf9ff}.tag-row span:nth-child(3n+3),.tool-cloud span:nth-child(3n+3){background:#f1ffd5}.page-hero{padding:72px 0;border-bottom:5px solid var(--ink)}.archive-tabs{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.archive-tabs a{display:inline-flex;min-height:42px;align-items:center;padding:8px 12px;border:3px solid var(--ink);border-radius:var(--radius);background:var(--panel);box-shadow:4px 4px #1113;font-weight:950;text-decoration:none}.archive-tabs a:hover,.archive-tabs a:focus-visible{background:var(--lime);box-shadow:6px 6px 0 var(--ink);outline:none}.archive-section{scroll-margin-top:80px}.detail-page{padding-top:28px;padding-bottom:96px}.build-detail{margin-top:28px}.build-detail__header{padding:34px;border:5px solid var(--ink);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow-hard)}.build-detail__header h1{margin:10px 0 14px;font-size:4rem;line-height:.96;letter-spacing:0}.detail-meta{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0}.detail-meta span{background:var(--lime)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:28px}.case-study{display:grid;gap:18px;margin-top:28px}.case-study__intro,.case-study__grid{display:grid;gap:18px}.case-study__intro{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.case-study__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-panel{padding:24px;border:4px solid var(--ink);border-radius:var(--radius);background:var(--panel)}.detail-panel--wide{margin-top:18px}.detail-panel h2{margin:0 0 14px;font-size:1.4rem;line-height:1.08}.detail-panel p{margin:0;color:var(--ink-soft)}.detail-panel p+p{margin-top:8px}.detail-panel ul{margin:0;padding-left:1.1rem}.detail-panel li+li{margin-top:10px}.signal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.signal-grid span{display:grid;min-height:92px;align-content:center;border:3px solid var(--ink);background:var(--lime);padding:12px;font-weight:950}.project-preview{height:620px;margin-top:28px;overflow:hidden;border:5px solid var(--ink);border-radius:var(--radius);background:#111;box-shadow:var(--shadow-hard)}.project-preview iframe{width:100%;height:100%;border:0}.cv-page{min-height:100vh;background:linear-gradient(90deg,rgba(255,79,184,.08) 0 10%,transparent 10%),var(--paper);color:var(--ink);padding:28px}.cv-header{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(300px,.92fr);gap:28px;align-items:start;border:5px solid var(--ink);background:var(--panel);padding:24px}.cv-header__copy{display:grid;min-width:0;align-content:start}.cv-header__side{display:grid;min-width:0;gap:14px}.cv-portrait{position:relative;display:grid;gap:8px;width:min(100%,380px);margin:0 0 0 auto}.cv-portrait:before{content:"";position:absolute;right:-8px;bottom:34px;width:54%;height:38%;background:var(--cyan);border:3px solid var(--ink)}.cv-portrait img{position:relative;z-index:1;display:block;width:100%;border:5px solid var(--ink);background:var(--paper-cool);box-shadow:8px 8px 0 var(--pink);height:auto}.cv-portrait figcaption{position:relative;z-index:1;width:fit-content;border:3px solid var(--ink);background:var(--lime);padding:6px 9px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.76rem;font-weight:950;line-height:1.2;text-transform:uppercase}.cv-kicker{justify-self:start;display:inline-flex;margin:0 0 18px;padding:6px 10px;border:3px solid var(--ink);background:var(--lime);color:var(--ink);font-size:.78rem;font-weight:950}.cv-header h1{max-width:11ch;margin:0;font-size:5.2rem;line-height:.9;letter-spacing:0;overflow-wrap:anywhere;text-transform:uppercase}.cv-title{max-width:720px;margin:18px 0 0;font-size:1.45rem;font-weight:900}.cv-contact{justify-self:stretch;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:min(100%,760px);margin-top:48px}.cv-contact a{display:grid;min-height:82px;align-content:space-between;gap:8px;overflow-wrap:anywhere;border:3px solid var(--ink);border-radius:0;background:var(--paper);padding:10px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.86rem;font-weight:900;text-decoration:none}.cv-contact a:nth-child(2){background:#fffdf8}.cv-contact a:nth-child(3){background:var(--paper-cool)}.cv-contact a:nth-child(4){background:#f1ffd5}.cv-contact span{color:var(--pink);font-size:.72rem;text-transform:uppercase}.cv-contact strong{color:var(--ink);font-size:.86rem;line-height:1.2}.cv-contact a:hover,.cv-contact a:focus-visible{background:var(--pink);color:#fff;outline:none}.cv-contact a:hover span,.cv-contact a:focus-visible span,.cv-contact a:hover strong,.cv-contact a:focus-visible strong{color:#fff}.cv-block{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;border-right:5px solid var(--ink);border-bottom:5px solid var(--ink);border-left:5px solid var(--ink);background:var(--panel);padding:24px}.cv-block>h2,.cv-footer-block h2{margin:0;font-size:1rem;letter-spacing:0;text-transform:uppercase}.cv-profile p{margin:0;max-width:900px;font-size:1.1rem;font-weight:760}.cv-profile p+p{margin-top:12px}.cv-stack{display:grid;gap:18px}.cv-item{border:3px solid var(--ink);background:#fffdf8;padding:16px}.cv-item__head{display:flex;justify-content:space-between;gap:16px;margin-bottom:14px}.cv-item h3{margin:0 0 4px;font-size:1.35rem;line-height:1.08}.cv-item p{margin:0;font-weight:850}.cv-item__head span,.cv-project p{font-size:.82rem;font-weight:900}.cv-item ul{margin:0;padding-left:1.1rem}.cv-item li+li{margin-top:8px}.cv-fit-grid,.cv-project-grid,.cv-skill-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.cv-fit-grid article,.cv-project,.cv-skill-grid article{border:3px solid var(--ink);background:#fffdf8;padding:14px}.cv-fit-grid article{display:grid;gap:8px;align-content:start;min-height:148px}.cv-fit-grid h3{margin:0;color:var(--pink);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.84rem;letter-spacing:0;text-transform:uppercase}.cv-fit-grid p{margin:0;color:var(--ink-soft);font-weight:760}.cv-project{display:grid;gap:10px;align-content:start}.cv-project p{margin:0;color:var(--pink)}.cv-project h3,.cv-skill-grid h3{margin:0;font-size:1.15rem;line-height:1.08}.cv-project a{text-decoration-thickness:3px;text-underline-offset:3px}.cv-project span,.cv-skill-grid p,.cv-footer-block p{color:var(--ink-soft)}.cv-project__links{display:flex;flex-wrap:wrap;gap:10px;margin-top:2px}.cv-project__links a{border-bottom:3px solid var(--ink);color:var(--ink);font-size:.88rem;font-weight:950;text-decoration:none}.cv-project__links a:hover,.cv-project__links a:focus-visible{border-bottom-color:var(--pink);color:var(--pink);outline:none}.cv-skill-grid p,.cv-footer-block p{margin:0}.cv-footer-block{grid-template-columns:repeat(2,minmax(0,1fr))}.cv-footer-block>div{display:grid;gap:8px}@media(max-width:1020px){.build-grid,.detail-grid,.case-study__intro,.case-study__grid,.signal-grid,.cv-header,.cv-block,.cv-fit-grid,.cv-project-grid,.cv-skill-grid,.cv-footer-block{grid-template-columns:1fr}.page-hero h1,.build-detail__header h1,.cv-header h1{font-size:3.4rem}.cv-portrait{margin-left:0}}@media(max-width:720px){.site-shell,.cv-page{padding:16px}.section{padding:58px 0}.section__heading h2,.page-hero h1,.build-detail__header h1,.cv-header h1{font-size:2.35rem}.page-hero{padding:54px 0 44px}.build-card{min-height:auto}.build-detail__header{padding:20px;box-shadow:7px 7px 0 var(--ink)}.detail-panel,.cv-header,.cv-block{padding:18px}.project-preview{height:520px;box-shadow:7px 7px 0 var(--ink)}.cv-item__head{flex-direction:column}.cv-title{font-size:1.18rem}.cv-contact{grid-template-columns:1fr;margin-top:28px}.cv-contact a{min-height:66px}.cv-portrait img{box-shadow:6px 6px 0 var(--pink)}.cv-portrait:before{right:-5px;bottom:30px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
