.homepage{padding-top:var(--space-7)}.home-hero,.home-about{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6)}.home-hero{padding-block:var(--space-5) var(--space-8)}.home-hero>.home-image,.home-about>.home-image{width:min(100%,280px)}.home-hero h1{max-width:11ch}.home-hero__role{margin:0 0 var(--space-3)}.home-hero__summary{margin:0;max-width:var(--measure);color:var(--ink-muted)}.home-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4) var(--space-5);margin-top:var(--space-5)}.home-actions>a{min-height:40px;display:inline-flex;align-items:center;overflow-wrap:anywhere}.home-image{min-width:0;margin:0}.home-image__frame{display:grid;place-items:center;aspect-ratio:1;padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-sunken);color:var(--ink-subtle);text-align:center;font:400 14px/1.5 var(--font-sans)}.home-image--phone .home-image__frame{aspect-ratio:9 / 16;width:min(100%,200px);margin-inline:auto;border-radius:var(--radius-xl)}.home-image--browser .home-image__frame{aspect-ratio:16 / 10}.home-image figcaption{margin-top:var(--space-3);color:var(--ink-muted);font:400 14px/1.5 var(--font-sans)}.home-work>h2{margin:0 0 var(--space-5)}.homepage .home-project{grid-template-columns:minmax(0,1fr);gap:var(--space-5);padding-block:var(--space-6)}.home-project__copy{min-width:0}.home-project__eyebrow{margin:0 0 var(--space-3);color:var(--ink-subtle)}.home-project .project-row__title{margin-bottom:var(--space-4)}.home-project .project-row__title a{display:inline-flex;align-items:center;min-height:40px;color:inherit;text-decoration:none}.home-project .project-row__title a:hover{text-decoration:underline;text-underline-offset:.2em}.home-project__meta{max-width:var(--measure);margin:var(--space-4) 0;color:var(--ink-subtle)}.home-project__link{display:inline-flex;align-items:center;gap:var(--space-2);min-height:40px;font:500 14px/1.4 var(--font-sans);text-decoration:underline;text-underline-offset:.2em}.home-project__link .arrow{width:20px;height:20px}.home-project>.home-image{max-width:360px;width:100%}.home-project .project-row__desc{max-width:var(--measure)}.home-about{padding-block:var(--space-8)}.home-about h2{margin:0 0 var(--space-5)}.home-about p{max-width:var(--measure);margin:0 0 var(--space-4);color:var(--ink-muted)}.home-about p:last-child{margin-bottom:0}.nav.nav--home{display:grid;grid-template-columns:minmax(0,1fr) auto;height:auto;padding-block:var(--space-2);gap:var(--space-2) var(--space-3)}.nav--home>.seg{grid-column:2;grid-row:1}.nav--home>.nav__links{grid-column:1 / -1;grid-row:2;gap:var(--space-5)}.home-footer p{margin:0;display:flex;align-items:center}.home-footer__contact{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3) var(--space-5);min-width:0}.home-footer__contact a{overflow-wrap:anywhere}@media(min-width:640px){.nav.nav--home{display:flex;height:var(--nav-height);padding-block:0;gap:var(--space-5)}.nav--home .nav__brand{margin-right:auto}}@media(min-width:720px){.homepage{padding-top:var(--space-8)}.home-hero,.home-about{grid-template-columns:280px minmax(0,1fr);gap:var(--space-7);align-items:center}.homepage .home-project{grid-template-columns:minmax(0,1fr) 280px;gap:var(--space-7);padding-block:var(--space-7)}}@media(min-width:960px){.home-hero,.home-about{gap:var(--space-8)}.homepage .home-project{grid-template-columns:minmax(0,1fr) 360px;gap:var(--space-8)}}:root{color-scheme:light dark;--ground: oklch(.99 .003 235);--surface: oklch(.998 .0008 235);--surface-raised: oklch(.999 .0004 235);--surface-sunken: oklch(.968 .005 235);--line: oklch(.915 .006 235);--line-medium: oklch(.86 .008 235);--line-strong: oklch(.63 .014 235);--ink: oklch(.2 .02 275);--ink-muted: oklch(.48 .024 275);--ink-subtle: oklch(.6 .02 275);--action: oklch(.18 .02 275);--action-hover: oklch(.3 .026 275);--on-action: oklch(.985 .004 235);--accent: oklch(.5 .108 55);--accent-tint: oklch(.915 .05 60);--positive: oklch(.46 .1 160);--negative: oklch(.49 .17 25);--info: oklch(.47 .09 250);--shadow-sm: 0 1px 2px rgba(18, 20, 38, .04);--shadow-md: 0 1px 2px rgba(18, 20, 38, .03), 0 6px 20px rgba(18, 20, 38, .05);--shadow-lg: 0 2px 4px rgba(18, 20, 38, .04), 0 14px 40px rgba(18, 20, 38, .1);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--space-10: 128px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-pill: 999px;--container-max: 1200px;--container-narrow: 720px;--measure: 68ch;--gutter: 24px;--nav-height: 64px;--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-backdrop: 300;--z-modal: 400;--z-toast: 500;--z-tooltip: 600;--duration-instant: .1s;--duration-fast: .16s;--duration-base: .24s;--duration-slow: .48s;--ease-out-quart: cubic-bezier(.25, 1, .5, 1);--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Funnel Display", "Geist", ui-sans-serif, system-ui, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ground: oklch(.165 .008 265);--surface: oklch(.2 .009 265);--surface-raised: oklch(.235 .01 265);--surface-sunken: oklch(.14 .007 265);--line: oklch(.275 .01 265);--line-medium: oklch(.34 .011 265);--line-strong: oklch(.52 .012 265);--ink: oklch(.95 .006 265);--ink-muted: oklch(.74 .01 265);--ink-subtle: oklch(.62 .01 265);--action: oklch(.95 .006 265);--action-hover: oklch(.88 .008 265);--on-action: oklch(.18 .02 275);--accent: oklch(.78 .12 55);--accent-tint: oklch(.32 .06 50);--positive: oklch(.78 .12 160);--negative: oklch(.76 .14 25);--info: oklch(.78 .09 250);--shadow-sm: inset 0 1px 0 rgba(255, 255, 255, .04), 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: inset 0 1px 0 rgba(255, 255, 255, .05), 0 8px 24px rgba(0, 0, 0, .45);--shadow-lg: inset 0 1px 0 rgba(255, 255, 255, .06), 0 2px 4px rgba(0, 0, 0, .4), 0 20px 56px rgba(0, 0, 0, .6)}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--ground: oklch(.165 .008 265);--surface: oklch(.2 .009 265);--surface-raised: oklch(.235 .01 265);--surface-sunken: oklch(.14 .007 265);--line: oklch(.275 .01 265);--line-medium: oklch(.34 .011 265);--line-strong: oklch(.52 .012 265);--ink: oklch(.95 .006 265);--ink-muted: oklch(.74 .01 265);--ink-subtle: oklch(.62 .01 265);--action: oklch(.95 .006 265);--action-hover: oklch(.88 .008 265);--on-action: oklch(.18 .02 275);--accent: oklch(.78 .12 55);--accent-tint: oklch(.32 .06 50);--positive: oklch(.78 .12 160);--negative: oklch(.76 .14 25);--info: oklch(.78 .09 250);--shadow-sm: inset 0 1px 0 rgba(255, 255, 255, .04), 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: inset 0 1px 0 rgba(255, 255, 255, .05), 0 8px 24px rgba(0, 0, 0, .45);--shadow-lg: inset 0 1px 0 rgba(255, 255, 255, .06), 0 2px 4px rgba(0, 0, 0, .4), 0 20px 56px rgba(0, 0, 0, .6)}.display-xl{font-family:var(--font-display);font-size:96px;line-height:.96;font-weight:400;letter-spacing:-.035em}.display-lg{font-family:var(--font-display);font-size:72px;line-height:.98;font-weight:400;letter-spacing:-.03em}.display-md{font-family:var(--font-display);font-size:48px;line-height:1.04;font-weight:400;letter-spacing:-.025em}.numeral{font-family:var(--font-display);font-size:72px;line-height:1;font-weight:400;letter-spacing:-.04em}.display-sm{font-family:var(--font-display);font-size:32px;line-height:1.1;font-weight:400;letter-spacing:-.02em}.title{font-family:var(--font-sans);font-size:24px;line-height:1.25;font-weight:500;letter-spacing:-.01em}.subtitle{font-family:var(--font-sans);font-size:20px;line-height:1.35;font-weight:500;letter-spacing:-.005em}.body-lg{font-family:var(--font-sans);font-size:18px;line-height:1.6;font-weight:400}.body{font-family:var(--font-sans);font-size:16px;line-height:1.6;font-weight:400}.body-sm{font-family:var(--font-sans);font-size:14px;line-height:1.5;font-weight:400}.label{font-family:var(--font-sans);font-size:13px;line-height:1.4;font-weight:500;letter-spacing:.005em}.caption{font-family:var(--font-sans);font-size:12px;line-height:1.4;font-weight:400}.meta{font-family:var(--font-mono);font-size:12px;line-height:1.4;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.code{font-family:var(--font-mono);font-size:13px;line-height:1.6;font-weight:400}html{color-scheme:light}html[data-theme=dark]{color-scheme:dark}::selection{background:var(--accent-tint);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:40px;padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius-pill);font:500 14px/1 var(--font-sans);letter-spacing:.005em;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out-quart),border-color var(--duration-fast) var(--ease-out-quart),color var(--duration-fast) var(--ease-out-quart),transform var(--duration-instant) var(--ease-out-quart)}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--action);color:var(--on-action)}.btn--primary:hover{background:var(--action-hover)}.btn--secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn--secondary:hover{background:var(--surface-sunken)}.btn--ghost{background:transparent;color:var(--ink-muted)}.btn--ghost:hover{background:var(--surface-sunken);color:var(--ink)}.btn--sm{height:32px;padding:0 var(--space-3);font-size:13px}.btn--lg{height:48px;padding:0 var(--space-5);font-size:15px}.btn[disabled],.btn[aria-disabled=true]{background:var(--surface-sunken);color:var(--ink-subtle);border-color:transparent;cursor:not-allowed}.btn svg{width:16px;height:16px;flex:none;transition:transform var(--duration-base) var(--ease-out-quart)}.btn:hover svg.arrow{transform:translate(3px)}.badge{display:inline-flex;align-items:center;height:22px;padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--action);color:var(--on-action);font:500 12px/1 var(--font-sans)}.badge--outline{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-medium)}.badge--tint{background:var(--accent-tint);color:var(--ink)}.badge--mono{font:500 12px/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.seg{display:inline-flex;gap:2px;padding:4px;border-radius:var(--radius-pill);background:var(--surface-sunken)}.seg__btn{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-subtle);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out-quart),color var(--duration-fast) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart)}.seg__btn:hover{color:var(--ink)}.seg__btn[aria-pressed=true]{background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow-sm)}.seg__btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.surface{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5)}.surface--raised{background:var(--surface-raised);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-3)}.menu__item{display:flex;align-items:center;gap:var(--space-3);height:36px;padding:0 var(--space-3);border-radius:var(--radius-sm);color:var(--ink-muted);font:450 14px/1 var(--font-sans);text-decoration:none;transition:background-color var(--duration-fast) var(--ease-out-quart),color var(--duration-fast) var(--ease-out-quart)}.menu__item:hover{background:var(--surface-sunken);color:var(--ink)}.menu__sep{height:1px;margin:var(--space-2) 0;background:var(--line);border:0}.nav{display:flex;align-items:center;justify-content:space-between;height:var(--nav-height);padding:0 var(--gutter);background:var(--ground);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:var(--z-sticky)}.nav__brand{font:500 15px/1 var(--font-sans);letter-spacing:-.01em;color:var(--ink);text-decoration:none}.nav__links{display:flex;align-items:center;gap:var(--space-5)}.nav__link{position:relative;padding:var(--space-2) 0;font:450 14px/1 var(--font-sans);color:var(--ink-muted);text-decoration:none;transition:color var(--duration-fast) var(--ease-out-quart)}.nav__link:hover,.nav__link[aria-current=page]{color:var(--ink)}.nav__link[aria-current=page]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ink);border-radius:1px}.link{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;transition:text-decoration-thickness var(--duration-fast) var(--ease-out-quart)}.link:hover{text-decoration-thickness:2px}.project-row{display:grid;grid-template-columns:96px minmax(0,1fr) 240px;gap:var(--space-5);align-items:center;padding:var(--space-5) 0;border-top:1px solid var(--line);color:inherit;text-decoration:none}.project-row:last-child{border-bottom:1px solid var(--line)}.project-row__meta{align-self:start;padding-top:var(--space-2)}.project-row__title{margin:0 0 var(--space-2);display:flex;align-items:center;gap:var(--space-3)}.project-row__desc{margin:0;max-width:52ch;color:var(--ink-muted)}.project-row__thumb{aspect-ratio:16 / 10;border-radius:var(--radius-md);background:var(--surface-sunken);overflow:hidden}.project-row__thumb>*{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--duration-slow) var(--ease-out-expo)}.project-row:hover .project-row__thumb>*{transform:scale(1.03)}.project-row .arrow{width:20px;height:20px;color:var(--ink-subtle);transition:transform var(--duration-base) var(--ease-out-quart),color var(--duration-base) var(--ease-out-quart)}.project-row:hover .arrow{transform:translate(3px,-3px);color:var(--ink)}@media(max-width:720px){.project-row{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.project-row__meta{padding-top:0}}@media(max-width:639px){:root{--gutter: 16px}}[data-js] .reveal{opacity:0;transform:translateY(8px)}[data-js] .reveal[data-in]{opacity:1;transform:none;transition:opacity var(--duration-slow) var(--ease-out-expo),transform var(--duration-slow) var(--ease-out-expo);transition-delay:calc(var(--i, 0) * 60ms)}.draw{position:relative}.draw:before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--line-medium)}[data-js] .draw:before{transform:scaleX(0);transform-origin:left center}[data-js] .draw[data-in]:before{transform:scaleX(1);transition:transform var(--duration-slow) var(--ease-out-expo)}.chapter__num,.insight__label,.tension__tag,.decision__idx,.challenge__label,.figure__label,.exhibit__bar,.toc__title,.quote__src,.hero__facts dt,.table th,.table caption{font:500 12px/1.4 var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.chapter{display:grid;gap:var(--space-3);padding-top:var(--space-5)}.chapter__num{display:flex;align-items:baseline;gap:var(--space-3);margin:0;color:var(--ink-subtle)}.chapter__index{font:400 clamp(3rem,8vw,4.5rem)/1 var(--font-display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}.chapter__name{font:500 12px/1.4 var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.chapter__title{margin:0;max-width:20ch;font:400 clamp(2rem,5vw,3rem)/1.04 var(--font-display);letter-spacing:-.025em;text-wrap:balance}.chapter__lede{margin:0;max-width:var(--measure);font:400 18px/1.6 var(--font-sans);color:var(--ink-muted)}.insight{padding-top:var(--space-5)}.insight__label{display:inline-flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-4);color:var(--ink-subtle)}.insight__label:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}.insight__text{margin:0;max-width:26ch;font:400 clamp(1.5rem,3.4vw,2.5rem)/1.15 var(--font-display);letter-spacing:-.02em;text-wrap:balance;color:var(--ink)}.insight__text em{font-style:normal;color:var(--ink-subtle)}.tension{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.tension__head{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line)}.tension__sides{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.tension__side{padding:var(--space-5)}.tension__tag{margin:0 0 var(--space-3);color:var(--ink-subtle)}.tension__text{margin:0;font:450 clamp(1.125rem,2vw,1.375rem)/1.3 var(--font-display);letter-spacing:-.01em;text-wrap:balance}.tension__vs{position:relative;display:grid;place-items:center;padding:0 var(--space-2)}.tension__vs:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:var(--line)}.tension__vs .badge{position:relative;background:var(--surface)}.tension__resolve{display:grid;grid-template-columns:120px minmax(0,1fr);gap:var(--space-4);padding:var(--space-4) var(--space-5);border-top:1px solid var(--line);background:var(--surface-sunken)}.tension__resolve .tension__tag{margin:2px 0 0}.tension__resolve p:last-child{margin:0;font:400 16px/1.55 var(--font-sans);color:var(--ink)}@media(max-width:640px){.tension__sides{grid-template-columns:minmax(0,1fr)}.tension__vs{padding:var(--space-2) 0}.tension__vs:before{top:50%;bottom:auto;left:0;right:0;width:auto;height:1px}.tension__resolve{grid-template-columns:minmax(0,1fr);gap:var(--space-2)}}.decision{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.decision__head{display:grid;gap:var(--space-3);justify-items:start;padding:var(--space-5)}.decision__q{margin:0;max-width:28ch;font:450 clamp(1.25rem,2.6vw,1.75rem)/1.15 var(--font-display);letter-spacing:-.015em;text-wrap:balance}.decision__opts{display:grid;grid-template-columns:repeat(var(--cols, 3),minmax(0,1fr));gap:1px;margin:0;padding:0;list-style:none;background:var(--line);border-block:1px solid var(--line)}.decision__opt{position:relative;padding:var(--space-5);background:var(--surface)}.decision__opt--chosen{background:color-mix(in oklch,var(--ink) 4%,var(--surface))}.decision__opt--chosen:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--ink)}[data-js] .decision .decision__opt--chosen:after{transform:scaleX(0);transform-origin:left center}[data-js] .decision[data-in] .decision__opt--chosen:after{transform:scaleX(1);transition:transform var(--duration-slow) var(--ease-out-expo) .24s}.decision__idx{display:flex;align-items:center;gap:var(--space-2);min-height:22px;margin:0 0 var(--space-2);color:var(--ink-subtle)}.decision__name{margin:0 0 var(--space-2);font:500 17px/1.3 var(--font-sans);letter-spacing:-.005em}.decision__desc,.decision__why p:last-child{margin:0;font:400 15px/1.55 var(--font-sans);color:var(--ink-muted)}.decision__why{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);padding:var(--space-5)}.decision__why p:last-child{color:var(--ink)}@media(max-width:720px){.decision__opts{grid-template-columns:minmax(0,1fr)}.decision__why{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}}.challenge{display:grid;grid-template-columns:160px minmax(0,1fr);gap:var(--space-5);padding-top:var(--space-5)}.challenge__label{margin:0;padding-top:6px;color:var(--ink-subtle)}.challenge__title{margin:0 0 var(--space-3);max-width:24ch;font:450 clamp(1.5rem,3vw,2rem)/1.1 var(--font-display);letter-spacing:-.02em;text-wrap:balance}.challenge__body{margin:0;max-width:var(--measure);font:400 17px/1.6 var(--font-sans);color:var(--ink-muted)}@media(max-width:640px){.challenge{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.challenge__label{padding-top:0}}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font:400 15px/1.5 var(--font-sans)}.table caption{padding:0 0 var(--space-3);text-align:left;color:var(--ink-subtle)}.table th{padding:var(--space-3) var(--space-5);text-align:left;white-space:nowrap;color:var(--ink-subtle);background:none;border-bottom:1px solid var(--line-medium)}.table td,.table tbody th{padding:var(--space-4) var(--space-5);vertical-align:top;border-bottom:1px solid var(--line)}.table td{min-width:7rem;color:var(--ink-muted)}.table tbody th{min-width:9rem;font:500 15px/1.5 var(--font-sans);letter-spacing:0;text-transform:none;white-space:normal;color:var(--ink);background:none}.table tbody tr:last-child>*{border-bottom:0}.table tbody tr{transition:background-color var(--duration-fast) var(--ease-out-quart)}.table td.num{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}@media(max-width:640px){.table--stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.table--stack,.table--stack tbody,.table--stack tr,.table--stack td,.table--stack tbody th{display:block}.table--stack tr{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line)}.table--stack tbody tr:last-child{border-bottom:0}.table--stack td,.table--stack tbody th{padding:var(--space-1) 0;border:0}.table--stack td[data-label]:before{content:attr(data-label);display:block;font:500 12px/1.4 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-subtle)}.table--stack td.num{text-align:left}}.compare tbody tr:hover{background:none}.compare .is-chosen{background:color-mix(in oklch,var(--ink) 4%,var(--surface));color:var(--ink)}.compare thead .is-chosen{color:var(--ink)}.compare thead .badge{margin-left:var(--space-2);vertical-align:middle}.figures{display:grid;grid-template-columns:repeat(var(--cols, 3),minmax(0,1fr));gap:1px;background:var(--line);border-block:1px solid var(--line)}.figure{padding:var(--space-5) var(--space-5) var(--space-5) 0;background:var(--ground)}.figure+.figure{padding-left:var(--space-5)}.figure__num{margin:0;font:400 clamp(2.5rem,6vw,4.5rem)/1 var(--font-display);letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--ink)}.figure__label{margin:var(--space-3) 0 0;color:var(--ink-subtle)}.figure__note{margin:var(--space-2) 0 0;max-width:28ch;font:400 14px/1.5 var(--font-sans);color:var(--ink-muted)}@media(max-width:640px){.figures{grid-template-columns:minmax(0,1fr)}.figure,.figure+.figure{padding:var(--space-4) 0}}.exhibit{margin:0}.exhibit__bar{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding-bottom:var(--space-3);color:var(--ink-subtle)}.exhibit__frame{position:relative;aspect-ratio:var(--ratio, 16 / 10);overflow:hidden;background:var(--surface-sunken);border:1px solid var(--line);border-radius:var(--radius-xl)}.exhibit__frame>img,.exhibit__frame>video,.exhibit__frame>svg{display:block;width:100%;height:100%;object-fit:var(--fit, contain);object-position:center}.exhibit__frame--cover{--fit: cover}.exhibit__toggle{display:inline-grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-subtle);cursor:pointer;transition:color var(--duration-fast) var(--ease-out-quart),background-color var(--duration-fast) var(--ease-out-quart)}.exhibit__toggle:hover{color:var(--ink);background:var(--surface-sunken)}.exhibit__toggle svg{width:14px;height:14px;fill:currentColor}.exhibit__toggle .i-play,.exhibit__toggle[aria-pressed=true] .i-pause{display:none}.exhibit__toggle[aria-pressed=true] .i-play{display:block}.exhibit__open{color:var(--ink-subtle);text-decoration:none}.exhibit__open:hover{color:var(--ink)}.exhibit__frame--proto{width:min(100%,var(--nw));margin-inline:auto;background:var(--surface-sunken)}.exhibit__frame--proto>iframe{position:absolute;left:0;top:0;width:var(--nw);height:var(--nh);border:0;transform:scale(var(--proto-scale, 1));transform-origin:top left}.exhibit__frame--phone{border-radius:var(--radius-xl)}.exhibit__play{position:absolute;left:var(--space-4);bottom:var(--space-4)}.exhibit figcaption{margin-top:var(--space-3);max-width:60ch;font:400 14px/1.5 var(--font-sans);color:var(--ink-muted)}.ba{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}@media(max-width:720px){.ba{grid-template-columns:minmax(0,1fr)}}.toc{position:sticky;top:calc(var(--nav-height) + var(--space-5));margin:0;padding:0;list-style:none}.toc__title{margin:0 0 var(--space-3);color:var(--ink-subtle)}.toc a{position:relative;display:block;padding:var(--space-2) 0 var(--space-2) var(--space-4);font:500 14px/1.3 var(--font-sans);color:var(--ink-subtle);text-decoration:none;transition:color var(--duration-fast) var(--ease-out-quart)}.toc a:before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--line);transition:background-color var(--duration-fast) var(--ease-out-quart)}.toc a:hover,.toc a[aria-current=true]{color:var(--ink)}.toc a[aria-current=true]:before{width:2px;background:var(--ink)}@media(max-width:959px){.toc{position:sticky;top:var(--nav-height);z-index:calc(var(--z-sticky) - 1);display:flex;gap:var(--space-5);margin:0 calc(-1 * var(--gutter));padding:0 var(--gutter);overflow-x:auto;background:var(--ground);border-bottom:1px solid var(--line);scrollbar-width:none}.toc::-webkit-scrollbar{display:none}.toc__title{display:none}.toc a{padding:var(--space-3) 0;white-space:nowrap}.toc a:before{left:0;right:0;top:auto;bottom:0;width:auto;height:1px}.toc a[aria-current=true]:before{width:auto;height:2px}}.quote{margin:0;display:grid;gap:var(--space-4);padding-top:var(--space-5)}.quote__text{margin:0;max-width:36ch;font:400 clamp(1.25rem,2.4vw,1.5rem)/1.4 var(--font-display);letter-spacing:-.01em;text-wrap:pretty;color:var(--ink)}.quote__src{margin:0;color:var(--ink-subtle)}.quote__src:before{content:"";display:inline-block;width:24px;height:1px;margin-right:var(--space-3);vertical-align:middle;background:var(--line-medium)}.unknown{display:grid;gap:var(--space-3);justify-items:start;padding:var(--space-5);border:1px dashed var(--line-medium);border-radius:var(--radius-lg)}.unknown__text{margin:0;max-width:52ch;font:450 19px/1.4 var(--font-display);letter-spacing:-.01em;text-wrap:balance}.unknown__next{margin:0;max-width:52ch;font:400 15px/1.55 var(--font-sans);color:var(--ink-muted)}.hero{display:grid;gap:var(--space-7);padding:var(--space-8) 0 var(--space-7)}.hero__top{display:grid;gap:var(--space-6)}.hero__kicker{display:flex;flex-wrap:wrap;gap:var(--space-2)}.hero__title{margin:var(--space-5) 0 0;font:400 clamp(2.75rem,7vw,4.5rem)/.98 var(--font-display);letter-spacing:-.03em;text-wrap:balance}.hero__lede{margin:var(--space-5) 0 0;max-width:52ch;font:400 20px/1.4 var(--font-sans);letter-spacing:-.005em;color:var(--ink-muted);text-wrap:pretty}.hero__facts{margin:0;display:grid;align-self:end}.hero__facts>div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--line)}.hero__facts dt{margin:0;padding-top:2px;color:var(--ink-subtle)}.hero__facts dd{margin:0;font:400 15px/1.5 var(--font-sans);color:var(--ink)}@media(min-width:960px){.hero__top{grid-template-columns:minmax(0,1fr) 280px;gap:var(--space-8);align-items:end}}.prose{display:grid;grid-template-columns:[full-start] minmax(var(--gutter),1fr) [wide-start] minmax(0,240px) [text-start] min(var(--container-narrow),calc(100% - 2 * var(--gutter))) [text-end] minmax(0,240px) [wide-end] minmax(var(--gutter),1fr) [full-end]}.prose>*{grid-column:text;margin:0}.prose>*+*{margin-top:var(--space-6)}.prose>.span-wide{grid-column:wide}.prose>.span-full{grid-column:full}.prose>.chapter{margin-top:var(--space-9)}.prose>p:not([class]){max-width:var(--measure);font:400 18px/1.6 var(--font-sans);color:var(--ink-muted)}html.theme-anim,html.theme-anim *,html.theme-anim *:before,html.theme-anim *:after{transition:background-color var(--duration-base) var(--ease-out-quart),color var(--duration-base) var(--ease-out-quart),border-color var(--duration-base) var(--ease-out-quart),box-shadow var(--duration-base) var(--ease-out-quart)!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;scroll-behavior:auto!important}[data-js] .reveal{opacity:1;transform:none}[data-js] .draw:before,[data-js] .decision .decision__opt--chosen:after{transform:none}.btn:hover svg.arrow,.project-row:hover .arrow,.project-row:hover .project-row__thumb>*{transform:none}}.decision--prose{display:grid;gap:var(--space-3);padding:var(--space-5)}.decision--prose .decision__head,.decision--prose .decision__body{padding:0}.decision--prose .decision__body>*{margin:0}.table :is(th,td):first-child{padding-left:0}.table :is(th,td):last-child{padding-right:0}.decision--prose .decision__body{display:grid;gap:var(--space-3)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + var(--space-5))}body{margin:0;background:var(--ground);color:var(--ink);font:400 16px/1.6 var(--font-sans)}button,input{font:inherit}a{color:inherit}button{touch-action:manipulation;min-height:40px}.btn{min-height:40px}.nav__brand,.footer a,.media-error a{display:inline-flex;align-items:center;min-height:40px}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}img,video{max-width:100%}img,.project-row__thumb>img{object-fit:contain}.container{width:min(100% - var(--gutter) * 2,var(--container-max));margin-inline:auto}.nav{padding-inline:max(var(--gutter),calc((100% - var(--container-max)) / 2))}.nav__links{gap:var(--space-4)}.nav__link{display:flex;align-items:center;min-height:40px}.seg__btn{width:40px;height:40px}h1{font:400 clamp(3.5rem,9vw,6rem)/.98 var(--font-display);letter-spacing:-.035em;margin:0 0 var(--space-5)}.hero-lede{font:400 20px/1.5 var(--font-sans);max-width:var(--measure);color:var(--ink-muted)}.case-study .hero{padding-top:var(--space-8)}.launch-status{max-width:var(--measure);color:var(--ink-subtle);font-size:14px;margin-block:var(--space-5)}.draft-note{padding-block:var(--space-5);margin-block:var(--space-6) var(--space-7);border-block:1px solid var(--line);font-size:14px;color:var(--ink-muted)}.draft-note p{max-width:var(--measure);margin:var(--space-1) 0 0}.reading-layout{width:min(100% - var(--gutter) * 2,calc(var(--container-max) + 240px + var(--space-8)));margin-inline:auto;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-7)}.contents{min-width:0;position:sticky;top:var(--nav-height);align-self:start;z-index:var(--z-sticky);background:var(--ground)}.contents .toc{position:static;list-style:none}.toc a{min-height:40px;display:flex;gap:var(--space-2);align-items:center}.toc a[aria-current=location]{color:var(--ink)}.toc a[aria-current=location]:before{width:2px;background:var(--ink)}.prose{min-width:0;max-width:var(--container-max);grid-template-columns:[wide-start full-start] minmax(0,1fr) [text-start] min(var(--container-narrow),100%) [text-end] minmax(0,1fr) [wide-end full-end];overflow-wrap:anywhere;font-size:18px}.prose>*{min-width:0}.prose h2:not(.chapter__title){font:450 clamp(1.5rem,3vw,2rem)/1.12 var(--font-display);letter-spacing:-.02em}.prose>h3{font:450 clamp(1.5rem,3vw,2rem)/1.12 var(--font-display);letter-spacing:-.02em}.prose h3,.prose h4{font:450 24px/1.2 var(--font-display);letter-spacing:-.015em}.prose .minor-heading,.prose h5{font:500 20px/1.3 var(--font-sans)}.prose h2:not(.chapter__title),.prose h3,.prose h4,.prose h5{margin-top:var(--space-7);margin-bottom:0}.prose>.chapter+h2,.prose>.chapter+h3{margin-top:var(--space-5)}.prose .chapter{padding-top:var(--space-5)}.prose .chapter__title{font-size:clamp(2rem,5vw,3rem);margin:0}.prose p{margin-block:0 var(--space-4);max-width:var(--measure)}.prose>p{margin-bottom:0}.prose strong{font-weight:500}.prose ul,.prose ol{padding-left:var(--space-5)}.prose li{margin-block:var(--space-2)}.prose hr{border:0;border-top:1px solid var(--line);width:100%}.callout{border-block:1px solid var(--line);padding-block:var(--space-4)}.callout p:last-child{margin-bottom:0}details{margin-block:var(--space-5);border-bottom:1px solid var(--line);padding-bottom:var(--space-4)}summary{cursor:pointer;min-height:40px;padding-block:var(--space-2)}details>:not(summary){margin-top:var(--space-4)}.source-columns{display:grid;gap:var(--space-5)}.challenge h3,.challenge h4,.challenge h5{margin:0 0 var(--space-4)}.decision__head h2,.decision__head h3,.decision__head h4,.decision__head h5{margin:0;font:450 24px/1.2 var(--font-display)}.decision__body{padding:var(--space-5)}.decision__body .callout{border:0;padding:0}.insight__text p{font:inherit;line-height:1.3;max-width:32ch}.insight__text p:last-child{margin-bottom:0}.quote ul{list-style:none;padding-left:0}.quote__text li{margin-bottom:var(--space-4)}.figures{grid-template-columns:repeat(3,minmax(0,1fr))}.figure{min-width:0}.figure p{font:450 20px/1.4 var(--font-display)}.table-wrap{max-width:100%;overflow:auto;scrollbar-color:var(--line-medium) var(--surface-sunken)}.table{width:100%;min-width:calc(160px * var(--table-columns, 1))}.table th{white-space:normal}.table .table__first-column{width:160px}.compare{table-layout:fixed}.table td,.table th{min-width:160px;overflow-wrap:normal;word-break:normal}.table p{font:inherit;margin:0}.exhibit{min-width:0}.exhibit--portrait{width:100%;max-width:390px;justify-self:center;margin-inline:auto}.exhibit__frame{aspect-ratio:auto}.exhibit__frame .image-link{height:100%}.exhibit__frame img{display:block;width:100%;height:100%;object-fit:contain}.exhibit__frame video{display:block;width:100%;height:100%;object-fit:contain}.exhibit__toggle{width:40px;height:40px;flex:0 0 auto;border:1px solid var(--line-strong)}.exhibit figcaption{font-size:14px}.image-link{display:block}.prototype-tools{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap;margin-bottom:var(--space-3)}.prototype-tools p{margin:0;max-width:var(--measure)}.prototype-frame{max-width:100%}.prototype-frame iframe{display:block;width:100%;height:100%;border:0}.prototype-frame--native iframe{width:var(--nw);height:var(--nh);max-width:none;transform:scale(var(--proto-scale));transform-origin:top left}.prototype-frame--actual{overflow:auto;max-height:75dvh}.prototype-frame--actual iframe{transform:none}.media-error{font-size:14px;color:var(--ink)}.footer{display:flex;flex-wrap:wrap;gap:var(--space-5);justify-content:space-between;margin-top:var(--space-9);padding-block:var(--space-6);border-top:1px solid var(--line);font-size:14px}.skip-link{position:fixed;top:var(--space-3);left:var(--space-3);z-index:var(--z-tooltip);background:var(--action);color:var(--on-action);padding:var(--space-3);transform:translateY(-200%);border-radius:var(--radius-sm)}.skip-link:focus{transform:none}.reference{padding-block:var(--space-8)}.reference h2{margin-top:var(--space-7);font:400 32px/1.1 var(--font-display)}.reference .surface{max-width:var(--container-narrow)}.component-row{display:flex;gap:var(--space-3);flex-wrap:wrap}.reference .prose{margin-top:var(--space-8)}.work-list{margin-top:var(--space-6)}.work-entry{display:block;padding-block:var(--space-6);border-top:1px solid var(--line);color:inherit;text-decoration:none}.work-entry:last-child{border-bottom:1px solid var(--line)}.work-entry h2{margin:0 0 var(--space-4)}.work-entry p{max-width:65ch}.work-entry:hover h2{text-decoration:underline;text-underline-offset:.2em}@media(min-width:960px){.reading-layout{grid-template-columns:240px minmax(0,1fr);gap:var(--space-8)}.contents{top:calc(var(--nav-height) + var(--space-5))}.toc{max-height:calc(100dvh - var(--nav-height) - var(--space-8));overflow-y:auto;scrollbar-width:none}.toc::-webkit-scrollbar{display:none}}@media(max-width:959px){html{scroll-padding-top:calc(var(--nav-height) + var(--space-8))}.contents .toc{margin-block:0}.toc a[aria-current=location]:before{width:auto;height:2px}.ba{grid-template-columns:minmax(0,1fr)}}@media(max-width:639px){.nav__links{gap:var(--space-2)}.hero-lede{font-size:18px}.prose{font-size:16px}.prose>p:not([class]){font-size:16px}.badge{font-size:12px;min-height:24px}.figures{grid-template-columns:minmax(0,1fr)}.table--stack{min-width:0}.table--stack colgroup{display:none}.table--stack td,.table--stack th{min-width:0;overflow-wrap:anywhere}.table--stack tbody th{font:500 16px/1.5 var(--font-sans)}.table--stack tr{background:var(--ground)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}h2,h3,h4,h5,h6,strong,b{font-weight:500}.quote__text{font-weight:450}@media(min-width:824px){.insight__text{font-weight:400}}@media(max-width:823px){.insight__text{font-weight:450}}@media(min-width:934px){.prose h2:not(.chapter__title),.challenge__title{font-weight:400}}@media(min-width:1077px){.decision__q{font-weight:400}}.prose :is(.insight__text,.figure,.quote__text,.unknown__text,.tension__text) :is(strong,b){font-weight:inherit}.case-study .prose{display:grid;row-gap:var(--space-4)}.case-study .prose :where(p,h2,h3,h4,h5,ul,ol,li,blockquote,figure,details){margin:0}.case-study .prose>*{margin:0}.case-study .prose>:is(.decision,.tension,.insight,.challenge,.figures,.exhibit,.ba,.table-wrap,.unknown,.quote,.callout,details,figure){margin-block:var(--space-4)}.case-study .prose>:is(h2,h3,h4,h5){margin-top:var(--space-6);margin-bottom:calc(-1 * var(--space-1))}.case-study .prose>.chapter{margin-top:var(--space-8)}.case-study .prose>hr{height:1px;border:0;background:var(--line);margin-block:var(--space-4)}.case-study .prose>hr:has(+.chapter),.case-study .prose>hr:has(+hr){display:none}.case-study .prose :is(ul,ol){display:grid;gap:var(--space-3)}.case-study .prose details{display:block}.case-study .prose details[open]{display:grid;gap:var(--space-3)}.case-study .prose details>*{margin:0}.case-study :is(.decision--prose,.callout){display:grid;gap:var(--space-3);padding:var(--space-5)}.case-study .decision--prose :is(.decision__head,.decision__body){padding:0;display:grid;gap:var(--space-3)}.case-study .decision__body .callout{padding:0;border:0}.case-study :is(.insight,.insight__text,.challenge__body,.challenge>.reveal,.unknown__text,.quote__text,.figure){display:grid;gap:var(--space-3)}.case-study .challenge__label{padding-top:0}.case-study .tension{display:grid;gap:var(--space-3);padding:var(--space-5)}.case-study :is(.tension__head,.tension__side){padding:0}.case-study .tension__head{border:0}.case-study .tension__side{display:grid;align-content:start;gap:var(--space-3)}.case-study .table-wrap{width:fit-content;max-width:100%}.case-study .table{min-width:calc(9rem + (var(--table-columns, 1) - 1) * 7rem);table-layout:fixed}.case-study .table :is(th,td){min-width:7rem;overflow-wrap:anywhere;white-space:normal}.case-study .table :is(th,td):first-child{min-width:9rem}.case-study .table .table__first-column{width:9rem}@media(max-width:640px){.case-study .table--stack{min-width:0}.case-study .table--stack :is(th,td){min-width:0}}.case-study .table-wrap--narrow{max-width:min(100%,var(--measure))}body:has(.case-study) .nav__link{min-width:40px}
