@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-italic-B5xAaiFk.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-italic-DzZdc28x.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-italic-DcOpz6Lw.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-italic-CILZdfAp.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-italic-K3WlGtc8.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-italic-0pjOp8NU.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-italic-DpCbqKDY.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-cyrillic-ext-wght-normal-DiMfzA-V.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-cyrillic-wght-normal-D5lnP6kL.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-latin-ext-wght-normal-Byk3UhVp.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-latin-wght-normal-C1hSzPvX.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.line-sidebar{--accent-color: var(--color-accent-solid);--text-color: #c4c4c4;--marker-color: #6c6c6c;--marker-length: 60px;--marker-gap: 0px;--tick-scale: .5;--max-shift: 30px;--item-gap: 20px;--font-size: 1.1rem;position:relative;display:flex;width:100%;justify-content:flex-start}.line-sidebar--markers{padding-inline-start:calc(var(--marker-length) + var(--marker-gap))}.case-navigation .line-sidebar__list{display:flex;width:100%;flex-direction:column;gap:var(--item-gap);margin:0;padding:0;list-style:none}.line-sidebar__item{position:relative;width:100%}.line-sidebar__label{position:relative;display:flex;width:100%;min-height:2rem;align-items:center;padding-block:.375rem;color:var(--text-color);font-family:var(--font-family-caption);font-size:var(--font-size);font-weight:var(--font-weight-regular);line-height:var(--line-height-caption-md);text-decoration:none}.line-sidebar__content{display:inline-flex;align-items:center;transform:translate(0)}.line-sidebar__label[aria-current=location]{color:var(--accent-color);font-weight:var(--font-weight-semibold)}@media(hover:hover)and (pointer:fine){.line-sidebar__label:hover{color:var(--accent-color)}.line-sidebar__content,.line-sidebar__marker{transition:transform .1s cubic-bezier(.23,1,.32,1)}}.line-sidebar__index{margin-inline-end:.6rem;font-family:var(--font-family-caption);font-size:.85em;font-variant-numeric:tabular-nums;opacity:.55}.line-sidebar__marker{position:absolute;inset-block-start:50%;inset-inline-start:calc(-1 * var(--marker-length) - var(--marker-gap));width:var(--marker-length);height:1px;background-color:var(--marker-color);transform:translateY(-50%) scaleX(.7);transform-origin:left center}.line-sidebar__item:has(.line-sidebar__label[aria-current=location]) .line-sidebar__marker{background-color:var(--accent-color)}.line-sidebar--markers .line-sidebar__item:not(:last-child):after{position:absolute;inset-block-start:calc(100% + var(--item-gap) / 2);inset-inline-start:calc(-1 * var(--marker-length) - var(--marker-gap));width:calc(var(--marker-length) * var(--tick-scale));height:1px;background-color:var(--marker-color);content:"";opacity:.5;transform:translateY(-50%)}.line-sidebar--scale-tick .line-sidebar__item:not(:last-child):after{transform:translateY(-50%) scaleX(.7);transform-origin:left center}@media(prefers-reduced-motion:reduce){.line-sidebar__content{transform:none!important}.line-sidebar__marker,.line-sidebar--scale-tick .line-sidebar__item:not(:last-child):after{transform:translateY(-50%)!important}}@media(forced-colors:active){.line-sidebar__label[aria-current=location]{text-decoration:underline}}:root{color-scheme:light;--neutral-950: #0a0a0a;--neutral-800: #313131;--neutral-700: #404040;--neutral-600: #525252;--neutral-500: #737373;--neutral-300: #d4d4d4;--neutral-150: #ececee;--brand-tyrian-purple: #66023c;--accent-700: #4f002d;--accent-600: var(--brand-tyrian-purple);--accent-500: #8b285b;--accent-200: #f2dce7;--surface-page: #fffdfd;--surface-card: #f7eff3;--surface-raised: #ffffff;--surface-header: var(--surface-page);--surface-nav: var(--neutral-150);--surface-nav-active: var(--surface-raised);--surface-interactive-hover: rgb(0 0 0 / 4%);--color-text-primary: var(--neutral-950);--color-text-secondary: var(--neutral-700);--color-text-tertiary: var(--neutral-600);--color-text-muted: var(--neutral-500);--color-border: var(--neutral-300);--color-focus: var(--accent-700);--color-accent-solid: var(--accent-600);--color-text-on-accent: #ffffff;--color-avatar-ring: rgb(0 0 0 / 12%);--color-avatar-ring-hover: rgb(0 0 0 / 24%);--color-image-outline: rgb(0 0 0 / 10%);--shadow-nav-active: 0 1px 2px rgb(0 0 0 / 8%), 0 0 0 1px rgb(0 0 0 / 3%);--shadow-popover: 0 .75rem 2rem rgb(0 0 0 / 12%), 0 0 0 1px rgb(0 0 0 / 7%);--content-width: 42rem;--wide-width: 73.5625rem;--page-gutter: 2rem;--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--ease-out: cubic-bezier(.23, 1, .32, 1);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--space-9: 6rem;--space-10: 8rem;--space-11: 10rem;--space-12: 12rem;--space-13: 16rem;--space-label: var(--space-2);--space-content: var(--space-4);--space-group: var(--space-6);--space-component: var(--space-7);--space-section: var(--space-10);--space-chapter: var(--space-12);--layout-max: 80rem;--layout-reading: 40rem;--layout-standard: 60rem;--layout-columns: 12;--layout-gap: var(--space-5);--layout-outer: var(--space-8);--case-layout-width: 82rem;--case-sidebar-width: 12rem;--case-layout-gap: clamp(3rem, 5vw, 5rem);--case-inline-inset: 4rem;--case-layout-top: 2.5rem;--case-sticky-top: 2rem;--case-fade-height: 4rem;--case-reading-line: 96px;--case-prose-width: 34.375rem;--case-media-width: 34.375rem;--case-media-wide-width: 34.375rem;--case-section-gap: 5.5rem;--font-family-inter: "Inter Variable", Inter, ui-sans-serif, system-ui, sans-serif;--font-family-display: var(--font-family-inter);--font-family-heading: var(--font-family-inter);--font-family-text: var(--font-family-inter);--font-family-caption: var(--font-family-inter);--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-size-display: 4.5rem;--line-height-display: 1.2;--letter-spacing-display: -.03em;--font-size-h1: 3.75rem;--line-height-h1: 1.2;--letter-spacing-h1: -.03em;--font-size-h2: 3rem;--line-height-h2: 1.25;--letter-spacing-h2: -.02em;--font-size-h3: 2.25rem;--line-height-h3: 1.2222;--letter-spacing-h3: -.02em;--font-size-h4: 1.875rem;--line-height-h4: 1.2667;--letter-spacing-h4: 0;--font-size-h5: 1.5rem;--line-height-h5: 1.3333;--letter-spacing-h5: 0;--font-size-h6: 1.25rem;--line-height-h6: 1.4286;--letter-spacing-h6: 0;--font-size-paragraph-lg: .875rem;--line-height-paragraph-lg: 1.5714286;--letter-spacing-paragraph-lg: 0;--font-size-paragraph-md: .875rem;--line-height-paragraph-md: 1.5714286;--letter-spacing-paragraph-md: 0;--font-size-paragraph-sm: .875rem;--line-height-paragraph-sm: 1.5714286;--letter-spacing-paragraph-sm: 0;--font-size-caption-md: .8125rem;--line-height-caption-md: 1.5384615;--letter-spacing-caption-md: 0;--font-size-caption-sm: .625rem;--line-height-caption-sm: 1.2;--letter-spacing-caption-sm: 0;--letter-spacing-caption-sm-caps: .05em;color:var(--color-text-secondary);background:var(--surface-page);font-family:var(--font-family-text);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.type-display,.type-h1,.type-h2,.type-h3,.type-h4,.type-h5,.type-h6,.type-paragraph-lg,.type-paragraph-md,.type-paragraph-sm,.type-caption-md,.type-caption-sm{font-family:var(--type-family);font-size:var(--type-size);line-height:var(--type-line-height);letter-spacing:var(--type-letter-spacing)}.type-display{--type-family: var(--font-family-display);--type-size: var(--font-size-display);--type-line-height: var(--line-height-display);--type-letter-spacing: var(--letter-spacing-display)}.type-h1{--type-family: var(--font-family-heading);--type-size: var(--font-size-h1);--type-line-height: var(--line-height-h1);--type-letter-spacing: var(--letter-spacing-h1)}.type-h2{--type-family: var(--font-family-heading);--type-size: var(--font-size-h2);--type-line-height: var(--line-height-h2);--type-letter-spacing: var(--letter-spacing-h2)}.type-h3{--type-family: var(--font-family-heading);--type-size: var(--font-size-h3);--type-line-height: var(--line-height-h3);--type-letter-spacing: var(--letter-spacing-h3)}.type-h4{--type-family: var(--font-family-heading);--type-size: var(--font-size-h4);--type-line-height: var(--line-height-h4);--type-letter-spacing: var(--letter-spacing-h4)}.type-h5{--type-family: var(--font-family-heading);--type-size: var(--font-size-h5);--type-line-height: var(--line-height-h5);--type-letter-spacing: var(--letter-spacing-h5)}.type-h6{--type-family: var(--font-family-heading);--type-size: var(--font-size-h6);--type-line-height: var(--line-height-h6);--type-letter-spacing: var(--letter-spacing-h6)}.type-paragraph-lg{--type-family: var(--font-family-text);--type-size: var(--font-size-paragraph-lg);--type-line-height: var(--line-height-paragraph-lg);--type-letter-spacing: var(--letter-spacing-paragraph-lg)}.type-paragraph-md{--type-family: var(--font-family-text);--type-size: var(--font-size-paragraph-md);--type-line-height: var(--line-height-paragraph-md);--type-letter-spacing: var(--letter-spacing-paragraph-md)}.type-paragraph-sm{--type-family: var(--font-family-text);--type-size: var(--font-size-paragraph-sm);--type-line-height: var(--line-height-paragraph-sm);--type-letter-spacing: var(--letter-spacing-paragraph-sm)}.type-caption-md{--type-family: var(--font-family-caption);--type-size: var(--font-size-caption-md);--type-line-height: var(--line-height-caption-md);--type-letter-spacing: var(--letter-spacing-caption-md)}.type-caption-sm{--type-family: var(--font-family-caption);--type-size: var(--font-size-caption-sm);--type-line-height: var(--line-height-caption-sm);--type-letter-spacing: var(--letter-spacing-caption-sm)}.type-regular{font-weight:var(--font-weight-regular)}.type-medium{font-weight:var(--font-weight-medium)}.type-medium-italic{font-weight:var(--font-weight-medium);font-style:italic}.type-semibold{font-weight:var(--font-weight-semibold)}.type-bold{font-weight:var(--font-weight-bold)}.type-underlined{text-decoration-line:underline}.type-caps{text-transform:uppercase}.type-caption-sm.type-caps{letter-spacing:var(--letter-spacing-caption-sm-caps)}*{box-sizing:border-box}html{min-width:20rem;scroll-padding-top:7rem}body{min-width:20rem;min-height:100vh;margin:0;background:var(--surface-page);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}body:has(dialog[open]){overflow:hidden}button,a{font:inherit}button{color:inherit}a{color:inherit;text-decoration-thickness:from-font;text-underline-position:from-font}img{display:block;max-width:100%}p,h1,h2,h3,h4,dl,dd,figure{margin:0}::selection{color:var(--neutral-950);background:var(--accent-200)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.site-shell{min-height:100vh}.skip-link{position:fixed;z-index:100;inset-block-start:.75rem;inset-inline-start:.75rem;padding:.75rem 1rem;border-radius:var(--radius-sm);color:var(--color-text-on-accent);background:var(--color-accent-solid);transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.page-container,.wide-container{width:min(100% - (var(--page-gutter) * 2),var(--content-width));margin-inline:auto}.wide-container{width:min(100% - (var(--page-gutter) * 2),var(--wide-width))}.site-header-backdrop{position:fixed;z-index:2;inset-block-start:0;inset-inline:0;height:4.75rem;background:var(--surface-header);pointer-events:none}.site-header-backdrop:after{position:absolute;z-index:0;inset-inline:0;inset-block-end:-3rem;height:4rem;background:var(--surface-header);content:"";pointer-events:none;-webkit-backdrop-filter:blur(.375rem);backdrop-filter:blur(.375rem);-webkit-mask-image:linear-gradient(to bottom,#000 0%,rgb(0 0 0 / 98%) 28%,rgb(0 0 0 / 78%) 52%,rgb(0 0 0 / 42%) 72%,rgb(0 0 0 / 14%) 88%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,rgb(0 0 0 / 98%) 28%,rgb(0 0 0 / 78%) 52%,rgb(0 0 0 / 42%) 72%,rgb(0 0 0 / 14%) 88%,transparent 100%)}.site-header{position:sticky;z-index:5;inset-block-start:0;isolation:isolate;padding-block:1.5rem .75rem;background:transparent}.site-header__inner{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;width:min(calc(100% - (var(--layout-outer) * 2)),var(--layout-reading));margin-inline:auto;gap:1rem}.primary-nav__back{position:relative;z-index:1;display:inline-flex;height:100%;align-items:center;justify-content:center;gap:.375rem;padding-inline:.75rem;border-radius:999px;color:var(--color-text-primary);background:transparent;font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);text-decoration:none;white-space:nowrap}.primary-nav__back:hover{background:var(--surface-nav-active)}.primary-nav__back:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.primary-nav__divider{flex:none;width:1px;height:1.5rem;margin-inline:.375rem;background:repeating-linear-gradient(to bottom,var(--color-text-tertiary) 0 3px,transparent 3px 6px)}.primary-nav{position:relative;display:flex;width:20.5rem;height:2.5rem;align-items:center;flex:none;overflow:hidden;border-radius:999px}.primary-nav:before{position:absolute;inset:0;border-radius:inherit;background:var(--surface-nav);clip-path:inset(0 12.25rem 0 0 round 999px);content:""}.primary-nav--work:before{clip-path:inset(0 0 0 0 round 999px)}.primary-nav__group{position:absolute;inset-block:0;inset-inline-start:0;display:flex;align-items:center;padding:.25rem;opacity:0;pointer-events:none}.primary-nav__group--home{width:8.25rem;opacity:1;pointer-events:auto}.primary-nav__group--work{width:100%;clip-path:inset(0 12.25rem 0 0)}.primary-nav--work .primary-nav__group--home{opacity:0;pointer-events:none}.primary-nav--work .primary-nav__group--work{clip-path:inset(0 0 0 0);opacity:1;pointer-events:auto}.primary-nav__indicator{position:absolute;z-index:0;inset-block:.25rem;inset-inline-start:0;width:var(--active-link-width);border-radius:999px;background:var(--surface-nav-active);box-shadow:var(--shadow-nav-active);opacity:0;pointer-events:none;transform-origin:left center;transform:translate(var(--active-link-left)) scaleX(var(--active-link-scale))}.primary-nav:has(.primary-nav__link:focus-visible) .primary-nav__indicator{transition:none}.primary-nav__group.is-measured .primary-nav__indicator{opacity:1}.primary-nav__link{position:relative;z-index:1;display:inline-flex;flex:1;height:100%;align-items:center;justify-content:center;padding-inline:.75rem;border-radius:999px;color:var(--color-text-tertiary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);text-decoration:none;white-space:nowrap;transition-property:color;transition-duration:.12s;transition-timing-function:cubic-bezier(.2,0,0,1)}.primary-nav__link.is-active{color:var(--color-text-primary);background:var(--surface-nav-active);box-shadow:var(--shadow-nav-active)}.primary-nav__group.is-measured .primary-nav__link.is-active{background:transparent;box-shadow:none}.button:active,.project-card__link:active{scale:.96}.profile-menu{position:relative;flex:none}.avatar-trigger{display:block;width:2.5rem;height:2.5rem;padding:0;overflow:hidden;border:0;border-radius:50%;background:#ff6d6d;box-shadow:0 0 0 1px var(--color-avatar-ring);cursor:pointer;transition:scale .12s cubic-bezier(.2,0,0,1)}.avatar-trigger img{width:100%;height:100%;object-fit:cover}.avatar-trigger:active{scale:.96}.profile-popover{position:absolute;z-index:50;inset-block-start:calc(100% + .5rem);inset-inline-end:0;width:min(16rem,calc(100vw - 4rem));padding:.5rem;border-radius:var(--radius-md);color:var(--color-text-secondary);background:var(--surface-raised);box-shadow:var(--shadow-popover);transform-origin:top right;visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-.25rem);transition:opacity .16s var(--ease-out),transform .16s var(--ease-out),visibility 0s linear .16s}.profile-popover.is-open{visibility:visible;opacity:1;pointer-events:auto;transform:none;transition:opacity .16s var(--ease-out),transform .16s var(--ease-out),visibility 0s}.profile-popover__identity{display:grid;gap:.125rem;padding:.625rem .75rem .75rem;border-block-end:1px solid var(--color-border)}.profile-popover__name{color:var(--color-text-primary);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-paragraph-sm)}.profile-popover__role{color:var(--color-text-muted);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md)}.profile-popover__links{display:grid;gap:.125rem;padding-block-start:.25rem}.profile-popover__links a{display:flex;min-height:2.5rem;align-items:center;justify-content:space-between;gap:1rem;padding:.625rem .75rem;border-radius:var(--radius-sm);color:var(--color-text-secondary);text-decoration:none}.profile-popover__links svg{flex:none}.under-construction{display:grid;min-height:calc(100vh - 8.75rem);place-items:center;padding:2rem;text-align:center}.under-construction h1{color:var(--color-text-primary);font-family:var(--font-family-heading);font-size:var(--font-size-h5);font-weight:var(--font-weight-medium);line-height:var(--line-height-h5);letter-spacing:var(--letter-spacing-h5)}.home-page__content{display:flex;flex-direction:column;gap:clamp(4rem,10vw,6rem);padding-block:clamp(3.5rem,9vw,5rem) 5rem}.intro{display:flex;align-items:flex-start;flex-direction:column;gap:var(--dial-intro-gap, 2rem)}.intro__heading{display:grid;gap:.3125rem}.intro__heading h6{margin:0;color:var(--color-text-primary);font-family:var(--font-family-heading);font-size:var(--font-size-h6);font-weight:var(--font-weight-semibold);line-height:var(--line-height-h6);letter-spacing:var(--letter-spacing-h6)}.intro__heading p{color:var(--color-text-muted);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.intro__copy{display:grid;width:100%;gap:1rem;font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.intro__copy p{text-wrap:pretty}.intro__company{color:inherit;font-weight:var(--font-weight-semibold);text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:.18em}.intro__hello{display:inline-flex;width:fit-content;height:2rem;align-items:center;justify-content:center;justify-self:start;padding-inline:.625rem;border-radius:var(--radius-sm);color:var(--color-text-on-accent);background:var(--color-accent-solid);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-medium);line-height:1;text-decoration:none;transition:transform .12s var(--ease-out),background-color .15s ease}.intro__hello:active,.intro__hello:hover:active{transform:scale(.97)}.intro__hello:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.button{display:inline-flex;min-height:2.5rem;align-items:center;justify-content:center;padding:.625rem 1rem;border:0;border-radius:var(--radius-sm);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);text-decoration:none;transition-property:background-color,scale;transition-duration:.12s;transition-timing-function:cubic-bezier(.2,0,0,1)}.button--primary{color:var(--color-text-on-accent);background:var(--color-accent-solid)}.selected-work{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem}.section-heading h2,.section-label{color:var(--color-text-muted);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.section-heading h2{color:var(--color-text-tertiary);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm)}.arrow-link{display:inline-flex;min-height:2.125rem;align-items:center;gap:.5rem;color:var(--color-text-secondary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);text-decoration:none}.arrow-link svg{flex:none;transition:transform .15s cubic-bezier(.23,1,.32,1)}.selected-work__scroller{display:flex;min-width:0;gap:var(--dial-project-gap, 1rem);padding-block-end:.75rem;overflow-x:auto;scroll-snap-type:inline proximity;scrollbar-width:none}.selected-work__scroller::-webkit-scrollbar{display:none}.project-card{min-width:0}.project-card--compact{flex:0 0 min(25rem,82vw);scroll-snap-align:start}.project-card__link{display:grid;gap:1rem;color:inherit;text-decoration:none;transition-property:scale;transition-duration:.12s;transition-timing-function:cubic-bezier(.2,0,0,1)}button.project-card__link{width:100%;padding:0;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer}.live-project-dialog{width:min(80rem,calc(100vw - 3rem));max-width:none;height:min(52rem,calc(100dvh - 3rem));max-height:none;margin:auto;padding:0;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:0 1.5rem 4rem #0003;opacity:1;transform-origin:center;transform:scale(1);transition:opacity .22s var(--ease-out),transform .22s var(--ease-out)}.live-project-dialog::backdrop{background:#0c090ca6;backdrop-filter:blur(4px);transition:background-color .22s var(--ease-out)}.live-project-dialog.is-closing,.media-dialog.is-closing{opacity:0;transform:scale(.97);transition-duration:.18s}.live-project-dialog.is-closing::backdrop,.media-dialog.is-closing::backdrop{background-color:transparent;transition-duration:.18s}@starting-style{.live-project-dialog[open],.media-dialog[open]{opacity:0;transform:scale(.97)}.live-project-dialog[open]::backdrop,.media-dialog[open]::backdrop{background-color:transparent}}.live-project-dialog__panel{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%}.live-project-dialog__header{display:flex;min-height:3.5rem;align-items:center;justify-content:space-between;gap:1rem;padding-inline:1rem;border-bottom:1px solid var(--color-border)}.live-project-dialog__header h2{min-width:0;margin:0;overflow:hidden;color:var(--color-text-primary);font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-paragraph-md);text-overflow:ellipsis;white-space:nowrap}.live-project-dialog__actions{display:flex;flex:none;align-items:center;gap:.5rem}.live-project-dialog__actions a,.live-project-dialog__actions button{display:inline-flex;min-height:2.5rem;align-items:center;justify-content:center;gap:.375rem;padding-inline:.625rem;border:0;border-radius:var(--radius-sm);color:var(--color-text-primary);background:transparent;font-size:var(--font-size-paragraph-sm);text-decoration:none;cursor:pointer}.live-project-dialog__actions :is(a,button):hover{background:var(--surface-interactive-hover)}.live-project-dialog__actions :is(a,button):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.live-project-dialog__viewport{min-height:0;overflow:auto}.live-project-dialog iframe{width:100%;height:100%;border:0;background:#fff}.live-project-dialog--calculator iframe{min-width:77.5rem}@media(max-width:46rem){.live-project-dialog{width:100vw;height:100dvh;border:0;border-radius:0}}@media(max-width:36rem){.site-header__inner{width:calc(100% - 1rem);gap:.5rem}.primary-nav{width:15.5rem}.primary-nav:before{clip-path:inset(0 7.25rem 0 0 round 999px)}.primary-nav--work:before{clip-path:inset(0 0 0 0 round 999px)}.primary-nav__group--work{clip-path:inset(0 7.25rem 0 0)}.primary-nav--work .primary-nav__group--work{clip-path:inset(0 0 0 0)}.primary-nav--work .primary-nav__link{flex:1;padding-inline:.375rem;font-size:.75rem}.primary-nav__back{width:2rem;padding:0}.primary-nav__divider{margin-inline:.1875rem}.primary-nav__back span{display:none}}.project-card__media{display:grid;min-height:16.25rem;place-items:center;overflow:hidden;border-radius:var(--dial-card-radius, var(--radius-md));background:var(--surface-card)}.project-card__media img{width:min(calc(100% - 3.125rem),21.9375rem);aspect-ratio:279 / 203;object-fit:cover;outline:1px solid var(--color-image-outline)}.project-card--compact .project-card__media{min-height:0;aspect-ratio:16 / 9}.project-card--compact .project-card__media img{width:100%;aspect-ratio:16 / 9;object-fit:cover;transition:scale .18s cubic-bezier(.2,0,0,1)}.project-card--assignment .project-card__media{display:flex;align-items:center;justify-content:center;background:var(--accent-200)}.project-card--assignment .project-card__media img{width:84%;height:84%;aspect-ratio:auto;object-fit:contain;object-position:center;outline:none}.project-card__fallback{color:var(--accent-600);font-family:var(--font-family-display);font-size:var(--font-size-display);font-weight:var(--font-weight-semibold);line-height:var(--line-height-display);letter-spacing:var(--letter-spacing-display)}.project-card__content{display:grid;gap:.3125rem}.project-card__title-row{display:flex;align-items:center;gap:.3125rem}.project-card__title-row :is(h2,h3){flex:1;color:var(--color-text-secondary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-regular);line-height:var(--line-height-paragraph-md);letter-spacing:var(--letter-spacing-paragraph-md)}.project-card--compact .project-card__title-row :is(h2,h3){color:var(--color-text-primary);font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-paragraph-md)}.project-card__title-row svg{flex:none;opacity:0}.project-card__link:focus-visible .project-card__title-row svg{opacity:1;transition:none}.project-card__content>p{color:var(--color-text-secondary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);text-wrap:pretty}.experience{display:grid;gap:1.5rem;scroll-margin-top:7rem}.experience__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.experience__list{display:grid;gap:0;margin:0;padding:0;list-style:none}.experience__item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:flex-start;gap:.25rem 2rem;width:calc(100% + (var(--space-3) * 2));min-height:0;margin-inline:calc(var(--space-3) * -1);padding:.625rem var(--space-3);border-radius:var(--space-1);background:transparent;transition:background-color 80ms ease}.experience__role{flex:none}.experience__role h3{color:var(--color-text-primary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-regular);line-height:var(--line-height-paragraph-md);letter-spacing:var(--letter-spacing-paragraph-md)}.experience__role p,.experience__period{color:var(--color-text-muted);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);transition:color 80ms ease}.experience__period{grid-column:2;grid-row:1;flex:none;text-align:end;white-space:nowrap}.tabular{font-variant-numeric:tabular-nums}.site-footer{min-height:7rem}.site-footer__inner{display:flex;align-items:center;justify-content:space-between;width:min(100% - (var(--page-gutter) * 2),var(--content-width));min-height:7rem;margin-inline:auto;gap:1.5rem}.site-footer__motto{color:var(--color-text-tertiary);font-family:var(--font-family-text);font-size:var(--font-size-caption-md);font-weight:var(--font-weight-regular);line-height:var(--line-height-caption-md);letter-spacing:var(--letter-spacing-paragraph-sm)}.site-footer__meta{display:flex;align-items:center;gap:1.25rem;color:var(--color-text-tertiary);font-family:var(--font-family-text);font-size:var(--font-size-caption-md);font-weight:var(--font-weight-regular);line-height:var(--line-height-caption-md);letter-spacing:var(--letter-spacing-paragraph-sm)}.work-page,.case-page{min-height:calc(100vh - 10rem)}.work-page__inner{width:min(100% - (var(--page-gutter) * 2),60rem);padding-block:2.5rem 5rem}.page-intro{display:grid;max-width:48rem;gap:.75rem;margin-block-end:3rem}.page-intro h1{color:var(--color-text-primary);font-family:var(--font-family-heading);font-size:var(--font-size-h1);font-weight:var(--font-weight-medium);line-height:var(--line-height-h1);letter-spacing:var(--letter-spacing-h1);text-wrap:balance}.work-page .work-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:3rem}.project-card--gallery .project-card__media{position:relative;min-height:0;aspect-ratio:16 / 9;padding:0;border-radius:var(--dial-card-radius, var(--radius-lg));overflow:hidden;background:var(--surface-card)}.project-card--gallery{position:relative}.work-page .work-grid--interactions{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.125rem}.work-page__inner:has(.work-grid--interactions){width:min(100% - (var(--page-gutter) * 2),80rem)}.project-card--interaction .project-card__media{aspect-ratio:auto;height:auto;padding:3.75rem .25rem .25rem;border-radius:2.5rem;background:#18181b05}.project-card__media-label{position:absolute;top:1.25rem;left:2rem;right:2rem;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:.5rem;overflow:hidden;color:var(--color-text-primary);font-size:var(--font-size-caption-md);font-weight:var(--font-weight-semibold);line-height:1.25rem;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.project-card__media-label span{overflow:hidden;text-overflow:ellipsis}.project-card--interaction .project-preview-media{position:relative;inset:auto;width:100%;aspect-ratio:4 / 5;overflow:hidden;border-radius:2.25rem;background:var(--surface-raised)}.project-card--interaction .project-preview-media :is(img,video){object-fit:contain}.project-card--interaction .project-card__gallery-meta{padding-block-start:.75rem}.project-card--interaction .project-card__gallery-meta p{grid-row:1;font-size:var(--font-size-paragraph-sm)}.project-card--interaction .project-card__gallery-meta>span{display:none}.project-card__gallery-meta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.375rem 1.5rem;padding-block-start:1rem;color:var(--color-text-muted);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md)}.project-card__gallery-meta h2{display:inline-flex;align-items:center;gap:.375rem;color:inherit;font:inherit;font-weight:var(--font-weight-medium)}.project-card--gallery :is(.project-card__gallery-meta h2,.project-card__media-label) svg{flex:none;opacity:0}.project-card__gallery-meta span{flex:none}.project-card__gallery-meta p{grid-column:1 / -1;max-width:48rem;color:var(--color-text-secondary);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);text-wrap:pretty}.project-card--gallery .project-card__media>img,.project-preview-media :is(img,video){position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;object-fit:cover;outline:none}.project-card--case-study .project-card__media>img{object-fit:contain}.project-card--gallery.project-card--assignment .project-card__media>img{inset:8%;width:84%;height:84%}.project-preview-media{position:absolute;inset:0;pointer-events:none}.project-card__gallery-primary{position:absolute;z-index:1;inset:0;width:100%;height:100%;padding:0;border:0;background:transparent;text-decoration:none;cursor:pointer}.project-card__gallery-primary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.project-preview-media__toggle{position:absolute;z-index:2;display:inline-flex;min-width:2.75rem;min-height:2.75rem;align-items:center;justify-content:center;border:0;color:#fff;background:#00000094;box-shadow:0 0 0 1px #ffffff2e;cursor:pointer;pointer-events:auto}.project-preview-media__toggle:active{scale:.96}.project-preview-media__toggle{inset-block-start:var(--space-4);inset-inline-start:var(--space-4);padding:0;border-radius:50%}@media(prefers-reduced-motion:no-preference){.project-card--gallery .project-card__media{transition:transform .15s var(--ease-out)}.project-preview-media__toggle{transition:opacity .15s var(--ease-out)}.project-card--gallery :is(.project-card__gallery-meta h2,.project-card__media-label) svg{transition:opacity .15s var(--ease-out)}}@media(hover:hover)and (pointer:fine){.project-card--gallery:hover .project-card__media{transform:translateY(-4px)}.project-card--gallery:hover :is(.project-card__gallery-meta h2,.project-card__media-label) svg{opacity:1}.project-preview-media__toggle{opacity:0}.project-card--gallery:is(:hover,:focus-within) .project-preview-media__toggle{opacity:1}}.project-card--gallery:focus-within .project-card__media{transform:translateY(-4px)}.project-card--gallery:has(.project-card__gallery-primary:active) .project-card__media{transform:scale(.99)}.project-card--gallery:focus-within :is(.project-card__gallery-meta h2,.project-card__media-label) svg{opacity:1}@media(hover:none){.project-card--gallery :is(.project-card__gallery-meta h2,.project-card__media-label) svg{opacity:1}}.project-card__gallery-title{max-width:18ch;color:var(--color-accent-solid);font-family:var(--font-family-display);font-size:clamp(1.75rem,3vw,3rem);font-weight:var(--font-weight-regular);line-height:1.15;text-align:center;text-wrap:balance}.case-page__layout{display:grid;grid-template-columns:15.5rem minmax(0,43.125rem);justify-content:space-between;gap:4rem;padding-block:2.5rem 6rem}.case-sidebar{position:sticky;inset-block-start:7.75rem;align-self:start;display:grid;gap:2.5rem}.back-link{display:inline-flex;min-height:2.75rem;align-items:center;gap:.5rem;color:var(--color-text-primary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);text-decoration:none}.case-sidebar ol{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.case-sidebar a{color:var(--color-text-tertiary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);text-decoration:none}.case-sidebar li:first-child a{color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.case-sidebar li:first-child a:before{content:"";display:inline-block;width:.375rem;height:.375rem;margin-inline-end:.625rem;border-radius:50%;background:var(--accent-500);vertical-align:.08em}.case-study__header{display:grid;gap:2rem;margin-block-end:4rem}.case-study__header h1{color:var(--color-text-secondary);font-family:var(--font-family-heading);font-size:var(--font-size-h1);font-weight:var(--font-weight-semibold);line-height:var(--line-height-h1);letter-spacing:var(--letter-spacing-h1);text-wrap:balance}.case-study__header dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.case-study__header dl>div{display:grid;gap:.5rem;padding:.5rem 1rem;border-inline-start:1px dashed var(--color-border)}.case-study__header dt{color:var(--color-text-muted);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.case-study__header dd{color:var(--color-text-primary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.case-study__header>p{max-width:62ch;font-family:var(--font-family-text);font-size:var(--font-size-paragraph-lg);line-height:var(--line-height-paragraph-lg);letter-spacing:var(--letter-spacing-paragraph-lg);text-wrap:pretty}.prose{color:var(--color-text-secondary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.prose>*+*{margin-block-start:1.25rem}.prose h2,.prose h3,.prose h4{color:var(--color-text-primary);font-family:var(--font-family-heading);font-weight:var(--font-weight-medium);scroll-margin-top:7rem;text-wrap:balance}.prose h2{margin-block-start:4.5rem;font-size:var(--font-size-h4);line-height:var(--line-height-h4);letter-spacing:var(--letter-spacing-h4)}.prose h3{margin-block-start:3rem;font-size:var(--font-size-h5);line-height:var(--line-height-h5);letter-spacing:var(--letter-spacing-h5)}.prose h4{margin-block-start:2rem;font-size:var(--font-size-h6);line-height:var(--line-height-h6);letter-spacing:var(--letter-spacing-h6)}.prose p,.prose li{max-width:70ch}.prose a{color:var(--accent-700)}.prose ul,.prose ol{padding-inline-start:1.5rem}.prose blockquote{padding-inline-start:1.25rem;border-inline-start:.1875rem solid var(--accent-500);color:var(--color-text-tertiary)}.prose pre{padding:1.25rem;overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);color:#f8f5fa;background:#211c24;font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm);tab-size:2}.prose :not(pre)>code{padding:.12em .35em;border-radius:.3em;background:var(--surface-card);font-size:var(--font-size-paragraph-sm)}.case-media,.embed-block,.interactive-demo{margin-block:3rem}.case-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-block:3rem}.case-gallery .case-media{align-content:start;margin-block:0}.case-gallery .case-media button{height:100%;padding:clamp(1rem,4vw,2.5rem)}.case-media{display:grid;gap:.75rem}.case-media button{width:100%;padding:clamp(1.5rem,7vw,5.5rem);border:1px solid rgb(78 37 103 / 25%);border-radius:var(--radius-lg);background:var(--surface-card);cursor:zoom-in}.case-media button img{width:100%;outline:1px solid var(--color-image-outline)}.case-media figcaption,.embed-block figcaption{color:var(--color-text-muted);font-family:var(--font-family-caption);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md);letter-spacing:var(--letter-spacing-caption-md)}.embed-block iframe{width:100%;min-height:32rem;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--surface-raised)}@media(max-width:40rem){.case-gallery{grid-template-columns:1fr}}.interactive-demo{display:grid;gap:1.25rem;padding:clamp(1.25rem,4vw,2rem);border:1px solid rgb(78 37 103 / 25%);border-radius:var(--radius-lg);background:var(--surface-card)}.interactive-demo>h3{margin:0;font-family:var(--font-family-text);font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-bold);line-height:var(--line-height-paragraph-md);letter-spacing:var(--letter-spacing-paragraph-md)}.state-demo,.assignment-demo{display:grid;gap:1rem}.state-demo__tabs{display:flex;flex-wrap:wrap;gap:.5rem}.state-demo__tabs button,.assignment-demo button{min-height:2.75rem;padding-inline:.875rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--surface-raised);cursor:pointer}.state-demo__tabs button.is-active{color:var(--color-text-on-accent);border-color:var(--color-accent-solid);background:var(--color-accent-solid)}.transfer-state{display:flex;align-items:flex-start;gap:.875rem;padding:1.25rem;border-radius:var(--radius-md);background:var(--surface-raised)}.transfer-state__icon{flex:none;margin-block-start:.125rem;color:var(--accent-600)}.transfer-state--complete .transfer-state__icon{color:#2f7d5c}.transfer-state--delayed .transfer-state__icon{color:#9b6217}.transfer-state h4,.assignment-demo h4{font-family:var(--font-family-text);font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-paragraph-md);letter-spacing:var(--letter-spacing-paragraph-md)}.transfer-state p{margin-block-start:.25rem;color:var(--color-text-tertiary);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.assignment-demo{grid-template-columns:1fr auto;align-items:center;padding:1.25rem;border-radius:var(--radius-md);background:var(--surface-raised)}.assignment-demo__eyebrow{color:var(--color-text-muted);font-family:var(--font-family-caption);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md);letter-spacing:var(--letter-spacing-caption-md)}.assignment-demo dl{display:flex;flex-wrap:wrap;gap:1.5rem;margin-block-start:1rem}.assignment-demo dl>div{display:grid}.assignment-demo dt{color:var(--color-text-muted);font-family:var(--font-family-caption);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md);letter-spacing:var(--letter-spacing-caption-md)}.assignment-demo dd{font-family:var(--font-family-caption);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md);letter-spacing:var(--letter-spacing-caption-md)}.assignment-demo button{color:var(--color-text-on-accent);border-color:var(--neutral-950);background:var(--neutral-950)}.media-dialog{width:min(90vw,67.5rem);max-width:none;padding:clamp(1rem,4vw,3rem);border:0;border-radius:var(--radius-lg);color:var(--color-text-secondary);background:var(--surface-page);opacity:1;transform-origin:center;transform:scale(1);transition:opacity .22s var(--ease-out),transform .22s var(--ease-out)}.media-dialog::backdrop{background:#513f566b;backdrop-filter:blur(.625rem);transition:background-color .22s var(--ease-out)}.media-dialog--gallery::backdrop{background:#000c;backdrop-filter:none}.media-dialog__close{position:absolute;inset-block-start:.75rem;inset-inline-end:.75rem;display:grid;width:2.75rem;height:2.75rem;place-items:center;border:1px solid var(--color-border);border-radius:999px;background:var(--surface-raised);cursor:pointer}.media-dialog__close svg{display:block}.media-dialog figure{display:grid;gap:1rem}.media-dialog figure :is(img,video){max-height:75vh;margin-inline:auto;object-fit:contain;outline:1px solid var(--color-image-outline)}.media-dialog figcaption{color:var(--color-text-muted);font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.case-pagination{display:flex;justify-content:space-between;gap:1rem;margin-block-start:5rem;padding-block-start:2rem;border-block-start:1px solid var(--color-border)}.case-pagination a{display:flex;min-height:3rem;align-items:center;gap:.75rem;color:var(--color-text-secondary);text-decoration:none}.case-pagination svg{flex:none;transition:transform .15s var(--ease-out)}.case-pagination a:last-child{text-align:end}.case-pagination small{display:block;color:var(--color-text-muted);font-family:var(--font-family-caption);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md);letter-spacing:var(--letter-spacing-caption-md)}.not-found{display:grid;min-height:calc(100vh - 10rem);max-width:36rem;place-content:center;justify-items:start;gap:1rem;margin-inline:auto;padding:var(--page-gutter)}.not-found h1{color:var(--color-text-primary);font-family:var(--font-family-display);font-size:var(--font-size-display);font-weight:var(--font-weight-regular);line-height:var(--line-height-display);letter-spacing:var(--letter-spacing-display)}.content-error{padding:1rem;border:1px solid #b34040;border-radius:var(--radius-sm);color:#7f1d1d;background:#fff1f1}@media(min-width:62.0625rem){.work-page__inner{padding-block:2.5rem 6rem}.case-page{min-height:100vh}.case-page__layout{width:min(100% - 15rem,75rem);grid-template-columns:12.25rem 43.125rem;justify-content:start;column-gap:10.375rem;padding-block:7.8125rem 8rem}.case-sidebar{inset-block-start:2.5rem}.back-link{gap:.5rem}.case-study__header{width:21.5rem;gap:2.125rem;margin-inline:auto;margin-block-end:5.25rem}.case-study__header h1{font-size:2.25rem;line-height:1.2222;letter-spacing:-.02em;text-align:center}.case-study__header dl{position:relative;display:flex;justify-content:space-between;gap:0}.case-study__header dl:after{position:absolute;inset-block:0;inset-inline-start:50%;border-inline-start:1px dashed var(--color-border);content:""}.case-study__header dl>div{width:9.25rem;gap:.25rem;padding:0 0 0 1rem;border:0}.prose>*+*{margin-block-start:.5rem}.prose h2,.prose h3,.prose h4{margin-block-start:2.5rem;font-family:var(--font-family-text);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-paragraph-sm);letter-spacing:var(--letter-spacing-paragraph-sm)}.prose>:first-child{margin-block-start:0}.case-media{width:52.5rem;margin-block:2.5rem;margin-inline-start:-4.6875rem;gap:0}.case-media button{display:grid;height:32.4375rem;place-items:center;padding:3.6875rem 9rem;border:0;border-radius:0}.case-media button img{width:34.5rem;height:25.0625rem;object-fit:cover}.case-media figcaption{display:none}.media-dialog{position:fixed;inset:0;width:54rem;height:46.6875rem;margin:auto;padding:5.375rem 2.1875rem;border-radius:0}.media-dialog figure,.media-dialog figure img{width:49.5rem;height:35.9375rem}.media-dialog figure img{max-height:none;object-fit:cover}.media-dialog figcaption{display:none}}@media(hover:hover)and (pointer:fine){.case-pagination a:first-child:hover svg{transform:translate(-2px)}.case-pagination a:last-child:hover svg{transform:translate(2px)}.intro__hello:hover{transform:translateY(-1px);background:var(--accent-700)}.arrow-link:hover svg{transform:translate(2px,-2px)}.experience__item:hover{background:var(--surface-interactive-hover)}.experience__item:hover :is(.experience__role p,.experience__period){color:var(--color-text-primary)}.primary-nav__link:hover:not(.is-active){color:var(--color-text-primary)}.avatar-trigger:hover{box-shadow:0 0 0 2px var(--color-avatar-ring-hover)}.profile-popover__links a:hover{color:var(--color-text-primary);background:var(--surface-card)}.button--primary:hover{background:var(--accent-700)}.project-card__link:hover .project-card__title-row :is(h2,h3),.arrow-link:hover,.case-sidebar a:hover,.case-pagination a:hover{color:var(--color-text-primary)}.project-card__link:hover .project-card__title-row svg{opacity:1}.project-card--compact .project-card__link:hover .project-card__media img{scale:1.015}}@media(min-width:46.0001rem){:root{--page-gutter: 4rem}}@media(max-width:62rem){.work-page .work-grid--interactions,.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.case-page__layout{grid-template-columns:12rem minmax(0,1fr);gap:2.5rem}}@media(max-width:46rem){.work-page .work-grid--interactions{grid-template-columns:minmax(0,1fr);gap:2rem}:root{--page-gutter: 2rem}.page-intro h1{font-size:var(--font-size-h2);line-height:var(--line-height-h2);letter-spacing:var(--letter-spacing-h2)}.case-study__header h1{font-size:2rem;line-height:1.25;letter-spacing:-.02em}.not-found h1{font-size:var(--font-size-h1);line-height:var(--line-height-h1);letter-spacing:var(--letter-spacing-h1)}.prose h2{font-size:var(--font-size-h5);line-height:var(--line-height-h5);letter-spacing:var(--letter-spacing-h5)}.prose h3{font-size:var(--font-size-h6);line-height:var(--line-height-h6);letter-spacing:var(--letter-spacing-h6)}.prose h4{font-size:var(--font-size-paragraph-lg);line-height:var(--line-height-paragraph-lg);letter-spacing:var(--letter-spacing-paragraph-lg)}.site-header{padding-block:1rem .75rem}.site-header-backdrop{height:4.25rem}.work-page__inner{padding-block-start:1.5rem}.intro__copy{font-size:var(--font-size-paragraph-sm);line-height:var(--line-height-paragraph-sm)}.experience__item{display:grid;grid-template-columns:1fr auto;gap:.25rem 1rem}.experience__period{grid-column:2;grid-row:1}.work-grid{grid-template-columns:1fr}.work-grid .project-card__media{min-height:0}.case-page__layout{display:block}.case-sidebar{position:static;gap:1rem;margin-block-end:3rem}.case-sidebar nav{margin-inline:calc(var(--page-gutter) * -1);padding-inline:var(--page-gutter);overflow-x:auto}.case-sidebar ol{display:flex;width:max-content;gap:1rem}.case-sidebar li:first-child a:before{display:none}.case-sidebar a{display:flex;min-height:2.75rem;align-items:center;white-space:nowrap}.case-study__header dl{grid-template-columns:repeat(2,minmax(0,1fr))}.assignment-demo{grid-template-columns:1fr}.site-footer__inner{align-items:flex-start;flex-direction:column;padding-block:1rem}.site-footer__meta{flex-wrap:wrap;gap:.625rem 1rem}}@media(max-width:27rem){.site-header__inner{gap:.375rem}.primary-nav__link{flex:none;padding-inline:.625rem}.section-heading{align-items:flex-start;flex-direction:row;gap:1rem}.arrow-link{min-height:2.5rem}.case-pagination{flex-direction:column}.case-pagination a:last-child{justify-content:flex-end}}@media(prefers-reduced-motion:reduce){.project-card--gallery:is(:hover,:focus-within) .project-card__media,.project-card--gallery:has(.project-card__gallery-primary:active) .project-card__media{transform:none}html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-property:opacity,color,background-color,visibility!important;transition-duration:.1s!important;transition-timing-function:var(--ease-out)!important;scroll-behavior:auto!important}.avatar-trigger:active{scale:1}.intro__hello:hover,.arrow-link:is(:hover,:focus-visible) svg{transform:none}.intro__hello:active,.case-pagination a:is(:hover,:focus-visible) svg,.profile-popover,.profile-popover.is-open,.case-navigation__contents-list,.case-navigation__contents-list.is-open,.live-project-dialog,.live-project-dialog.is-closing,.media-dialog,.media-dialog.is-closing{transform:none!important}.project-card--compact .project-card__link:hover .project-card__media img{scale:1}.project-card--gallery .project-card__media{transform:none}}@media(prefers-reduced-motion:no-preference){.project-card__title-row svg{transition:opacity .12s cubic-bezier(.2,0,0,1)}.primary-nav__indicator{transition:transform .2s cubic-bezier(.77,0,.175,1),opacity .12s ease-out}.primary-nav:before{transition:clip-path .2s cubic-bezier(.77,0,.175,1)}.primary-nav__group{transition:opacity .15s var(--ease-out),clip-path .2s cubic-bezier(.77,0,.175,1)}}@media(forced-colors:active){:focus-visible{outline-color:Highlight}.primary-nav,.primary-nav__indicator,.profile-popover{border:1px solid CanvasText}}.case-study-page{min-height:100vh}html:has(.case-study-page){scroll-padding-block-start:0}.case-study-layout{display:grid;grid-template-columns:var(--case-sidebar-width) minmax(0,1fr);align-items:start;column-gap:var(--case-layout-gap);width:min(calc(100% - (var(--case-inline-inset) * 2)),var(--case-layout-width));padding-block:var(--case-layout-top) 4rem}.case-study-article{grid-column:2;min-width:0}.case-study-article__fade{position:sticky;z-index:10;inset-block-start:0;height:var(--case-fade-height);margin-block-start:calc(var(--case-fade-height) * -1);background:var(--surface-page);pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 0%,rgb(0 0 0 / 92%) 24%,rgb(0 0 0 / 62%) 52%,rgb(0 0 0 / 22%) 78%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,rgb(0 0 0 / 92%) 24%,rgb(0 0 0 / 62%) 52%,rgb(0 0 0 / 22%) 78%,transparent 100%)}.case-navigation--desktop{position:fixed;z-index:5;inset-block-start:196px;inset-inline-start:64px;display:grid;width:200px;max-height:calc(100vh - 212px);gap:14px;overflow-y:auto;scrollbar-width:thin}.case-navigation--mobile{display:none}.case-navigation__back{display:inline-flex;min-height:18px;align-items:center;justify-self:start;gap:.5rem;color:var(--color-text-primary);font-size:12px;font-weight:var(--font-weight-regular);line-height:18px;text-decoration:none}.case-study-hero{display:grid;max-width:var(--case-prose-width);gap:0;margin-inline:auto;translate:none}.case-study-hero h1{margin-block-end:1rem;color:var(--color-text-primary);font-family:var(--font-family-heading);font-size:2.25rem;font-weight:450;line-height:1.25;letter-spacing:-.03em;text-wrap:balance}.case-study-hero__summary{max-width:58ch;margin-block-end:2rem;color:var(--color-text-secondary);font-size:.875rem;line-height:1.8;text-wrap:pretty}.case-study-hero dl{display:flex;flex-wrap:wrap;column-gap:1rem;row-gap:.25rem}.case-study-hero dl>div{display:flex;align-items:baseline;gap:.5rem}.case-study-hero dt{color:var(--color-text-muted);font-family:var(--font-family-caption);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md)}.case-study-hero dd{color:var(--color-text-primary);font-size:var(--font-size-paragraph-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-paragraph-sm)}.case-study-hero__media.case-media,.case-media--wide{width:min(100%,var(--case-media-wide-width))}.case-study-hero__media.case-media{margin-block:3rem;margin-inline:auto}.case-study-hero__media.case-media button{aspect-ratio:2 / 1;padding:clamp(1rem,3vw,2.5rem);overflow:hidden}.case-study-hero__media.case-media button img{height:100%;object-fit:cover;object-position:center}:is(.case-study-page--assignment-workflows,.case-study-page--spotify-social) .case-study-hero__media.case-media button{aspect-ratio:auto;padding:0}:is(.case-study-page--assignment-workflows,.case-study-page--spotify-social) .case-study-hero__media.case-media button img{height:auto;object-fit:contain}:is(.case-study-page--assignment-workflows,.case-study-page--spotify-social) .case-section__body .case-media button{padding:0}.case-study-prose{max-width:none;color:var(--color-text-secondary);font-size:.875rem;line-height:1.8}.case-study-prose>*+*,.case-study-prose>:first-child{margin-block-start:0}.case-study-prose__lead,.case-study-hero{max-width:var(--case-prose-width);margin-inline:auto;translate:none}.case-study-prose>.case-section{margin-block-start:var(--case-section-gap);scroll-margin-top:var(--case-reading-line)}.case-study-prose>.case-section+.case-section{position:relative}.case-study-prose>.case-section+.case-section:before{position:absolute;inset-block-start:calc(var(--case-section-gap) / -2);inset-inline-start:50%;width:min(100%,var(--case-prose-width));height:.5px;background:var(--color-border);content:"";transform:translate(-50%)}.case-section__inner{width:100%;max-width:var(--case-prose-width);margin-inline:auto}.case-section__header{margin-block-end:1.25rem}.case-section__body{min-width:0}.prose .case-section__header h5{margin:0;color:var(--color-text-primary);font-family:var(--font-family-heading);font-size:var(--font-size-h5);font-weight:450;line-height:var(--line-height-h5);letter-spacing:-.02em;text-wrap:balance}.case-section__body>*+*,.case-study-prose__lead>*+*{margin-block-start:1rem}.case-study-prose p,.case-study-prose li{max-width:none}.case-study-prose h3{margin-block-start:3rem;color:var(--color-text-primary);font-family:var(--font-family-heading);font-size:var(--font-size-h5);font-weight:var(--font-weight-semibold);line-height:var(--line-height-h5);letter-spacing:var(--letter-spacing-h5)}.case-section__body>.layout-breakout{--breakout-max: var(--case-media-width);--breakout-gutter: var(--case-inline-inset);--breakout-offset-inline: 0px;margin-block:3rem}.case-section__body>.case-media--wide{--breakout-max: var(--case-media-wide-width)}.case-section__body>.interactive-demo{width:100%;max-width:none;margin-block:3rem}.case-media{display:grid;gap:1rem}.case-media button{display:grid;width:100%;height:auto;min-height:0;place-items:center;padding:clamp(1rem,5vw,4rem);border:0;border-radius:var(--radius-lg);background:var(--surface-card);cursor:zoom-in}.case-media button img{width:100%;height:auto;object-fit:contain;border-radius:calc(var(--radius-lg) - .5rem);outline:1px solid var(--color-image-outline);outline-offset:-1px}.case-media figcaption,.embed-block figcaption{display:block;max-width:68ch;color:var(--color-text-muted);font-family:var(--font-family-caption);font-size:var(--font-size-caption-md);line-height:var(--line-height-caption-md)}.interactive-demo{gap:1.5rem;border:0;box-shadow:0 0 0 1px var(--color-image-outline)}.interactive-demo>h3{color:var(--color-text-primary);font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-semibold)}.media-dialog{position:fixed;inset:0;width:min(90vw,67.5rem);height:auto;max-width:none;max-height:90vh;margin:auto;padding:clamp(2rem,5vw,4rem);overflow:auto;border-radius:var(--radius-lg);overscroll-behavior:contain}.media-dialog figure,.media-dialog figure :is(img,video){width:auto;height:auto}.media-dialog figure :is(img,video){width:100%;max-height:72vh;object-fit:contain}.media-dialog figcaption{display:block}.media-dialog--gallery{width:min(92vw,80rem);max-height:90svh;padding:0;overflow:visible;border-radius:1.5rem;background:transparent;box-shadow:none}.media-dialog--gallery figure{display:grid;width:100%;max-height:90svh;place-items:center;gap:.75rem}.media-dialog--gallery figure :is(img,video){width:auto;max-width:100%;height:auto;max-height:calc(90svh - 3rem);border-radius:1.5rem;object-fit:contain;outline:1px solid rgb(255 255 255 / 10%);outline-offset:-1px}.media-dialog--gallery figcaption{max-width:68ch;padding-inline:1rem;color:#fff;text-align:center;text-shadow:0 1px 2px rgb(0 0 0 / 60%)}.media-dialog--gallery .media-dialog__close{z-index:2;inset-block-start:.75rem;inset-inline-end:.75rem;border-color:#ffffff2e;color:#fff;background:#0000009e}.case-pagination{width:min(100%,var(--case-media-wide-width));margin-block-start:8rem;margin-inline:auto;padding-block-start:2rem}.case-pagination a{min-width:0;min-height:3.5rem;color:var(--color-text-primary)}.case-pagination a span{display:grid;gap:.25rem}.case-pagination strong{font-size:var(--font-size-paragraph-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-paragraph-md)}@media(max-width:70rem){:root{--case-inline-inset: 1.5rem;--case-layout-top: 2.5rem;--case-reading-line: 136px}.case-study-layout{display:block;width:min(calc(100% - (var(--case-inline-inset) * 2)),var(--case-media-wide-width));padding-block-end:4rem}.case-navigation--desktop,.case-study-article__fade{display:none}.case-navigation--mobile{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-block-end:2rem}.case-navigation--mobile .case-navigation__mobile-back{display:inline-flex;align-items:center;gap:.375rem;padding-block:.25rem;color:var(--color-text-muted);font-size:.875rem;line-height:1.25rem;text-decoration:none}.case-navigation__contents{position:relative;z-index:2}.case-navigation__contents-toggle{display:inline-flex;min-height:2.75rem;align-items:center;gap:.5rem;padding:.25rem .5rem;border:0;background:transparent;color:var(--color-text-primary);font-size:.875rem;cursor:pointer;list-style:none}.case-navigation__contents-toggle::-webkit-details-marker{display:none}.case-navigation__contents-toggle:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:2px}.case-navigation__contents-list{position:absolute;inset-block-start:calc(100% + .5rem);inset-inline-end:0;display:grid;min-width:min(18rem,calc(100vw - 3rem));max-height:min(65vh,30rem);overflow-y:auto;padding:.5rem;border:1px solid var(--color-border);border-radius:.75rem;background:var(--surface-raised);box-shadow:0 .75rem 2rem #0000001f;visibility:hidden;opacity:0;pointer-events:none;transform-origin:top right;transform:translateY(-.25rem);transition:opacity .16s var(--ease-out),transform .16s var(--ease-out),visibility 0s linear .16s}.case-navigation__contents-list.is-open{visibility:visible;opacity:1;pointer-events:auto;transform:none;transition:opacity .16s var(--ease-out),transform .16s var(--ease-out),visibility 0s}.case-navigation__contents-list a{padding:.625rem .75rem;border-radius:.375rem;color:var(--color-text-primary);font-size:.875rem;line-height:1.4;text-decoration:none}.case-navigation__contents-list a:hover,.case-navigation__contents-list a:focus-visible{background:var(--surface-interactive-hover)}.case-study-hero{padding-block-start:0;translate:none}.case-study-prose__lead{translate:none}.case-section__inner{width:100%}.case-section__body>.layout-breakout{--breakout-offset-inline: 0px}}@media(max-width:46rem){:root{--case-layout-top: 2rem;--case-section-gap: 3.5rem}.case-study-hero h1{font-size:1.625rem;line-height:1.25;letter-spacing:-.03em}.case-study-hero__media.case-media{margin-block:2rem}.case-study-hero__media.case-media button{aspect-ratio:auto}.case-study-hero__media.case-media button img{height:auto;object-fit:contain}.prose .case-section__header h5{font-size:var(--font-size-h6);line-height:1.4;letter-spacing:-.02em}.case-section__body>.layout-breakout,.case-section__body>.interactive-demo{margin-block:2rem}.case-media button{padding:1rem}.case-pagination{flex-direction:column;gap:1.5rem;margin-block-start:6rem}.case-pagination a:last-child{justify-content:flex-end}}@media(forced-colors:active){.interactive-demo{border:1px solid CanvasText;box-shadow:none}}html[data-theme-switching=true] *,html[data-theme-switching=true] *:before,html[data-theme-switching=true] *:after{transition:none!important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.portfolio-grid{display:grid;grid-template-columns:repeat(var(--layout-columns),minmax(0,1fr));column-gap:var(--layout-gap);width:min(calc(100% - (var(--layout-outer) * 2)),var(--layout-max));margin-inline:auto}.layout-breakout{--breakout-max: var(--layout-max);--breakout-gutter: var(--layout-outer);--breakout-offset-inline: 0px;width:min(calc(100vw - (var(--breakout-gutter) * 2)),var(--breakout-max));max-width:none;margin-inline:0;margin-inline-start:50%;translate:calc(-50% + var(--breakout-offset-inline)) 0}.home-page__content.portfolio-grid{row-gap:2.5rem;padding-block:4rem 2.5rem}.home-page{overflow-x:clip}.home-page__content>[data-width=reading]{grid-column:1 / -1;justify-self:center;width:min(100%,var(--layout-reading))}.home-page__content>[data-width=standard]{grid-column:2 / 12;justify-self:center;width:min(100%,var(--layout-standard))}.home-page__content>[data-width=wide]{grid-column:1 / -1}.intro,.selected-work,.experience,.project-card,.case-study-hero{position:relative}.home-page__content>:is(.intro,.selected-work,.experience):after{position:absolute;inset-block-end:-1.25rem;inset-inline-start:50%;width:100vw;height:1px;background:repeating-linear-gradient(to right,color-mix(in srgb,var(--brand-tyrian-purple) 24%,transparent) 0 6px,transparent 6px 14px);content:"";pointer-events:none;translate:-50% 0}.intro{gap:var(--dial-intro-gap, 1rem)}.intro__heading{gap:var(--space-label)}.intro__copy{gap:var(--space-content)}.selected-work{gap:1rem}.selected-work__narrow{width:min(100%,var(--layout-reading));justify-self:center}.selected-work__scroller{--rail-start: max(var(--layout-outer), calc((100vw - var(--layout-reading)) / 2));width:100vw;margin-inline-start:calc(50% - 50vw);gap:var(--dial-project-gap, 1.5rem);padding-inline:var(--rail-start) var(--layout-outer);scroll-padding-inline:var(--rail-start) var(--layout-outer)}.project-card--compact .project-card__link{gap:0}.project-card--compact .project-card__content{gap:.25rem;margin-block-start:1rem}.experience{gap:1rem}.experience__list{gap:0}.experience__item{min-height:0}.work-page__inner{width:min(calc(100% - 1rem),75rem);padding-block-start:2.5rem}.site-footer__inner{width:min(calc(100% - (var(--layout-outer) * 2)),var(--layout-max))}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.case-study-layout{grid-template-columns:minmax(0,1fr) minmax(0,var(--case-prose-width)) minmax(0,1fr);column-gap:0;width:100%}.case-navigation--desktop{grid-column:1;width:200px;margin-inline-start:0}.case-navigation--desktop .line-sidebar__label{min-height:23px;padding-block:0;line-height:18px}.case-study-article{grid-column:2}.site-shell{position:relative;isolation:isolate}.site-shell>main,.site-shell>footer{position:relative}.layout-grid-overlay{--grid-mark-length: 6px;--grid-mark-gap: 10px;position:absolute;z-index:3;inset:0;opacity:0;pointer-events:none}.layout-grid-overlay__vertical,.layout-grid-overlay__horizontal{position:absolute;display:block;pointer-events:none}.layout-grid-overlay__vertical{--grid-mark-color: var(--color-grid-primary);inset-block:0;width:1px;background:repeating-linear-gradient(to bottom,var(--grid-mark-color) 0 var(--grid-mark-length),transparent var(--grid-mark-length) calc(var(--grid-mark-length) + var(--grid-mark-gap)))}.layout-grid-overlay__vertical--breakout{--grid-mark-color: var(--color-grid-breakout)}.layout-grid-overlay__horizontal{inset-inline:0;height:1px;background:repeating-linear-gradient(to right,var(--color-grid-horizontal) 0 var(--grid-mark-length),transparent var(--grid-mark-length) calc(var(--grid-mark-length) + var(--grid-mark-gap)))}html[data-grid=true] .layout-grid-overlay{opacity:1}.social-dock{position:fixed;z-index:9999;inset-inline-start:50%;inset-block-end:calc(20px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:4px;padding:4px;border:1px solid #f5f5f5;border-radius:999px;background:#fff;box-shadow:0 2px 2px #00000014,0 12px 20px #0000001f;translate:-50% 0}.social-dock a{position:relative;display:grid;width:36px;height:36px;place-items:center;border-radius:999px;color:#000;background:#f9f9f9;transition:background-color .15s ease,transform .15s cubic-bezier(.23,1,.32,1)}.social-dock img{display:block;width:36px;height:36px}.social-dock a:focus-visible{background:#ededed;transition:none}@media(hover:hover)and (pointer:fine){.social-dock a:hover{background:#ededed;transform:translateY(-2px)}}.social-dock a:focus-visible{transform:none;transition:none}.social-dock a:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:2px}.social-dock__tooltip{position:absolute;inset-block-end:calc(100% + 12px);inset-inline-start:50%;padding:5px 8px;border-radius:6px;color:#fff;background:#111;font-size:12px;line-height:1;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%,4px);transition:opacity .16s ease,transform .16s cubic-bezier(.23,1,.32,1)}.social-dock a:focus-visible .social-dock__tooltip{opacity:1;transform:translate(-50%,4px);transition:none}@media(hover:hover)and (pointer:fine){.social-dock a:hover .social-dock__tooltip{opacity:1;transform:translate(-50%)}}.social-dock a:focus-visible .social-dock__tooltip{transform:translate(-50%,4px);transition:none}@media(prefers-reduced-motion:reduce){.social-dock a:is(:hover,:focus-visible){transform:none}.social-dock a:is(:hover,:focus-visible) .social-dock__tooltip{transform:translate(-50%)}}html[data-theme=dark] .social-dock{border-color:#353238;background:#211e23}html[data-theme=dark] .social-dock a{color:#fff;background:#29262c}html[data-theme=dark] .social-dock img{filter:invert(1)}html[data-theme=dark] .social-dock a:hover,html[data-theme=dark] .social-dock a:focus-visible{background:#39343d}html[data-theme=light]{color-scheme:light;--color-control-solid: #0a0a0a;--color-control-on-solid: #fff;--color-control-border: #0a0a0a;--color-grid-primary: rgb(69 84 110 / 13%);--color-grid-breakout: rgb(69 84 110 / 8%);--color-grid-horizontal: rgb(69 84 110 / 6%)}html[data-theme=dark]{color-scheme:dark;--neutral-950: #f2f2f2;--neutral-800: #e5e5e5;--neutral-700: #c6c6c6;--neutral-600: #b3b3b3;--neutral-500: #a3a3a3;--neutral-300: #444449;--neutral-150: #242427;--accent-700: #f5b9d7;--accent-600: #dc87b1;--accent-500: #a63f75;--accent-200: #633049;--surface-page: #0a0a0a;--surface-card: #171719;--surface-raised: #202023;--surface-header: var(--surface-page);--surface-nav: var(--neutral-150);--surface-nav-active: var(--surface-raised);--surface-interactive-hover: rgb(255 255 255 / 6%);--color-text-primary: var(--neutral-950);--color-text-secondary: var(--neutral-700);--color-text-tertiary: var(--neutral-600);--color-text-muted: var(--neutral-500);--color-border: var(--neutral-300);--color-focus: var(--accent-700);--color-accent-solid: var(--accent-600);--color-text-on-accent: #1b0712;--color-avatar-ring: rgb(255 255 255 / 16%);--color-avatar-ring-hover: rgb(255 255 255 / 32%);--color-image-outline: rgb(255 255 255 / 10%);--color-control-solid: #f2f2f2;--color-control-on-solid: #0a0a0a;--color-control-border: #f2f2f2;--color-grid-primary: rgb(175 194 220 / 17%);--color-grid-breakout: rgb(175 194 220 / 11%);--color-grid-horizontal: rgb(175 194 220 / 8%);--shadow-nav-active: 0 1px 2px rgb(0 0 0 / 45%), 0 0 0 1px rgb(255 255 255 / 7%);--shadow-popover: 0 .75rem 2rem rgb(0 0 0 / 48%), 0 0 0 1px rgb(255 255 255 / 8%)}html[data-theme=light][data-contrast=high]{--neutral-700: #242424;--neutral-600: #343434;--neutral-500: #4a4a4a;--neutral-300: #777;--surface-page: #fff;--surface-card: #f3f3f3;--surface-nav: #e6e6e6;--color-accent-solid: var(--brand-tyrian-purple)}html[data-theme=dark][data-contrast=high]{--neutral-950: #fff;--neutral-700: #f0f0f0;--neutral-600: #ddd;--neutral-500: #c2c2c2;--neutral-300: #929292;--surface-page: #080808;--surface-card: #191919;--surface-nav: #282828;--color-accent-solid: #f5b9d7}html[data-theme=dark] .content-error{border-color:#d18484;color:#ffd9d9;background:#381c1c}@media(max-width:70rem){:root{--layout-columns: 8;--layout-outer: var(--space-6)}.home-page__content>[data-width=standard]{grid-column:1 / -1}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.work-page__inner{width:calc(100% - 1rem)}.case-study-layout{width:min(calc(100% - (var(--layout-outer) * 2)),var(--case-media-wide-width))}}@media(max-width:46rem){:root{--layout-columns: 4;--layout-gap: var(--space-4);--layout-outer: var(--space-5);--space-section: var(--space-8);--space-chapter: var(--space-9);--space-component: var(--space-6)}.home-page__content.portfolio-grid{row-gap:1.5rem;padding-block:2rem 1.5rem}.home-page__content>[data-width]{grid-column:1 / -1;width:100%}.work-grid{grid-template-columns:1fr}.work-page__inner{width:calc(100% - 1rem)}}@media(forced-colors:active){.layout-grid-overlay{display:none}}html[data-theme=light]{--color-marginalia-ink: #303030}html[data-theme=dark]{--color-marginalia-ink: #e4e4e4}html[data-theme=light][data-contrast=high]{--color-marginalia-ink: #111}html[data-theme=dark][data-contrast=high]{--color-marginalia-ink: #fff}.marginalia-anchor{position:relative}.marginalia{position:absolute;z-index:4;display:inline-flex;width:max-content;max-width:var(--marginalia-max, 11rem);align-items:center;gap:var(--space-2);margin:0;color:var(--color-marginalia-ink);font-family:Caveat Variable,cursive;font-size:1.25rem;font-weight:500;line-height:1.15;white-space:pre-line;text-wrap:pretty;rotate:var(--marginalia-rotation, 0deg)}.marginalia--right{inset-block-start:var(--space-6);inset-inline-start:calc(100% + var(--space-5))}.marginalia--left{inset-block-start:var(--space-6);inset-inline-end:calc(100% + var(--space-5));flex-direction:row-reverse}.marginalia--top-right{inset-block-end:calc(100% + var(--space-3));inset-inline-end:0}.marginalia--bottom,.marginalia--bottom-right{inset-block-start:calc(100% + var(--space-2));inset-inline-end:0}.marginalia--bottom-left{inset-block-start:calc(100% + var(--space-2));inset-inline-start:0}.marginalia--case-hero{inset-block-start:calc(3rem + var(--space-6))}.marginalia--experience{inset-block-start:0}.case-study-hero__visual{display:flow-root}.case-study-hero__visual:has(.marginalia){margin-block-end:3rem}.case-study-hero__visual:has(.marginalia) .case-study-hero__media{margin-block-end:0}.marginalia__drawing{display:block;width:3rem;height:2.5rem;flex:none;overflow:visible}@media(max-width:75rem){.marginalia{position:relative;inset:auto;display:flex;width:fit-content;max-width:min(var(--marginalia-max, 11rem),calc(100% - var(--space-5)));margin-block-start:var(--space-4);margin-inline-start:var(--space-5);rotate:0deg}.marginalia--left{flex-direction:row}.marginalia--experience{flex:none;margin:0}.marginalia--case-hero{margin-block-start:var(--space-4);margin-inline-start:0}.marginalia--case-hero .marginalia__drawing{display:none}}@media(max-width:46rem){.marginalia{font-size:1.1875rem}.marginalia__drawing{width:2.25rem;height:2rem}.case-study-hero__visual:has(.marginalia){margin-block-end:2rem}}@media(prefers-reduced-motion:no-preference){.marginalia{animation:marginalia-appear .24s ease-out both;animation-delay:var(--marginalia-delay, 0ms)}.marginalia__drawing path{stroke-dasharray:none}}@keyframes marginalia-appear{0%{opacity:0;translate:0 4px}to{opacity:1;translate:0 0}}
