@font-face{font-family:space grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/space-grotesk-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:space grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/space-grotesk-latin-ext-400-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:space grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/space-grotesk-latin-600-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:space grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/space-grotesk-latin-ext-600-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext-400-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg:#FAFBFC;--card:#FFFFFF;--ink:#14233A;--muted:#4A5A70;--line:#DDE3EA;--blue:#226DBD;--orange:#E8740C;--paper:#FAFBFC;--focus:var(--blue);--sans:"Space Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--size-label:13px;--size-small:14px;--size-body:17px;--size-lead:21px;--size-h2:22px;--size-title:clamp(36px, 5vw, 48px);--size-display:clamp(42px, 6vw, 64px);--space-xs:6px;--space-s:12px;--space-m:24px;--space-l:40px;--space-xl:72px;--radius-card:16px;--radius-pill:999px;--radius-bar:2px;--touch-min:44px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg:#0F1B2D;--card:#15243A;--ink:#E4ECF5;--muted:#9AAABD;--line:#2A3A52;--blue:#6AA6E8;--orange:#F28C28;--paper:#F2F4F7;--focus:var(--orange)}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:400;-webkit-font-smoothing:antialiased}.prose h2{margin:44px 0 0;font-weight:600;font-size:var(--size-h2);line-height:1.3}.prose h3{margin:32px 0 0;font-weight:600;font-size:18px;line-height:1.35}.prose>:first-child{margin-top:26px}.prose p,.prose li,.prose dd{font-size:var(--size-body);line-height:1.6}.prose p{margin:14px 0 0}.prose ul,.prose ol{margin:14px 0 0;padding-left:22px}.prose li+li{margin-top:var(--space-xs)}.prose li::marker{color:var(--orange)}.prose strong{font-weight:600}.prose a{color:var(--blue);text-decoration-thickness:1px;text-underline-offset:3px;overflow-wrap:anywhere}.prose a:hover{text-decoration-thickness:2px}.prose code{font-family:var(--mono);font-size:.9em}a:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.eyebrow{margin:0;font-family:var(--mono);font-size:15px;line-height:1.5;color:var(--muted)}.eyebrow::before{content:"";display:block;width:44px;height:3px;border-radius:var(--radius-bar);background:var(--orange);margin-bottom:18px}.eyebrow.bar-below::before{display:none}.eyebrow.bar-below::after{content:"";display:block;width:44px;height:3px;border-radius:var(--radius-bar);background:var(--orange);margin:14px auto 0}.display{margin:0;font-weight:600;font-size:var(--size-display);line-height:1.02;letter-spacing:-.02em}.title{margin:32px 0 0;font-weight:600;font-size:var(--size-title);line-height:1.08;letter-spacing:-.02em}.lead{margin:18px 0 0;max-width:36ch;font-size:var(--size-lead);line-height:1.45;color:var(--muted)}.role{margin:12px 0 0;font-family:var(--mono);font-size:var(--size-small);color:var(--muted)}.buttons{list-style:none;margin:32px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-s)}.button{display:inline-flex;align-items:center;gap:8px;min-height:var(--touch-min);padding:0 20px;border:1.5px solid var(--blue);border-radius:var(--radius-pill);color:var(--blue);font-weight:600;font-size:16px;text-decoration:none;transition:background-color 120ms ease,color 120ms ease}.button:hover{background:var(--blue);color:var(--bg)}.button:focus-visible{outline-offset:3px}.button .arrow{display:inline-block;color:var(--orange);font-weight:400;transition:color 120ms ease,transform 120ms ease}.button:hover .arrow{color:inherit;transform:translate(2px,-2px)}.button:hover .arrow-own{transform:translateX(3px)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:var(--space-m)}.card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-l)28px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card)}.card .about{margin:18px 0 0;max-width:30ch;font-size:18px;line-height:1.5;text-wrap:balance;flex:1}.card .button{margin-top:var(--space-m)}.avatar{width:168px;height:168px;border-radius:50%;border:1px solid var(--line);object-fit:cover;background:var(--paper)}.back-link{display:inline-flex;align-items:center;gap:8px;min-height:var(--touch-min);font-family:var(--mono);font-size:var(--size-small);color:var(--blue);text-decoration:none}.back-link .arrow{color:var(--orange)}.back-link:hover .back-link-text{text-decoration:underline;text-underline-offset:4px}a.out{text-decoration-line:none}a.out .out-text{text-decoration-line:underline;text-decoration-thickness:inherit}a.out .arrow-out{position:relative;left:0;top:0;margin-right:2px;color:var(--orange);font-family:var(--mono);font-size:var(--size-label);transition:left 120ms ease,top 120ms ease}a.out:hover .arrow-out{left:1.5px;top:-1.5px}.facts dd>a.out,.facts dt>a.out,.prose dd>a.out,.prose dt>a.out{display:inline-block;padding-block:8.5px}.tags{list-style:none;margin:var(--space-s)0 0;padding:0;display:flex;flex-wrap:wrap;gap:0 var(--space-s)}.tag{display:inline-flex;align-items:center;min-height:var(--touch-min);font-family:var(--mono);font-size:var(--size-small);color:var(--blue);text-decoration:none}.tag .tag-mark{color:var(--orange);margin-right:2px}.tag .tag-name{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}.tag:hover .tag-name{text-decoration-thickness:2px}.facts,.prose dl{display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:baseline;column-gap:28px;margin:var(--space-s)0 0}.facts dt,.prose dt{grid-column:1;font-family:var(--mono);font-size:var(--size-small);color:var(--muted)}.facts dd,.prose dd{grid-column:2;margin:0;padding-block:8.5px;font-size:var(--size-body);line-height:1.6}.facts dd>a,.facts dt>a,.prose dd>a,.prose dt>a{display:inline-flex;align-items:center;min-height:var(--touch-min);margin-block:-8.5px;color:var(--blue)}.footer{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:0 var(--space-s);padding:16px 24px 24px;font-family:var(--mono);font-size:var(--size-label);color:var(--muted)}.footer-meta,.footer-links{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:0 var(--space-s);margin:0;padding:0;list-style:none}.footer-meta span+span::before,.footer-links li::before{content:"·";content:"·"/"";margin-right:var(--space-s);color:var(--orange)}.footer-links a{display:inline-flex;align-items:center;min-height:var(--touch-min);color:var(--blue);text-decoration-thickness:1px;text-underline-offset:4px}.footer-links a:hover{text-decoration-thickness:2px}.footer-links a[aria-current=page]{color:var(--ink);text-decoration:none}@media(max-width:600px){.footer{flex-direction:column}.footer-links li:first-child::before{content:none}.facts,.prose dl{grid-template-columns:minmax(0,1fr);gap:0}.facts dt,.facts dd,.prose dt,.prose dd{grid-column:1}.facts dd+dt,.prose dd+dt{margin-top:var(--space-xs)}}@media(prefers-reduced-motion:reduce){.button,.button .arrow{transition:none}.button:hover .arrow,.button:hover .arrow-own{transform:none}a.out .arrow-out{transition:none}a.out:hover .arrow-out{left:0;top:0}}.intro{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:56px 24px 32px;display:grid;grid-template-columns:minmax(0,400px)minmax(0,1fr);gap:72px;align-items:center}.portrait{margin:0;background:var(--paper)}.portrait img{display:block;width:100%;height:auto;mix-blend-mode:multiply}.portrait-full{justify-self:end;width:100%;max-width:400px}.portrait-full img{-webkit-mask-image:linear-gradient(to bottom,#000 80%,transparent 100%);mask-image:linear-gradient(to bottom,#000 80%,transparent 100%)}.portrait-full picture{display:block}.portrait-search{justify-self:end;width:100%;max-width:400px}.portrait-search picture{display:block}.portrait-search img{-webkit-mask-image:linear-gradient(to bottom,#000 85%,transparent 100%);mask-image:linear-gradient(to bottom,#000 85%,transparent 100%)}@media(prefers-color-scheme:dark){.portrait-full,.portrait-search{background:0 0}.portrait-full img,.portrait-search img{mix-blend-mode:normal}}.portrait-avatar{display:none;width:168px;height:168px;border-radius:50%;overflow:hidden;border:1px solid var(--line);margin-bottom:28px}.intro .eyebrow,.page .eyebrow{margin-top:22px}.about p{margin:22px 0 0;max-width:30ch;text-wrap:balance;font-size:var(--size-lead);line-height:1.45}.page{flex:1;width:100%;max-width:720px;margin:0 auto;padding:32px 24px 48px}.project-logo{margin:32px 0 0}.project-logo img{display:block;width:100%;max-width:360px;height:auto;margin-left:-2px}.project-logo+.title{margin-top:28px}.page .buttons{margin-top:40px}.updated{margin-top:48px;font-family:var(--mono);font-size:var(--size-label);color:var(--muted)}@media(max-width:860px){.intro{grid-template-columns:1fr;gap:0;padding-top:48px;text-align:center;max-width:560px}.portrait-full{display:none}.portrait-search{justify-self:center;width:220px;max-width:60%;margin-bottom:28px}.portrait-avatar{display:block;margin-left:auto;margin-right:auto}.intro .eyebrow::before{margin-left:auto;margin-right:auto}.about p{margin-left:auto;margin-right:auto}.intro .buttons{justify-content:center}}.page>.title+.post-list{margin-top:var(--space-l)}.post-list{list-style:none;margin:var(--space-m)0 0;padding:0;border-top:1px solid var(--line)}.post-list li{border-bottom:1px solid var(--line)}.post-list a{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:var(--touch-min);padding:14px 0;color:var(--ink);text-decoration:none}.post-list-title{font-weight:600;font-size:19px;line-height:1.35;color:var(--blue)}.post-list a:hover .post-list-title{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.post-list-date{font-family:var(--mono);font-size:var(--size-label);color:var(--muted)}.feed-link,.post-more{margin:var(--space-m)0 0;font-family:var(--mono);font-size:var(--size-small)}.feed-link a,.post-more a{display:inline-flex;align-items:center;min-height:var(--touch-min);color:var(--blue);text-decoration-thickness:1px;text-underline-offset:4px}.feed-link a:hover,.post-more a:hover{text-decoration-thickness:2px}.page>.feed-link{margin-top:var(--space-l)}.build-log{margin-top:56px}.build-log h2{margin:0;font-weight:600;font-size:var(--size-h2);line-height:1.3}.post-more+.post-more,.post-more+.feed-link{margin-top:0}.cover{margin:var(--space-l)0 0}.cover img{display:block;width:100%;height:auto;background:var(--line)}.credit{margin-top:10px;display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;font-family:var(--mono);font-size:var(--size-label);color:var(--muted)}.credit a{color:var(--blue);text-decoration-thickness:1px;text-underline-offset:4px}.credit .credit-all{display:inline-flex;align-items:center;min-height:var(--touch-min)}.credit a:hover{text-decoration-thickness:2px}.credit .credit-all{margin-left:auto}.cover+.prose>:first-child{margin-top:18px}.credits{list-style:none;margin:var(--space-l)0 0;padding:0}.credits li{display:grid;grid-template-columns:240px minmax(0,1fr);gap:var(--space-m);align-items:start;padding:var(--space-m)0;border-top:1px solid var(--line)}.credits li:last-child{border-bottom:1px solid var(--line)}.credits img{display:block;width:100%;height:auto}.credits-text{margin:0;font-size:var(--size-body);line-height:1.6}.credits-text a{color:var(--blue);text-decoration-thickness:1px;text-underline-offset:3px}.credits-text a:hover{text-decoration-thickness:2px}@media(max-width:600px){.credits li{grid-template-columns:minmax(0,1fr);gap:var(--space-s)}}.buttons+.buttons-other{margin-top:var(--space-s)}@media(max-width:860px){.intro .buttons{display:grid;grid-template-columns:1fr;width:100%;max-width:420px;margin-left:auto;margin-right:auto}.intro .buttons-other{grid-template-columns:1fr 1fr}.intro .buttons-other li:last-child:nth-child(odd){grid-column:1/-1}.intro .buttons .button{width:100%;justify-content:center;padding:0 12px;white-space:nowrap}}@media(max-width:480px){.credit .credit-all{flex-basis:100%;margin-left:0}}.ds-section{margin-top:56px}.ds-section h2{margin:0;font-weight:600;font-size:var(--size-h2);line-height:1.3}.ds-section h3{margin:var(--space-l)0 0;font-family:var(--mono);font-size:var(--size-small);font-weight:400;color:var(--muted)}.ds-section h3+.buttons,.ds-section h3+.eyebrow,.ds-section h3+.tags,.ds-section h3+.facts{margin-top:var(--space-s)}.ds-note,.ds-sample{margin:14px 0 0;font-size:var(--size-body);line-height:1.6}.ds-note{color:var(--muted)}.ds-sample a{color:var(--blue);text-decoration-thickness:1px;text-underline-offset:3px}.ds-sample a:hover{text-decoration-thickness:2px}.ds-colours{list-style:none;margin:var(--space-m)0 0;padding:0;display:grid;gap:var(--space-m)}.ds-colours li{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--space-m);align-items:start}.ds-chips{display:flex;gap:6px}.ds-chips span{width:44px;height:44px;border:1px solid var(--line);border-radius:var(--radius-bar)}.ds-colour-text{display:flex;flex-direction:column;gap:2px}.ds-colour-name{font-weight:600}.ds-colour-values{font-family:var(--mono);font-size:var(--size-label);color:var(--muted)}.ds-colour-usage{font-size:var(--size-small);line-height:1.5}.ds-font-sans{margin:var(--space-m)0 0;font-size:28px;font-weight:600;line-height:1.2}.ds-font-mono{margin:var(--space-s)0 0;font-family:var(--mono);font-size:18px}.ds-table{width:100%;margin:var(--space-m)0 0;border-collapse:collapse;font-size:var(--size-body)}.ds-table th,.ds-table td{padding:10px 12px 10px 0;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}.ds-table thead th{font-family:var(--mono);font-size:var(--size-label);font-weight:400;color:var(--muted)}.ds-table tbody th{font-weight:400}.ds-table td{white-space:nowrap}.ds-table .ds-arrow{color:var(--orange)}.ds-mark{font-family:var(--mono);font-size:var(--size-label);color:var(--orange)}.ds-table td:last-child{white-space:normal}.page .ds-section+.buttons{margin-top:56px}