@font-face{font-family:Excalifont;src:url(/fonts/excalifont-latin.woff2) format("woff2");font-display:swap;font-weight:400}:root{--paper: #fbfaf6;--paper-raised: #ffffff;--ink: #1e1e1e;--ink-2: #454545;--muted: #6b6b6b;--line: #d9d5cc;--grid: #e4e0d6;--edge: #8a8a8a;--pen: #c92a2a;--pen-blue: #1864ab;--focus: #1971c2;--fill-yellow: #ffec99;--fill-blue: #a5d8ff;--fill-green: #b2f2bb;--fill-red: #ffc9c9;--fill-violet: #d0bfff;--fill-orange: #ffd8a8;--fill-teal: #96f2d7;--hand: "Excalifont", "Comic Neue", "Segoe Print", cursive;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--max: 1180px;--gutter: clamp(16px, 4vw, 40px);--wobble: 255px 12px 225px 12px / 12px 225px 12px 255px;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:4.5rem;-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:1rem;line-height:1.5;overflow-x:clip;-webkit-font-smoothing:antialiased}a{color:var(--pen-blue);text-underline-offset:3px}a:hover{color:var(--pen)}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}main:focus{outline:none}.hand-text{font-family:var(--hand)}.skip-link{position:absolute;left:1rem;top:-4rem;z-index:50;background:var(--ink);color:var(--paper);padding:.6rem 1rem;border-radius:6px}.skip-link:focus{top:1rem}.eyebrow{font-family:var(--mono);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin:0}.section{border-bottom:1.5px solid var(--line)}.section__inner{max-width:var(--max);margin:0 auto;padding:clamp(3.5rem,8vw,6rem) var(--gutter)}.section__title{font-family:var(--hand);font-weight:400;font-size:clamp(2rem,4.2vw,3rem);line-height:1.12;margin:.5rem 0 .9rem;max-width:24ch;text-wrap:balance}.section__title--sub{margin-top:clamp(3rem,6vw,4.5rem);font-size:clamp(1.7rem,3.4vw,2.4rem)}.section__lede{font-size:1.08rem;line-height:1.6;color:var(--ink-2);max-width:62ch;margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:.6rem 1.2rem;font:inherit;font-family:var(--hand);font-size:1.15rem;color:var(--ink);background:var(--paper-raised);border:2px solid var(--ink);border-radius:var(--wobble);text-decoration:none;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.btn:hover{color:var(--ink);background:var(--fill-yellow);transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.btn--primary{background:var(--ink);color:var(--paper)}.btn--primary:hover{background:var(--ink);color:var(--paper);box-shadow:3px 3px 0 var(--pen)}.btn--ghost{border-style:dashed;background:transparent}.btn--small{min-height:40px;font-size:1rem;padding:.4rem .9rem}.footer{background:var(--paper)}.footer__inner{max-width:var(--max);margin:0 auto;padding:2rem var(--gutter) 2.5rem;display:flex;flex-wrap:wrap;gap:.5rem 2rem;font-size:.88rem;color:var(--ink-2)}.footer__inner p{margin:0}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}.nav{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:saturate(1.2) blur(6px);backdrop-filter:saturate(1.2) blur(6px);border-bottom:1.5px solid var(--line)}.nav__inner{max-width:var(--max);margin:0 auto;padding:.7rem var(--gutter);display:flex;align-items:center;gap:1.5rem}.nav__brand{font-family:var(--hand);font-size:1.35rem;color:var(--ink);text-decoration:none;white-space:nowrap}.nav__links{margin-left:auto}.nav__links ul{display:flex;gap:1.4rem;list-style:none;margin:0;padding:0}.nav__links a{font-size:.92rem;color:var(--ink-2);text-decoration:none;padding:.35rem 0}.nav__links a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--pen);text-decoration-thickness:2px;text-underline-offset:5px}.nav__lang{font-family:var(--mono);font-size:.82rem;color:var(--ink);text-decoration:none;border:1.5px solid var(--ink);border-radius:var(--wobble);padding:.3rem .6rem;min-width:44px;text-align:center}.nav__lang:hover{background:var(--fill-yellow)}@media(max-width:760px){.nav__links{display:none}.nav__lang{margin-left:auto}}.hero{position:relative;background-image:radial-gradient(var(--grid) 1.1px,transparent 1.1px);background-size:22px 22px;border-bottom:1.5px solid var(--line)}.hero__inner{max-width:var(--max);margin:0 auto;padding:clamp(3rem,8vw,6.5rem) var(--gutter) clamp(3rem,6vw,5rem)}.hero__top{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(2rem,4vw,4rem);align-items:center}.hero__sketch .flow{display:block;width:100%;max-width:460px;height:auto;margin-left:auto}.hero__title{font-family:var(--hand);font-weight:400;font-size:clamp(2rem,4.8vw,3.9rem);line-height:1.08;letter-spacing:-.01em;margin:.6rem 0 1.4rem;max-width:18ch;text-wrap:balance}.hero__mark{position:relative;display:inline-block;white-space:nowrap;color:var(--pen)}.hero__mark .underline{position:absolute;left:-2%;bottom:-.18em;width:104%;height:.28em}.hero__lede{font-size:clamp(1.05rem,1.6vw,1.2rem);line-height:1.6;color:var(--ink-2);max-width:62ch;margin:0}.hero__metrics-wrap{position:relative;margin-top:clamp(2.5rem,5vw,3.5rem)}.hero__note{font-family:var(--hand);color:var(--pen);font-size:1.15rem;margin:0 0 .4rem;display:flex;align-items:flex-end;gap:.2rem}.hero__note .hand-arrow{transform:scaleX(-1) rotate(-12deg);margin-bottom:-1.4rem}.hero__metrics{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2.4vw,1.75rem)}.metric{background:var(--paper-raised);border:2px solid var(--ink);border-radius:var(--wobble);padding:1.1rem 1.2rem 1.2rem;display:flex;flex-direction:column;gap:.35rem}.metric:nth-child(1){box-shadow:5px 5px 0 var(--fill-yellow)}.metric:nth-child(2){box-shadow:5px 5px 0 var(--fill-blue)}.metric:nth-child(3){box-shadow:5px 5px 0 var(--fill-green)}.metric__value{font-family:var(--hand);font-size:clamp(2.2rem,4.2vw,3rem);line-height:1}.metric__label{font-size:.95rem;line-height:1.45;color:var(--ink-2)}.hero__ctas{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.4rem}@media(max-width:1000px){.hero__top{grid-template-columns:1fr}.hero__sketch .flow{margin:0 auto;max-width:380px}}@media(max-width:760px){.hero__metrics{grid-template-columns:1fr}.hero__note .hand-arrow{display:none}}.graph__canvas{margin-top:2.25rem;border:2px solid var(--ink);border-radius:var(--wobble);background:var(--paper-raised);background-image:radial-gradient(var(--grid) 1px,transparent 1px);background-size:20px 20px;padding:clamp(.5rem,2vw,1.5rem)}.graph__canvas svg{display:block;width:100%;height:auto}.edge{color:var(--edge);transition:opacity .25s ease,color .25s ease}.edge path{fill:none;stroke:currentColor;stroke-width:1.4}.graph__canvas[data-active] .edge{opacity:.05}.graph__canvas[data-active] .edge.is-on{opacity:1;color:var(--pen)}.graph__canvas[data-active] .edge.is-on path{stroke-width:3}.gnode--skill.is-dim{opacity:.35}.gnode--project.is-on .gnode__backing{fill:var(--fill-yellow)}.gnode__backing{fill:var(--paper-raised)}.gnode{transition:opacity .25s ease;cursor:pointer}.graph__canvas[data-active] .gnode--project:not(.is-on){opacity:.25}.gnode--skill.is-on .gnode__backing{fill:var(--fill-yellow)}.gnode--project:hover .hand-text{text-decoration:underline}.graph__chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.25rem}.chip{font:inherit;font-size:.92rem;color:var(--ink);background:var(--paper-raised);border:1.5px solid var(--ink);border-radius:999px;padding:.45rem .9rem;min-height:40px;cursor:pointer}.chip:hover,.chip[aria-pressed=true]{background:var(--fill-yellow)}.graph__proof{min-height:3.2rem;margin-top:1rem;font-size:1rem;line-height:1.55}.graph__proof p{margin:0}.graph__proof-label{font-family:var(--hand);font-size:1.2rem;color:var(--pen)}.graph__proof-hint{font-family:var(--hand);font-size:1.15rem;color:var(--muted)}@media(max-width:760px){.graph__canvas{display:none}}.case-grid{list-style:none;margin:2rem 0 0;padding:0;display:grid;gap:clamp(1rem,2.4vw,1.75rem)}.case-grid--prod{grid-template-columns:repeat(3,minmax(0,1fr))}.case-grid--personal{grid-template-columns:repeat(2,minmax(0,1fr))}.case-card{position:relative;display:flex;flex-direction:column;gap:.75rem;background:var(--paper-raised);border:2px solid var(--ink);border-radius:var(--wobble);padding:1.4rem 1.4rem 1.3rem;transition:transform .18s ease,box-shadow .18s ease}.case-card--prod{box-shadow:6px 6px 0 var(--fill-red)}.case-card--personal{box-shadow:6px 6px 0 var(--fill-blue)}.case-card:hover,.case-card:focus-within{transform:translate(-2px,-2px)}.case-card--prod:hover,.case-card--prod:focus-within{box-shadow:8px 8px 0 var(--fill-red)}.case-card--personal:hover,.case-card--personal:focus-within{box-shadow:8px 8px 0 var(--fill-blue)}.case-card__badge{align-self:flex-start;font-family:var(--mono);font-size:.75rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);border:1.5px dashed var(--muted);border-radius:6px;padding:.15rem .5rem}.case-card__title{font-family:var(--hand);font-weight:400;font-size:1.6rem;line-height:1.15;margin:0}.case-card__title a{color:var(--ink);text-decoration:none}.case-card__title a:after{content:"";position:absolute;inset:0;border-radius:inherit}.case-card__title a:focus-visible{outline:none}.case-card:focus-within{outline:3px solid var(--focus);outline-offset:4px}.case-card__summary{margin:0;color:var(--ink-2);line-height:1.55;font-size:.98rem}.case-card__metric{margin:auto 0 0;padding-top:.9rem;border-top:1.5px dashed var(--line);display:flex;align-items:baseline;gap:.6rem}.case-card__value{font-family:var(--hand);font-size:2rem;line-height:1;color:var(--pen);white-space:nowrap}.case-card__label{font-size:.9rem;color:var(--ink-2);line-height:1.35}.case-card__cta{font-family:var(--hand);font-size:1.1rem;color:var(--ink)}@media(max-width:980px){.case-grid--prod{grid-template-columns:1fr}}@media(max-width:760px){.case-grid--personal{grid-template-columns:1fr}}.method__diagram{margin-top:2rem}.method__diagram svg{display:block;width:100%;height:auto}.method__steps{list-style:none;margin:1.5rem 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem 2rem}.method__steps li{display:grid;grid-template-columns:auto 1fr;column-gap:.75rem;align-items:baseline}.method__num{grid-row:span 2;font-family:var(--hand);font-size:1.3rem;width:2.1rem;height:2.1rem;display:grid;place-items:center;border:2px solid var(--ink);border-radius:50% 45% 52% 48%/48% 52% 46% 54%;background:var(--dot)}.method__label{font-family:var(--hand);font-weight:400;font-size:1.35rem;margin:0}.method__steps p{margin:.25rem 0 0;color:var(--ink-2);line-height:1.55;font-size:.97rem}@media(max-width:900px){.method__diagram{display:none}.method__steps{grid-template-columns:1fr}}.path__grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:clamp(2rem,5vw,4rem);margin-top:2.25rem}.timeline{list-style:none;margin:0;padding:0 0 0 1.6rem;border-left:2px dashed var(--ink)}.timeline__item{position:relative;padding-bottom:2rem}.timeline__item:before{content:"";position:absolute;left:calc(-1.6rem - 9px);top:.2rem;width:14px;height:14px;border:2px solid var(--ink);border-radius:50% 42% 55% 45%;background:var(--paper)}.timeline__item.is-current:before{background:var(--fill-red)}.timeline__period{font-family:var(--mono);font-size:.82rem;color:var(--ink-2);margin:0}.timeline__role{font-family:var(--hand);font-weight:400;font-size:1.45rem;line-height:1.2;margin:.3rem 0 .1rem}.timeline__org{margin:0 0 .6rem;font-weight:600}.timeline__bullets{margin:0;padding-left:1.1rem;color:var(--ink-2);line-height:1.55}.timeline__bullets li+li{margin-top:.35rem}.path__side{display:flex;flex-direction:column;gap:1.75rem}.path__block p{margin:.2rem 0;line-height:1.5}.path__heading{font-family:var(--hand);font-weight:400;font-size:1.35rem;margin:0 0 .4rem;color:var(--pen)}.path__strong{font-weight:600}.path__status{background:linear-gradient(transparent 58%,var(--fill-yellow) 58%)}.path__list{margin:0;padding-left:1.1rem;line-height:1.5;color:var(--ink-2)}.path__list li+li{margin-top:.3rem}@media(max-width:860px){.path__grid{grid-template-columns:1fr}}.contact{background:var(--paper-raised);background-image:radial-gradient(var(--grid) 1.1px,transparent 1.1px);background-size:22px 22px}.contact__title{max-width:20ch}.contact__email{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:2rem}.contact__mail{position:relative;font-family:var(--hand);font-size:clamp(1.25rem,3.4vw,2rem);color:var(--ink);text-decoration:none;padding:.6rem 1rem;overflow-wrap:anywhere}.contact__mail .scribble{position:absolute;inset:-4px -10px;width:calc(100% + 20px);height:calc(100% + 8px);pointer-events:none}.contact__mail:hover{color:var(--pen)}.contact__location{margin:1.5rem 0 0;font-family:var(--mono);font-size:.85rem;color:var(--ink-2)}.case__header{border-bottom:1.5px solid var(--line);background-image:radial-gradient(var(--grid) 1.1px,transparent 1.1px);background-size:22px 22px}.case__header-inner{max-width:var(--max);margin:0 auto;padding:clamp(2rem,5vw,3.5rem) var(--gutter) clamp(2rem,4vw,3rem)}.case__back{font-family:var(--hand);font-size:1.1rem;color:var(--ink-2);text-decoration:none}.case__back:hover{color:var(--pen)}.case__badge{font-family:var(--mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);margin:1.5rem 0 .4rem}.case__title{font-family:var(--hand);font-weight:400;font-size:clamp(2.2rem,5vw,3.6rem);line-height:1.08;margin:0 0 1rem;max-width:22ch}.case__summary{font-size:clamp(1.05rem,1.6vw,1.2rem);line-height:1.6;color:var(--ink-2);max-width:65ch;margin:0}.case__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1.25rem 2rem;margin:2rem 0 0}.case__meta-stack{grid-column:1 / -1}.case__meta dt{font-family:var(--hand);font-size:1.1rem;color:var(--pen)}.case__meta dd{margin:.2rem 0 0;line-height:1.45}.tags{list-style:none;padding:0;margin:.2rem 0 0;display:flex;flex-wrap:wrap;gap:.4rem}.tags li{font-family:var(--mono);font-size:.8rem;border:1.5px solid var(--ink);border-radius:var(--wobble);padding:.18rem .55rem;background:var(--paper-raised)}.case__links{display:flex;gap:1rem;flex-wrap:wrap}.case__body{max-width:var(--max);margin:0 auto;padding:clamp(2rem,5vw,4rem) var(--gutter) clamp(3rem,6vw,5rem);display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:clamp(2rem,4vw,3.5rem);align-items:start}.case__diagram{min-width:0;position:sticky;top:4.75rem;align-self:start}.case__diagram-scroll{border:2px solid var(--ink);border-radius:var(--wobble);background:var(--paper-raised);padding:.75rem}.flow{display:block;width:100%;height:auto}.flow__el{transition:opacity .45s ease}.case__diagram-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.75rem}.case__step{font-family:var(--hand);font-size:1.1rem;color:var(--pen);margin:0}.case__dialog{width:min(96vw,1200px);max-height:94vh;border:2px solid var(--ink);border-radius:12px;background:var(--paper-raised);padding:1rem 1.25rem 1.5rem}.case__dialog::backdrop{background:#1e1e1e8c}.case__dialog form{display:flex;justify-content:flex-end;margin-bottom:.5rem}.case__swipe{display:none;font-family:var(--hand);color:var(--pen);margin:0 0 .5rem}.case__text{min-width:0}.case__section{padding-bottom:clamp(2rem,8vh,4.5rem)}.case__section h2{font-family:var(--hand);font-weight:400;font-size:1.9rem;margin:0 0 .75rem}.case__section h3{font-size:1.02rem;font-weight:600;margin:1rem 0 .3rem}.case__section p,.case__list{line-height:1.65;color:var(--ink-2);margin:0}.decision{border-left:3px solid var(--fill-orange);padding-left:.9rem;margin-top:1.1rem}.decision h3{margin-top:0}.case__list{padding-left:1.15rem}.case__list li+li{margin-top:.5rem}.case__list code{font-family:var(--mono);font-size:.86em;background:var(--fill-yellow);padding:.05rem .3rem;border-radius:4px;color:var(--ink)}.result-metrics{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-direction:column;gap:.9rem}.result-metrics li{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap}.result-metrics__value{font-family:var(--hand);font-size:2.4rem;line-height:1;color:var(--pen)}.result-metrics__label{color:var(--ink-2);line-height:1.4;flex:1 1 12rem}.estimate{font-style:normal;font-family:var(--mono);font-size:.8rem;color:var(--ink);background:var(--fill-yellow);padding:0 .3rem;border-radius:4px}.case__next{display:flex;flex-direction:column;gap:.2rem;border:2px solid var(--ink);border-radius:var(--wobble);padding:1rem 1.2rem;text-decoration:none;color:var(--ink);background:var(--paper-raised);box-shadow:5px 5px 0 var(--fill-green)}.case__next span{font-family:var(--mono);font-size:.8rem;color:var(--ink-2)}.case__next strong{font-family:var(--hand);font-weight:400;font-size:1.4rem}.case__next:hover{transform:translate(-2px,-2px)}@media(min-width:900px)and (prefers-reduced-motion:no-preference){.js .flow[data-current="0"] :is([data-step="1"],[data-step="2"],[data-step="3"],[data-step="4"]),.js .flow[data-current="1"] :is([data-step="2"],[data-step="3"],[data-step="4"]),.js .flow[data-current="2"] :is([data-step="3"],[data-step="4"]),.js .flow[data-current="3"] [data-step="4"]{opacity:.07}}@media(max-width:899px){.case__body{grid-template-columns:1fr}.case__diagram{position:static}.case__diagram-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.case__diagram-scroll .flow{min-width:640px}.case__step{display:none}.case__diagram-bar{justify-content:flex-end}.case__swipe{display:block}}
