/* Exposure effects rebuilt for TTM: dual-face 3D typography and lateral image reveals. */
.title-3d-measure{display:inline-block;white-space:nowrap}
.title-3d{perspective:1000px}
.title-3d-line{display:block;position:relative}
.title-3d-stage{position:relative;display:block;perspective:1000px;perspective-origin:50% 50%;transform-style:preserve-3d;transform:translate3d(var(--title-x,0px),0,0)}
.title-3d-front,.title-3d-back{display:block;-webkit-backface-visibility:hidden;backface-visibility:hidden}
.title-3d-front{position:relative;transform-origin:50% 100%}
.title-3d-back{position:absolute;inset:0;opacity:0;transform-origin:50% 0%;transform:translateY(100%) rotateX(-90deg)}
.title-3d-playing:not(.title-3d-settled) .title-3d-line{animation:ttm-hero-rise 1.25s cubic-bezier(.8,0,.2,1) both;animation-delay:calc(.25s + var(--line-index)*.2s)}
.title-3d-playing:not(.title-3d-settled) .title-3d-front{animation:ttm-hero-front 1.25s cubic-bezier(.8,0,.2,1) both;animation-delay:calc(.31s + var(--line-index)*.2s)}
.title-3d-playing:not(.title-3d-settled) .title-3d-back{animation:ttm-hero-back 1.25s cubic-bezier(.8,0,.2,1) both;animation-delay:calc(.31s + var(--line-index)*.2s)}
.title-3d-settled .title-3d-front{opacity:0;transform:translateY(-100%) rotateX(90deg)}
.title-3d-settled .title-3d-back{opacity:1;transform:none}
@media(max-width:720px){.title-3d-stage{perspective:600px}}
@media(prefers-reduced-motion:reduce){.title-3d-front{opacity:1!important;transform:none!important}.title-3d-back{display:none}.title-3d-line{animation:none!important}.title-3d-stage{transform:none!important}}
.ttm-cursor{display:none!important}
.ttm-fluid-cursor{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:9000;contain:strict}
.ttm-exposure .hero-3d-title{font-size:clamp(2.2rem,7.3vw,8.2rem);line-height:1.04;perspective:1000px}
.hero-3d-line{display:block;position:relative;opacity:1}
.hero-3d-stage{position:relative;display:block;perspective:1000px;perspective-origin:50% 50%;transform-style:preserve-3d;transform:translate3d(var(--hero-x,0px),0,0)}
.hero-3d-front,.hero-3d-back{display:block;-webkit-backface-visibility:hidden;backface-visibility:hidden;will-change:transform,opacity}
.hero-3d-front{position:relative;transform-origin:50% 100%}
.hero-3d-back{position:absolute;inset:0;transform-origin:50% 0%;opacity:0;transform:translateY(100%) rotateX(-90deg)}
.hero-playing .hero-3d-line{animation:ttm-hero-rise 1.25s cubic-bezier(.8,0,.2,1) both;animation-delay:calc(.25s + var(--line-index)*.2s)}
.hero-playing .hero-3d-front{animation:ttm-hero-front 1.25s cubic-bezier(.8,0,.2,1) both;animation-delay:calc(.31s + var(--line-index)*.2s)}
.hero-playing .hero-3d-back{animation:ttm-hero-back 1.25s cubic-bezier(.8,0,.2,1) both;animation-delay:calc(.31s + var(--line-index)*.2s)}
@keyframes ttm-hero-rise{from{opacity:0;transform:translateY(3.25rem)}to{opacity:1;transform:translateY(0)}}
@keyframes ttm-hero-front{from{opacity:1;transform:translateY(0) rotateX(0)}to{opacity:0;transform:translateY(-100%) rotateX(90deg)}}
@keyframes ttm-hero-back{from{opacity:0;transform:translateY(100%) rotateX(-90deg)}to{opacity:1;transform:translateY(0) rotateX(0)}}
.hero-playing .hero-badge,.hero-playing .hero-content>.lead,.hero-playing .hero-content>.button-row{animation:ttm-hero-copy .9s .55s both}
@keyframes ttm-hero-copy{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
.image-reveal{position:relative;overflow:hidden;isolation:isolate}
.image-reveal-slide{display:block;width:100%;height:100%;overflow:hidden;transition:transform 1.35s cubic-bezier(.25,.46,.45,.94);transition-delay:var(--image-delay,0s)}
.image-reveal-slide img{width:100%;height:100%;object-fit:cover;transition:transform 1.65s cubic-bezier(.25,.46,.45,.94)!important;transition-delay:var(--image-delay,0s)!important;clip-path:none!important}
.motion-ready .image-reveal:not(.image-in) .image-reveal-slide{transform:translateX(-100%)}
.motion-ready .image-reveal:not(.image-in) .image-reveal-slide img{transform:translateX(100%) scale(1.3)}
.image-reveal.image-in .image-reveal-slide{transform:translateX(0)}
.image-reveal.image-in .image-reveal-slide img{transform:translateX(0) scale(1)}
.ttm-exposure .network-card .image-reveal-slide{position:absolute;inset:0;z-index:-2}
.ttm-exposure .network-card .image-reveal-slide img{position:static}
.ttm-exposure .media-card .image-reveal-slide{height:auto}.ttm-exposure .media-card .image-reveal-slide img{height:auto}
.image-reveal .media-label,.image-reveal:after{transition:opacity .7s .7s}
.motion-ready .image-reveal:not(.image-in) .media-label,.motion-ready .image-reveal:not(.image-in):after{opacity:0}
.motion-ready .image-reveal:not(.image-in){opacity:1;transform:none}
@media(max-width:720px){.ttm-exposure .hero-3d-title{font-size:clamp(1.8rem,8.5vw,3.8rem);letter-spacing:-.065em}.hero-3d-stage{perspective:600px}.image-reveal-slide{transition-duration:1.2s}.ttm-exposure .hero-content{padding:70px 0 45px}}
@media(prefers-reduced-motion:reduce){.ttm-fluid-cursor{display:none}.hero-3d-back{display:none}.hero-3d-front{opacity:1!important;transform:none!important}.hero-3d-line{animation:none!important}.image-reveal-slide,.image-reveal-slide img{transform:none!important;transition:none!important}.image-reveal .media-label{opacity:1!important}}

/* Real project homepages: show the full first viewport without cropping. */
.ttm-exposure .work-image{aspect-ratio:1250/712;background:#111}.ttm-exposure .work-image img{object-fit:contain}
