@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2) format("woff2-variations")}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2) format("woff2-variations")}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-mono-latin-400-normal-4GdczIuU.woff2) format("woff2")}:root{color-scheme:light dark;--font-body: "DM Sans Variable", "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "DM Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--display: "Space Grotesk Variable", "Space Grotesk", "DM Sans Variable", system-ui, sans-serif;--paper: #f5f6f1;--ink: #1d211e;--muted: #6b716b;--line: #d9ddd6;--surface: #fffefa;--accent: #a33727;--accent-dark: #8c2e21;--contact-bg: #a33727;--positive: #397a35;--mint: #d8efb2;--focus: #368a72;--on-ink: #fff;--on-accent: #fff;--grid-line: rgba(40, 55, 45, .026);--ring-2: #cbd1c8;--ring-3: #dfe2dd;--tag-ink: #525b51;--tag-line: #dfe3da;--section-dark: #222a25;--on-dark: #f4f5ef;--on-contact: #f7f6f0;--glow: rgba(255, 255, 255, .2);--toggle-hover: rgba(255, 255, 255, .55);--header-height: 78px;--gutter: 40px;--content-max: 1160px;--target: 44px;--z-header: 20;--z-skip: 100;font-family:var(--font-body);color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizeLegibility}:root[data-theme=dark]{color-scheme:dark;--paper: #1a211c;--ink: #f2f3ed;--muted: #b2b2b2;--line: #3a443c;--surface: #242d27;--accent: #ff9278;--accent-dark: #ffab95;--contact-bg: #8c2e21;--positive: #80d9ac;--focus: #80d9ac;--on-ink: #1d211e;--on-accent: #1d211e;--grid-line: rgba(230, 240, 224, .035);--ring-2: #4b574d;--ring-3: #3a443c;--tag-ink: #d0d8cd;--tag-line: var(--line);--section-dark: #111713;--glow: rgba(255, 255, 255, .12);--toggle-hover: rgba(255, 255, 255, .08)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper: #1a211c;--ink: #f2f3ed;--muted: #b2b2b2;--line: #3a443c;--surface: #242d27;--accent: #ff9278;--accent-dark: #ffab95;--contact-bg: #8c2e21;--positive: #80d9ac;--focus: #80d9ac;--on-ink: #1d211e;--on-accent: #1d211e;--grid-line: rgba(230, 240, 224, .035);--ring-2: #4b574d;--ring-3: #3a443c;--tag-ink: #d0d8cd;--tag-line: var(--line);--section-dark: #111713;--glow: rgba(255, 255, 255, .12);--toggle-hover: rgba(255, 255, 255, .08)}}@media(min-width:1280px){:root{--gutter: 56px;--content-max: 1320px}}@media(min-width:1800px){:root{--gutter: 80px;--content-max: 1480px}}@media(max-width:1100px){:root{--gutter: 32px}}@media(max-width:620px){:root{--gutter: 20px;--header-height: 65px}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 16px);scrollbar-gutter:stable}body{min-width:320px;margin:0;font-size:1rem}button,a{font:inherit}a{color:inherit}img,video{max-width:100%;height:auto}button:focus-visible,a:focus-visible{outline:3px solid var(--focus);outline-offset:4px}::selection{color:var(--on-accent);background:var(--accent)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;border:0;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;z-index:var(--z-skip);top:12px;left:12px;padding:10px 14px;color:var(--on-ink);background:var(--ink);transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-shell{min-height:100vh;min-height:100dvh;overflow:clip;color:var(--ink);background-color:var(--paper);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:38px 38px;transition:background-color .25s ease,color .25s ease}.section-wrap{width:min(var(--content-max),calc(100% - 2 * var(--gutter)));margin-inline:auto}.availability,.eyebrow,.hero-index,.scroll-cue,.project-kicker,.project-details>div>span,.skill-number,.about-footnote span,.contact-links a>span,.resume-row>span:first-child,.site-footer>span,.site-footer>a:last-child{font-family:var(--mono);letter-spacing:0}.theme-toggle,.skill-chip,.hero-layer-projects a,.project-links a,.text-link,.site-footer>a:last-child,.skills-evidence-status a,.active-skill-filter button{position:relative}.theme-toggle:after,.skill-chip:after,.hero-layer-projects a:after,.project-links a:after,.text-link:after,.site-footer>a:last-child:after,.skills-evidence-status a:after,.active-skill-filter button:after{content:"";position:absolute;inset-block:min(0px,calc(50% - var(--target) / 2));inset-inline:min(0px,calc(50% - var(--target) / 2))}.site-header{position:sticky;top:0;z-index:var(--z-header);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;justify-content:space-between;width:100%;min-height:var(--header-height);margin-inline:auto;padding-block:8px;padding-inline:max(var(--gutter),calc((100% - var(--content-max)) / 2));background:var(--paper);border-bottom:1px solid var(--line)}.wordmark{grid-column:1;justify-self:start;display:inline-flex;align-items:center;color:var(--ink);font:700 20px/1 var(--display);letter-spacing:0;text-decoration:none}.wordmark span{display:grid;width:35px;height:35px;place-items:center;border:1px solid var(--ink)}.wordmark i{width:6px;height:6px;margin-left:3px;background:var(--accent)}:root[data-theme=dark] .wordmark span{border-color:var(--line)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .wordmark span{border-color:var(--line)}}.main-nav{grid-column:2;justify-self:center;display:flex;flex-wrap:wrap;justify-content:center;gap:0 clamp(22px,2.2vw,34px);margin:0}.main-nav a{display:inline-flex;align-items:center;min-height:var(--target);color:var(--muted);font-size:1rem;text-decoration:none;transition:color .18s ease,transform .18s ease}.main-nav a:hover,.text-link:hover{color:var(--accent)}.header-actions{grid-column:3;justify-self:end;display:flex;align-items:center;gap:16px}.availability{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:1rem}.availability i,.scribe-status i{width:7px;height:7px;border-radius:50%;background:var(--positive);box-shadow:0 0 0 3px #397a3529}.theme-toggle{display:grid;width:36px;height:36px;place-items:center;color:var(--ink);border:1px solid var(--line);background:transparent;cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .18s ease}.theme-toggle:hover{border-color:var(--ink);background:var(--toggle-hover)}.hero{position:relative;display:grid;grid-template-columns:1.08fr .92fr;align-items:center;min-height:670px;padding-top:37px;padding-bottom:5.5625rem}.hero-copy{z-index:1;padding-top:5px;animation:rise-in .7s both}.hero h1{font-size:clamp(2.75rem,1.2rem + 4.2vw,4.875rem)}.hero h1 span,.section-heading h2 span,.about-heading h2 span{color:var(--accent)}.eyebrow{font-size:1rem}.eyebrow-mark{color:var(--accent)}.eyebrow-divider{color:var(--muted)}.hero-role{margin:24px 0 0;font-size:1.125rem;font-weight:600}.hero-intro{font-size:1rem}.hero-target{margin:10px 0 0;color:var(--muted);font-size:1rem;font-weight:600}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;gap:13px;min-height:46px;padding:0 17px;font-size:.8125rem;font-weight:600;text-decoration:none;transition:transform .18s ease,background .18s ease,border-color .18s ease}.button:hover{transform:translateY(-2px)}.button-primary{color:var(--on-accent);background:var(--accent)}.button-primary:hover{background:var(--accent-dark)}.button-secondary{color:var(--ink);border:1px solid var(--line);background:var(--surface)}.button-secondary:hover{border-color:var(--accent)}.button-light{color:#1d211e;background:#fffefa}.button-light:hover{background:#e7f1d8}.text-link{display:inline-flex;align-items:center;gap:7px;font-weight:600;text-decoration:none;transition:color .18s ease}.hero-art{position:relative;justify-self:end;width:100%;max-width:480px;margin-top:10px;aspect-ratio:1;animation:reveal-in .8s .12s both}.orbit{position:absolute;top:50%;left:50%;border:1px solid var(--line);border-radius:50%;transform:translate(-50%,-50%)}.orbit-one{width:47%;aspect-ratio:1}.orbit-two{width:73%;aspect-ratio:1;border-style:dashed;border-color:var(--ring-2)}.orbit-three{width:94%;aspect-ratio:1;border-color:var(--ring-3)}.art-center{position:absolute;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;width:118px;height:118px;color:var(--on-ink);background:var(--ink);border-radius:50%;transform:translate(-50%,-50%)}.art-center span{font:.75rem/1.5 var(--mono);text-align:center}.art-node{position:absolute;z-index:1;display:flex;flex-direction:column;justify-content:center;min-width:100px;min-height:92px;padding:12px;color:var(--ink);text-align:left;border:1px solid var(--line);background:var(--surface);box-shadow:0 8px 24px #141e180f;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.art-node>span{color:var(--accent);font:.75rem var(--mono)}.art-node b{margin-top:4px;font:600 1.125rem var(--display)}.art-node small{margin-top:3px;color:var(--muted);font:.75rem var(--mono)}.art-node:hover,.art-node.is-active{border-color:var(--accent);box-shadow:0 10px 30px #141e1824;transform:translateY(-2px)}.art-node.is-active{box-shadow:0 10px 30px #141e1824,inset 0 -3px 0 var(--accent)}.art-node:focus-visible{z-index:3;outline:3px solid var(--focus);outline-offset:3px}.art-node-ui{top:11%;left:23%}.art-node-api{top:47%;right:0}.art-node-core{bottom:6%;left:28%}.art-cross{position:absolute;color:var(--accent);font:22px var(--mono)}.art-cross-one{top:17%;right:19%}.art-cross-two{bottom:18%;left:8%}.art-caption{position:absolute;right:0;bottom:1%;display:flex;align-items:center;gap:8px;color:var(--muted);font:.75rem var(--mono)}.scroll-cue{position:absolute;bottom:2.0625rem;left:0;display:flex;align-items:center;gap:12px;color:var(--muted);font-size:1rem;text-decoration:none}.scroll-cue svg{color:var(--accent)}.hero-index{position:absolute;right:0;bottom:2.125rem;color:var(--muted);font-size:1rem}.hero-layer-panel{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start;max-width:590px;margin-top:22px;padding-top:13px;border-top:1px solid var(--line)}.hero-layer-label{color:var(--accent);font:.75rem var(--mono)}.hero-layer-panel p{margin:5px 0 0;color:var(--muted);font-size:.875rem;line-height:1.5}.hero-layer-projects{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:6px 14px}.hero-layer-projects a{display:inline-flex;align-items:center;gap:4px;padding:4px 0;color:var(--ink);border:0;border-bottom:1px solid var(--line);background:transparent;font-size:.75rem;cursor:pointer}.hero-layer-projects a:hover{color:var(--accent);border-color:var(--accent)}.hero-layer-projects a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.work-section{padding-top:72px;padding-bottom:120px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:30px}.section-heading h2{margin-top:16px;font-size:clamp(2.375rem,1.95rem + 1.2vw,3.125rem)}.section-aside{margin:0 0 4px;color:var(--muted);font-size:1rem;line-height:1.65}.filter-row{display:flex;align-items:center;gap:8px;margin-top:37px;padding-bottom:14px;border-bottom:1px solid var(--line)}.filter-button{min-height:40px;padding:0 13px;color:var(--muted);border:1px solid transparent;background:transparent;font-size:.9375rem;cursor:pointer;transition:color .18s ease,background .18s ease,border-color .18s ease,transform .18s ease}.filter-button:hover{color:var(--ink);border-color:var(--line)}.filter-button.is-active{color:var(--on-ink);border-color:var(--ink);background:var(--ink)}.filter-button:focus-visible{outline-offset:-3px}.project-count{margin-left:auto;color:var(--muted);font:.75rem var(--mono)}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:22px}.project-card{position:relative;isolation:isolate;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:3px;background:var(--surface);animation:card-reveal .38s both;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.project-card:nth-child(2){animation-delay:.04s}.project-card:nth-child(3){animation-delay:.08s}.project-card:nth-child(4){animation-delay:.12s}.project-card:before{content:"";position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:radial-gradient(360px circle at var(--pointer-x, 50%) var(--pointer-y, 50%),var(--glow),transparent 68%);opacity:0;pointer-events:none;transition:opacity .2s ease}.project-card:has(:focus-visible){border-color:var(--accent)}.project-card-trigger{display:block;width:100%;padding:0;color:inherit;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer}.project-card-trigger:focus-visible{outline-offset:-3px}.project-visual,.project-copy,.project-links{position:relative;z-index:1}.project-card--gitscribe{--visual-bg: #f4e3d6}.project-card--thinkboard{--visual-bg: #e5e8f0}.project-card--rpg{--visual-bg: #e9e2d4}.project-visual{display:grid;place-items:center;height:215px;padding:19px 28px;overflow:hidden;background-color:var(--visual-bg, #e8ecdf);background-image:radial-gradient(rgba(29,33,30,.11) .8px,transparent .8px);background-size:13px 13px}:root[data-theme=dark] .project-visual--screenshots{filter:saturate(.85) brightness(.94)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .project-visual--screenshots{filter:saturate(.85) brightness(.94)}}.project-visual--screenshots{display:block;padding:0}.project-screenshot-strip{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:minmax(0,1fr);align-items:stretch;justify-items:stretch;gap:12px;width:100%;height:100%;padding:14px 18px}.project-screenshot-strip figure{display:grid;place-items:center;min-width:0;min-height:0;margin:0;overflow:hidden}.project-screenshot-strip img{display:block;width:100%;height:100%;min-height:0;object-fit:contain}.project-visual-note{position:absolute;right:12px;bottom:10px;padding:5px 8px;color:var(--muted);border:1px solid var(--line);background:var(--surface);font:.75rem var(--mono)}.project-copy{padding:20px 22px 22px}.project-kicker{display:flex;justify-content:space-between;color:var(--muted);font-size:1rem}.featured-label{color:var(--accent)}.project-copy h3{margin:15px 0 0;font:600 1.6875rem/1.1 var(--display)}.project-subtitle{margin:6px 0 0;font-size:1rem;font-weight:600}.project-summary{margin:11px 0 17px;color:var(--muted);font-size:1rem;line-height:1.65}.project-details{display:grid;grid-template-columns:.75fr 1.25fr;gap:15px;padding-top:14px;border-top:1px solid var(--line)}.project-details>div>span{color:var(--muted);font-size:.75rem}.project-details p{margin:6px 0 0;font-size:.875rem;line-height:1.6}.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin:15px 0;padding:0;list-style:none}.tag-list li{padding:5px 7px;color:var(--tag-ink);border:1px solid var(--tag-line);font:.75rem var(--mono)}.project-card-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:18px;padding-top:14px;color:var(--muted);border-top:1px solid var(--line);font-size:.875rem}.project-card-footer>span:last-child{display:inline-flex;align-items:center;gap:7px;color:var(--accent);font-weight:600}.project-links{display:flex;align-items:center;gap:20px;min-height:54px;padding:10px 22px;border-top:1px solid var(--line);font-size:.875rem}.project-links a{display:inline-flex;align-items:center;gap:7px;font-size:.875rem;font-weight:600;text-decoration:none}.project-links a:hover{color:var(--accent)}.project-no-demo{margin-right:auto;color:var(--muted);font:.75rem var(--mono)}.about-section{--accent: #ff9278;--focus: #80d9ac;padding:98px 0 77px;color:var(--on-dark);background-color:var(--section-dark);background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:38px 38px}.about-grid{display:grid;grid-template-columns:1fr 1.05fr;column-gap:12%;align-items:start}.about-heading{position:relative;min-height:310px}.about-heading .eyebrow{color:#bac3b8}.about-heading h2{margin-top:27px;font-size:clamp(3.0625rem,2.4rem + 1.6vw,4rem)}.about-stamp{position:absolute;bottom:5px;left:0;display:flex;align-items:center;gap:12px;color:#d9e6cf}.about-stamp span{font:.875rem/1.55 var(--mono)}.about-copy{padding-top:44px}.about-lead{margin:0 0 18px;font:500 1.3125rem/1.4 var(--display)}.about-copy>p:not(.about-lead){color:#c0c8bf;font-size:1rem;line-height:1.85}.about-link{margin-top:13px;color:#e5f0dc}.about-link:hover{color:#d9efb5}.about-footnote{display:grid;grid-template-columns:auto 1fr;gap:9px 18px;align-self:end;margin-top:39px;padding-top:17px;border-top:1px solid rgba(255,255,255,.16)}.about-footnote span{color:#a9b5a8;font-size:.875rem}.about-footnote b{font-size:.875rem;font-weight:500}.skills-section{padding-top:103px;padding-bottom:111px}.skills-heading{margin-bottom:40px}.skills-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.skills-grid .skill-group{min-height:218px;padding:19px 20px 21px 0}.skills-grid .skill-group+.skill-group{padding-left:22px;border-left:1px solid var(--line)}.skills-grid .skill-group:nth-child(4),.skills-grid .skill-group:nth-child(5){border-top:1px solid var(--line)}.skills-grid .skill-group:nth-child(4){padding-left:0;border-left:0}.skill-number{color:var(--accent);font-size:1rem}.skill-group h3{margin:20px 0 3px;font:600 1.1875rem var(--display)}.skill-group>p{margin:0;color:var(--muted);font-size:.8125rem}.skill-group ul{display:flex;flex-wrap:wrap;gap:7px;margin:18px 0 0;padding:0;list-style:none}.skill-group li{display:flex;align-items:center;gap:6px;padding:6px 8px;color:var(--tag-ink);border:1px solid var(--line);font-size:.75rem}.learning-tag{color:var(--accent);font:.75rem var(--mono)}.skills-note{margin:12px 0 0;color:var(--muted);font-size:.8125rem}.skills-note span{color:var(--accent)}.skills-evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.skills-evidence{min-width:0;padding:20px 0 25px}.skills-evidence+.skills-evidence{padding-left:30px;border-left:1px solid var(--line)}.skills-evidence>h3{margin:0 0 12px;font:600 1.375rem var(--display)}.skills-evidence>p{margin:0 0 12px;color:var(--muted);font-size:.875rem;line-height:1.6}.skills-evidence .skill-group{min-height:0;padding:14px 0;border-top:1px solid var(--line)}.skills-evidence .skill-group h4{margin:0;font:600 .9375rem var(--display)}.skills-evidence .skill-group .skill-number{display:none}.skills-evidence .skill-group ul{margin-top:9px}.skills-evidence .skill-group ul li{padding:0;border:0}.skill-chip{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:5px 9px;color:var(--ink);border:1px solid var(--line);background:var(--surface);font-size:.8125rem;cursor:pointer;transition:border-color .16s ease,color .16s ease,background .16s ease}.skill-chip span{display:grid;min-width:20px;height:20px;place-items:center;color:var(--muted);border-radius:50%;background:var(--paper);font:.75rem var(--mono)}.skill-chip:hover,.skill-chip[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.skill-chip[aria-pressed=true]{box-shadow:inset 0 0 0 1px currentColor}.skill-chip[aria-pressed=true] span{color:var(--surface);background:var(--accent)}.skill-chip:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.skills-evidence-status{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:15px 0 0;color:var(--muted);font-size:.875rem}.skills-evidence-status a{display:inline-flex;align-items:center;gap:5px;color:var(--accent);font-weight:600;text-decoration:underline;text-underline-offset:3px}.skills-evidence-status a:hover{text-decoration-thickness:2px}.active-skill-filter{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin:12px 0 0;color:var(--muted);font-size:.875rem}.active-skill-filter strong{color:var(--ink)}.active-skill-filter button{margin-left:8px;padding:4px 0;color:var(--accent);border:0;border-bottom:1px solid currentColor;background:transparent;font:inherit;cursor:pointer}.active-skill-filter button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.contact-section{padding:84px 0 79px;color:var(--on-contact);background:var(--contact-bg);background-image:linear-gradient(145deg,rgba(75,25,20,.16),transparent 48%)}.contact-inner{display:grid;grid-template-columns:.95fr 1.05fr;gap:11%;align-items:center}.contact-copy .eyebrow{color:#fffefa}.contact-copy .eyebrow-mark{color:#fff}.contact-copy h2{margin-top:23px;font-size:clamp(3rem,2.3rem + 1.6vw,4rem)}.contact-copy h2 span{color:var(--mint)}.contact-copy>p:not(.eyebrow){max-width:370px;margin:19px 0 22px;color:#ffffffd1;font-size:1rem;line-height:1.7}.contact-links{border-top:1px solid rgba(255,255,255,.4)}.contact-links>a,.resume-row{display:grid;grid-template-columns:1fr 1.35fr auto;align-items:center;gap:14px;min-height:82px;border-bottom:1px solid rgba(255,255,255,.4);text-decoration:none;transition:background .18s ease,transform .18s ease}.resume-row{grid-template-columns:1fr 1.35fr}.contact-links>a:hover,.contact-links>a:focus-visible{background:#ffffff14}.contact-links a>span,.resume-row>span:first-child{display:flex;align-items:center;gap:8px;color:#fffefa;font-size:1rem}.contact-links a b,.resume-row b{font-size:.9375rem;font-weight:500}.resume-row b{color:#ffe5c0}.resume-note{grid-column:2;margin-top:-20px;color:#fffefa;font-size:.8125rem}.contact-section a:focus-visible{outline-color:#fffefa}.site-footer{display:flex;align-items:center;justify-content:space-between;min-height:72px}.site-footer .wordmark span{width:29px;height:29px;font-size:16px}.site-footer>span,.site-footer>a:last-child{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.75rem;text-decoration:none}.footer-dot{color:var(--accent)}.site-footer>a:last-child:hover{color:var(--accent)}.case-study-content{padding:34px 40px 38px}.case-study-header{display:flex;align-items:center;justify-content:space-between;gap:18px}.case-study-header .eyebrow{flex-wrap:wrap}.case-study-content>h2{margin:17px 0 0;font:600 2.75rem/1.1 var(--display)}.case-study-subtitle{margin:8px 0 0;color:var(--muted);font-size:1rem;line-height:1.6}.case-study-links{display:flex;flex-wrap:wrap;gap:12px 22px;margin:19px 0 25px;padding-bottom:20px;border-bottom:1px solid var(--line)}.case-study-links a{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--accent);font-size:.9375rem;font-weight:600;text-decoration:none}.case-study-links a:hover{text-decoration:underline;text-underline-offset:4px}.case-study-at-a-glance{display:grid;grid-template-columns:minmax(140px,.65fr) minmax(0,1.35fr);gap:14px 24px;margin:19px 0 8px;padding:16px 18px;border-left:3px solid var(--accent);background:var(--paper)}.case-study-at-a-glance div{min-width:0}.case-study-at-a-glance dt{color:var(--muted);font:.75rem var(--mono)}.case-study-at-a-glance dd{margin:5px 0 0;font-size:.875rem;font-weight:600;line-height:1.5}.case-study-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.62fr);align-items:start;gap:36px;margin-top:26px}.case-study-layout--text-only{grid-template-columns:1fr}.case-study-main{min-width:0}.case-study-sections{display:grid;grid-template-columns:minmax(0,1fr);gap:0}.case-study-sections section{padding:22px 0;border-bottom:1px solid var(--line)}.case-study-sections h2,.case-study-stack h2,.case-study-sidebar>h2{margin:0;font:600 1.25rem var(--display)}.case-study-sections p{max-inline-size:70ch;margin:10px 0 0;color:var(--muted);font-size:1.125rem;line-height:1.75}.case-study-sections ol{display:grid;gap:12px;margin:10px 0 0;padding:0;list-style:none}.case-study-sections li{display:grid;grid-template-columns:30px 1fr;gap:10px;align-items:start}.case-study-sections li>span{padding-top:4px;color:var(--accent);font:.875rem var(--mono)}.case-study-sections li p{margin:0}.case-study-stack{padding-top:24px}.case-study-stack .tag-list{margin-bottom:0}.case-study-sidebar{align-self:start;min-width:0;padding-left:24px;border-left:1px solid var(--line)}.case-study-sidebar>h2{margin-bottom:14px}.case-study-gallery{display:grid;grid-template-columns:1fr;gap:16px;margin:0}.case-study-gallery figure{min-width:0;margin:0;padding:0;border:0;background:transparent}.case-study-gallery a{display:grid;min-height:180px;place-items:center;background:var(--paper)}.case-study-gallery img{display:block;width:100%;height:clamp(190px,27vh,270px);height:clamp(190px,27svh,270px);object-fit:contain;background:transparent}.case-study-gallery figcaption{padding:8px 0 0;color:var(--muted);font-size:.875rem}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes reveal-in{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@keyframes card-reveal{0%{opacity:0}to{opacity:1}}@media(hover:hover){.main-nav a:hover,.filter-button:hover,.theme-toggle:hover{transform:translateY(-1px)}.project-links a svg,.text-link svg{transition:transform .18s ease}.project-links a:hover svg,.text-link:hover svg{transform:translate(2px,-2px)}.contact-links>a:hover{transform:translate(3px)}}@media(hover:hover)and (pointer:fine){.project-card:hover,.project-card:focus-within{border-color:var(--accent);box-shadow:0 14px 32px #141e181f;transform:translateY(-4px)}.project-card:hover:before{opacity:1}}@media(min-width:1800px){.hero-art{max-width:550px}.project-visual{height:245px}.project-copy{padding:25px 27px 27px}}@media(max-width:1100px){.project-grid{grid-template-columns:minmax(0,1fr);max-width:760px;margin-inline:auto}.project-visual{height:240px}.project-copy{padding:24px 26px}.project-links{padding-inline:26px}}@media(max-width:900px){.availability{display:none}.main-nav{column-gap:17px}.hero{display:flex;flex-direction:column;align-items:stretch;min-height:0;padding-top:58px;padding-bottom:4.875rem}.hero-art{align-self:center;width:min(100%,360px);margin:38px 0 0}.art-center{width:98px;height:98px}.art-center svg{width:25px}.art-node{min-width:85px;min-height:78px;padding:9px}.art-node-ui{top:7%;left:20%}.art-node-api{right:-1%}.art-node-core{bottom:4%;left:25%}.art-caption{right:1%;bottom:0}.scroll-cue{bottom:1.5rem}.hero-index{bottom:1.5625rem}.project-visual{padding-inline:17px}.about-grid{column-gap:7%}.contact-inner{gap:7%}}@media(max-width:620px){.site-header{display:flex;flex-wrap:wrap;row-gap:4px}.wordmark span{width:31px;height:31px;font-size:1.125rem}.main-nav{gap:0 13px;margin:0}.main-nav a{font-size:.875rem}.main-nav a:nth-child(2){display:none}.header-actions{gap:0}.theme-toggle{width:32px;height:32px}.hero h1{margin-top:22px;line-height:1.01}.hero-role{max-width:290px;font-size:1rem;line-height:1.65}.hero-intro{max-width:390px}.hero-actions{gap:10px;margin-top:24px}.button{min-height:44px;padding-inline:13px;font-size:.75rem}.hero-layer-panel{margin-top:17px}.hero-layer-projects{gap:5px 12px}.work-section{padding-top:60px;padding-bottom:78px}.section-heading{flex-direction:column;align-items:start;gap:12px}.section-aside{font-size:.9375rem}.section-aside br{display:none}.filter-row{flex-wrap:nowrap;gap:3px;margin-top:23px;overflow-x:auto}.filter-button{flex:0 0 auto;min-height:42px;padding-inline:9px;font-size:.875rem}.project-count{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.project-grid{width:100%;gap:18px;margin-top:16px}.project-visual{height:205px;padding:16px}.project-screenshot-strip{gap:7px;padding-inline:8px}.project-copy{padding:20px}.project-copy h3{font-size:1.5rem}.project-details{grid-template-columns:.8fr 1.2fr;gap:11px}.project-card-footer{flex-direction:column;align-items:flex-start}.project-links{gap:18px;padding-inline:20px}.project-links a{font-size:.8125rem}.about-section{padding:69px 0 53px}.about-grid{display:block}.about-heading{min-height:243px}.about-stamp{bottom:0}.about-copy{padding-top:29px}.about-lead{font-size:1.1875rem}.about-footnote{margin-top:28px}.skills-section{padding-top:73px;padding-bottom:79px}.skills-heading{margin-bottom:26px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-grid .skill-group{min-height:190px;padding:16px 10px 18px 0}.skills-grid .skill-group+.skill-group{padding-left:13px}.skills-grid .skill-group:nth-child(3),.skills-grid .skill-group:nth-child(5){padding-left:0;border-top:1px solid var(--line);border-left:0}.skills-grid .skill-group:nth-child(4){padding-left:13px;border-left:1px solid var(--line)}.skills-grid .skill-group:nth-child(5){grid-column:1 / -1}.skill-group h3{font-size:1.0625rem}.skills-evidence-grid{grid-template-columns:1fr;gap:0}.skills-evidence+.skills-evidence{padding-left:0;border-top:1px solid var(--line);border-left:0}.skills-evidence>h3{font-size:1.25rem}.skill-chip{font-size:.75rem}.contact-section{padding:67px 0 55px}.contact-inner{display:block}.contact-links{margin-top:38px}.contact-links>a,.resume-row{grid-template-columns:1fr 1.5fr auto;gap:8px;min-height:76px}.resume-row{grid-template-columns:1fr 1.5fr}.contact-links a>span,.resume-row>span:first-child{gap:5px;font-size:.75rem}.contact-links a>span svg,.resume-row>span:first-child svg{width:14px}.contact-links a b,.resume-row b{font-size:.875rem;overflow-wrap:anywhere}.resume-note{margin-top:-17px}.site-footer{min-height:63px}.site-footer>span{display:none}.site-footer>a:last-child{margin-left:auto}.case-study-content{padding:23px 20px 26px}.case-study-content>h2{font-size:2.125rem}.case-study-at-a-glance{grid-template-columns:1fr;gap:11px;padding:14px}.case-study-layout{grid-template-columns:1fr;gap:25px;margin-top:20px}.case-study-sidebar{padding:22px 0 0;border-top:1px solid var(--line);border-left:0}.case-study-sidebar>h2{font-size:1.125rem}.case-study-sections p{font-size:1.0625rem}.case-study-gallery a{min-height:220px}.case-study-gallery img{height:280px}}@media(max-width:360px){.hero h1{font-size:2.25rem}.main-nav{column-gap:8px}.main-nav a,.project-card-footer{font-size:.8125rem}.project-links{gap:11px;padding-inline:14px}.project-links a{font-size:.75rem}}@media(prefers-contrast:more){:root{--muted: #454b45;--line: #7f867f}:root[data-theme=dark]{--muted: #cbd3ca;--line: #6c776e;--ring-3: #6c776e}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--muted: #cbd3ca;--line: #6c776e;--ring-3: #6c776e}}}@media(forced-colors:active){.button{border:1px solid ButtonText}.art-center{border:1px solid CanvasText}.wordmark i,.availability i,.scribe-status i{forced-color-adjust:none;background:CanvasText}.filter-button.is-active,.skill-chip[aria-pressed=true],.art-node.is-active{forced-color-adjust:none;color:HighlightText;border-color:Highlight;background:Highlight}.skill-chip[aria-pressed=true] span{forced-color-adjust:none;color:Highlight;background:HighlightText}.project-card:before{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.project-card:before{display:none}.project-card:hover,.project-card:focus-within,.button:hover,.art-node:hover,.art-node.is-active,.filter-button:hover,.theme-toggle:hover,.main-nav a:hover,.contact-links>a:hover{transform:none}}@media print{:root,:root[data-theme]{--paper: #fff;--ink: #000;--muted: #333;--line: #999;--surface: #fff;--accent: #8c2e21;--grid-line: transparent}.skip-link,.site-header,.theme-toggle,.filter-row,.scroll-cue,.hero-index,.hero-layer-panel,.case-pager{display:none}.site-shell{min-height:0;background:none}.hero{min-height:0;padding-block:1rem}.project-card{box-shadow:none;break-inside:avoid;animation:none}.project-card:before{display:none}.about-section,.contact-section{background:none}.about-section *,.contact-section *{color:#000!important}}main:focus{outline:none}.hero h1{max-width:12ch;margin:18px 0 0;line-height:1.02}.hero-intro{max-width:58ch;margin:22px 0 0;color:var(--muted);font-size:1.125rem;line-height:1.65}.hero-target{color:var(--ink)}.hero-layer-projects a{text-decoration:none}.hero-proof{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-width:600px;margin:28px 0 0;padding:0;list-style:none;border-block:1px solid var(--line)}.hero-proof li+li{border-left:1px solid var(--line)}.hero-proof a{display:grid;gap:4px;height:100%;padding:14px 14px 14px 0;text-decoration:none}.hero-proof li+li a{padding-left:16px}.hero-proof b{font:600 1.375rem/1.1 var(--display)}.hero-proof span{color:var(--muted);font-size:.8125rem;line-height:1.4}.hero-proof a:hover b{color:var(--accent)}.hero-email{color:var(--muted);font-size:.875rem}.hero-email:hover{color:var(--accent)}.hero-side{display:grid;justify-items:end;align-self:center;gap:8px}.hero-side .hero-art{max-width:400px}.hero-side .hero-layer-panel{width:min(100%,400px);margin-top:0}.code-block,.terminal-block{min-width:0;margin:14px 0 0;overflow:hidden;color:#e3ebdf;border:1px solid #2f3a33;border-radius:3px;background:#1c2420}.code-block-bar,.terminal-block-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:36px;padding:0 14px;color:#a9b6a6;border-bottom:1px solid rgba(255,255,255,.1);font:.75rem var(--mono)}.code-block-file{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-block-bar a{display:inline-flex;flex:0 0 auto;align-items:center;gap:6px;color:#d8efb2;text-decoration:none}.code-block-bar a:hover{text-decoration:underline;text-underline-offset:3px}.terminal-block-bar{justify-content:flex-start;gap:6px}.terminal-block-bar span{width:9px;height:9px;border-radius:50%;background:#4a564d}.terminal-block-bar b{margin-left:8px;font-weight:400}.code-block pre,.terminal-block pre{margin:0;padding:14px 16px 16px;overflow-x:auto;font:.8125rem/1.6 var(--mono);-moz-tab-size:2;tab-size:2}.code-block pre:focus-visible,.terminal-block pre:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}.code-block figcaption,.terminal-block figcaption{padding:10px 16px 12px;color:#b9c4b6;border-top:1px solid rgba(255,255,255,.1);font-size:.875rem;line-height:1.5}.project-visual--code{display:block;place-items:normal;padding:18px 20px 0;background-image:none;background-color:var(--paper)}.project-visual--code .code-block,.project-visual--code .terminal-block{height:calc(100% + 2px);margin:0;border-bottom:0}.project-visual--code pre{overflow:hidden;font-size:.75rem;line-height:1.55}.project-result{display:grid;gap:3px;margin:0 0 4px;padding:10px 12px;border-left:3px solid var(--accent);background:var(--paper);font-size:.9375rem;font-weight:600}.project-result span{color:var(--muted);font:.75rem var(--mono);font-weight:400}.project-card-trigger{text-decoration:none}.more-projects{margin-top:56px}.more-projects h3{margin:0 0 6px;font:600 1.375rem var(--display)}.more-projects ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.more-projects a{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(0,2fr) minmax(0,1fr) auto;align-items:center;gap:8px 24px;min-height:64px;padding:12px 4px;border-bottom:1px solid var(--line);text-decoration:none;transition:color .18s ease,background .18s ease}.more-projects a:hover{color:var(--accent);background:var(--surface)}.more-projects-name{font:600 1.0625rem var(--display)}.more-projects-subtitle{color:var(--muted);font-size:.9375rem}.more-projects-stack{color:var(--muted);font:.75rem var(--mono)}.more-projects a svg{color:var(--accent)}.active-skill-filter{margin:22px 0 0;color:var(--muted)}.active-skill-filter button{margin-left:10px;padding:4px 0;color:var(--accent);border:0;border-bottom:1px solid currentColor;background:transparent;font-weight:600;cursor:pointer}.skills-evidence-secondary .text-link{margin-top:18px;color:var(--accent)}.footer-built{color:var(--muted);font-size:.8125rem;text-underline-offset:3px}.footer-built:hover{color:var(--accent)}.case-page{padding:36px 0 96px}.case-breadcrumb a{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--muted);font-size:.9375rem;font-weight:600;text-decoration:none}.case-breadcrumb a:hover{color:var(--accent)}.case-page-header{max-width:900px;margin-top:18px}.case-page-header h1{margin:14px 0 0;font:600 clamp(2.5rem,1.8rem + 2.4vw,4rem)/1.04 var(--display)}.case-page-header .case-study-subtitle{max-width:60ch;font-size:1.1875rem}.case-page .case-study-at-a-glance{margin-top:26px}.case-page .case-study-links{margin-bottom:0;padding-bottom:0;border-bottom:0}.case-team{grid-column:1 / -1}.case-team dd{display:flex;gap:8px;align-items:baseline;font-weight:400}.case-team svg{flex:0 0 auto;color:var(--accent);transform:translateY(2px)}.case-architecture{margin-top:36px;padding:22px 0 6px;border-top:1px solid var(--line)}.case-architecture h2{margin:0;font:600 1.25rem var(--display)}.case-architecture ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px;margin:18px 0 0;padding:0;list-style:none;counter-reset:hop}.case-architecture li{position:relative;display:grid;gap:4px;padding:14px 16px;border:1px solid var(--line);background:var(--surface)}.case-architecture li:not(:last-child):after{content:"→";position:absolute;top:50%;right:-22px;color:var(--accent);font:1.125rem var(--mono);transform:translateY(-50%)}.case-architecture b{font:600 1rem var(--display)}.case-architecture span{color:var(--muted);font-size:.8125rem;line-height:1.45}.case-page .case-study-layout{margin-top:18px}.case-page .case-study-layout--text-only{grid-template-columns:minmax(0,1fr)}.case-page .case-study-sections section{padding:26px 0}.case-page .case-study-sidebar{position:sticky;top:calc(var(--header-height) + 20px)}.case-tradeoff{margin-top:4px;padding-inline:20px!important;border:0;border-left:3px solid var(--accent)!important;background:var(--surface)}.case-pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px}.case-pager a{display:grid;gap:6px;padding:18px 20px;border:1px solid var(--line);background:var(--surface);text-decoration:none}.case-pager a:last-child{text-align:right}.case-pager a:last-child span{justify-content:flex-end}.case-pager span{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.875rem}.case-pager b{font:600 1.25rem var(--display)}.case-pager a:hover{border-color:var(--accent)}.case-pager a:hover b{color:var(--accent)}.simple-page{padding:64px 0 110px}.simple-page h1{max-width:18ch;margin:14px 0 0;font:600 clamp(2.375rem,1.8rem + 2vw,3.5rem)/1.06 var(--display)}.simple-page>p,.simple-page-lead{max-width:60ch;margin:16px 0 28px;color:var(--muted);font-size:1.125rem;line-height:1.65}.built-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px;margin-bottom:36px;border-top:1px solid var(--line)}.built-grid section{padding:24px 0;border-bottom:1px solid var(--line)}.built-grid h2{margin:0;font:600 1.25rem var(--display)}.built-grid p{max-width:62ch;margin:10px 0 0;color:var(--muted);line-height:1.7}.built-page .text-link{color:var(--accent)}.resume-page{max-width:860px;padding:40px 0 100px}.resume-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px}.resume-download{min-height:44px}.resume-sheet{margin-top:18px;padding:36px 40px 40px;border:1px solid var(--line);background:var(--surface)}.resume-head h1{margin:0;font:600 2.5rem/1.1 var(--display)}.resume-role{margin:6px 0 0;color:var(--muted);font-size:1.125rem}.resume-contact{display:flex;flex-wrap:wrap;gap:4px 18px;margin:12px 0 0;font-size:.9375rem}.resume-contact a,.resume-links a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.resume-section{margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}.resume-section>h2{margin:0 0 12px;font:400 .875rem var(--mono);letter-spacing:.06em;text-transform:uppercase}.resume-section p{margin:6px 0 0;line-height:1.6}.resume-muted{color:var(--muted);font-size:.9375rem}.resume-row-split{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px}.resume-row-split span{color:var(--muted);font:.8125rem var(--mono)}.resume-skills{display:grid;gap:8px;margin:0}.resume-skills div{display:grid;grid-template-columns:minmax(150px,.35fr) 1fr;gap:4px 16px}.resume-skills dt{font-weight:600}.resume-skills dd{margin:0;color:var(--muted)}.resume-project+.resume-project{margin-top:22px;padding-top:18px;border-top:1px dashed var(--line)}.resume-links{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:.875rem;font-weight:600}.resume-links a{display:inline-flex;align-items:center;gap:4px;min-height:28px}.resume-stack{color:var(--muted);font:.8125rem/1.5 var(--mono)}.resume-project ul{margin:10px 0 0;padding-left:20px}.resume-project li{margin:6px 0;line-height:1.6}.print-only{display:none}@media(max-width:1100px){.case-architecture ol{grid-template-columns:repeat(2,minmax(0,1fr))}.case-architecture li:nth-child(2):after{content:none}.more-projects a{grid-template-columns:minmax(140px,.8fr) minmax(0,2fr) auto}.more-projects-stack{display:none}}@media(max-width:900px){.hero-side{justify-items:stretch;margin-top:36px}.hero-side .hero-art{justify-self:center}.hero-side .hero-layer-panel{width:100%}.case-page .case-study-sidebar{position:static}.built-grid{grid-template-columns:1fr}}@media(max-width:620px){.hero-side{display:none}.hero-intro{font-size:1rem}.hero-proof{grid-template-columns:1fr;border-bottom:0}.hero-proof li{border-bottom:1px solid var(--line)}.hero-proof li+li{border-left:0}.hero-proof a,.hero-proof li+li a{grid-template-columns:7.5rem 1fr;align-items:baseline;padding:11px 0}.hero-proof b{font-size:1.125rem}.hero-email{flex-basis:100%}.more-projects a{grid-template-columns:1fr auto;gap:2px 12px}.more-projects-name{grid-column:1}.more-projects-subtitle{grid-column:1;grid-row:2;font-size:.875rem}.more-projects a svg{grid-column:2;grid-row:1 / span 2}.case-page{padding:18px 0 64px}.case-page .case-study-layout{grid-template-columns:minmax(0,1fr)}.case-architecture ol{grid-template-columns:1fr;gap:22px}.case-architecture li:not(:last-child):after{content:"→";display:block;top:auto;right:auto;bottom:-24px;left:18px;transform:rotate(90deg)}.case-pager{grid-template-columns:1fr}.case-pager a:last-child{text-align:left}.case-pager a:last-child span{justify-content:flex-start}.code-block pre,.terminal-block pre{font-size:.75rem}.resume-sheet{padding:22px 18px 26px}.resume-head h1{font-size:2rem}.resume-skills div{grid-template-columns:1fr}.site-footer .footer-built{display:none}}@media print{@page{size:letter;margin:.42in .5in}.site-header,.site-footer,.skip-link,.resume-toolbar{display:none!important}.print-only{display:inline}.resume-page{max-width:none;padding:0}.resume-sheet{margin:0;padding:0;border:0;background:none;font-size:9.5pt}.resume-sheet p,.resume-sheet li,.resume-sheet dd,.resume-sheet dt,.resume-muted{font-size:9.5pt}.resume-skills{gap:2px}.resume-head h1{font-size:20pt}.resume-role{font-size:11pt}.resume-contact{margin-top:6px;font-size:9pt}.resume-section{margin-top:8px;padding-top:6px}.resume-section>h2{margin-bottom:6px;font-size:9pt}.resume-section p,.resume-project li{margin-top:1px;line-height:1.26}.resume-project li{font-size:9.2pt}.resume-project ul{padding-left:15px}.resume-project+.resume-project{margin-top:6px;padding-top:6px}.resume-project li{margin:2px 0}.resume-project ul{margin-top:4px}.resume-links{display:inline-flex;min-height:0;margin-right:14px!important;font-size:8.5pt}.resume-links+.resume-stack{display:inline}.resume-links a{min-height:0}.resume-links svg{display:none}.resume-stack,.resume-row-split span{font-size:8.5pt}.resume-skills div{grid-template-columns:1.4in 1fr}.resume-project{break-inside:avoid}}.page-loading{min-height:70vh}:not(pre)>code{padding:.1em .35em;border:1px solid var(--line);border-radius:3px;background:var(--paper);font:.875em var(--mono);overflow-wrap:anywhere}.limiter-demo{margin-top:36px;padding:26px 28px 28px;border:1px solid var(--line);border-top:3px solid var(--accent);background:var(--surface)}.limiter-demo-head h2{margin:0;font:600 1.5rem var(--display)}.limiter-demo-head p{max-width:68ch;margin:8px 0 0;color:var(--muted);line-height:1.6}.limiter-mode{display:flex;flex-wrap:wrap;gap:8px 24px;margin:20px 0 0;padding:0;border:0}.limiter-mode legend{margin-bottom:8px;padding:0;color:var(--muted);font:.75rem var(--mono)}.limiter-mode label{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:600;cursor:pointer}.limiter-mode label span{color:var(--muted);font-weight:400}.limiter-mode input{width:18px;height:18px;accent-color:var(--accent)}.limiter-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px}.limiter-actions .button{cursor:pointer;border-width:1px;border-style:solid}.limiter-actions .button-primary{border-color:var(--accent)}.limiter-reset{min-height:44px;padding:0 8px;color:var(--muted);border:0;background:none;cursor:pointer}.limiter-reset:hover{color:var(--accent)}.limiter-meters{display:grid;grid-template-columns:minmax(0,1fr);gap:18px 28px;margin-top:22px}.limiter-meter-title{display:flex;justify-content:space-between;gap:12px;font-size:.9375rem}.limiter-meter-title span{color:var(--muted);font:.8125rem var(--mono);white-space:nowrap}.limiter-bar,.limiter-window-bar{height:12px;margin-top:8px;overflow:hidden;border:1px solid var(--line);background:var(--paper)}.limiter-bar span,.limiter-window-bar span{display:block;height:100%;background:var(--positive);transition:width .2s linear}.limiter-bar.is-full span{background:var(--accent)}.limiter-window-bar{height:6px}.limiter-window-bar span{background:var(--muted)}.limiter-meters--2{grid-template-columns:repeat(2,minmax(0,1fr))}.limiter-window{grid-column:1 / -1;color:var(--muted);font:.75rem var(--mono)}.limiter-math{margin:8px 0 0;color:var(--muted);font:.75rem/1.5 var(--mono);overflow-wrap:anywhere}.limiter-log{display:grid;gap:0;margin:22px 0 0;padding:0;list-style:none;border-top:1px solid var(--line);font-size:.875rem}.limiter-log li{display:grid;grid-template-columns:minmax(120px,.8fr) 1.4fr .8fr;gap:12px;padding:8px 2px;border-bottom:1px solid var(--line)}.limiter-log li b{color:var(--positive);font:400 .875rem var(--mono)}.limiter-log li.is-limited b{color:var(--accent)}.limiter-log li>span:last-child{color:var(--muted);text-align:right}.limiter-log .limiter-log-empty{display:block;color:var(--muted)}.case-video{margin:32px 0 0}.case-video video{display:block;width:100%;height:auto;border:1px solid var(--line);background:#1c2420}.case-video figcaption{margin-top:8px;color:var(--muted);font-size:.875rem}.case-notes a{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;margin-top:12px;padding:14px 16px;border:1px solid var(--line);background:var(--surface);text-decoration:none}.case-notes a:hover{border-color:var(--accent)}.case-notes b{font:600 1.0625rem var(--display)}.case-notes span{color:var(--muted);font:.75rem var(--mono)}.notes-section{padding-top:40px;padding-bottom:110px}.notes-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:36px;align-items:start;margin-top:30px}.note-list{display:grid;gap:14px;margin:0;padding:0;list-style:none}.note-list a{display:grid;gap:6px;padding:18px 20px;border:1px solid var(--line);background:var(--surface);text-decoration:none;transition:border-color .18s ease}.note-list a:hover{border-color:var(--accent)}.note-meta{color:var(--muted);font:.75rem var(--mono)}.note-list b{font:600 1.25rem/1.25 var(--display)}.note-summary{color:var(--muted);line-height:1.6}.note-read{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:.875rem;font-weight:600}.github-activity{padding:18px 20px;border:1px solid var(--line);background:var(--surface)}.github-activity-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px}.github-activity-head h3{display:flex;align-items:center;gap:8px;margin:0;font:600 1.125rem var(--display)}.github-activity-head span{color:var(--muted);font:.75rem var(--mono)}.github-activity ul{margin:12px 0 0;padding:0;list-style:none}.github-activity li+li{border-top:1px solid var(--line)}.github-activity a{display:grid;gap:3px;padding:11px 0;text-decoration:none}.github-repo-name{display:inline-flex;align-items:center;gap:5px;font-weight:600;overflow-wrap:anywhere}.github-activity a:hover .github-repo-name{color:var(--accent)}.github-repo-description{color:var(--muted);font-size:.875rem;line-height:1.45}.github-repo-meta{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--muted);font:.75rem var(--mono)}.note-page{max-width:760px;padding:36px 0 100px}.note-header{margin-top:18px;padding-bottom:24px;border-bottom:1px solid var(--line)}.note-header h1{margin:14px 0 0;font:600 clamp(2rem,1.5rem + 1.8vw,3rem)/1.1 var(--display)}.note-standfirst{margin:16px 0 0;color:var(--muted);font-size:1.1875rem;line-height:1.6}.note-byline{margin:14px 0 0;color:var(--muted);font:.8125rem var(--mono)}.note-body{margin-top:10px}.note-body>p,.note-body>ul{max-width:68ch;font-size:1.0625rem;line-height:1.75}.note-body>p{margin:18px 0 0}.note-body>ul{margin:14px 0 0;padding-left:22px}.note-body>ul li+li{margin-top:8px}.note-body>h2{margin:38px 0 0;font:600 1.375rem var(--display)}.note-body .code-block{margin:20px 0 0}.note-footer{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:48px;padding-top:24px;border-top:1px solid var(--line)}.note-footer-link{display:grid;gap:6px;padding:16px 18px;border:1px solid var(--line);background:var(--surface);text-decoration:none}.note-footer-link span{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.8125rem}.note-footer-link b{font:600 1.0625rem/1.3 var(--display)}.note-footer-link:hover{border-color:var(--accent)}.note-list--page{margin-top:8px}.notes-layout:not(:has(.github-activity)){grid-template-columns:minmax(0,1fr);max-width:860px}@media(max-width:900px){.notes-layout{grid-template-columns:minmax(0,1fr)}}@media(max-width:620px){.limiter-demo{padding:20px 16px 22px}.limiter-meters--2{grid-template-columns:minmax(0,1fr)}.limiter-actions .button{flex:1 1 auto}.limiter-log li{grid-template-columns:1fr auto}.limiter-log li>span:first-child{grid-column:1 / -1;color:var(--muted);font-size:.8125rem}.notes-section{padding-bottom:72px}.note-page{padding:18px 0 64px}.note-body>p,.note-body>ul{font-size:1rem}}
