.case-study-scroller{margin-top:2rem;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.case-study-scroller--pinned .case-study-scroller__stage{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}.case-study-slide-track{display:flex;gap:1.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;padding:.25rem 0 1rem}.case-study-slide-track--pinned{overflow:visible;gap:0;width:max-content;padding:0;will-change:transform}.case-study-slide{display:flex;flex-direction:column;gap:1rem;flex:0 0 78%;scroll-snap-align:start;text-decoration:none;border-bottom:none}.case-study-slide-track--pinned .case-study-slide{flex:0 0 100vw;box-sizing:border-box;padding:0 max(4vw,calc((100vw - 1400px) / 2));flex-direction:row;align-items:center;gap:4.5rem}.case-study-slide__preview{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:6px;border:1px solid var(--border-color);background:var(--border-color);flex-shrink:0}.case-study-slide-track--pinned .case-study-slide__preview{flex:0 0 52%;max-height:64vh}.case-study-slide__img{object-fit:cover;object-position:top;transition:transform .6s cubic-bezier(.25,1,.5,1)}.case-study-slide:hover .case-study-slide__img{transform:scale(1.04)}.case-study-slide__body{min-width:0}.case-study-slide-track--pinned .case-study-slide__body{flex:1 1}.case-study-slide__index{font-family:var(--font-sans);font-size:.9rem;font-weight:600;color:var(--text-muted);opacity:.6}.case-study-slide-track--pinned .case-study-slide__index{font-size:1.1rem}.case-study-slide__title{font-size:1.3rem;margin:.35rem 0 .15rem;color:var(--text-color);transition:color .25s ease}.case-study-slide-track--pinned .case-study-slide__title{font-size:2.75rem;margin:.75rem 0 .35rem}.case-study-slide:hover .case-study-slide__title{color:var(--accent-color)}.case-study-slide__role{font-family:var(--font-sans);font-size:.75rem;line-height:1.4;color:var(--text-muted);margin-bottom:.75rem}.case-study-slide-track--pinned .case-study-slide__role{font-size:.95rem;margin-bottom:1.5rem}.case-study-slide__problem{font-size:.9rem;color:var(--text-muted);margin-bottom:.75rem}.case-study-slide-track--pinned .case-study-slide__problem{font-size:1.15rem;line-height:1.6;margin-bottom:1.5rem;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.case-study-slide__outcome-label{font-family:var(--font-sans);font-size:.6875rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-color);margin-bottom:.25rem}.case-study-slide-track--pinned .case-study-slide__outcome-label{font-size:.8rem;margin-bottom:.5rem}.case-study-slide__outcome{font-size:.875rem;color:var(--text-muted);margin:0}.case-study-slide-track--pinned .case-study-slide__outcome{font-size:1.05rem;line-height:1.6;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.case-study-intro{text-align:center}.case-study-list{gap:5.5rem;margin:2.5rem 0 4rem}.case-study,.case-study-list{display:flex;flex-direction:column}.case-study{gap:2rem}.case-study__preview-wrap{position:relative}.case-study__preview{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;border-radius:6px;border:1px solid var(--border-color);background:var(--border-color);box-shadow:0 20px 50px rgba(0,0,0,.06)}.case-study__tape{position:absolute;top:-.6rem;left:1.75rem;width:3.5rem;height:1.25rem;background:var(--accent-color);opacity:.85;transform:rotate(-3deg);z-index:3;box-shadow:0 2px 6px rgba(0,0,0,.12)}.case-study__img{object-fit:cover;object-position:top;transition:transform .7s cubic-bezier(.25,1,.5,1)}.case-study__preview:hover .case-study__img{transform:scale(1.03)}.case-study__body{position:relative}.case-study__heading{display:flex;align-items:baseline;gap:1rem;margin-bottom:.5rem}.case-study__index{font-family:var(--font-sans);font-size:.85rem;font-weight:600;color:var(--text-muted);opacity:.6}.case-study__title{font-size:1.3rem}.case-study__title a{border-bottom:none}.case-study__title a:hover{color:var(--accent-color)}.case-study__year{font-size:.85rem;white-space:nowrap;margin-left:auto}.case-study__role,.case-study__year{font-family:var(--font-sans);color:var(--text-muted)}.case-study__role{font-size:.8125rem;font-weight:500;letter-spacing:.03em;margin-bottom:1.75rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.case-study__label{font-family:var(--font-sans);font-size:.6875rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-color);margin-bottom:.5rem}.case-study__list{list-style:none;display:flex;flex-direction:column;gap:.5rem;margin-bottom:var(--spacing-element)}.case-study__list li{padding-left:1.25rem;position:relative;font-size:.9rem}.case-study__list li:before{content:"›";position:absolute;left:0;color:var(--accent-color);font-weight:600}.case-study__badge{display:inline-block;font-family:var(--font-sans);font-size:.625rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);background:var(--accent-light);border:1px solid var(--border-color);padding:.25rem .75rem;border-radius:100px}@media (min-width:1024px){.case-study__preview,.case-study__preview-wrap{max-width:900px}}.project-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}.project-filter-btn{cursor:pointer;border:1px solid var(--border-color);background:transparent;color:var(--text-muted);font-family:var(--font-sans);font-size:.6875rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;padding:.4rem 1rem;border-radius:100px;transition:border-color .25s ease,color .25s ease,background .25s ease}.project-filter-btn:hover{border-color:var(--text-color);color:var(--text-color)}.project-filter-btn.is-active{background:var(--text-color);border-color:var(--text-color);color:var(--bg-color)}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1.25rem;gap:1.25rem;padding:.5rem 4px 4px}.project-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-color);overflow:hidden;text-decoration:none;box-shadow:0 4px 12px rgba(0,0,0,.015);transform:translateY(var(--tilt-lift,0)) perspective(800px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:border-color .3s cubic-bezier(.25,1,.5,1),box-shadow .3s cubic-bezier(.25,1,.5,1),opacity .3s ease,transform .15s ease-out}.project-card:hover{--tilt-lift:-2px;border-color:var(--accent-color);box-shadow:0 4px 20px var(--accent-light)}.project-grid:has(.project-card:hover) .project-card:not(:hover){opacity:.5}.project-card__preview{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:3px 3px 0 0;background:var(--border-color)}.project-card__img{object-fit:cover;object-position:top;transition:transform .7s cubic-bezier(.25,1,.5,1)}.project-card:hover .project-card__img{transform:scale(1.04)}.project-card__preview.preview-failed:before{content:"";position:absolute;inset:0;background:var(--border-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a8680' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Ccircle cx='8.5' cy='8.5' r='1.5'/%3E%3Cpath d='M21 15l-5-5L5 21'/%3E%3C/svg%3E") center /28px no-repeat}.project-card__footer{display:flex;align-items:flex-end;justify-content:space-between;padding:.75rem .875rem}.project-card__meta{min-width:0}.project-card__title{font-family:var(--font-sans);font-size:.875rem;font-weight:500;color:var(--text-color);line-height:1.3}.project-card__year{font-size:.75rem;margin-top:.1rem}.project-card__tag,.project-card__year{font-family:var(--font-sans);color:var(--text-muted)}.project-card__tag{font-size:.625rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;background:var(--accent-light);padding:.2rem .625rem;border-radius:100px;white-space:nowrap}.project-card__tag--open-source{color:#4a90a4;background:rgba(74,144,164,.08)}.project-card__overlay{position:absolute;inset:0;z-index:2;background:rgba(26,25,24,.78);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.625rem;opacity:0;transition:opacity .3s ease;border-radius:4px}.project-card__overlay-title{font-family:var(--font-serif);font-size:1.25rem;font-weight:400;color:#fff}.project-card__overlay-cta{font-family:var(--font-sans);font-size:.6875rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:#fff;border:1px solid rgba(255,255,255,.5);padding:.4rem 1rem;border-radius:100px}.project-card:hover .project-card__overlay{opacity:1}.project-empty{padding:4rem 0;text-align:center;display:none;flex-direction:column;align-items:center;gap:.75rem;color:var(--text-muted)}.project-empty.is-visible{display:flex}.project-empty__title{font-family:var(--font-serif);font-weight:300;color:var(--text-color);font-size:1rem}.project-empty__sub{font-family:var(--font-sans);font-size:.8125rem;color:var(--text-muted)}@media (max-width:900px) and (min-width:641px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.project-grid{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:.875rem;scrollbar-width:none;touch-action:pan-x pan-y}.project-grid::-webkit-scrollbar{display:none}.project-card{flex:0 0 78%;scroll-snap-align:start}.project-grid:after{content:"";flex:0 0 1px}.project-card:hover{transform:none}.project-card__footer{padding:.625rem .75rem}.project-filters{gap:.375rem}.case-study-list{gap:3rem}.case-study{padding-bottom:2.5rem}.case-study__title{font-size:1.15rem}}