/* TTC Project Showcase v1.2.5 — scoped reveal + related slider.
   Never transform the showcase, its panel, the two-column wrapper, or sticky nav. */

/* Related projects: actual horizontal track, no duplicated cards. */
.ttcp-related__header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:23px}
.ttcp-related__header h2{margin:0}
.ttcp-related__controls{display:flex;align-items:center;gap:9px;flex:none}
.ttcp-related__arrow{appearance:none!important;display:grid;place-items:center;width:43px;height:43px;min-width:43px;padding:0!important;margin:0!important;border:1px solid #dce5ec!important;border-radius:50%!important;background:#fff!important;color:var(--ttcp-ink)!important;box-shadow:none!important;line-height:1!important;font-size:19px!important;cursor:pointer;transition:background .2s ease,border-color .2s ease,opacity .2s ease}
.ttcp-related__arrow:hover:not(:disabled),.ttcp-related__arrow:focus-visible{background:var(--ttcp-primary)!important;border-color:var(--ttcp-primary)!important}
.ttcp-related__arrow:disabled{opacity:.33;cursor:not-allowed}
.ttcp-related__controls[hidden]{display:none!important}
.ttcp-related__track{--ttcp-slide-gap:18px;display:flex;gap:var(--ttcp-slide-gap);overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;scroll-padding-inline:1px;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:3px 2px 20px;margin:-3px -2px -13px;min-width:0}
.ttcp-related__track::-webkit-scrollbar{display:none}
.ttcp-related__track:focus-visible{outline:2px solid var(--ttcp-primary);outline-offset:3px;border-radius:6px}
.ttcp-related__track>.ttcp-card{flex:0 0 calc((100% - 2 * var(--ttcp-slide-gap)) / 3);scroll-snap-align:start;scroll-snap-stop:normal;min-width:0}
.ttcp-related__track .ttcp-card__title{font-size:clamp(15px,1.25vw,18px)}
@media(max-width:849px){.ttcp-related__track{--ttcp-slide-gap:15px}.ttcp-related__track>.ttcp-card{flex-basis:calc((100% - var(--ttcp-slide-gap)) / 2)}}
@media(max-width:599px){.ttcp-related__header{gap:10px}.ttcp-related__header h2{font-size:22px}.ttcp-related__track>.ttcp-card{flex-basis:100%}.ttcp-related__arrow{width:38px;min-width:38px;height:38px}}

/* Progressive enhancement: hidden states exist only after JS opts in and IO is supported. */
.ttcp-reveal-ready [data-ttcp-reveal="waiting"]{opacity:0;transform:translate3d(0,20px,0);transition:opacity .55s ease,transform .55s cubic-bezier(.2,.7,.2,1);transition-delay:var(--ttcp-reveal-delay,0ms)}
.ttcp-reveal-ready [data-ttcp-reveal="visible"]{opacity:1;transform:none;transition:opacity .55s ease,transform .55s cubic-bezier(.2,.7,.2,1);transition-delay:var(--ttcp-reveal-delay,0ms)}
/* Avoid hiding nested content in an editor and keep transform off ALL sticky ancestors. */
@media(max-width:599px){.ttcp-reveal-ready [data-ttcp-reveal="waiting"]{transform:translate3d(0,9px,0)}.ttcp-reveal-ready [data-ttcp-reveal="waiting"],.ttcp-reveal-ready [data-ttcp-reveal="visible"]{transition-duration:.38s;transition-delay:0ms}}
@media(prefers-reduced-motion:reduce){.ttcp-reveal-ready [data-ttcp-reveal]{opacity:1!important;transform:none!important;transition:none!important}.ttcp-related__track{scroll-snap-type:none!important}.ttcp-related__arrow{transition:none!important}}
/* Preserve the original card hover lift after its reveal completes. */
.ttcp-reveal-ready .ttcp-card[data-ttcp-reveal="visible"]:hover{transform:translateY(-3px)}
.ttcp-card__image{transition:transform .45s ease}
.ttcp-card:hover .ttcp-card__image{transform:scale(1.035)}
@media(max-width:599px){.ttcp-related__track>.ttcp-card{flex-basis:calc(100% - 4px)}}
@media(prefers-reduced-motion:reduce){.ttcp-card__image{transition:none!important}.ttcp-card:hover .ttcp-card__image,.ttcp-reveal-ready .ttcp-card[data-ttcp-reveal="visible"]:hover{transform:none!important}}
