.cases-page{--cases-canvas:#f5f6f5;--cases-surface:#e1e3e1;--cases-line:#c7cbc8;--cases-muted:#5a5c5b;--blue-light:var(--fog);--blue:var(--graphite);background:var(--cases-canvas)}.cases-page ::selection{background:var(--navy);color:var(--white)}.cases-page input,.cases-page textarea{caret-color:var(--navy)}.cases-page #main{background:var(--cases-canvas)}.cases-page #main:focus{outline:none}.cases-page .header{background:var(--cases-canvas)}.cases-page .desktop-nav [aria-current=page]{text-underline-offset:6px;text-decoration:underline;text-decoration-thickness:1px}.cases-hero{isolation:isolate;background:var(--navy);color:var(--white);padding:28px 0 52px;position:relative}.cases-hero:before{content:"";z-index:-1;pointer-events:none;background:url(/static/assets/cube-grid.svg);background-size:var(--cube-pattern-size);opacity:var(--cube-pattern-opacity);position:absolute;inset:0}.cases-breadcrumbs{color:var(--fog);flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:40px;font-size:12px;line-height:1.6;display:flex}.cases-breadcrumbs a{align-items:center;min-height:26px;text-decoration:none;display:inline-flex}.cases-breadcrumbs a:hover:where([data-hover-enabled=true] *){text-underline-offset:4px;text-decoration:underline}.cases-page.factoria-b .cases-hero-grid{grid-template-columns:minmax(0,1fr)}.cases-page h1{letter-spacing:-.035em;text-wrap:balance;max-width:none;font-size:clamp(38px,3.6vw,50px);font-weight:500;line-height:1.08}.cases-hero-lead{max-width:650px;color:var(--fog);margin:24px 0 0;font-size:17px;line-height:1.6}.cases-hero-actions{flex-wrap:wrap;align-items:center;gap:28px;margin-top:30px;display:flex}.cases-hero-button{--blue-light:#dce6ea;background:var(--cases-canvas);color:var(--navy)}.cases-hero-button:hover:where([data-hover-enabled=true] *){background:var(--blue-light);border-color:var(--blue-light)}.cases-hero .quiet-link:hover:where([data-hover-enabled=true] *),.cases-hero .text-link:hover:where([data-hover-enabled=true] *){color:var(--white);text-decoration-thickness:2px}.cases-hero :is(a,button):focus-visible{outline-color:var(--white)}.cases-catalog{background:var(--cases-canvas);padding:56px 0 64px}.cases-catalog-heading{margin-bottom:32px}.cases-catalog-heading h2{letter-spacing:-.03em;margin:0;font-size:38px;font-weight:500;line-height:1.15}.cases-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.case-entry{background:var(--cases-surface);flex-direction:column;min-width:0;display:flex}.case-gallery{background:var(--fog);align-self:start;width:100%;min-width:0;position:relative}.case-gallery:focus-visible{outline:2px solid var(--navy);outline-offset:4px}.case-gallery-viewport{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;aspect-ratio:2;background:var(--fog);display:flex;overflow-x:auto}.case-gallery-viewport::-webkit-scrollbar{display:none}.case-slide{scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 100%;width:100%;min-width:0}.case-slide img{object-fit:contain;width:100%;height:100%;display:block}.case-photo-pending{background:var(--fog);color:var(--navy);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex}.case-photo-pending span{letter-spacing:-.02em;font-size:24px;font-weight:500;line-height:1.3}.case-photo-pending small{font-size:14px;line-height:1.5}.case-gallery-controls{background:var(--cases-surface);border-bottom:1px solid var(--cases-line);justify-content:space-between;align-items:center;gap:12px;min-height:68px;padding:12px 16px;display:flex}.case-media-caption{max-width:112px;color:var(--cases-muted);font-size:12px;line-height:1.4}.case-gallery-navigation{flex:none;align-items:center;gap:8px;display:flex}.case-gallery-count{font-variant-numeric:tabular-nums;min-width:40px;color:var(--graphite);text-align:center;margin-right:4px;font-size:13px;line-height:1.5}.case-gallery-navigation button{border:1px solid var(--navy);background:var(--navy);width:44px;height:44px;color:var(--white);border-radius:0;flex:none;place-items:center;padding:0;transition:background-color .15s,border-color .15s;display:grid}.case-gallery-navigation button:hover:where([data-hover-enabled=true] *):not(:disabled){background:#1a4252;border-color:#1a4252}.case-gallery-navigation button:focus-visible{outline:2px solid var(--navy);outline-offset:3px}.case-gallery-navigation button:disabled{border-color:var(--stone);color:var(--stone);cursor:default;background:0 0}.case-gallery-navigation svg{stroke:currentColor;stroke-width:1.5px;stroke-linecap:square;stroke-linejoin:miter;width:24px;height:24px}.case-gallery-dots{z-index:1;overscroll-behavior-x:contain;scrollbar-width:none;align-items:center;width:max-content;max-width:calc(100% - 16px);display:flex;position:absolute;bottom:0;left:50%;overflow-x:auto;transform:translate(-50%)}.case-gallery-dots::-webkit-scrollbar{display:none}.case-gallery-dots::-webkit-scrollbar-button{width:0;height:0;display:none}.case-gallery-viewport::-webkit-scrollbar-button{width:0;height:0;display:none}.cases-page.factoria-b .case-gallery-dot{width:44px;min-width:44px;height:44px;min-height:44px;color:var(--white);cursor:pointer;appearance:none;background:0 0;border:0;border-radius:50%;flex:0 0 44px;place-items:center;padding:0;transition:color .15s;display:grid}.case-gallery-dot:before{content:"";opacity:.65;background:currentColor;border:0;border-radius:999px;width:8px;height:4px;transition:width .18s ease-out,opacity .15s;box-shadow:0 1px 3px #000000a6}.case-gallery-dot[aria-pressed=true]:before{opacity:1;width:22px}.case-gallery-dot:hover:where([data-hover-enabled=true] *):before{opacity:1}.case-gallery:has(.case-photo-pending[aria-hidden=false]) .case-gallery-dot{color:var(--navy)}.case-gallery:has(.case-photo-pending[aria-hidden=false]) .case-gallery-dot:before{box-shadow:none}.case-gallery-dot:focus-visible{outline-offset:-6px;outline:2px solid}.case-gallery-dots[hidden]{display:none}.has-pointer-navigation .case-gallery-viewport{scroll-snap-type:none;touch-action:pan-y pinch-zoom;overflow-x:hidden}.case-gallery-viewport.is-dragging{scroll-snap-type:none;cursor:grabbing;-webkit-user-select:none;user-select:none}@media (hover:hover) and (pointer:fine){.has-pointer-navigation .case-gallery-viewport{cursor:grab}.has-pointer-navigation .case-gallery-viewport.is-dragging{cursor:grabbing}}.case-entry a.case-gallery-viewport{cursor:pointer}.case-entry a.case-gallery-viewport.is-dragging{cursor:grabbing}.case-entry a.case-gallery-viewport:focus-visible{outline:2px solid var(--navy);outline-offset:-3px}@media (prefers-reduced-motion:reduce){.cases-page .case-gallery-dot,.case-gallery-dot:before{transition:none}}.case-status{z-index:1;background:var(--cases-canvas);color:var(--navy);border:1px solid var(--cases-line);margin:0;padding:8px 12px;font-size:13px;font-weight:500;line-height:1.3;position:absolute;top:16px;left:16px}.case-status-progress{background:var(--navy);color:var(--white);border-color:var(--navy)}.case-body{flex-direction:column;flex:1;min-width:0;padding:24px;display:flex}.case-body h3{letter-spacing:-.025em;text-wrap:balance;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere;min-height:2.46em;margin:0;font-size:25px;font-weight:500;line-height:1.23}.case-body h3 a{text-decoration:none}.case-body h3 a:hover:where([data-hover-enabled=true] *){text-underline-offset:5px;text-decoration:underline;text-decoration-thickness:1px}.case-facts{flex-direction:column;flex:1;gap:20px;margin:0;display:flex}.case-fact{min-width:0}.case-fact dt{color:var(--cases-muted);margin:0 0 8px;font-size:13px;font-weight:500;line-height:1.4}.case-fact dd{max-width:65ch;color:var(--graphite);overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.55}.case-outcome{border-top:1px solid var(--cases-line);background:var(--cases-canvas);min-height:144px;margin:auto -24px 0;padding:20px 24px}.case-outcome dt{color:var(--cases-muted)}.case-outcome dd{color:var(--navy);font-weight:500}.case-detail-link{align-self:flex-start;min-height:44px;margin-top:auto;padding-top:16px;font-size:15px}.cases-inquiry{background:var(--cases-canvas);border-top:1px solid var(--cases-line);padding:48px 0}.cases-inquiry-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:40px;display:grid}.cases-inquiry h2{letter-spacing:-.025em;margin:0;font-size:32px;font-weight:500;line-height:1.15}.cases-inquiry p{color:var(--graphite);max-width:700px;margin:16px 0 0;font-size:17px;line-height:1.55}.cases-inquiry-actions{flex-direction:column;align-items:start;gap:16px;display:flex}.cases-page .project-contact .contact-form-panel{border-top:1px solid var(--cases-line);background:var(--fog)}@media (max-width:1120px){.cases-page h1{font-size:42px}.cases-grid{gap:20px}.case-gallery-controls{padding-inline:12px}.case-gallery-count{min-width:32px;margin-right:0}}@media (max-width:999px){.cases-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.case-fact dd{font-size:16px}}@media (max-width:760px){.cases-hero{padding-block:24px 36px}.cases-page h1{max-width:650px;font-size:38px}.cases-breadcrumbs{margin-bottom:28px}.cases-hero-lead{max-width:630px;font-size:16px}.cases-catalog{padding-block:40px 48px}.cases-catalog-heading{margin-bottom:28px}.cases-catalog-heading h2{font-size:32px}.case-body{padding:24px 20px}.case-outcome{margin-inline:-20px;padding-inline:20px}.cases-inquiry{padding-block:40px}.cases-inquiry-row{grid-template-columns:1fr;gap:24px}.cases-inquiry h2{font-size:30px}.cases-inquiry-actions{flex-flow:wrap;align-items:center;gap:24px}}@media (max-width:639px){.cases-grid{grid-template-columns:1fr;gap:28px}.case-body h3{min-height:0;font-size:26px}.case-outcome{min-height:0}.case-gallery-controls{padding-inline:16px}.case-gallery-count{min-width:40px}}@media (max-width:440px){.cases-page h1{font-size:36px}.cases-hero-actions{gap:14px;margin-top:24px}.cases-hero-actions .quiet-link{font-size:14px}.case-gallery-controls{gap:8px;padding-inline:12px}.case-media-caption{max-width:100px}.case-gallery-count{min-width:32px}.case-body h3{font-size:25px}.case-fact dd,.cases-inquiry p{font-size:16px}}@media (prefers-reduced-motion:reduce){.cases-page{scroll-behavior:auto}.case-gallery-navigation button{transition:none}}
html:has(.cases-page){scrollbar-gutter:stable}.cases-page.factoria-b{background:var(--white)}.cases-page.factoria-b #main,.cases-page.factoria-b .header{background:0 0}.case-gallery-viewport{overflow:auto hidden}.cases-page .case-gallery-viewport{touch-action:auto}.case-gallery .visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.cases-page #main>:is(section,article){border-radius:var(--site-radius-panel);margin-top:20px}.cases-page.factoria-b .cases-catalog{background:0 0;padding-top:24px}.cases-page.factoria-b .case-entry{isolation:isolate;border:1px solid var(--cases-line);background:var(--white);position:relative;overflow:visible}.case-entry:before{content:"";z-index:0;border:6px solid var(--cases-surface);border-radius:calc(var(--site-radius-card) + 6px);opacity:0;pointer-events:none;transition:opacity .16s;position:absolute;inset:-7px}.case-catalog-grid{isolation:isolate;margin:-8px;padding:8px;position:relative}html:has(.case-catalog-grid.is-revealing){overflow-anchor:none}.case-catalog-grid.is-revealing{overflow:clip}.case-card-trigger{color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;text-decoration:none}.case-card-trigger:focus-visible,.case-card-action:focus-visible{outline:2px solid var(--navy);outline-offset:4px}.case-card-media{z-index:1;border-radius:calc(var(--site-radius-card) - 1px) calc(var(--site-radius-card) - 1px) 0 0;flex:none;min-width:0;position:relative}.cases-page.factoria-b .case-entry .case-card-media :is(.case-gallery,.case-gallery-viewport){border-radius:inherit}.case-card-media .case-gallery-viewport{cursor:pointer;border:0;width:100%;padding:0}.case-card-media .case-slide img{object-fit:cover}.case-card-media .case-gallery-viewport:focus-visible{outline:2px solid var(--navy);outline-offset:-3px}.case-card-media .case-photo-pending span{font-size:16px}.case-card-caption{z-index:1;flex-direction:column;flex:1;align-items:flex-start;gap:10px;padding:20px;display:flex;position:relative}.cases-page .case-card-heading{min-width:0;color:inherit;letter-spacing:-.025em;overflow-wrap:anywhere;margin:0;font-size:24px;font-weight:500;line-height:1.2;display:block}.case-card-summary{color:var(--cases-muted);text-wrap:pretty;margin:0;font-size:16px;line-height:1.5}.case-card-footer{z-index:1;border-top:1px solid var(--cases-line);border-radius:0 0 calc(var(--site-radius-card) - 1px) calc(var(--site-radius-card) - 1px);background:var(--white);flex:none;padding:16px 20px;position:relative}.case-card-action{isolation:isolate;border-radius:var(--site-radius-control);background:var(--navy);min-height:44px;color:var(--white);justify-content:center;align-items:center;padding:10px 16px;font-size:16px;font-weight:500;line-height:1.5;text-decoration:none;display:flex;position:relative}.case-card-action:before{content:"";z-index:-1;border-radius:inherit;opacity:0;pointer-events:none;background:#1a4252;transition:opacity .16s;position:absolute;inset:0}.case-card-action:is(:focus-visible,:active):before{opacity:1;transition:none}.cases-pagination{border-top:1px solid var(--cases-line);color:var(--navy);overflow-anchor:none;justify-content:space-between;align-items:center;gap:24px;margin-top:36px;padding-top:24px;display:flex}.cases-page-count{min-height:44px;color:var(--cases-muted);font-variant-numeric:tabular-nums;align-items:center;margin:0;font-size:15px;display:flex}.cases-show-more{border-radius:var(--site-radius-control);min-height:44px;color:var(--navy);font:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:12px;padding:10px 14px;font-size:16px;transition:background-color .16s;display:inline-flex}.cases-show-more svg{stroke:currentColor;stroke-width:1.5px;width:20px;height:20px;transform:rotate(90deg)}.cases-show-more:focus-visible{outline:2px solid var(--navy);outline-offset:3px}@media (hover:hover) and (pointer:fine){.case-entry:hover:where([data-hover-enabled=true] *):before,.case-card-action:hover:where([data-hover-enabled=true] *):before{opacity:1}.cases-show-more:hover:where([data-hover-enabled=true] *){background:var(--cases-surface)}}@media (max-width:639px){.cases-page .case-card-heading{font-size:23px}.case-card-caption{padding:20px}.cases-pagination{gap:16px;margin-top:28px}}.cases-page .case-story-work{border-radius:var(--site-radius-card)}.case-study-page.factoria-b .case-related-link{background:var(--cases-canvas)}.case-study-page.factoria-b .case-related-link:hover:where([data-hover-enabled=true] *){background:var(--cases-surface)}.cases-page #projects{scroll-margin-top:100px}.case-viewer.letter-viewer{color:var(--navy);padding:72px 24px 24px}.case-viewer[data-case-phase=preparing]::backdrop{opacity:0}.case-viewer[data-case-input=keyboard]::backdrop{transition:none}.case-viewer[data-case-phase=preparing] .case-viewer-panel,.case-viewer:is([data-case-phase=preparing],[data-case-phase=closing]) .letter-viewer-close{visibility:hidden}.case-viewer-panel{overscroll-behavior:contain;border-radius:var(--site-radius-panel);background:var(--cases-canvas);transform-origin:50%;width:100%;max-width:1280px;min-height:0;max-height:100%;padding:40px;overflow:auto;box-shadow:0 12px 40px #00020629}.case-viewer .case-title-row{margin-bottom:32px}.case-viewer-actions{justify-content:flex-end;margin-top:32px;display:flex}.case-viewer #case-viewer-title{color:var(--navy);letter-spacing:-.03em;overflow-wrap:anywhere;margin:0;font-size:clamp(30px,3.6vw,50px);font-weight:500;line-height:1.12}.case-viewer .case-study-media{position:static}.case-viewer .case-gallery-viewport{border-radius:var(--site-radius-card);width:100%;max-height:none}.case-viewer .case-study-gallery{border-radius:var(--site-radius-card);overflow:hidden}.case-gallery-dot:before{width:22px;transition:transform .16s var(--ease-out),opacity .16s ease;transform:scaleX(.364)}.case-gallery-dot[aria-pressed=true]:before{transform:scaleX(1)}html[data-input-modality=keyboard] .case-gallery-dot:before{transition:none}.case-viewer .case-story-section h3{color:var(--navy);letter-spacing:-.025em;margin:0 0 20px;font-size:28px;font-weight:500;line-height:1.2}.cases-page .case-viewer .case-story-work{background:var(--navy)}.case-viewer .case-story-work h3{color:var(--white)}.case-viewer[data-case-phase=closing]::backdrop{opacity:0}.case-viewer[data-case-input=pointer] .letter-viewer-close:focus-visible{outline:none}body.case-viewer-open{overflow:hidden}.case-viewer:has(.case-request-dialog[open])>.letter-viewer-close{visibility:hidden}.case-request-dialog{inset:var(--case-request-area);width:min(520px,var(--case-request-width));max-width:none;height:fit-content;max-height:var(--case-request-height);border-radius:var(--site-radius-card);background:var(--white);color:var(--navy);transform-origin:50%;border:0;margin:auto;padding:0;position:fixed;overflow:hidden;box-shadow:0 16px 48px #0002062e}.case-request-dialog[open]{flex-direction:column;display:flex}.case-request-dialog:focus{outline:none}.case-request-dialog::backdrop{clip-path:var(--case-request-clip);opacity:1;transition:opacity .18s var(--ease-out);background:#0002062e}.case-request-dialog[data-phase=closing]::backdrop{opacity:0}@starting-style{.case-request-dialog[open]::backdrop{opacity:0}}.case-request-header{flex:none;align-items:center;gap:12px;padding:20px 24px 0;display:flex}.case-request-header h2{letter-spacing:-.025em;flex:1;margin:0;font-size:30px;font-weight:500;line-height:1.15}.case-request-close{width:44px;height:44px;color:var(--navy);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;margin-right:-10px;padding:0;display:grid}.case-request-close:focus-visible{outline:2px solid var(--navy);outline-offset:0;border-radius:var(--site-radius-control)}.case-request-content{overscroll-behavior:contain;min-height:0;padding:0 24px 24px;overflow:auto}#case-request-description{color:var(--graphite);margin:8px 0 22px;font-size:16px;line-height:1.5}.case-request-dialog .form-grid{gap:16px}.case-request-dialog .form-grid label{font-size:14px;line-height:1.4}.case-request-dialog .form-grid label>span{color:var(--graphite);margin-left:4px;font-size:12px;display:inline}.case-request-dialog .form-grid input,.case-request-dialog .form-grid textarea{border-radius:var(--site-radius-control);min-height:44px;font:inherit;margin-top:6px;padding:10px 12px;font-size:16px;line-height:1.4}.case-request-dialog .form-grid textarea{min-height:88px}.case-request-additional{grid-column:1/-1}.case-request-additional>summary{min-height:44px;color:var(--navy);cursor:pointer;align-items:center;gap:8px;font-size:14px;list-style:none;display:flex}.case-request-additional>summary::-webkit-details-marker{display:none}.case-request-additional>summary span{color:var(--graphite);margin-left:auto;font-size:12px}.case-request-additional>summary svg{flex:none}.case-request-additional[open] .case-request-plus{display:none}.case-request-additional>.form-grid{margin-top:12px}.case-request-policy{margin:16px 0 8px;font-size:12px;line-height:1.5}.case-request-policy a{text-underline-offset:3px;align-items:center;min-height:44px;display:inline-flex}.case-request-submit{justify-content:space-between;width:100%;min-height:48px}.case-request-demo{color:var(--graphite);margin:12px 0 0;font-size:12px;line-height:1.5}.case-request-status{margin:14px 0 0;font-size:14px;line-height:1.5}@media (max-width:639px){.case-request-dialog .form-grid{grid-template-columns:1fr;gap:14px}.case-request-header{padding:16px 20px 0}.case-request-header h2{font-size:27px}.case-request-content{padding:0 20px 20px}}@media (prefers-reduced-motion:reduce){.case-request-dialog::backdrop{transition-duration:.12s}}.case-unavailable{margin-top:24px}@media (max-width:999px){.case-viewer-panel{padding:28px}}@media (max-width:760px){.case-viewer.letter-viewer{padding:72px 12px max(12px,env(safe-area-inset-bottom))}.case-viewer-panel{padding:24px 16px}.case-viewer .case-title-row{margin-bottom:24px}.case-viewer-actions{margin-top:28px}.case-viewer-actions .button{justify-content:space-between;width:100%}.case-viewer .case-study-grid{gap:28px}.case-viewer .case-story-section h3{margin-bottom:16px;font-size:26px}}@media (prefers-reduced-motion:reduce){.case-entry:before,.case-card-action:before{transition-duration:.12s}.case-gallery-dot:before{transition:none}}
