@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap);:root,[data-theme=light]{--bg-primary:#f1f1f1;--bg-secondary:#d1d1d1;--text-primary:#323232;--text-secondary:#4a4a4a;--text-subtle:#6b6b6b;--border-color:#b6b6b6;--accent:#f1f1f1;--accent-hover:#d1d1d1;--max-width:1200px;--max-width-editorial:640px;--page-padding:2rem;--col-gap:3rem;--space-section:5rem;--space-block:1.5rem;--space-paragraph:1rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-pill:100px;--nav-height:80px;--nav-max-width:740px;--sticky-offset:112px;--overlay-bg:#00000014;--font-size-xs:0.75rem;--font-size-sm:0.8125rem;--font-size-base:1rem;--line-height-body:1.65}[data-theme=dark]{--bg-primary:#111;--bg-secondary:#1d1d1d;--text-primary:#d1d1d1;--text-secondary:#b0b0b0;--text-subtle:#757575;--border-color:#323232;--accent:#d1d1d1;--accent-hover:#b6b6b6;--overlay-bg:#ffffff1a}@media (prefers-color-scheme:dark){:root:not([data-theme]){--bg-primary:#111;--bg-secondary:#1d1d1d;--text-primary:#d1d1d1;--text-secondary:#b0b0b0;--text-subtle:#757575;--border-color:#323232;--accent:#d1d1d1;--accent-hover:#b6b6b6}}:root{--glass-bg:color-mix(in srgb,var(--bg-primary) 50%,#0000);--glass-bg-hover:color-mix(in srgb,var(--bg-primary) 68%,#0000);--glass-border:#96969638;--glass-border-hover:#96969661;--glass-blur:blur(20px) saturate(180%);--glass-shadow:0 8px 24px #0003;--text-tertiary:color-mix(in srgb,var(--text-secondary),var(--text-subtle))}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f1f1f1;background-color:var(--bg-primary);color:#323232;color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:400;line-height:1.65;line-height:var(--line-height-body);transition:background-color .3s ease,color .3s ease}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.15}h1{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:600;letter-spacing:-.03em}h2{font-size:clamp(1.25rem,2.5vw,2rem);letter-spacing:-.02em}h3{font-size:clamp(1.125rem,1.75vw,1.5rem);font-weight:500;letter-spacing:-.01em}p{color:#323232;color:var(--text-primary);font-size:1rem;line-height:1.65;line-height:var(--line-height-body)}b,strong{font-weight:600}a{color:#f1f1f1;color:var(--accent);transition:color .2s ease}.bio-link,a{text-decoration:none}.bio-link{color:inherit;display:inline-block;position:relative}.bio-link:after,.contact-email:after{background-color:currentColor;bottom:-1px;content:"";height:1px;left:0;position:absolute;transform:scaleX(1);transform-origin:left;transition:transform .35s ease;width:100%}.bio-link:hover{color:inherit}.bio-link:hover:after,.contact-email:hover:after{transform:scaleX(0);transform-origin:right}a:hover{color:#d1d1d1;color:var(--accent-hover)}.page-container{margin:0 auto;max-width:1200px;max-width:var(--max-width);padding:0 2rem;padding:0 var(--page-padding);width:100%}.two-col-layout{grid-gap:3rem;grid-gap:var(--col-gap);align-items:start;display:grid;gap:3rem;gap:var(--col-gap);grid-template-columns:1fr 1fr}.one-col-layout{display:flex;flex-direction:column}main>div{animation:fadeUp .4s ease both;padding-bottom:6rem;padding-top:6rem}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.scroll-fade{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}.scroll-fade.in-view{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){main>div{animation:none}.scroll-fade{opacity:1;transform:none;transition:none}}@media (max-width:768px){:root{--page-padding:1.5rem;--col-gap:2rem;--space-section:2rem}.two-col-layout{grid-template-columns:1fr}.page-header{margin-bottom:3rem}}@media (max-width:480px){:root{--page-padding:1rem}}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem}.case-study-tags{margin-top:1rem}.tag{background-color:#00000014;background-color:var(--overlay-bg);border-radius:4px;border-radius:var(--radius-sm);color:#6b6b6b;color:var(--text-subtle);font-size:.8125rem;font-size:var(--font-size-sm);font-weight:500;padding:.25rem .5rem}[data-theme=dark] .tag{color:#4a4a4a;color:var(--text-secondary)}.arrow{display:inline-block;transition:transform .2s ease}.page-header{margin-bottom:2.5rem}.page-header h1{margin-bottom:1rem}.page-intro{font-size:.9375rem;line-height:1.65;line-height:var(--line-height-body);max-width:600px}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.back-to-top,.carousel-arrow,.carousel-dots,.cs-back-link,.feedback-button,.stack-graph-node-hit,.stack-graph-settings-panel,.stack-graph-settings-toggle,.stack-graph-tooltip,.stack-graph-zoom,.theme-toggle-fab .theme-toggle{backdrop-filter:blur(20px) saturate(180%);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:var(--glass-blur);background-color:color-mix(in srgb,#f1f1f1 50%,#0000);background-color:var(--glass-bg);border:1px solid #96969638;border:1px solid var(--glass-border);box-shadow:0 8px 24px #0003;box-shadow:var(--glass-shadow)}.back-to-top:hover,.cs-back-link:hover,.feedback-button:hover,.stack-graph-settings-toggle:hover,.theme-toggle-fab .theme-toggle:hover{background-color:color-mix(in srgb,#f1f1f1 68%,#0000);background-color:var(--glass-bg-hover);border-color:#96969661;border-color:var(--glass-border-hover)}.cs-back-link{align-items:center;border-radius:100px;border-radius:var(--radius-pill);box-shadow:none;color:#323232;color:var(--text-primary);cursor:pointer;display:inline-flex;font-family:inherit;font-size:.875rem;font-weight:500;gap:.375rem;height:40px;left:2rem;padding:0 1rem;position:fixed;text-decoration:none;top:2rem;transition:background-color .2s ease,border-color .2s ease;z-index:500}@media (max-width:600px){.cs-back-link{left:1.25rem;top:1.25rem}}.cs-back-chevron{display:inline-block;font-size:1.25rem;line-height:1;transition:transform .2s ease}.cs-back-link:hover{background-color:color-mix(in srgb,#f1f1f1 68%,#0000);background-color:var(--glass-bg-hover);border-color:#96969661;border-color:var(--glass-border-hover);color:#323232;color:var(--text-primary)}.cs-back-link:hover .cs-back-chevron{transform:translateX(-2px)}.case-study-meta-row{display:flex;flex-direction:row;gap:3rem;margin-bottom:3rem;margin-top:1.5rem}.meta-item{display:flex;flex-direction:column;gap:.5rem}.meta-value{font-size:.9375rem}.image-caption{font-size:.8125rem;font-size:var(--font-size-sm);line-height:1.5;margin-top:.5rem}.image-caption,.overline{color:#6b6b6b;color:var(--text-subtle)}.overline{font-size:.75rem;font-size:var(--font-size-xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase}.entry-card{background-color:initial;border:1px solid #b6b6b6;border:1px solid var(--border-color);transition:background-color .2s ease,border-color .2s ease,color 0s}.entry-card:hover{background-color:#f1f1f154;border-color:#0000;color:#323232;color:var(--text-primary)}[data-theme=dark] .entry-card:hover{background-color:#11111154;border-color:#0000}.frosted-glass{backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);background-color:#ffffff80;box-shadow:0 8px 32px #00000014}[data-theme=dark] .frosted-glass{background-color:#00000080}html{scroll-behavior:smooth}::selection{background-color:#f1f1f1;background-color:var(--accent);color:#fff}:focus-visible{outline:2px solid #f1f1f1;outline:2px solid var(--accent);outline-offset:2px}.placeholder-gradient{align-items:center;background:linear-gradient(135deg,#d1d1d1,#b6b6b6);background:linear-gradient(135deg,var(--bg-secondary) 0,var(--border-color) 100%);color:#6b6b6b;color:var(--text-subtle);display:flex;font-weight:600;justify-content:center}.cta-link{display:inline-flex;flex-direction:column;gap:.5rem;text-decoration:none}.cta-link,.cta-link:hover{color:inherit}.cta-link:hover .arrow{transform:translateX(4px)}.cta-title{align-items:center;display:inline-flex;font-size:clamp(1.25rem,2.5vw,1.75rem);font-weight:600;gap:.5rem}.theme-toggle{background:var(--text-primary);border:none;border-radius:var(--radius-pill);color:var(--bg-primary);cursor:pointer;display:inline-flex;font-family:inherit;height:32px;overflow:hidden;padding:0;transition:padding .25s ease}.icon-moon,.icon-sun,.theme-toggle{align-items:center;flex-shrink:0;justify-content:center}.icon-moon,.icon-sun{margin:0 8.5px;transition:margin .25s ease;width:15px}.theme-toggle:hover{padding-right:1rem}.theme-toggle:hover .icon-moon,.theme-toggle:hover .icon-sun{margin-right:.5rem}.theme-toggle-label{font-size:.875rem;font-weight:500;max-width:0;opacity:0;transform:translateX(-4px);transition:max-width .25s ease,opacity .2s ease,transform .25s ease,margin .25s ease;white-space:nowrap}.theme-toggle:hover .theme-toggle-label{max-width:100px;opacity:1;transform:translateX(0)}@keyframes theme-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon-moon.spinning,.icon-sun.spinning{animation:theme-spin .4s ease}.icon-sun{display:none}.icon-moon,[data-theme=dark] .icon-sun{display:flex}[data-theme=dark] .icon-moon{display:none}.theme-toggle-fab{bottom:7rem;position:fixed;right:2rem;z-index:500}.theme-toggle-fab .theme-toggle{color:var(--text-primary);height:40px;transition:background-color .2s ease,border-color .2s ease}.theme-toggle-fab .icon-moon,.theme-toggle-fab .icon-sun{margin:0 11.5px}.theme-toggle-fab .theme-toggle:hover .icon-moon,.theme-toggle-fab .theme-toggle:hover .icon-sun{margin-right:.5rem}@media (max-width:600px){.theme-toggle-fab{bottom:5rem;right:1.25rem}}.mouse-gradient{filter:blur(50px);height:100%;left:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:0}[data-theme=dark] .mouse-gradient{opacity:.5}.back-to-top{align-items:center;border-radius:50%;bottom:3.5rem;color:var(--text-primary);cursor:pointer;display:flex;height:40px;justify-content:center;left:50%;opacity:0;pointer-events:none;position:fixed;transform:translate(-50%,8px);transition:opacity .25s ease,transform .25s ease,background-color .2s ease,border-color .2s ease;width:40px;z-index:500}.back-to-top--visible{opacity:1;pointer-events:auto;transform:translate(-50%)}.feedback-button{align-items:center;border-radius:var(--radius-pill);bottom:3.5rem;color:var(--text-primary);cursor:pointer;display:inline-flex;font-family:inherit;height:40px;justify-content:center;overflow:hidden;padding:0;position:fixed;right:2rem;transition:padding .25s ease,background-color .2s ease,border-color .2s ease;z-index:500}.feedback-button-icon{flex-shrink:0;margin:0 10px;transition:margin .25s ease;width:18px}.feedback-button-label{font-size:.875rem;font-weight:500;max-width:0;opacity:0;transform:translateX(-4px);transition:max-width .25s ease,opacity .2s ease,transform .25s ease,margin .25s ease;white-space:nowrap}.feedback-button:hover{padding-right:1rem}.feedback-button:hover .feedback-button-icon{margin-right:.5rem}.feedback-button:hover .feedback-button-label{max-width:100px;opacity:1;transform:translateX(0)}@media (max-width:600px){.feedback-button{bottom:1.5rem;right:1.25rem}}.feedback-overlay{align-items:center;animation:feedback-fade .2s ease;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);background-color:#0000008c;display:flex;inset:0;justify-content:center;padding:1.5rem;position:fixed;z-index:1000}@keyframes feedback-fade{0%{opacity:0}to{opacity:1}}.feedback-modal{animation:feedback-rise .25s cubic-bezier(.2,.8,.2,1);background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:0 24px 64px #00000040;color:var(--text-primary);max-width:440px;padding:2rem;position:relative;width:100%}@keyframes feedback-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.feedback-close{align-items:center;background:#0000;border:none;border-radius:50%;color:var(--text-subtle);cursor:pointer;display:flex;height:32px;justify-content:center;position:absolute;right:.75rem;top:.75rem;transition:background-color .2s ease,color .2s ease;width:32px}.feedback-close:hover{background-color:var(--overlay-bg);color:var(--text-primary)}.feedback-form h2,.feedback-success h2{font-size:1.125rem;font-weight:600;margin-bottom:1.25rem}.feedback-field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}.feedback-label{color:var(--text-secondary);font-size:.8125rem;font-weight:500}.feedback-optional{color:var(--text-subtle);font-weight:400}.feedback-type-row{display:flex;gap:.5rem}.feedback-type{align-items:center;background-color:initial;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;display:flex;flex:1 1;font-size:.875rem;font-weight:500;height:36px;justify-content:center;transition:background-color .2s ease,color .2s ease,border-color .2s ease}.feedback-type input{opacity:0;pointer-events:none;position:absolute}.feedback-type:hover{color:var(--text-primary)}.feedback-type--active{background-color:var(--text-primary);border-color:var(--text-primary);color:var(--bg-primary)}.feedback-form input[type=email],.feedback-form textarea{background-color:initial;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:inherit;font-size:.9375rem;padding:.625rem .75rem;transition:border-color .2s ease;width:100%}.feedback-form input[type=email]::placeholder,.feedback-form textarea::placeholder{color:var(--text-subtle)}.feedback-form input[type=email]:focus,.feedback-form textarea:focus{border-color:var(--text-primary);outline:none}.feedback-form textarea{line-height:1.5;min-height:96px;resize:vertical}.feedback-error{color:#c0392b;font-size:.8125rem;margin:0 0 .75rem}[data-theme=dark] .feedback-error{color:#ff7a6a}.feedback-submit{align-items:center;background-color:var(--text-primary);border:none;border-radius:var(--radius-pill);color:var(--bg-primary);cursor:pointer;display:inline-flex;font-family:inherit;font-size:.875rem;font-weight:500;height:40px;justify-content:center;padding:0 1.25rem;transition:opacity .2s ease}.feedback-submit:hover:not(:disabled){opacity:.88}.feedback-submit:disabled{cursor:not-allowed;opacity:.5}.feedback-secondary{align-items:center;background-color:initial;border:1px solid var(--border-color);border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;display:inline-flex;font-family:inherit;font-size:.875rem;font-weight:500;height:40px;justify-content:center;padding:0 1.25rem;transition:color .2s ease,background-color .2s ease}.feedback-secondary:hover{background-color:var(--overlay-bg);color:var(--text-primary)}.feedback-success p{color:var(--text-secondary);margin-bottom:1.5rem}.feedback-success-actions{display:flex;gap:.75rem}.social-links{gap:0;margin-left:-.5rem}.social-link,.social-links{align-items:center;display:flex;position:relative}.social-link{border-radius:var(--radius-md);color:var(--text-subtle);justify-content:center;padding:.5rem;transition:color .2s ease;z-index:1}.social-link:hover{color:var(--text-primary)}.social-link svg{height:22px;width:22px}.mail-copy-button{align-items:center;background:none;border:none;border-radius:var(--radius-md);color:var(--text-subtle);cursor:pointer;display:flex;font-family:inherit;justify-content:center;padding:.5rem;position:relative;transition:color .2s ease}.mail-copy-button:hover,.mail-copy-tooltip{color:var(--text-primary)}.mail-copy-tooltip{background:#0000000f;border-radius:var(--radius-md);bottom:calc(100% + 8px);font-size:.75rem;font-weight:500;left:50%;opacity:0;padding:5px 8px;pointer-events:none;position:absolute;transform:translateX(-50%);transition:opacity .15s ease;white-space:nowrap}[data-theme=dark] .mail-copy-tooltip{background:#ffffff0f}.mail-copy-tooltip--visible{opacity:1}.preview-rows{flex-direction:column}.preview-row,.preview-rows{display:flex;position:relative}.preview-row{align-items:center;border-bottom:1px solid var(--border-color);gap:1rem;padding:.875rem 0;text-decoration:none;z-index:1}.preview-row,.preview-row:hover{color:inherit}.preview-rows .preview-row:last-child{border-bottom:none}.preview-row-thumb,.preview-row-thumb-placeholder{background-color:var(--overlay-bg);border-radius:var(--radius-md);flex-shrink:0;height:64px;overflow:hidden;width:64px}.preview-row-thumb img{display:block;height:100%;object-fit:cover;width:100%}.preview-row-thumb--wide{height:64px;width:96px}.preview-row-thumb--contained{align-items:center;display:flex;justify-content:center}.preview-row-thumb--contained img{height:65%;object-fit:contain;width:65%}.preview-row--inline{gap:.75rem}.preview-rows--condensed .preview-row{border-bottom:none;padding:.625rem 0}.preview-rows--condensed .preview-row--inline{padding:.5rem 0}.preview-rows-highlight{backdrop-filter:blur(8px) saturate(140%);-webkit-backdrop-filter:blur(8px) saturate(140%);background-color:#96969608;border:1px solid #96969629;border-radius:var(--radius-md);left:-.75rem;pointer-events:none;position:absolute;right:-.75rem;transition:transform .2s cubic-bezier(.4,0,.2,1),height .2s cubic-bezier(.4,0,.2,1),opacity .15s ease;z-index:0}.preview-rows--timeline{--rail-inset:1.5rem;--dot-size:7px;--rail-width:1px;padding-left:var(--rail-inset)}.preview-rows--timeline .preview-row:after{background-color:var(--border-color);bottom:0;content:"";left:calc(var(--rail-inset)*-1 + var(--dot-size)/2 - var(--rail-width)/2);position:absolute;top:0;width:var(--rail-width)}.preview-rows--timeline .preview-row:first-of-type:after{top:50%}.preview-rows--timeline .preview-row:last-of-type:after{bottom:50%}.preview-rows--timeline .preview-row:before{background-color:var(--bg-primary);border:1.5px solid var(--text-subtle);border-radius:50%;content:"";height:var(--dot-size);left:calc(var(--rail-inset)*-1);position:absolute;top:50%;transform:translateY(-50%);transition:border-color .2s ease,background-color .2s ease;width:var(--dot-size);z-index:2}.preview-rows--timeline .preview-row:first-of-type:before{background-color:var(--text-primary);border-color:var(--text-primary)}.preview-rows--timeline .preview-row:hover:before{border-color:var(--text-primary)}@media (max-width:768px){.preview-rows--timeline{--rail-inset:1.125rem}}[data-theme=light] .preview-row-thumb--contained img[alt*=Bioworld]{filter:invert(1)}.preview-row-text{display:flex;flex:1 1;flex-direction:column;gap:.25rem;min-width:0}.preview-row-text h3{font-size:1rem;font-weight:500}.preview-row-text p{color:var(--text-tertiary);font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-row-text--inline{align-items:baseline;flex-direction:row;gap:1rem}.preview-row-text--inline h3{flex-shrink:0}.preview-row-text--inline p{flex:1 1;min-width:0}.preview-row-meta-wrap{align-items:center;display:inline-flex;flex-shrink:0;margin-left:1rem;position:relative}.preview-row-meta{color:var(--text-subtle);font-size:.875rem;white-space:nowrap}.preview-row-meta-wrap:has(.external-link-icon) .preview-row-meta{transition:opacity .2s ease}.preview-row:hover .preview-row-meta-wrap:has(.external-link-icon) .preview-row-meta{opacity:0}.preview-row-meta-wrap .external-link-icon{color:var(--text-subtle);opacity:0;pointer-events:none;position:absolute;right:0;top:50%;transform:translateY(-50%);transition:opacity .2s ease}.preview-row:hover .preview-row-meta-wrap .external-link-icon{opacity:1}@media (max-width:768px){.preview-row-thumb,.preview-row-thumb-placeholder{height:48px;width:48px}.preview-row-meta-wrap{display:none}}.scroll-progress-bar{animation:none;background:var(--text-primary);height:3px;left:0;margin:0;padding:0;pointer-events:none;position:fixed;top:0;z-index:9999}.stack-marquee{-webkit-mask-image:linear-gradient(90deg,#0000,#000 6%,#000 94%,#0000);mask-image:linear-gradient(90deg,#0000,#000 6%,#000 94%,#0000);overflow:hidden}.stack-marquee-track{animation:stack-marquee-scroll 36s linear infinite;display:flex;gap:1.5rem;width:-webkit-max-content;width:max-content}@keyframes stack-marquee-scroll{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.stack-marquee-item{flex-shrink:0}.stack-marquee-icon{align-items:center;display:flex;height:32px;justify-content:center;width:32px}.stack-marquee-icon img{height:100%;object-fit:contain;width:100%}[data-theme=dark] .stack-marquee-icon img[alt*="Google Flow"],[data-theme=light] .stack-marquee-icon img[alt*=GitHub]{filter:invert(1)}@media (max-width:600px){.stack-marquee-icon{height:26px;width:26px}}@media (prefers-reduced-motion:reduce){.stack-marquee-track{animation:none}}.carousel-controls{gap:1rem;margin-top:1.25rem}.carousel-arrow,.carousel-controls{align-items:center;display:flex;justify-content:center}.carousel-arrow{border-radius:50%;color:var(--text-primary);cursor:pointer;flex-shrink:0;height:36px;transition:opacity .2s ease,background-color .2s ease,border-color .2s ease;width:36px}.carousel-arrow svg{display:block}.carousel-arrow:hover:not(:disabled){background-color:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.carousel-arrow:disabled{cursor:default;opacity:.3}.carousel-dots{align-items:center;border-radius:var(--radius-pill);display:flex;gap:.5rem;height:36px;max-width:100%;overflow:hidden;padding:0 1rem}.carousel-dot{background:var(--text-subtle);border:none;border-radius:999px;box-sizing:initial;cursor:pointer;flex-shrink:0;height:7px;min-width:0;opacity:.5;padding:0;transition:none;width:7px}.thumbnail-carousel-track{border:1px solid var(--border-color);border-radius:var(--radius-lg);cursor:grab;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.thumbnail-carousel-track::-webkit-scrollbar{display:none}.thumbnail-carousel-track:active{cursor:grabbing}.thumbnail-carousel-item{aspect-ratio:16/9;flex:0 0 100%;overflow:hidden;scroll-snap-align:start;width:100%}.thumbnail-carousel-item img{display:block;height:100%;object-fit:cover;pointer-events:none;width:100%}.thumbnail-carousel-item--contained{align-items:center;display:flex;justify-content:center}.thumbnail-carousel-image--contained{height:55%!important;object-fit:contain;width:auto!important}.home{min-height:calc(100vh - var(--nav-height))}.home .page-container{max-width:var(--max-width-editorial)}.home-sections{display:flex;flex-direction:column}.home-section{padding-top:4rem}.home-section:first-child{padding-top:0}.section-header{align-items:center;color:inherit;display:inline-flex;font-size:.8125rem;gap:.5rem;margin-bottom:1.25rem;text-decoration:none}.section-header:hover{color:inherit}.section-header:hover .arrow{transform:translateX(4px)}.section-header h2{color:var(--text-subtle);font-size:.8125rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;transition:color .2s ease}.section-header .arrow{color:var(--text-subtle);transition:color .2s ease,transform .2s ease}.section-header:not(.section-header--static):hover .arrow,.section-header:not(.section-header--static):hover h2{color:var(--text-primary)}.section-header--static{cursor:default}.about-header-row{align-items:center;display:flex;gap:1rem;margin-bottom:1.5rem}.about-avatar{border-radius:50%;flex-shrink:0;height:64px;object-fit:cover;object-position:top;width:64px}.about-avatar--clickable{cursor:zoom-in}.about-header-text h1{font-size:1.125rem;margin-bottom:.125rem}.about-role{color:var(--text-secondary);font-size:.9375rem;font-weight:500}.profile-lightbox{align-items:center;background:#000000bf;cursor:zoom-out;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.profile-lightbox-img{border-radius:50%;height:min(480px,80vw);object-fit:cover;object-position:top;width:min(480px,80vw)}.hero-description{color:var(--text-secondary);font-size:.9375rem;line-height:var(--line-height-body);margin-bottom:1rem}.hero-description:last-of-type{margin-bottom:0}.about-actions{align-items:center;display:flex;gap:1rem;margin-top:1.25rem}.about-contact-icons{align-items:center;display:flex;gap:.25rem}.about-bio .resume-button{align-items:center;background-color:var(--text-primary);border-radius:var(--radius-pill);color:var(--bg-primary);display:inline-flex;font-size:.875rem;font-weight:500;gap:.25rem;height:36px;padding:0 1rem;text-decoration:none;white-space:nowrap}.about-bio .resume-button:hover{color:var(--bg-primary)}.about-bio .resume-button .download-icon{display:inline-block;transition:transform .2s ease}.about-bio .resume-button:hover .download-icon{transform:translateY(2px)}@media (max-width:768px){.home-section{padding-top:2.5rem}}.project-card{color:inherit;display:block;text-decoration:none}.project-card:hover{color:inherit}.project-image-wrapper{border-radius:var(--radius-lg);margin-bottom:1rem;overflow:hidden;width:100%}.project-image{display:block;height:auto;width:100%}.project-image-wrapper--contained{align-items:center;aspect-ratio:2227/1545;display:flex;justify-content:center}.project-image--contained{height:55%;object-fit:contain;width:auto}.project-image-placeholder{font-size:2rem;height:100%;width:100%}.project-info h3{font-size:1rem;font-weight:500;margin-bottom:.375rem}.case-study-meta{color:var(--text-subtle);font-size:.875rem;margin-bottom:.375rem}.project-description{color:var(--text-secondary);font-size:.875rem;line-height:var(--line-height-body);margin-bottom:.75rem}.project-card--full{padding:0 24px}.project-card--full .project-image-wrapper{margin-bottom:1.25rem}.project-card--full .project-image-wrapper:not(.project-image-wrapper--contained){aspect-ratio:16/9;border:1px solid var(--border-color)}.project-card--full .project-image:not(.project-image--contained){height:100%;object-fit:cover;width:100%}.project-card--full .project-info{display:flex;flex-direction:column}.project-card--full .project-info h3{font-size:clamp(1.125rem,1.75vw,1.5rem);margin-bottom:.5rem}.project-card--full .case-study-meta{order:1}.project-card--full .tag-list{margin-bottom:.75rem;order:2}.project-card--full .project-description{font-size:.9375rem;order:3}.list-page{min-height:calc(100vh - var(--nav-height))}.list-page .page-container{max-width:var(--max-width-editorial)}.list-page-items{display:flex;flex-direction:column;gap:4rem}.list-page-cta{border-top:1px solid var(--border-color);margin-top:5rem;padding-top:3rem}.video-player{border-radius:var(--radius-lg);overflow:hidden;position:relative;width:100%}.video-player__screen{display:block;line-height:0;overflow:hidden;width:100%}.video-player__video{background-color:#111;display:block;height:auto;width:100%}.video-player__controls{align-items:center;background:linear-gradient(0deg,#0009 0,#0000);bottom:0;display:flex;gap:.75rem;left:0;opacity:0;padding:2rem .875rem .75rem;pointer-events:none;position:absolute;right:0;transform:translateY(.375rem);transition:opacity .25s ease,transform .25s ease}.video-player:hover .video-player__controls{opacity:1;pointer-events:auto;transform:translateY(0)}.video-player__btn{align-items:center;background:none;border:none;color:#ffffffb3;cursor:pointer;display:inline-flex;font-size:.75rem;font-weight:500;gap:.2rem;line-height:1;padding:.25rem;transition:color .15s ease}.video-player__btn:hover{color:#fff}.video-player__btn--play{background-color:#ffffffe6;border-radius:50%;color:#111;flex-shrink:0;height:2rem;justify-content:center;width:2rem}.video-player__btn--play:hover{background-color:#fff;color:#111}.video-player__time{font-feature-settings:"tnum";color:#fff9;flex-shrink:0;font-size:.75rem;font-variant-numeric:tabular-nums;white-space:nowrap}.video-player__seekbar-wrap{align-items:center;display:flex;flex:1 1;height:1.25rem;position:relative}.video-player__seekbar-track{background-color:#ffffff4d;border-radius:2px;height:3px;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0}.video-player__seekbar-fill{background-color:#ffffffe6;border-radius:2px;height:100%;transition:width .05s linear}.video-player__seekbar{cursor:pointer;height:100%;left:0;margin:0;opacity:0;position:absolute;right:0;width:100%}.lightbox-overlay{align-items:center;animation:lightbox-fade .15s ease;background:#000000d9;display:flex;inset:0;justify-content:center;padding:2rem;position:fixed;z-index:1000}.lightbox-container{animation:lightbox-scale .15s ease;display:flex;flex-direction:column;max-height:calc(100vh - 4rem);max-width:90vw;overflow:hidden;position:relative}.lightbox-image-wrapper{align-self:flex-start;border-radius:var(--radius-md);cursor:crosshair;flex-shrink:1;line-height:0;overflow:hidden;position:relative}.lightbox-image-wrapper--video{cursor:default;line-height:normal;overflow:visible}.lightbox-image-wrapper--video .video-player__video{max-height:65vh;object-fit:contain}.lightbox-image{display:block;max-height:75vh;max-width:90vw}.lightbox-lens{background-repeat:no-repeat;border:1.5px solid #ffffffb3;border-radius:var(--radius-md);box-shadow:0 2px 16px #0006;height:240px;pointer-events:none;position:absolute;width:240px}.lightbox-caption{color:#fff9;font-size:var(--font-size-sm);line-height:1.5;margin-top:1rem;text-align:left}.lightbox-counter{color:#fff9;font-size:.9375rem;margin-top:.5rem;text-align:center}.lightbox-nav{align-items:center;backdrop-filter:blur(30px) saturate(180%);-webkit-backdrop-filter:blur(30px) saturate(180%);background-color:#fff3;border:none;border-radius:50%;box-shadow:0 4px 16px #0003;color:#fff;cursor:pointer;display:flex;height:2.5rem;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .2s ease;width:2.5rem;z-index:1}.lightbox-nav:hover{background-color:#ffffff59}.lightbox-nav--prev{left:1.5rem}.lightbox-nav--next{right:1.5rem}.lightbox-close{align-items:center;background:none;border:none;color:#fff9;cursor:pointer;display:flex;justify-content:center;padding:.25rem;position:absolute;right:2rem;top:1.5rem;transition:color .2s ease}.lightbox-close:hover{color:#fff}@media (max-width:768px){.lightbox-overlay{padding:1.5rem 1rem}.lightbox-image-wrapper{cursor:default}.lightbox-image{max-height:65vh;max-width:calc(100vw - 2rem)}}@keyframes lightbox-fade{0%{opacity:0}to{opacity:1}}@keyframes lightbox-scale{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.case-study-page{min-height:calc(100vh - var(--nav-height))}.case-study-page .page-container{max-width:var(--max-width-editorial)}.case-study-hero{margin-bottom:1.5rem}.case-study-hero h1{font-size:clamp(1.75rem,3.5vw,2.5rem);line-height:1.15;margin-bottom:.5rem;margin-top:0}.case-study-hero .subtitle{color:var(--text-secondary);font-size:1.0625rem;line-height:1.4}.hero-image-full{aspect-ratio:16/9;background-color:var(--bg-secondary);border-radius:var(--radius-lg);margin-bottom:1.5rem;overflow:hidden;width:100%}.hero-image-full img{height:100%;object-fit:cover;width:100%}.case-study-toc{border:1px solid var(--border-color);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.75rem;margin-bottom:4rem;padding:1.5rem}.toc-item{grid-gap:1rem;align-items:baseline;color:var(--text-subtle);display:grid;gap:1rem;grid-template-columns:3rem 1fr;text-decoration:none;transition:color .15s ease}.toc-item:hover,.toc-item:hover .toc-heading{color:var(--text-primary)}.toc-number{font-feature-settings:"tnum";color:var(--text-subtle);font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:.05em}.toc-heading{color:var(--text-subtle);font-size:1rem;font-weight:400}.case-study-content{display:flex;flex-direction:column;gap:2.5rem}.case-study-content p{color:var(--text-secondary);margin:0}.case-study-content p+p{margin-top:1rem}.content-section{display:flex;flex-direction:column;gap:.5rem}.content-section .section-label{margin-bottom:-.25rem}.content-section h2{font-size:clamp(1.25rem,2.5vw,1.75rem);margin-bottom:.75rem}.section-figure{margin:0;width:100%}.section-image{border-radius:var(--radius-lg);overflow:hidden;width:100%}.section-image img{display:block;height:auto;width:100%}.section-image--clickable{cursor:zoom-in}.section-image-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr}.case-study-content ul{display:flex;flex-direction:column;gap:.5rem;list-style:disc;margin:0;padding-left:1.5rem}.case-study-content ul li{color:var(--text-secondary);font-size:1rem;line-height:1.4;padding-left:.25rem}.case-study-content p+ul,.case-study-content ul+p{margin-top:1rem}.callout-block{border-left:3px solid var(--text-primary);border-radius:0 var(--radius-md) var(--radius-md) 0;padding:2rem}.callout-block p{font-size:1rem;font-style:italic;max-width:none}.stats-row{grid-gap:2rem;border-bottom:1px solid var(--border-color);border-top:1px solid var(--border-color);display:grid;gap:2rem;grid-template-columns:repeat(3,1fr);padding:2rem 0}.stat-item{display:flex;flex-direction:column;gap:.5rem}.stat-value{font-size:1.75rem;font-weight:600;letter-spacing:-.03em}.stat-label{color:var(--text-subtle);font-size:.875rem}.numbered-items{counter-reset:numbered-items;display:flex;flex-direction:column;gap:2rem;list-style:none;margin:0;padding:0}.numbered-items+p,p+.numbered-items{margin-top:3rem}.numbered-items li{grid-gap:1.5rem;align-items:center;counter-increment:numbered-items;display:grid;gap:1.5rem;grid-template-columns:2.5rem 1fr}.numbered-items li:before{color:var(--text-primary);content:counter(numbered-items);font-size:4rem;font-weight:500;line-height:1}.numbered-items li p{margin:0}.numbered-items li p+p{margin-top:1rem}.metrics-table{display:flex;flex-direction:column;gap:1rem}.metrics-table-row{grid-gap:2rem;color:var(--text-secondary);display:grid;font-size:.9375rem;gap:2rem;grid-template-columns:1fr 1fr;line-height:1.5}.metrics-table-header{border-bottom:1px solid var(--text-primary);font-size:.9375rem;font-weight:600;padding-bottom:.5rem}.metric-table{grid-gap:1rem 1.5rem;display:grid;gap:1rem 1.5rem;width:100%}.metric-table-header-cell{font-size:.9375rem;font-weight:600;line-height:1.5}.metric-table-divider{border-bottom:1px solid var(--text-primary);grid-column:1/-1}.metric-table+p{margin-top:1rem}.metric-table-cell{color:var(--text-secondary);font-size:.9375rem;line-height:1.5}.case-study-nav{border-top:1px solid var(--border-color);margin-top:2rem;padding-top:2rem}.case-study-not-found{padding:8rem 0;text-align:center}.case-study-not-found h1{margin-bottom:1rem}.case-study-not-found p{margin-bottom:2rem}.back-link{color:var(--text-primary);font-weight:500;text-decoration:underline;text-underline-offset:3px}@media (max-width:768px){.case-study-hero{margin-bottom:2rem}.stats-row{grid-template-columns:1fr 1fr}.section-image-grid{grid-template-columns:1fr}.case-study-nav{align-items:flex-start;flex-direction:column}.nav-next{margin-left:0;text-align:left}}.phase-bg-indicator{animation:phaseIndicatorFadeIn .5s ease-out forwards;bottom:0;color:var(--text-primary);font-size:14rem;font-weight:700;left:max(.5rem,calc((100vw - var(--max-width-editorial))/2 - 15.5rem));letter-spacing:-.04em;line-height:1;pointer-events:none;position:fixed;text-transform:uppercase;transform:scale(-1);-webkit-user-select:none;user-select:none;white-space:nowrap;writing-mode:vertical-rl;z-index:-1}@keyframes phaseIndicatorFadeIn{0%{opacity:0}to{opacity:.075}}@media (max-width:1224px){.phase-bg-indicator{display:none}}.stack-graph{height:100vh;overflow:hidden;position:relative;width:100%}.stack-graph-viewport{cursor:grab;height:100%;inset:0;position:absolute;touch-action:none;transform-origin:center center;transition:transform .15s ease-out;-webkit-user-select:none;user-select:none;width:100%;will-change:transform}.stack-graph-viewport--panning{cursor:grabbing;transition:none}.stack-graph-edges{height:100%;inset:0;pointer-events:none;position:absolute;width:100%}.stack-graph-edge{stroke:var(--border-color);stroke-width:1;opacity:.4;transition:opacity .25s ease}.stack-graph-edge--dimmed{opacity:.05}.stack-graph-node{height:56px;left:0;position:absolute;top:0;width:56px;will-change:transform;z-index:2}.stack-graph-node:hover{z-index:10}.stack-graph-node-inner{align-items:center;display:flex;height:100%;justify-content:center;position:relative;transition:transform .15s ease,opacity .25s ease;width:100%}.stack-graph-node-inner:hover{transform:scale(1.15);z-index:4}.stack-graph-node--dimmed{opacity:.18}.stack-graph-node-hit{align-items:center;border-radius:50%;cursor:grab;display:flex;height:56px;justify-content:center;touch-action:none;transition:background-color .2s ease,border-color .2s ease;-webkit-user-select:none;user-select:none;width:56px}.stack-graph-node-inner:hover .stack-graph-node-hit{background-color:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.stack-graph-node-hit img,.stack-graph-node-hit svg{-webkit-user-drag:none;user-drag:none;pointer-events:none}.stack-graph-node-hit:active{cursor:grabbing}.stack-graph-node .tool-logo{height:32px;width:32px}.stack-graph-tooltip{border-radius:var(--radius-md);bottom:calc(100% + 10px);left:50%;max-width:200px;min-width:140px;opacity:0;padding:.625rem .75rem;pointer-events:none;position:absolute;text-align:left;transform:translateX(-50%);transition:opacity .15s ease;z-index:5}.stack-graph-node-inner:hover .stack-graph-tooltip{opacity:1}.stack-graph-tooltip h4{font-size:.8125rem;font-weight:600;margin-bottom:.125rem}.stack-graph-tooltip p{color:var(--text-secondary);font-size:.75rem}.stack-graph-settings{position:fixed;right:1.5rem;top:2rem;z-index:500}.stack-graph-settings-toggle{align-items:center;border-radius:50%;color:var(--text-primary);cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:background-color .2s ease,border-color .2s ease,transform .2s ease;width:40px}.stack-graph-settings--open .stack-graph-settings-toggle{transform:rotate(45deg)}.stack-graph-settings-panel{border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:.875rem;padding:1rem;position:absolute;right:0;top:calc(100% + .75rem);width:260px}.stack-graph-slider-row{display:flex;flex-direction:column;gap:.375rem}.stack-graph-slider-label{color:var(--text-secondary);font-size:.75rem}.stack-graph-slider-controls{align-items:center;display:flex;gap:.625rem}.stack-graph-slider-controls input[type=range]{accent-color:var(--text-primary);flex:1 1;min-width:0}.stack-graph-slider-percent{align-items:center;color:var(--text-secondary);display:flex;flex-shrink:0;font-size:.75rem;gap:.125rem}.stack-graph-slider-percent input[type=number]{background-color:initial;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:inherit;font-size:.75rem;padding:.125rem .25rem;text-align:right;width:34px}.stack-graph-slider-percent input[type=number]::-webkit-inner-spin-button,.stack-graph-slider-percent input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stack-graph-settings-reset{align-self:flex-start;background:none;border:none;color:var(--text-subtle);cursor:pointer;font-size:.75rem;padding:0;text-decoration:underline;transition:color .2s ease}.stack-graph-settings-reset:hover{color:var(--text-primary)}.stack-graph-zoom{align-items:center;border-radius:var(--radius-pill);bottom:2rem;display:flex;gap:.25rem;height:40px;left:1.5rem;padding:0 .25rem;position:fixed;z-index:500}.stack-graph-zoom-btn{align-items:center;background:#0000;border:none;border-radius:50%;color:var(--text-primary);cursor:pointer;display:flex;flex-shrink:0;height:28px;justify-content:center;transition:background-color .2s ease;width:28px}.stack-graph-zoom-btn:hover{background-color:var(--glass-bg-hover)}.stack-graph-zoom-reset{background:#0000;border:none;color:var(--text-secondary);cursor:pointer;font-family:inherit;font-size:.875rem;font-weight:500;height:28px;min-width:46px;padding:0 .375rem;transition:color .2s ease}.stack-graph-zoom-reset:hover{color:var(--text-primary)}@media (max-width:600px){.stack-graph-node,.stack-graph-node-hit{height:44px;width:44px}.stack-graph-node .tool-logo{height:24px;width:24px}.stack-graph-zoom{bottom:1.25rem;left:1.25rem}.stack-graph-settings{top:1.25rem}.stack-graph-settings-panel{width:170px}}@media (prefers-reduced-motion:reduce){.stack-graph-edge,.stack-graph-node-inner,.stack-graph-viewport{transition:none}}.stack-phase-nav{margin-top:1rem;pointer-events:auto}.stack-phase-row{align-items:center;display:flex;gap:1.75rem;justify-content:center}.stack-phase-btn{background:none;border:none;border-bottom:1px dashed var(--text-subtle);cursor:pointer;font-family:inherit;padding:0 0 3px;transition:color .2s ease,border-color .2s ease}.stack-phase-btn--active,.stack-phase-btn:focus-visible,.stack-phase-btn:hover{border-bottom-style:solid;border-color:var(--text-primary);color:var(--text-primary)}.stack-phase-desc{color:var(--text-secondary);font-size:.8125rem;line-height:1.2;margin:.625rem auto 0;max-width:26rem;min-height:2.4em;opacity:0;padding:0 1rem;transition:opacity .2s ease}.stack-phase-desc--visible{opacity:1}@media (max-width:600px){.stack-phase-row{gap:1.25rem}}.stack-page{background-attachment:fixed;background-image:radial-gradient(circle,var(--border-color) 1px,#0000 1px);background-size:28px 28px;min-height:calc(100vh - var(--nav-height));padding-top:0}.stack-floating-header{left:50%;max-width:90vw;pointer-events:none;position:fixed;text-align:center;top:2rem;transform:translateX(-50%);z-index:20}.stack-floating-header .page-intro{margin:0 auto}@media (max-width:600px){.stack-floating-header{top:1.25rem}}.tool-logo{align-items:center;display:flex;flex-shrink:0;height:36px;justify-content:center;width:36px}.tool-logo img{height:100%;object-fit:contain;width:100%}.tool-emoji{font-size:1.5rem;line-height:1}.logo-dark-only,[data-theme=dark] .logo-light-only{display:none}[data-theme=dark] .logo-dark-only{display:block}.tool-logo img[alt*=Framer]{filter:invert(1)}[data-theme=dark] .tool-logo img[alt*=Framer]{filter:invert(0)}[data-theme=dark] .tool-logo img[alt*="Google Flow"],[data-theme=light] .tool-logo img[alt*=GitHub]{filter:invert(1)}@media (max-width:768px){.tool-logo{height:32px;width:32px}}.stack-cta{border-top:1px solid var(--border-color);margin-top:5rem;padding-top:3rem}.book-cover-page{min-height:calc(100vh - var(--nav-height))}.book-cover-page .page-container{max-width:var(--max-width-editorial)}.book-cover-page .case-study-meta-row{margin-bottom:0}.book-cover-page .page-intro{max-width:none}.bc-carousel-wrapper{margin-top:1.5rem;overflow:hidden}.bc-carousel{cursor:grab;display:flex;gap:1.5rem;overflow-x:auto;padding-block:.5rem;position:relative;scroll-snap-type:x mandatory;scrollbar-width:none}.bc-carousel-item:first-child{margin-left:41%}.bc-carousel-item:last-child{margin-right:41%}.bc-carousel::-webkit-scrollbar{display:none}.bc-carousel:active{cursor:grabbing}.bc-carousel-item{cursor:zoom-in;display:flex;flex-direction:column;flex-shrink:0;gap:.75rem;scroll-snap-align:center;transform-origin:center center;width:18%;will-change:transform,opacity}.bc-carousel-cover{aspect-ratio:2/3;border-radius:var(--radius-sm);overflow:hidden;width:100%}.bc-carousel-cover img{display:block;height:100%;object-fit:cover;pointer-events:none;width:100%}.bc-carousel-item--wide{width:36%}.bc-carousel-item--wide .bc-carousel-cover{aspect-ratio:unset;overflow:visible}.bc-carousel-item--wide .bc-carousel-cover img{height:auto;object-fit:contain}.bc-carousel-caption{color:var(--text-subtle);font-size:.8125rem;text-align:center}.bc-timeline{align-items:center;display:flex;flex-direction:column;gap:.5rem;padding:.25rem 0 1rem}.bc-timeline-phase{color:var(--text-subtle);font-size:.625rem;min-height:1em;transition:opacity .2s ease}.bc-timeline .carousel-controls{margin-top:0}@media (max-width:768px){.bc-carousel{gap:1rem;padding-inline:10%}.bc-carousel-item{width:60%}}.App{display:flex;flex-direction:column;min-height:100vh;position:relative;z-index:1}main{flex:1 1}.footer{background-color:initial;margin-top:auto;padding:2rem 0}.footer .page-container{max-width:var(--max-width-editorial)}.footer-container{align-items:center;display:flex;justify-content:space-between}.footer-icons{align-items:center;display:flex;gap:.25rem}.footer p{color:var(--text-subtle);font-size:.875rem}@media (max-width:768px){.footer p{font-size:var(--font-size-sm)}}
/*# sourceMappingURL=main.bf303d7b.css.map*/