/* Shared geometry: content length and media aspect ratios never resize the carousel. */
.showcase{--stage-height:560px;--media-width:90%;--media-height:330px}
.slide-stage{height:var(--stage-height);min-height:0;overflow:hidden;isolation:isolate;touch-action:pan-y}
.showcase-slide{position:absolute;inset:0;width:100%;height:100%;min-height:0;grid-template-columns:44% 56%;grid-template-rows:1fr}
.slide-copy{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:48px 0 48px 54px;min-width:0}
.slide-category{margin:0 0 25px;min-height:20px}
.slide-copy h2{font-size:clamp(36px,3.7vw,55px);line-height:1.3;letter-spacing:-2px;min-height:2.6em}
.slide-copy>p:not(.slide-category){margin:24px 0 0;min-height:3.6em}
.slide-copy>.plain-link{margin-top:24px;gap:32px}
.slide-art,.browser-art{padding:38px 22px 48px 8px;min-width:0;min-height:0}
.slide-art>img,.slide-art>.browser-frame{width:var(--media-width);max-width:none;height:var(--media-height);max-height:none;flex:none;border:10px solid #fff;background:#fff;box-shadow:0 25px 40px #24395920;filter:none;transform:translate(var(--pointer-x,0px),var(--pointer-y,0px)) rotate(-5deg);transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.slide-art>img{object-fit:contain;aspect-ratio:auto}
.browser-frame{display:flex;flex-direction:column;overflow:hidden}
.browser-frame>span{flex:none;height:25px;padding:3px 6px;font-size:9px}
.browser-frame img{flex:1;min-height:0;width:100%;height:calc(100% - 25px);max-height:none;aspect-ratio:auto;object-fit:cover;object-position:top}
.visual-caption{right:35px;bottom:27px;letter-spacing:1.5px}
.visual-ring{width:390px;height:390px;border-color:#a2b4bf}
.slide-system .visual-ring{border-color:#a2b4bf}
.slide-progress{height:3px;background:#e9edf3;overflow:hidden}
.slide-progress>span{display:block;width:100%;height:100%;background:#205ec8;transform-origin:left;transform:scaleX(0)}
.slide-controls{gap:12px}.slide-controls .slide-play{font-size:11px;border-left:1px solid #d6dce5;margin-left:6px}
.slide-controls button{border-radius:50%;transition:background .2s,transform .2s}.slide-controls button:hover{transform:translateY(-2px)}
.slide-dots button[aria-current=true]{color:#205ec8}.slide-dots button[aria-current=true]:after{bottom:7px}
/* One grid, image frame and interaction language throughout the project area. */
.secondary-projects{align-items:start}.small-visual{height:300px;min-height:0;padding:28px;background:#e9eff8;display:flex;align-items:center}
.small-visual img{height:100%;width:100%;object-fit:contain;transform:translate(var(--pointer-x,0px),var(--pointer-y,0px));transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.oworld-visual img{object-fit:cover;object-position:top}.small-visual:hover img{transform:translate(var(--pointer-x,0px),var(--pointer-y,0px)) scale(1.035)}
.feature-visual>img{transform:translate(var(--pointer-x,0px),var(--pointer-y,0px));transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.feature-visual:hover>img{transform:translate(var(--pointer-x,0px),calc(var(--pointer-y,0px) - 8px)) scale(1.02)}
.project-open{width:44px;height:44px;display:grid;place-items:center;top:15px;right:15px;border-radius:50%;background:#ffffffcf;color:#151617;transition:background .25s,color .25s,transform .35s}
a:hover>.project-open,a:focus-visible>.project-open{background:#205ec8;color:#fff;transform:rotate(45deg)}
.service-graphic{height:216px;background:#edf2fa}.graphic-system{background:#e8f0ed}.graphic-operate{background:#eceaf6}.graphic-operate span{color:#6b64a5}
.service-editorial article{transition:transform .35s}.service-editorial article:hover{transform:translateY(-6px)}
.graphic-app span,.graphic-system span,.graphic-operate span{transition:transform .65s cubic-bezier(.2,.7,.2,1)}
.service-editorial article:hover .graphic-app span:first-child{transform:rotate(-18deg) translateY(-6px)}
.service-editorial article:hover .graphic-app span+span{transform:rotate(13deg) translateY(5px)}
.service-editorial article:hover .graphic-system span{transform:rotate(0deg) translateX(-5px)}
.service-editorial article:hover .graphic-system span+span{transform:rotate(0deg) translateX(5px)}
.service-editorial article:hover .graphic-operate span{transform:rotate(0) translate(6px,-6px)}
.plain-link>span,.contact-project-link>span{transition:transform .3s}.plain-link:hover>span,.contact-project-link:hover>span{transform:translate(4px,-4px)}
.site-nav a{position:relative}.site-nav a:after{content:'';position:absolute;bottom:5px;left:0;width:100%;height:1px;background:#205ec8;transform:scaleX(0);transform-origin:left;transition:transform .25s}.site-nav a:hover:after,.site-nav a:focus-visible:after{transform:scaleX(1)}
.js.motion .reveal{transform:translateY(42px);transition:opacity .85s ease var(--reveal-delay,0ms),transform .85s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms)}
.js.motion .reveal.is-visible{transform:none}
.js.motion .highlight{background-size:0% 100%;background-repeat:no-repeat;transition:background-size 1.1s cubic-bezier(.2,.7,.2,1) .25s}
.js.motion .is-visible .highlight{background-size:100% 100%}
.js.motion .is-visible .vr-orbit{animation:orbit-arrival 1.2s cubic-bezier(.2,.7,.2,1) both}
.js.motion .identity-statement.is-visible>span:last-of-type{animation:type-arrival 1.1s cubic-bezier(.2,.7,.2,1) both}
@keyframes orbit-arrival{from{transform:rotate(-28deg) scale(.88)}to{transform:rotate(-12deg) scale(1)}}
@keyframes type-arrival{from{opacity:0;transform:translateX(65px)}to{opacity:1;transform:translateX(0)}}
@media(max-width:1100px){.showcase{--stage-height:480px;--media-height:270px}.slide-copy{padding:35px 0 35px 34px}.slide-copy h2{font-size:36px;letter-spacing:-1.6px}.visual-ring{width:310px;height:310px}.small-visual{height:250px;padding:23px}}
@media(max-width:800px){.showcase{--stage-height:440px;--media-height:215px;--media-width:92%}.slide-copy{padding:28px 0 28px 25px}.slide-copy h2{font-size:30px;letter-spacing:-1.3px}.slide-category{font-size:9px;margin-bottom:21px}.slide-copy>p:not(.slide-category){font-size:12px}.slide-art,.browser-art{padding:25px 12px 40px 5px}.slide-art>img,.slide-art>.browser-frame{border-width:7px}.visual-ring{width:235px;height:235px}.small-visual{height:215px;padding:19px}.service-graphic{height:160px}}
@media(max-width:540px){.showcase{--stage-height:610px;--media-height:220px;--media-width:94%}.showcase-slide{grid-template-columns:1fr;grid-template-rows:315px 295px}.slide-copy{padding:29px 25px 0;justify-content:flex-start}.slide-copy h2{font-size:clamp(26px,7.2vw,38px);min-height:2.6em;letter-spacing:-1px}.slide-category{margin-bottom:18px}.slide-copy>p:not(.slide-category){margin-top:18px;min-height:3.6em}.slide-copy>.plain-link{margin-top:15px}.slide-art,.browser-art{padding:8px 22px 36px}.slide-art>img,.slide-art>.browser-frame{max-width:370px;height:var(--media-height)}.visual-ring{width:250px;height:250px}.visual-caption{bottom:17px;right:24px;font-size:7px}.browser-frame>span{font-size:8px}.browser-frame i{font-size:6px}.browser-frame img{height:calc(100% - 25px);max-height:none}.showcase-bottom{padding-block:11px}.slide-controls{gap:5px}.small-visual{height:260px;padding:25px}.small-visual img,.campus-visual img{height:100%}.service-graphic{height:205px}}
@media(max-width:360px){.showcase{--stage-height:585px;--media-height:185px}.showcase-slide{grid-template-rows:315px 270px}.slide-copy{padding-inline:22px}.slide-art,.browser-art{padding-inline:15px}.small-visual{height:230px;padding:20px}}
@media(prefers-reduced-motion:reduce){.js.motion .reveal{opacity:1;transform:none}.js.motion .highlight{background-size:100% 100%}.slide-progress{display:none}.slide-art>img,.slide-art>.browser-frame,.small-visual img,.feature-visual>img{transform:none!important}.service-editorial article:hover{transform:none}.reveal,.highlight,.project-open,.service-graphic span{animation:none!important;transition:none!important}}
