@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}:root{--bg: #eef1f5;--surface: #f9fbfd;--ink: #101c2c;--muted: #46566b;--line: #b7c2d0;--grid: rgba(16, 28, 44, .05);--accent: #1a45c0;--accent-ink: #ffffff;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--step--1: .8125rem;--step-0: 1.0625rem;--step-1: 1.3125rem;--step-2: 1.75rem;--step-3: clamp(2rem, 1.2rem + 3.6vw, 3.5rem);--gutter: clamp(1rem, 4vw, 2.5rem);--cell: 24px;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0a1626;--surface: #0f2037;--ink: #e4ecf6;--muted: #a2b3c9;--line: #2d4463;--grid: rgba(143, 184, 255, .055);--accent: #8fb8ff;--accent-ink: #0a1626;color-scheme:dark}}:root[data-theme=dark]{--bg: #0a1626;--surface: #0f2037;--ink: #e4ecf6;--muted: #a2b3c9;--line: #2d4463;--grid: rgba(143, 184, 255, .055);--accent: #8fb8ff;--accent-ink: #0a1626;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:1.5rem}body{margin:0;background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:var(--cell) var(--cell);color:var(--ink);font-family:var(--sans);font-size:var(--step-0);line-height:1.6}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}h1,h2,h3{font-weight:600;line-height:1.15;text-wrap:balance}h2{font-size:var(--step-2);letter-spacing:-.01em}h3{font-size:var(--step-1)}a{color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}img,video,svg{display:block;max-width:100%;height:auto}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.muted{color:var(--muted)}.label,.spec thead th,.title-block dt,.case-sections dt,.skills dt,.job-when,.fig-n{font-family:var(--mono);font-size:var(--step--1);font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.page{max-width:72rem;margin-inline:auto;padding-inline:var(--gutter)}.skip{position:absolute;left:var(--gutter);top:-4rem;padding:.5rem .75rem;background:var(--accent);color:var(--accent-ink)}.skip:focus{top:.5rem}.header{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;padding-block:1rem;border-bottom:1px solid var(--line)}.brand{font-family:var(--mono);font-weight:500;color:var(--ink);text-decoration:none}.brand span{color:var(--accent)}.header nav{order:3;flex-basis:100%}.nav{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;font-size:.9375rem}.nav a{display:inline-block;padding-block:.4rem;color:var(--ink);text-decoration:none}.nav a:hover{color:var(--accent);text-decoration:underline}.tools{display:flex;gap:.5rem;margin-inline-start:auto}.tool{display:inline-grid;place-items:center;min-width:2.5rem;min-height:2.5rem;padding:0 .6rem;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-family:var(--mono);font-size:var(--step--1);text-decoration:none;cursor:pointer}.tool:hover{border-color:var(--accent);color:var(--accent)}.hero{display:grid;grid-template-columns:minmax(0,1fr);gap:2.5rem;padding-block:clamp(2.5rem,7vw,5rem)}.hero-main{display:grid;gap:1.25rem;min-width:0}.hero h1{display:grid;gap:.75rem}.hero-name{font-family:var(--mono);font-size:var(--step-0);font-weight:500;letter-spacing:0;color:var(--accent)}.hero-claim{font-size:var(--step-3);letter-spacing:-.02em;line-height:1.05}.lead{max-width:62ch;color:var(--muted)}.actions{display:flex;flex-wrap:wrap;gap:.75rem}.btn{display:inline-flex;align-items:center;min-height:2.75rem;padding:0 1.1rem;border:1px solid var(--ink);background:var(--surface);color:var(--ink);font-weight:600;font-size:.9375rem;text-decoration:none}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-primary,.btn-primary:hover{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{text-decoration:underline}.title-block{align-self:end;border:1px solid var(--ink);background:var(--surface);font-size:.9375rem}.title-block>div{display:grid;grid-template-columns:7.5rem minmax(0,1fr);border-top:1px solid var(--line)}.title-block>div:first-child{border-top:0}.title-block dt,.title-block dd{padding:.55rem .75rem}.title-block dt{border-right:1px solid var(--line);padding-top:.7rem}.section{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem;padding-block:clamp(2.5rem,6vw,4rem);border-top:1px solid var(--line)}.section-head{display:grid;gap:.5rem}.section-head p{max-width:62ch;color:var(--muted)}.sub{margin-top:.5rem}.case{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem 2.5rem;padding:clamp(1.25rem,3vw,2rem);border:1px solid var(--line);background:var(--surface)}.case:before,.case:after{content:"";position:absolute;width:.75rem;height:.75rem;border:2px solid var(--ink);pointer-events:none}.case:before{top:-1px;left:-1px;border-right:0;border-bottom:0}.case:after{right:-1px;bottom:-1px;border-left:0;border-top:0}.case-head{display:grid;gap:.6rem}.tags{display:flex;flex-wrap:wrap;gap:.5rem}.tag{padding:.15rem .5rem;border:1px solid var(--line);font-family:var(--mono);font-size:var(--step--1);color:var(--muted)}.tag-status{border-color:var(--accent);color:var(--accent)}.case-summary{max-width:62ch;color:var(--muted)}.case-body{display:grid;gap:1.25rem;align-content:start;min-width:0}.case-sections{display:grid;gap:1rem}.case-sections dt{margin-bottom:.2rem}.case-sections dd,.points{max-width:62ch}.points{display:grid;gap:.5rem;font-size:.9875rem}.points li{padding-left:1.25rem;position:relative}.points li:before{content:"";position:absolute;left:0;top:.7em;width:.6rem;border-top:1px solid var(--ink)}.case-body>.label{margin-bottom:-.75rem}.stack{display:flex;flex-wrap:wrap;gap:.35rem 0;font-family:var(--mono);font-size:.875rem}.stack li:not(:last-child):after{content:"·";margin-inline:.6rem;color:var(--muted)}.links{display:flex;flex-wrap:wrap;gap:.25rem 1.5rem;font-weight:600}.links a{display:inline-block;padding-block:.35rem}.figure{display:grid;gap:.6rem;align-content:start;min-width:0}.figure-frame{padding:1rem;border:1px solid var(--line);background:var(--bg)}.figure-frame img,.figure-frame video{width:100%}.figure-shot{padding:.5rem}.figure-shot img{width:auto;margin-inline:auto}.shots{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem;grid-column:1 / -1;padding-top:1.5rem;border-top:1px solid var(--line)}.case-lead .case-head{order:-2}.case-lead .shots{order:-1;padding-top:0;border-top:0}.case-lead .figure-shot img{width:100%}.figure figcaption{font-size:.875rem;color:var(--muted)}.fig-n{margin-right:.35rem;color:var(--ink)}.diagram{width:100%;max-width:26rem;margin-inline:auto}.d-box{fill:var(--surface);stroke:var(--ink);stroke-width:1.25}.d-box-end{stroke:var(--accent);stroke-width:2}.d-box-cancel{stroke-dasharray:5 4}.d-line{stroke:var(--ink);stroke-width:1.25}.d-dash{stroke-dasharray:5 4}.d-cross{stroke-width:2}.d-fill{fill:var(--ink)}.d-text,.d-note{font-family:var(--mono);font-size:12px;fill:var(--ink)}.d-note{font-size:11px;fill:var(--muted)}.spec{width:100%;border-collapse:collapse;font-size:.9375rem;text-align:left}.spec th,.spec td{padding:.6rem .5rem;border-bottom:1px solid var(--line);vertical-align:top}.spec tbody th{font-weight:400}.spec td{font-weight:600}.spec tbody tr:last-child>*{border-bottom:0}.jobs{display:grid;gap:0}.jobs li{display:grid;grid-template-columns:minmax(0,1fr);gap:.25rem 2rem;padding-block:1.25rem;border-top:1px solid var(--line)}.jobs li:first-child{border-top:0;padding-top:0}.jobs li>div{display:grid;gap:.25rem;max-width:62ch}.job-place{color:var(--muted)}.plain{max-width:62ch}.about{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem 3rem}.prose{display:grid;gap:1rem;max-width:62ch}.skills{margin-top:.75rem;border-top:1px solid var(--line)}.skills>div{display:grid;gap:.1rem;padding-block:.6rem;border-bottom:1px solid var(--line)}.mail{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem}.mail a{font-size:clamp(1.125rem,.8rem + 1.6vw,1.75rem);font-weight:600;overflow-wrap:anywhere}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 2rem;padding-block:1.5rem 2.5rem;border-top:1px solid var(--line);font-family:var(--mono);font-size:var(--step--1);color:var(--muted)}@media (min-width: 40rem){.header nav{order:0;flex-basis:auto;margin-inline-start:auto}.tools{margin-inline-start:0}}@media (min-width: 56rem){.hero{grid-template-columns:minmax(0,1.6fr) minmax(18rem,1fr);align-items:end}.case{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}.case-head,.case-solo .case-body{grid-column:1 / -1}.shots-many{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}.jobs li{grid-template-columns:11rem minmax(0,1fr)}.about{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}@media print{body{background:none}.header nav,.tools,.skip{display:none}}
