/* Dynamic collections reuse the approved section shell and card vocabulary. */
.ots-dynamic-grid__intro{max-width:660px;margin-bottom:48px;font-size:17px}
.ots-dynamic-grid__filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 45px}
.ots-dynamic-grid__filters button{min-height:0;margin:0;border:1px solid currentColor;border-radius:100px;padding:9px 16px;background:none;box-shadow:none;color:inherit;font-family:inherit;font-size:12px;font-weight:400;line-height:1.2;letter-spacing:0;text-transform:none;cursor:pointer}
.ots-dynamic-grid__filters button:is([aria-pressed="true"],:hover,:focus-visible){background:var(--ots-ink);color:#fff}
.ots-dynamic-grid--post .ots-dynamic-grid__filters button:not([aria-pressed="true"]):is(:hover,:focus-visible){border-color:var(--ots-yellow);background:var(--ots-yellow);color:var(--ots-ink)}
.ots-dynamic-grid__empty{padding:35px 0;border-top:1px solid #bdb8ad;color:#5d5852}
.ots-dynamic-grid__media-empty{display:block;width:100%;height:100%;min-height:250px;background:#e6e1d6}
.ots-project-grid .ots-dynamic-grid__media-empty{height:clamp(280px,37vw,560px)}
.ots-project-grid h3{display:block;font-size:clamp(24px,3vw,43px);letter-spacing:-.015em;font-weight:500;line-height:1.1;margin:14px 0 4px}
.ots-project-grid .ots-dynamic-grid__caption{max-width:380px;margin:12px 0 0;font-size:14px;line-height:1.4}
.ots-dynamic-grid__product-card .ots-dynamic-grid__card-caption{position:absolute;z-index:1;bottom:22px;left:24px;right:24px;color:#fff}
.ots-dynamic-grid__product-card .ots-dynamic-grid__card-caption small{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.ots-dynamic-grid__product-card .ots-dynamic-grid__card-caption h3{color:inherit;margin:5px 0 0;font-size:clamp(24px,2.8vw,37px);line-height:1.1}
.ots-dynamic-grid__product-card .ots-dynamic-grid__media-empty{position:absolute;inset:0}
.ots-dynamic-grid__product-card--no-image .ots-dynamic-grid__card-caption{color:var(--ots-ink)}
.ots-dynamic-grid__product-card--no-image:after{content:none}
/* XD02 team (About): 443px cards on a rail that bleeds off the right edge, alternating 443x550 / 443x443 portraits,
   28/37 names, 20/28 grey roles, bio on a yellow panel revealed on hover/focus (plain text on touch screens). */
.ots-dynamic-grid--ots_team .ots-heading-row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:clamp(36px,4.5vw,86px)}
.ots-dynamic-grid--ots_team h2{margin:0;font-size:clamp(48px,7.4vw,142px);line-height:1.042;letter-spacing:0;color:var(--ots-ink)}
.ots-dynamic-grid--ots_team .ots-dynamic-grid__intro{max-width:588px;margin:clamp(20px,1.7vw,32px) 0 0;font-size:clamp(16px,1.15vw,22px);line-height:1.45;letter-spacing:-.015em}
.ots-dynamic-grid--ots_team .ots-carousel-controls button{width:clamp(40px,2.8vw,53px);height:clamp(40px,2.8vw,53px);font-size:clamp(16px,1.15vw,22px)}
/* Phones: intro gets the full width; arrows sit under it on the left. */
@media(max-width:767px){.ots-dynamic-grid--ots_team .ots-heading-row{flex-direction:column;align-items:flex-start;gap:24px;margin-bottom:28px}.ots-dynamic-grid--ots_team .ots-carousel-controls{margin-top:0}}
.ots-dynamic-grid__team-grid{display:flex;align-items:flex-start;gap:clamp(10px,.85vw,16px);margin-right:calc(-1 * var(--ots-gutter));overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.ots-dynamic-grid__team-grid::-webkit-scrollbar{display:none}
.ots-dynamic-grid--ots_team .ots-person{flex:0 0 clamp(260px,23.07vw,443px);scroll-snap-align:start;outline-offset:-3px}
.ots-dynamic-grid__team-grid .ots-person__portrait{height:auto;background:#dfd4c7}
.ots-dynamic-grid__team-grid .ots-person__portrait :is(img,.ots-dynamic-grid__media-empty){display:block;width:100%;height:auto;aspect-ratio:443/550;object-fit:cover;position:relative;z-index:1}
.ots-dynamic-grid__team-grid .ots-person:nth-child(even) .ots-person__portrait :is(img,.ots-dynamic-grid__media-empty){aspect-ratio:1}
.ots-dynamic-grid--ots_team .ots-person h3{margin:clamp(10px,.94vw,18px) 0 0;font-size:clamp(20px,1.46vw,28px);line-height:1.32;font-weight:400;letter-spacing:0;color:#191616}
.ots-dynamic-grid--ots_team .ots-person__role{margin:0;font-size:clamp(15px,1.04vw,20px);line-height:1.4;color:#989898}
.ots-dynamic-grid--ots_team .ots-dynamic-grid__bio{position:absolute;left:0;right:0;bottom:0;z-index:2;margin:0;padding:clamp(22px,2.34vw,45px) clamp(22px,3.23vw,62px) clamp(28px,3.1vw,60px);background:var(--ots-yellow);color:var(--ots-ink);font-size:clamp(15px,1.15vw,22px);line-height:1.45;letter-spacing:-.015em;opacity:0;transform:translateY(16px);transition:opacity .35s ease,transform .45s cubic-bezier(.2,.7,.2,1)}
.ots-dynamic-grid--ots_team .ots-person:is(:hover,:focus-visible) .ots-dynamic-grid__bio{opacity:1;transform:none}
@media(hover:none){.ots-dynamic-grid--ots_team .ots-person{display:flex;flex-direction:column}.ots-dynamic-grid--ots_team .ots-person__portrait{display:contents}.ots-dynamic-grid--ots_team .ots-dynamic-grid__bio{order:3;position:static;padding:10px 0 0;background:none;opacity:1;transform:none;font-size:15px;color:#5d5852}}
@media(prefers-reduced-motion:reduce){.ots-dynamic-grid--ots_team .ots-dynamic-grid__bio{transform:none;transition:opacity .2s}}
.ots-dynamic-grid__team-grid .ots-person__portrait:before,.ots-dynamic-grid__team-grid .ots-person__portrait:after{content:none}
.ots-dynamic-grid__bio{font-size:13px;line-height:1.45}
.ots-dynamic-grid__pagination{display:flex;align-items:center;justify-content:center;gap:25px;margin-top:70px;font-size:13px}
.ots-dynamic-grid__pagination a{border-bottom:1px solid currentColor;padding-bottom:3px}
.ots-dynamic-grid__pagination a:hover{color:var(--ots-burgundy)}
.ots-insight-grid .ots-dynamic-grid__media-empty{height:clamp(240px,26vw,390px)}
@media(max-width:520px){.ots-dynamic-grid__pagination{gap:14px;margin-top:45px}}
