@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexSans-Regular.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexSans-Medium.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexSans-SemiBold.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-Regular.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-Medium.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexMono-SemiBold.woff2) format("woff2")}*{margin:0;padding:0;box-sizing:border-box}:root{color-scheme:dark;--bg-primary: #0A0A0A;--text-primary: #ffffff;--text-secondary: #ABABAB;--surface-1: rgba(255, 255, 255, .03);--surface-2: rgba(255, 255, 255, .05);--surface-3: rgba(255, 255, 255, .08);--border-subtle: #2A2A2A;--border-default: #383838;--border-interactive: #626262;--accent: #43E0DB;--accent-dim: rgba(67, 224, 219, .16);--scrim: rgba(10, 10, 10, .75);--lightbox-fg: rgba(255, 255, 255, .72);--lightbox-fg-strong: #ffffff;--lightbox-surface: rgba(255, 255, 255, .12);--lightbox-border: rgba(255, 255, 255, .45);--image-bg: var(--surface-2);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--page-max: 1440px;--sidebar-width: 340px;--navbar-height: 60px;--measure: 68ch;--measure-narrow: 62ch;--duration-fast: .12s;--duration-base: .2s;--duration-slow: .35s;--ease-out: cubic-bezier(.16, 1, .3, 1);--radius-sm: 2px;--radius-md: 4px;--font-sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", "Courier New", monospace;--type-site-title-size: 22px;--type-site-title-weight: 500;--type-site-title-line-height: 1.2;--type-site-title-letter-spacing: -.02em;--type-headline-large-size: 32px;--type-headline-large-weight: 500;--type-headline-large-line-height: 1.2;--type-headline-large-letter-spacing: -.02em;--type-headline-medium-size: 17px;--type-headline-medium-weight: 500;--type-headline-medium-line-height: 1.3;--type-headline-medium-letter-spacing: -.02em;--type-headline-small-size: 15px;--type-headline-small-weight: 600;--type-headline-small-line-height: 1.4;--type-headline-small-letter-spacing: -.01em;--type-eyebrow-size: 11px;--type-eyebrow-weight: 600;--type-eyebrow-line-height: 1.4;--type-eyebrow-letter-spacing: .05em;--type-body-large-size: 16px;--type-body-large-weight: 400;--type-body-large-line-height: 1.75;--type-body-large-letter-spacing: -.01em;--type-body-medium-size: 15px;--type-body-medium-weight: 400;--type-body-medium-line-height: 1.7;--type-body-medium-letter-spacing: -.01em;--type-body-small-size: 14px;--type-body-small-weight: 400;--type-body-small-line-height: 1.6;--type-body-small-letter-spacing: -.01em;--type-body-xsmall-size: 13px;--type-body-xsmall-weight: 400;--type-body-xsmall-line-height: 1.5;--type-body-xsmall-letter-spacing: 0}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){color-scheme:light;--bg-primary: #FAFAFA;--text-primary: #0A0A0A;--text-secondary: #5A5A5A;--surface-1: rgba(0, 0, 0, .03);--surface-2: rgba(0, 0, 0, .05);--surface-3: rgba(0, 0, 0, .08);--border-subtle: #E2E2E2;--border-default: #D0D0D0;--border-interactive: #8A8A8A;--accent: #0E7C77;--accent-dim: rgba(14, 124, 119, .14);--scrim: rgba(250, 250, 250, .75)}}:root[data-theme=light]{color-scheme:light;--bg-primary: #FAFAFA;--text-primary: #0A0A0A;--text-secondary: #5A5A5A;--surface-1: rgba(0, 0, 0, .03);--surface-2: rgba(0, 0, 0, .05);--surface-3: rgba(0, 0, 0, .08);--border-subtle: #E2E2E2;--border-default: #D0D0D0;--border-interactive: #8A8A8A;--accent: #0E7C77;--accent-dim: rgba(14, 124, 119, .14);--scrim: rgba(250, 250, 250, .75)}:root[data-theme=dark]{color-scheme:dark;--bg-primary: #0A0A0A;--text-primary: #ffffff;--text-secondary: #ABABAB;--surface-1: rgba(255, 255, 255, .03);--surface-2: rgba(255, 255, 255, .05);--surface-3: rgba(255, 255, 255, .08);--border-subtle: #2A2A2A;--border-default: #383838;--border-interactive: #626262;--accent: #43E0DB;--accent-dim: rgba(67, 224, 219, .16);--scrim: rgba(10, 10, 10, .75)}body{font-family:var(--font-sans);font-size:var(--type-body-medium-size);line-height:var(--type-body-medium-line-height);font-weight:var(--type-body-medium-weight);letter-spacing:var(--type-body-medium-letter-spacing);background-color:var(--bg-primary);color:var(--text-primary);min-height:100svh;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-y:scroll}#root{min-height:100svh;max-width:var(--page-max);margin:0 auto}a{color:var(--text-primary);text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}.eyebrow{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary)}.measure{max-width:var(--measure)}.skip-link{position:absolute;left:var(--space-4);top:var(--space-2);z-index:200;padding:var(--space-2) var(--space-4);background:var(--bg-primary);border:1px solid var(--accent);color:var(--text-primary);font-size:var(--type-body-small-size);transform:translateY(-200%);transition:transform var(--duration-base) var(--ease-out)}.skip-link:focus-visible{transform:translateY(0)}*{scrollbar-width:thin;scrollbar-color:var(--border-default) var(--bg-primary)}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background-color:var(--border-default);border-radius:var(--radius-md);border:3px solid var(--bg-primary)}::-webkit-scrollbar-thumb:hover{background-color:var(--text-secondary)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:.01ms!important;transition-delay:0ms!important;scroll-behavior:auto!important}}.navbar{position:fixed;top:0;left:0;right:0;height:var(--navbar-height);display:flex;align-items:center;justify-content:center;background-color:var(--bg-primary);border-bottom:1px solid var(--border-subtle);z-index:100}.navbar-content{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);width:100%;max-width:var(--page-max);padding:0 var(--space-10)}.navbar-home{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);transition:color var(--duration-base)}.navbar-home:hover{color:var(--text-primary)}.nav-links{display:flex;align-items:center;list-style:none;gap:var(--space-8);margin-left:auto}.nav-links a{font-family:var(--font-sans);font-size:var(--type-body-small-size);font-weight:500;letter-spacing:var(--type-body-small-letter-spacing);color:var(--text-secondary);transition:color var(--duration-base)}.nav-links a:hover,.nav-links a.active{color:var(--text-primary)}.nav-links a.active:after{content:"";display:block;height:1px;margin-top:3px;background-color:var(--accent)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:1px solid transparent;color:var(--text-secondary);cursor:pointer;transition:color var(--duration-base),border-color var(--duration-base)}.theme-toggle:hover{color:var(--accent);border-color:var(--border-interactive)}.portfolio{display:flex;min-height:100svh;padding-top:var(--navbar-height);width:100%}.sidebar{width:var(--sidebar-width);flex-shrink:0;padding:var(--space-12) var(--space-8);border-right:1px solid var(--border-subtle);position:sticky;top:var(--navbar-height);height:calc(100svh - var(--navbar-height));display:flex;flex-direction:column;overflow-y:auto}.site-name{font-family:var(--font-sans);font-size:var(--type-site-title-size);font-weight:var(--type-site-title-weight);line-height:var(--type-site-title-line-height);letter-spacing:var(--type-site-title-letter-spacing);color:var(--text-primary);margin-bottom:var(--space-3)}.sidebar .tagline{font-family:var(--font-sans);font-size:var(--type-headline-medium-size);font-weight:var(--type-headline-medium-weight);line-height:var(--type-headline-medium-line-height);letter-spacing:var(--type-headline-medium-letter-spacing);color:var(--text-primary);margin-bottom:var(--space-5)}.sidebar .bio{font-size:var(--type-body-small-size);line-height:var(--type-body-small-line-height);letter-spacing:var(--type-body-small-letter-spacing);color:var(--text-secondary);margin-bottom:var(--space-8)}.sidebar .contact{margin-top:auto;padding-top:var(--space-6)}.sidebar .contact h2{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-4)}.sidebar .contact ul{list-style:none}.sidebar .contact li{margin-bottom:var(--space-2);font-size:var(--type-body-small-size);line-height:var(--type-body-small-line-height)}.sidebar .contact a{color:var(--text-secondary);transition:color var(--duration-base)}.sidebar .contact a:hover{color:var(--accent)}.contact-profiles{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2)}.contact-sep{color:var(--border-interactive);-webkit-user-select:none;user-select:none}.local-time{color:var(--text-secondary);font-variant-numeric:tabular-nums}.main-content{flex:1;min-width:0;padding:var(--space-12) var(--space-10)}.section{margin-bottom:var(--space-12)}.section:last-child{margin-bottom:0}.page-title{font-family:var(--font-sans);font-size:var(--type-headline-large-size);font-weight:var(--type-headline-large-weight);line-height:var(--type-headline-large-line-height);letter-spacing:var(--type-headline-large-letter-spacing);color:var(--text-primary);margin-bottom:var(--space-8)}.section-heading{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-6)}.job{margin-bottom:var(--space-10)}.job-header{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-1)}.job-title{font-family:var(--font-sans);font-size:var(--type-headline-medium-size);font-weight:var(--type-headline-medium-weight);line-height:var(--type-headline-medium-line-height);letter-spacing:var(--type-headline-medium-letter-spacing)}.job-date{font-family:var(--font-mono);font-size:var(--type-body-xsmall-size);font-weight:500;color:var(--text-secondary);white-space:nowrap}.job-company{font-size:var(--type-body-medium-size);line-height:var(--type-body-medium-line-height);color:var(--text-secondary);margin-bottom:var(--space-3)}.job-company a{color:var(--text-secondary);transition:color var(--duration-base)}.job-company a:hover{color:var(--accent)}.job-location{color:var(--text-secondary)}.job-description{font-size:var(--type-body-small-size);line-height:var(--type-body-small-line-height);letter-spacing:var(--type-body-small-letter-spacing);color:var(--text-secondary);max-width:var(--measure)}.job-description ul{margin-top:var(--space-2);padding-left:var(--space-5)}.job-description li{margin-bottom:var(--space-1)}.company-group{position:relative;border:1px solid var(--border-subtle);padding:var(--space-5) var(--space-5) 0 var(--space-5);margin-bottom:var(--space-5)}.resume-section-container{border:1px solid var(--border-subtle);padding:var(--space-5) var(--space-5) 0 var(--space-5)}.company-group .job:last-child,.resume-section-container .job:last-child{margin-bottom:var(--space-5)}.resume-section-container .job-description{padding-bottom:var(--space-5)}.award-list{list-style:none}.award-list li{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle);font-size:var(--type-body-small-size);color:var(--text-secondary)}.award-list li:last-child{border-bottom:none}.award-year{font-family:var(--font-mono);font-size:var(--type-body-xsmall-size);white-space:nowrap}.resume-download{display:inline-block;margin-top:var(--space-6);padding:var(--space-2) var(--space-4);border:1px solid var(--border-interactive);font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);transition:color var(--duration-base),border-color var(--duration-base)}.resume-download:hover{color:var(--accent);border-color:var(--accent)}.about-content p{font-size:var(--type-body-medium-size);line-height:var(--type-body-large-line-height);letter-spacing:var(--type-body-medium-letter-spacing);color:var(--text-secondary);margin-bottom:var(--space-6);max-width:var(--measure)}.about-content p:last-child{margin-bottom:0}.about-blurb-container{border:1px solid var(--border-subtle);padding:var(--space-6);margin-bottom:var(--space-8)}.client-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-2) var(--space-6)}.client-list li{color:var(--text-secondary);font-size:var(--type-body-small-size);padding:var(--space-1) 0}.client-list a{color:var(--text-secondary);transition:color var(--duration-base)}.client-list a:hover{color:var(--accent)}.filter-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-8)}.filter-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.filter-tag{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;padding:var(--space-1) var(--space-3);background-color:transparent;border:1px solid var(--border-interactive);color:var(--text-secondary);cursor:pointer;transition:background-color var(--duration-base),color var(--duration-base),border-color var(--duration-base)}.filter-tag:hover{border-color:var(--text-secondary);color:var(--text-primary)}.filter-tag[aria-pressed=true]{background-color:var(--text-primary);border-color:var(--text-primary);color:var(--bg-primary)}.view-toggle{display:flex;border:1px solid var(--border-interactive);flex-shrink:0}.view-toggle-btn{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;background:none;border:none;color:var(--text-secondary);cursor:pointer;transition:color var(--duration-base),background-color var(--duration-base)}.view-toggle-btn+.view-toggle-btn{border-left:1px solid var(--border-interactive)}.view-toggle-btn:hover{color:var(--text-primary)}.view-toggle-btn[aria-pressed=true]{background-color:var(--text-primary);color:var(--bg-primary)}.filter-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.portfolio-grid{display:grid;grid-template-columns:1fr;gap:var(--space-3)}.portfolio-grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.project-grid-card,.project-card{background-color:transparent;border:1px solid var(--border-interactive);overflow:hidden;transition:border-color var(--duration-base),box-shadow var(--duration-base);display:flex;animation:fadeInDown var(--duration-slow) var(--ease-out) both}.project-grid-card{flex-direction:column}.project-card{flex-direction:row}.project-grid-card:hover,.project-card:hover{border-color:var(--border-subtle);box-shadow:0 0 0 2px var(--accent)}.project-grid-image,.project-image{aspect-ratio:4 / 3;background-color:var(--image-bg);overflow:hidden;flex-shrink:0}.project-image{flex:0 0 22%}.project-grid-image img,.project-image img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.project-grid-info{padding:var(--space-4);flex:1;display:flex;flex-direction:column}.project-info{padding:var(--space-5)}.project-title{font-family:var(--font-sans);font-size:var(--type-headline-medium-size);font-weight:var(--type-headline-medium-weight);line-height:var(--type-headline-medium-line-height);letter-spacing:var(--type-headline-medium-letter-spacing);margin-bottom:var(--space-2)}.project-description{font-size:var(--type-body-small-size);line-height:var(--type-body-small-line-height);letter-spacing:var(--type-body-small-letter-spacing);color:var(--text-secondary);margin-bottom:var(--space-4);flex:1}.project-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;padding:var(--space-1) var(--space-3);background-color:transparent;border:1px solid var(--border-subtle);color:var(--text-secondary)}@keyframes fadeInDown{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeInDown var(--duration-slow) var(--ease-out) both}.case-study{max-width:820px}.case-study-sentinel{height:0;width:100%}.case-study-sticky-header{position:sticky;top:var(--navbar-height);z-index:10;background-color:var(--bg-primary);box-shadow:0 -8px 0 var(--bg-primary)}.case-study-sticky-divider{height:1px;background-color:var(--border-subtle);margin-top:var(--space-6);transition:margin-top var(--duration-slow) ease}.case-study-sticky-header.collapsed .case-study-sticky-divider{margin-top:var(--space-3)}.case-study-sticky-header:after{content:"";position:absolute;left:0;right:0;bottom:-40px;height:40px;background:linear-gradient(to bottom,var(--scrim),transparent);opacity:0;transition:opacity var(--duration-slow) ease;pointer-events:none}.case-study-sticky-header.collapsed:after{opacity:1}.back-link{display:inline-block;font-size:var(--type-body-xsmall-size);line-height:var(--type-body-xsmall-line-height);color:var(--text-secondary);margin-bottom:var(--space-8);transition:color var(--duration-base),margin-bottom var(--duration-slow) ease}.case-study-sticky-header.collapsed .back-link{margin-bottom:var(--space-3)}.back-link:hover{color:var(--text-primary)}.back-arrow{vertical-align:-2px;margin-right:var(--space-1)}.case-study-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4);transition:margin-bottom var(--duration-slow) ease}.case-study-sticky-header.collapsed .case-study-tags{margin-bottom:var(--space-2)}.case-study-title{font-family:var(--font-sans);font-size:var(--type-headline-large-size);font-weight:var(--type-headline-large-weight);line-height:var(--type-headline-large-line-height);letter-spacing:var(--type-headline-large-letter-spacing);margin-bottom:var(--space-5);transition:margin-bottom var(--duration-slow) ease}.case-study-sticky-header.collapsed .case-study-title{margin-bottom:0}.case-study-blurb{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line-height);letter-spacing:var(--type-body-large-letter-spacing);color:var(--text-primary);max-width:var(--measure-narrow);padding-top:var(--space-8)}.case-study-blurb a{color:var(--text-primary);border-bottom:1px solid var(--border-interactive);transition:color var(--duration-base),border-color var(--duration-base)}.case-study-blurb a:hover{color:var(--accent);border-color:var(--accent)}.case-study-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-6);padding:var(--space-6) 0;border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-10)}.meta-item h2{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-2)}.meta-item p{font-size:var(--type-body-medium-size);line-height:var(--type-body-medium-line-height);color:var(--text-primary)}.meta-item a{color:var(--text-primary);border-bottom:1px solid var(--border-interactive);transition:color var(--duration-base),border-color var(--duration-base)}.meta-item a:hover{color:var(--accent);border-color:var(--accent)}.case-study-video{position:relative;width:100%;aspect-ratio:16 / 9;margin-bottom:var(--space-12);background-color:#000}.case-study-video iframe{position:absolute;inset:0;width:100%;height:100%;display:block;border:none}.case-study-body,.case-study-section{margin-bottom:var(--space-12)}.case-study-section:last-child{margin-bottom:0}.case-study-section h2{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle)}.case-study-section p{font-size:var(--type-body-medium-size);line-height:var(--type-body-large-line-height);letter-spacing:var(--type-body-medium-letter-spacing);color:var(--text-secondary);max-width:var(--measure-narrow);margin-bottom:var(--space-4)}.case-study-section p:last-child{margin-bottom:0}.case-study-section a{color:var(--text-primary);border-bottom:1px solid var(--border-interactive);transition:color var(--duration-base),border-color var(--duration-base)}.case-study-section a:hover{color:var(--accent);border-color:var(--accent)}.case-study-section ul{padding-left:var(--space-5);max-width:var(--measure-narrow)}.case-study-section li{font-size:var(--type-body-medium-size);line-height:var(--type-body-large-line-height);color:var(--text-secondary);margin-bottom:var(--space-2)}.objectives-list,.results-list{list-style:none;padding-left:0;max-width:var(--measure-narrow)}.objectives-list li,.results-list li{position:relative;padding-left:var(--space-6)}.objectives-list li:before,.results-list li:before{content:"";position:absolute;left:0;top:11px;width:6px;height:6px;background-color:var(--accent)}.insights{margin-top:var(--space-6);padding:var(--space-6);background-color:var(--surface-1);border-left:2px solid var(--accent);max-width:var(--measure-narrow)}.insights h3{font-family:var(--font-sans);font-size:var(--type-headline-small-size);font-weight:var(--type-headline-small-weight);line-height:var(--type-headline-small-line-height);letter-spacing:var(--type-headline-small-letter-spacing);color:var(--text-primary);margin-bottom:var(--space-3)}.insights ul{list-style:disc;padding-left:var(--space-5)}.insights li{margin-bottom:var(--space-2)}.insights li:last-child{margin-bottom:0}.case-study-link{display:inline-block;margin-top:var(--space-4);padding:var(--space-2) var(--space-4);border:1px solid var(--border-interactive);font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);transition:color var(--duration-base),border-color var(--duration-base)}.case-study-link:hover{color:var(--accent);border-color:var(--accent)}.case-study-footer{padding-top:var(--space-10);border-top:1px solid var(--border-subtle)}.bento-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:300px;gap:var(--space-3);margin-top:var(--space-8);margin-bottom:var(--space-10)}.bento-item{overflow:hidden;cursor:pointer;border:none;padding:0;background-color:var(--image-bg);display:block}.bento-item.wide{grid-column:span 2}.bento-item img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity var(--duration-base) ease}.bento-item:hover img{opacity:.8}.gallery-group{margin-top:var(--space-4);margin-bottom:var(--space-8)}.gallery-group:last-child{margin-bottom:0}.gallery-group-label{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);line-height:var(--type-eyebrow-line-height);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary)}.carousel{margin-top:var(--space-4)}.carousel-track{display:grid;grid-template-columns:repeat(var(--carousel-columns, 4),1fr);gap:var(--space-3)}.carousel-item{height:240px;overflow:hidden;cursor:pointer;border:none;padding:0;background-color:var(--image-bg);display:block}.carousel-item img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity var(--duration-base) ease}.carousel-item:hover img{opacity:.8}.carousel-nav{display:flex;gap:var(--space-2);justify-content:flex-end;margin-top:var(--space-3)}.carousel-arrow{width:36px;height:36px;border:1px solid var(--border-interactive);background:none;cursor:pointer;color:var(--text-primary);display:flex;align-items:center;justify-content:center;transition:background-color var(--duration-base) ease,border-color var(--duration-base) ease,color var(--duration-base) ease;padding:0}.carousel-arrow:disabled{color:var(--text-secondary);border-color:var(--border-subtle);opacity:.6;cursor:default}.carousel-arrow:not(:disabled):hover{background-color:var(--surface-2);border-color:var(--accent);color:var(--accent)}.lightbox-overlay{position:fixed;inset:0;background:#000000eb;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-16) var(--space-20);animation:lightboxFadeIn var(--duration-base) ease}@keyframes lightboxFadeIn{0%{opacity:0}to{opacity:1}}.lightbox-content{display:flex;flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;animation:lightboxSlideIn var(--duration-base) ease}@keyframes lightboxSlideIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.lightbox-content img{max-width:100%;max-height:75vh;object-fit:contain;display:block;border-radius:var(--radius-md)}.lightbox-caption{font-size:var(--type-body-xsmall-size);color:var(--lightbox-fg);margin-top:var(--space-4);text-align:center}.lightbox-counter{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);letter-spacing:var(--type-eyebrow-letter-spacing);color:var(--lightbox-fg);margin-top:var(--space-2);text-align:center}.lightbox-close,.lightbox-arrow{position:absolute;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;color:var(--lightbox-fg);cursor:pointer;transition:background-color var(--duration-base),color var(--duration-base),border-color var(--duration-base);z-index:1001}.lightbox-close:hover,.lightbox-arrow:hover{background-color:var(--lightbox-surface);border-color:var(--lightbox-border);color:var(--lightbox-fg-strong)}.lightbox-close{top:var(--space-5);right:var(--space-5);width:44px;height:44px}.lightbox-arrow{top:50%;transform:translateY(-50%);width:48px;height:48px}.lightbox-arrow-prev{left:var(--space-5)}.lightbox-arrow-next{right:var(--space-5)}.system-intro{font-size:var(--type-body-medium-size);line-height:var(--type-body-large-line-height);color:var(--text-secondary);max-width:var(--measure);margin-bottom:var(--space-12)}.system-block{margin-bottom:var(--space-12)}.system-note{font-size:var(--type-body-small-size);line-height:var(--type-body-small-line-height);color:var(--text-secondary);max-width:var(--measure);margin-bottom:var(--space-5)}.swatch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3)}.swatch{border:1px solid var(--border-subtle)}.swatch-chip{height:64px;border-bottom:1px solid var(--border-subtle)}.swatch-meta{padding:var(--space-3);font-family:var(--font-mono);font-size:var(--type-body-xsmall-size);line-height:1.6;color:var(--text-secondary)}.swatch-name{color:var(--text-primary);display:block}.type-specimen{border-top:1px solid var(--border-subtle);padding:var(--space-5) 0;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-4)}.type-specimen-label{font-family:var(--font-mono);font-size:var(--type-body-xsmall-size);color:var(--text-secondary);white-space:nowrap}.scale-row{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-2)}.scale-bar{height:12px;background-color:var(--accent-dim);border-left:2px solid var(--accent)}.scale-label{font-family:var(--font-mono);font-size:var(--type-body-xsmall-size);color:var(--text-secondary);white-space:nowrap}.state-row{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;margin-bottom:var(--space-5)}.site-footer{display:none;border-top:1px solid var(--border-subtle);padding:var(--space-8) var(--space-5)}.site-footer h2{font-family:var(--font-mono);font-size:var(--type-eyebrow-size);font-weight:var(--type-eyebrow-weight);letter-spacing:var(--type-eyebrow-letter-spacing);text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-3)}.site-footer ul{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-4)}.site-footer a{color:var(--text-secondary);font-size:var(--type-body-small-size)}.site-footer a:hover{color:var(--accent)}.not-found p{color:var(--text-secondary);max-width:var(--measure);margin-bottom:var(--space-6)}@media(max-width:1024px){:root{--sidebar-width: 280px}.lightbox-overlay{padding:var(--space-12) var(--space-16)}.lightbox-arrow-prev{left:var(--space-3)}.lightbox-arrow-next{right:var(--space-3)}.sidebar{padding:var(--space-10) var(--space-6)}.main-content{padding:var(--space-10) var(--space-8)}.job-header{flex-direction:column;align-items:flex-start;gap:var(--space-1)}.job-date{order:-1}}@media(max-width:768px){.navbar-content{padding:0 var(--space-5)}.nav-links{gap:var(--space-5)}.nav-links a{font-size:var(--type-body-xsmall-size)}.portfolio{flex-direction:column}.sidebar{width:100%;height:auto;position:relative;top:0;overflow-y:visible;border-right:none;border-bottom:1px solid var(--border-subtle);padding:var(--space-6) var(--space-5)}.site-name{font-size:var(--type-headline-medium-size);margin-bottom:var(--space-2)}.sidebar .tagline{font-size:var(--type-body-large-size);margin-bottom:var(--space-3)}.sidebar .bio{margin-bottom:0}.sidebar .contact{display:none}.site-footer{display:block}.main-content{width:100%;padding:var(--space-8) var(--space-5)}.page-title{font-size:26px;margin-bottom:var(--space-6)}.section{margin-bottom:var(--space-10)}.job{margin-bottom:var(--space-8)}.portfolio-grid{gap:var(--space-5)}.portfolio-grid-view{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-2)}.project-grid-info{padding:var(--space-3)}.project-card{flex-direction:column}.project-image{flex:none;width:100%;aspect-ratio:16 / 9}.project-info{padding:var(--space-4)}.case-study-title{font-size:26px}.case-study-meta{grid-template-columns:1fr;gap:var(--space-5)}.case-study-section{margin-bottom:var(--space-10)}.insights{padding:var(--space-5)}.bento-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:200px;gap:var(--space-2)}.bento-item.wide{grid-column:span 1}.carousel-item{height:220px}.lightbox-overlay{padding:var(--space-12) var(--space-4)}.lightbox-arrow{width:40px;height:40px}.lightbox-arrow-prev{left:var(--space-2)}.lightbox-arrow-next{right:var(--space-2)}.lightbox-content img{max-height:65vh}}@media(max-width:480px){:root{--navbar-height: 56px}.navbar-content{padding:0 var(--space-4)}.nav-links{gap:var(--space-4)}.sidebar,.main-content{padding-left:var(--space-4);padding-right:var(--space-4)}.page-title{font-size:24px}.job-title{font-size:var(--type-headline-small-size)}.job-description{font-size:var(--type-body-xsmall-size)}.filter-bar{gap:var(--space-2);margin-bottom:var(--space-6)}.project-title{font-size:var(--type-headline-small-size)}.project-description{font-size:var(--type-body-xsmall-size)}.case-study-title{font-size:22px}.case-study-blurb{font-size:var(--type-body-medium-size)}.case-study-section p,.case-study-section li{font-size:var(--type-body-small-size)}.carousel-item{height:180px}}
