*,:before,:after{box-sizing:border-box}*{margin:0}:root{--font-sans:"Hanken Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif:"Source Serif 4", Georgia, serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--color-bg:oklch(97.31% 0 0);--color-surface:oklch(94.5% 0 0);--color-text:oklch(18% 0 0);--color-muted:oklch(40% 0 0);--color-subtle:oklch(55% 0 0);--color-line:oklch(85% 0 0);--color-line-strong:oklch(30% 0 0);--color-link:oklch(48% .13 40);--color-link-strong:oklch(54% .16 38);--color-accent:var(--color-link-strong);--color-focus:oklch(54% .16 38);--severity-high:oklch(42% .17 28);--severity-medium:oklch(38% .12 72);--severity-low:oklch(38% .12 155);--step--2:clamp(.75rem, .73rem + .09vw, .8rem);--step--1:clamp(.875rem, .85rem + .11vw, .94rem);--step-0:clamp(1rem, .96rem + .22vw, 1.125rem);--step-1:clamp(1.2rem, 1.13rem + .36vw, 1.41rem);--step-2:clamp(1.44rem, 1.33rem + .55vw, 1.76rem);--step-3:clamp(1.73rem, 1.57rem + .82vw, 2.2rem);--step-4:clamp(2.07rem, 1.84rem + 1.17vw, 2.75rem);--step-5:clamp(2.49rem, 2.16rem + 1.64vw, 3.43rem);--step-6:clamp(2.99rem, 2.53rem + 2.27vw, 4.29rem);--step-7:clamp(3.58rem, 2.96rem + 3.1vw, 5.37rem);--leading-display:1.04;--leading-heading:1.12;--leading-snug:1.4;--leading-body:1.7;--tracking-display:-.028em;--tracking-heading:-.018em;--tracking-caps:.08em;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:clamp(1rem, .96rem + .22vw, 1.125rem);--space-m:clamp(1.5rem, 1.43rem + .33vw, 1.69rem);--space-l:clamp(2rem, 1.91rem + .44vw, 2.25rem);--space-xl:clamp(3rem, 2.87rem + .65vw, 3.38rem);--space-2xl:clamp(4rem, 3.83rem + .87vw, 4.5rem);--space-3xl:clamp(6rem, 5.74rem + 1.31vw, 6.75rem);--space-4xl:clamp(8rem, 7.65rem + 1.74vw, 9rem);--gutter:clamp(1.25rem, 4vw, 4rem);--grid-gap:clamp(1.25rem, 3vw, 3rem);--measure:65ch;--max-width:1200px;--ease-out:cubic-bezier(.22, 1, .36, 1);--duration-fast:.15s;--duration-base:.22s}html{scroll-behavior:smooth;min-width:320px}body{min-width:320px;color:var(--color-text);background:var(--color-bg);font-family:var(--font-sans);font-size:var(--step-0);font-weight:400;line-height:var(--leading-body);font-optical-sizing:auto;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}::selection{color:var(--color-bg);background:var(--color-link)}img,video{max-width:100%;height:auto;display:block}a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:.06em;text-decoration-color:var(--color-subtle);transition:color var(--duration-fast) var(--ease-out), text-decoration-color var(--duration-fast) var(--ease-out)}a:hover{color:var(--color-link);text-decoration-color:currentColor}a:focus-visible,button:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px;border-radius:2px}p,li,dd,figcaption{text-wrap:pretty}h1,h2,h3{font-family:var(--font-serif);letter-spacing:var(--tracking-heading);text-wrap:balance;font-weight:600}h1{font-size:var(--step-6);line-height:var(--leading-display);letter-spacing:var(--tracking-display)}h2{font-size:var(--step-4);line-height:var(--leading-heading)}h3{font-size:var(--step-2);line-height:var(--leading-heading)}ul,ol{padding-left:1.25rem}li+li{margin-top:var(--space-2xs)}li::marker{color:var(--color-subtle)}blockquote{margin:0}.severity-label{font-weight:600}.severity-label-high{color:var(--severity-high)}.severity-label-medium{color:var(--severity-medium)}.severity-label-low{color:var(--severity-low)}.container{width:min(100% - calc(var(--gutter) * 2), var(--max-width));margin:0 auto}.site-header{align-items:baseline;gap:var(--space-2xs);padding:var(--space-m) 0;border-bottom:1px solid var(--color-line);font-size:var(--step--1);line-height:var(--leading-snug);display:flex}.site-home-link{color:var(--color-text);font-weight:600;text-decoration:none}.site-home-link:hover{color:var(--color-link)}.site-role{color:var(--color-subtle);font-weight:400}.home-page{padding-bottom:var(--space-4xl)}.home-hero{column-gap:var(--grid-gap);row-gap:var(--space-l);padding:var(--space-3xl) 0;grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.hero-title{font-size:var(--step-7);line-height:var(--leading-display);letter-spacing:var(--tracking-display);text-wrap:pretty;grid-column:1/11}.hero-title span{color:var(--color-accent)}.hero-intro{max-width:var(--measure);color:var(--color-muted);font-size:var(--step-1);grid-column:1/8;line-height:1.6}.hero-intro a,.case-study-content a,.project-summary a{color:var(--color-link);text-decoration-color:color-mix(in oklch, var(--color-link) 40%, transparent);font-weight:600}.hero-intro a:hover,.case-study-content a:hover,.project-summary a:hover{color:var(--color-link-strong);text-decoration-color:currentColor}.case-studies{display:grid}.case-study-shell{padding-bottom:var(--space-4xl)}.case-study-hero{column-gap:var(--grid-gap);row-gap:var(--space-2xl);padding-top:var(--space-2xl);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.case-study-hero h1{grid-column:1/11}.case-study-hero .project-summary{grid-column:1/-1}.project-summary{border-top:1px solid var(--color-line-strong);border-bottom:1px solid var(--color-line)}.project-summary dl{grid-template-columns:1fr;display:grid}.project-summary .meta-item{column-gap:var(--grid-gap);padding:var(--space-s) 0;grid-template-columns:minmax(8rem,14rem) 1fr;align-items:baseline;display:grid}.project-summary .meta-item+.meta-item{border-top:1px solid var(--color-line)}.project-summary dt{color:var(--color-subtle);font-size:var(--step--2);letter-spacing:var(--tracking-caps);font-weight:600;line-height:var(--leading-snug);text-transform:uppercase}.project-summary dd{max-width:var(--measure);color:var(--color-text);font-size:var(--step--1);font-variant-numeric:tabular-nums;line-height:1.5}.case-study-content{column-gap:var(--grid-gap);padding-top:var(--space-xl);grid-template-columns:repeat(12,minmax(0,1fr));row-gap:0;display:grid}.case-study-content>*{max-width:var(--measure);grid-column:1/8}.case-study-content>:first-child{margin-top:0}.case-study-content h2{margin:var(--space-2xl) 0 var(--space-s)}.case-study-content h3{margin:var(--space-xl) 0 var(--space-xs)}.case-study-content p,.case-study-content ul,.case-study-content ol{margin-bottom:var(--space-m)}.case-study-content p,.case-study-content li{color:var(--color-text);font-size:var(--step-0);line-height:var(--leading-body)}.case-study-content strong{font-weight:600}.case-study-content figure,.case-study-content .image-pair{width:100%;max-width:none;margin:var(--space-l) 0 var(--space-2xl);grid-column:1/12}.case-study-content>div:has(video){width:100%;max-width:none;margin:var(--space-l) 0 var(--space-2xs);grid-column:1/12}.case-study-content figure{gap:var(--space-xs);display:grid}.case-study-content figure img,.case-study-content video{background:0 0;border:0;width:100%;margin:0}.case-study-content figcaption,figcaption{max-width:var(--measure);color:var(--color-muted);font-size:var(--step--1);line-height:1.55}.case-study-content>figcaption{width:100%;margin:0 0 var(--space-2xl);grid-column:1/12}.case-study-content h2+:is(p,ul,ol),.case-study-content h3+:is(p,ul,ol){margin-top:0}.case-study-content h2+:is(figure,.image-pair,div:has(video)),.case-study-content h3+:is(figure,.image-pair,div:has(video)){margin-top:var(--space-s)}.case-study-content :is(figure,.image-pair)+h2,.case-study-content :is(figure,.image-pair)+h3,.case-study-content>figcaption+h2,.case-study-content>figcaption+h3{margin-top:0}.image-pair{gap:var(--grid-gap);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.prism-mobile-comparison{grid-template-columns:repeat(2,minmax(0,1fr))}.image-pair figure{grid-column:auto;width:auto;margin:0}.case-study-content blockquote{width:100%;max-width:none;margin:var(--space-2xl) 0;padding:var(--space-l) 0;border-top:1px solid var(--color-line-strong);border-bottom:1px solid var(--color-line-strong);grid-column:1/10}.case-study-content blockquote p{margin-bottom:var(--space-m);color:var(--color-text);font-family:var(--font-serif);font-size:var(--step-3);letter-spacing:-.012em;font-weight:400;line-height:1.35}.case-study-content blockquote p:last-child:not(:only-child){font-family:var(--font-sans);font-size:var(--step--1);font-weight:400;line-height:var(--leading-snug);letter-spacing:0;color:var(--color-muted)}.case-study-content blockquote p:last-child:not(:only-child) strong{color:var(--color-text);font-weight:600}.case-study-content blockquote strong a{font-weight:inherit}.case-study-content blockquote>:last-child{margin-bottom:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sr-only:focus,.skip-link:focus{z-index:10;clip:auto;width:auto;height:auto;color:var(--color-bg);background:var(--color-text);white-space:normal;border-radius:999px;margin:0;padding:.75rem 1rem;position:fixed;top:1rem;left:1rem;overflow:visible}@media (width<=980px){.home-hero,.case-study-hero,.case-study-content{grid-template-columns:1fr}.hero-title,.hero-intro,.case-study-hero h1,.case-study-hero .project-summary,.case-study-content>*,.case-study-content figure,.case-study-content .image-pair,.case-study-content>div:has(video),.case-study-content blockquote,.case-study-content>figcaption{grid-column:1/-1}.home-hero{padding:var(--space-2xl) 0}.project-summary{width:100%}.image-pair figure{grid-column:auto;width:auto;margin:0}}@media (width<=640px){:root{--gutter:1rem}.project-summary .meta-item{row-gap:var(--space-3xs);grid-template-columns:1fr}.case-study-content{display:block}.case-study-content figure,.case-study-content .image-pair,.case-study-content>div:has(video),.case-study-content blockquote{width:100%}.prism-mobile-comparison{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
