/* =====================================================
   TEAM PAGE  (extends style.css + inner.css)
   Responsive from 300px to 1440px+
===================================================== */

.visually-hidden { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0 }
.pg-team [hidden] { display: none !important }

/* ---------- people pictures (photo or initials) ---------- */
.tm-pic { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; transition: transform .9s var(--ease) }
.tm-ini { position: relative; display: grid; place-items: center; overflow: hidden; color: #fff; font-family: Manrope, sans-serif; background: linear-gradient(135deg, #2527c9, #6c66f0) }
.tm-ini[data-tone="1"] { background: linear-gradient(135deg, #3c2896, #7a44dc) }
.tm-ini[data-tone="2"] { background: linear-gradient(135deg, #2b3990, #5b6cf0) }
.tm-ini[data-tone="3"] { background: linear-gradient(135deg, #140e37, #4332a8) }
.tm-ini[data-tone="4"] { background: linear-gradient(135deg, #4a43a8, #a9a6f5) }
.tm-ini::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(255, 255, 255, .13) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .13) 1px, transparent 1px); background-size: 22px 22px; animation: gridDrift90 30s linear infinite; -webkit-mask-image: radial-gradient(circle at 50% 50%, #000, transparent 75%); mask-image: radial-gradient(circle at 50% 50%, #000, transparent 75%) }
.tm-ini b { position: relative; font-weight: 700; letter-spacing: .02em; font-size: var(--ini, 1.4rem) }

/* ---------- hero: orbiting team ---------- */
.torbit { position: relative; width: min(100%, 470px); aspect-ratio: 1; margin: 0 auto; container-type: inline-size }
.torbit .ring { position: absolute; inset: 9%; border: 1.5px dashed rgba(37, 39, 201, .3); border-radius: 50%; animation: spin 80s linear infinite }
.torbit .ring2 { position: absolute; inset: 28%; border: 1px solid rgba(37, 39, 201, .16); border-radius: 50% }
.torbit .core { position: absolute; left: 50%; top: 50%; width: 31%; aspect-ratio: 1; margin: -15.5% 0 0 -15.5%; border-radius: 50%; display: grid; place-items: center; padding: 0 .3rem; text-align: center; color: #fff; font: 700 clamp(.66rem, 4.4cqw, 1.02rem)/1.2 Manrope, sans-serif; background: radial-gradient(circle at 30% 25%, #6c66f0, #2527c9 70%); box-shadow: 0 20px 40px -12px rgba(37, 39, 201, .55) }
.torbit .core::before, .torbit .core::after { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 1.5px solid rgba(37, 39, 201, .45); animation: corePulse 3.2s ease-out infinite }
.torbit .core::after { animation-delay: 1.6s }
.torbit .tn { position: absolute; left: 50%; top: 50%; width: 0; height: 0; transform: rotate(var(--a)) translateX(41cqw) }
.torbit .cnt { position: absolute; left: 0; top: 0; width: 0; height: 0; animation: spin 80s linear infinite reverse }
.torbit .av { --s: clamp(40px, 16cqw, 76px); --ini: clamp(.8rem, 5.4cqw, 1.45rem); position: absolute; left: 0; top: 0; width: var(--s); height: var(--s); transform: translate(-50%, -50%) rotate(calc(-1 * var(--a))); border-radius: 50%; background: #fff; border: 3px solid #fff; box-shadow: 0 14px 28px -12px rgba(37, 39, 201, .6), 0 0 0 1px rgba(37, 39, 201, .18) }
.torbit .av .tm-pic { border-radius: 50% }
.torbit .av em { position: absolute; left: 50%; top: 100%; transform: translate(-50%, 8px); padding: .3rem .65rem; border-radius: 8px; background: #140e37; color: #fff; font: 600 .72rem Manrope, sans-serif; font-style: normal; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; z-index: 5 }
.torbit .av:hover em { opacity: 1; transform: translate(-50%, 4px) }
.torbit .av { animation: tmBob 5s ease-in-out infinite; animation-delay: calc(var(--a) * .01s) }
@keyframes tmBob { 50% { margin-top: -6px } }
.torbit:hover .ring, .torbit:hover .cnt { animation-play-state: paused }
.tm-hero-btn { margin-top: .6rem }
.tm-hero-btn .arr { transition: transform .3s var(--ease) }
.tm-hero-btn:hover .arr { transform: translateY(3px) }

/* ---------- numbers ---------- */
.tm-stats-wrap { position: relative; z-index: 2; margin-top: -2.6rem }
.tm-stats { display: flex; flex-wrap: wrap; border: 1px solid var(--card-line); border-radius: 22px; overflow: hidden; background: #fff; box-shadow: 0 30px 60px -36px rgba(37, 39, 201, .5) }
.tm-stat { flex: 1 1 200px; min-width: 0; padding: 1.6rem 1.2rem; text-align: center; box-shadow: inset -1px 0 var(--line), inset 0 -1px var(--line) }
.tm-num { font: 700 clamp(2rem, 6vw, 3.1rem)/1 Manrope, sans-serif; color: var(--indigo); letter-spacing: -.02em }
.tm-lbl { margin-top: .6rem; font: 500 .72rem 'IBM Plex Mono', monospace; letter-spacing: .1em; text-transform: uppercase; color: var(--grey) }

/* ---------- shared bits ---------- */
.pg-team .ihead .flabel { display: inline-flex; align-items: center; gap: .6rem; color: var(--indigo) }
.pg-team .ihead .flabel::before { content: ""; width: 26px; height: 2px; background: linear-gradient(90deg, var(--indigo), #8b8df0); border-radius: 2px }
.tm-dept { align-self: flex-start; display: inline-block; padding: .28rem .7rem; border-radius: 999px; background: var(--lav); border: .5px solid rgba(37, 39, 201, .25); color: var(--indigo); font: 500 .66rem 'IBM Plex Mono', monospace; letter-spacing: .08em; text-transform: uppercase; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.tm-role { margin: 0; color: var(--grey); font-size: .95rem; line-height: 1.4 }
.tm-more { margin-top: auto; padding-top: .9rem; color: var(--indigo); font: 500 .72rem 'IBM Plex Mono', monospace; letter-spacing: .08em; text-transform: uppercase }
.tm-more i { display: inline-block; font-style: normal; transition: transform .3s var(--ease) }
.tm-open { position: absolute; inset: 0; z-index: 3; width: 100%; height: 100%; border: 0; background: none; padding: 0; cursor: pointer; border-radius: inherit }
.tm-open:focus-visible { outline: 3px solid #9c99e9; outline-offset: -3px }
.tm-glow { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, transparent 58%, rgba(20, 14, 55, .28)) }

/* card shell (leaders + directory) */
.tm-lead, .tm-card { position: relative; display: flex; flex-direction: column; min-width: 0; background: #fff; border: 1px solid var(--card-line); overflow: hidden; isolation: isolate; transition: transform .45s var(--ease), box-shadow .35s ease, border-color .35s ease }
.tm-lead::before, .tm-card::before { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: 0; transition: opacity .3s; background: radial-gradient(320px circle at var(--mx, 50%) var(--my, 50%), rgba(37, 39, 201, .12), transparent 60%) }
.tm-lead:hover, .tm-card:hover { transform: translateY(-6px); border-color: rgba(37, 39, 201, .45); box-shadow: 0 28px 44px -28px rgba(37, 39, 201, .45) }
.tm-lead:hover::before, .tm-card:hover::before { opacity: 1 }
.tm-lead:hover .tm-pic, .tm-card:hover .tm-pic { transform: scale(1.07) }
.tm-lead:hover .tm-more i, .tm-card:hover .tm-more i { transform: translateX(5px) }
.tm-lead.reveal, .tm-card.reveal { opacity: 0; transform: none; transition: transform .45s var(--ease), box-shadow .35s ease, border-color .35s ease }
.tm-lead.reveal.in, .tm-card.reveal.in { opacity: 1; animation: tmUp .85s var(--ease) var(--rd, 0s) backwards }
.tm-lead.reveal.in:hover, .tm-card.reveal.in:hover { transform: translateY(-6px) }
@keyframes tmUp { from { opacity: 0; transform: translateY(36px) scale(.97) } }

/* ---------- leadership ---------- */
.tm-lead-grid { display: grid; gap: 1.4rem; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)) }
.tm-lead-grid.tm-count-1 { max-width: 420px }
.tm-lead-grid.tm-count-2 { max-width: 900px }
.tm-lead { border-radius: 24px }
.tm-lead-photo { --ini: 7.5rem; position: relative; aspect-ratio: 1 / 1.05; overflow: hidden; background: var(--lav); container-type: inline-size }
.tm-lead-photo .tm-ini { --ini: 34cqw }
.tm-lead-photo .tm-pic { position: absolute; inset: 0 }
.tm-lead-body { display: flex; flex-direction: column; gap: .5rem; flex: 1; padding: 1.3rem 1.4rem 1.4rem }
.tm-lead-body h3 { font-size: 1.4rem; line-height: 1.2; margin-top: .3rem }
.tm-snip { margin: .35rem 0 0; color: var(--grey); font-size: .95rem; line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden }

/* ---------- directory ---------- */
.tm-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.8rem }
.tm-filters { position: relative; display: flex; gap: .2rem; padding: .35rem; min-width: 0; max-width: 100%; background: #fff; border: 1px solid var(--card-line); border-radius: 999px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch }
.tm-filters::-webkit-scrollbar { display: none }
.tm-filters button { position: relative; z-index: 1; flex: none; display: inline-flex; align-items: center; gap: .45rem; border: 0; background: none; padding: .55rem 1.05rem; border-radius: 999px; font: 600 .88rem Manrope, sans-serif; color: var(--ink); cursor: pointer; white-space: nowrap; transition: color .3s }
.tm-filters button small { font: 500 .68rem 'IBM Plex Mono', monospace; min-width: 1.5rem; padding: .1rem .4rem; border-radius: 999px; background: var(--lav); color: var(--indigo); text-align: center; transition: background .3s, color .3s }
.tm-filters button:hover:not(.on) { color: var(--indigo) }
.tm-filters button.on { color: #fff }
.tm-filters button.on small { background: rgba(255, 255, 255, .22); color: #fff }
.tm-filters button:focus-visible { outline: 2px solid #9c99e9; outline-offset: 1px }
.tm-ink { position: absolute; left: 0; top: 0; width: 0; height: 0; border-radius: 999px; background: var(--indigo); box-shadow: 0 10px 20px -8px rgba(37, 39, 201, .6); transition: transform .5s var(--ease), width .5s var(--ease), height .3s; pointer-events: none }
.tm-search { position: relative; flex: 0 1 320px; min-width: 0; margin: 0 0 0 auto }
.tm-search svg { position: absolute; left: 1rem; top: 50%; width: 18px; height: 18px; margin-top: -9px; color: var(--grey); pointer-events: none }
.tm-search input { width: 100%; padding: .72rem 1rem .72rem 2.7rem; border: 1px solid var(--card-line); border-radius: 999px; background: #fff; font: 500 .92rem Inter, sans-serif; color: var(--ink); transition: border-color .25s, box-shadow .25s }
.tm-search input:focus { outline: 0; border-color: var(--indigo); box-shadow: 0 0 0 4px rgba(37, 39, 201, .12) }

.tm-grid { display: grid; gap: 1.2rem; grid-template-columns: repeat(auto-fill, minmax(min(230px, 100%), 1fr)) }
.tm-card { border-radius: 20px }
.tm-photo { position: relative; aspect-ratio: 1; overflow: hidden; background: var(--lav); container-type: inline-size }
.tm-photo .tm-ini { --ini: 34cqw }
.tm-photo .tm-pic { position: absolute; inset: 0 }
.tm-body { display: flex; flex-direction: column; gap: .35rem; flex: 1; padding: 1rem 1.1rem 1.15rem }
.tm-body h3 { font-size: 1.12rem; line-height: 1.25; margin-top: .25rem; overflow-wrap: anywhere }
.tm-body .tm-role { font-size: .9rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden }
.tm-body .tm-more { padding-top: .6rem }
@media (hover: hover) {
  .tm-card .tm-more { opacity: 0; transform: translateY(6px); transition: opacity .3s, transform .35s var(--ease) }
  .tm-card:hover .tm-more, .tm-card:focus-within .tm-more { opacity: 1; transform: none }
}
.tm-none { text-align: center; padding: 2.4rem 1rem; color: var(--grey); font-size: 1.05rem }
.tm-empty { text-align: center; padding: 3rem 1rem; color: var(--grey) }

/* ---------- how we work ---------- */
.tm-vals .svc-card { padding: 1.6rem }
.tm-vals .svc-card p { margin-bottom: 0 }

/* ---------- profile pop-up ---------- */
html.tm-lock { overflow: hidden }
dialog.tm-modal { width: min(900px, calc(100vw - 24px)); max-width: none; max-height: calc(100dvh - 24px); margin: auto; padding: 0; border: 0; border-radius: 26px; background: #fff; color: var(--ink); box-shadow: 0 50px 100px -30px rgba(20, 14, 55, .65); overflow: visible }
dialog.tm-modal::backdrop { background: rgba(20, 14, 55, .58); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px) }
dialog.tm-modal[open] { animation: tmModal .5s var(--ease) }
dialog.tm-modal[open]::backdrop { animation: tmFade .4s ease }
@keyframes tmModal { from { opacity: 0; transform: translateY(30px) scale(.96) } }
@keyframes tmFade { from { opacity: 0 } }
.tm-modal-card { max-height: calc(100dvh - 24px); overflow-y: auto; overscroll-behavior: contain; border-radius: 26px }
.tm-close { position: absolute; right: .8rem; top: .8rem; z-index: 6; width: 42px; height: 42px; border-radius: 50%; border: 1px solid rgba(37, 39, 201, .2); background: rgba(255, 255, 255, .92); color: var(--ink); font-size: 1.6rem; line-height: 1; display: grid; place-items: center; cursor: pointer; box-shadow: 0 10px 20px -10px rgba(20, 14, 55, .5); transition: transform .3s var(--ease), background .2s, color .2s }
.tm-close:hover { background: var(--indigo); color: #fff; transform: rotate(90deg) }
.tm-close:focus-visible { outline: 3px solid #9c99e9; outline-offset: 2px }
.tm-modal-body { display: grid; grid-template-columns: minmax(0, 320px) minmax(0, 1fr) }
.tm-d-photo { --ini: 7rem; position: relative; background: var(--lav); min-height: 100%; container-type: inline-size }
.tm-d-photo .tm-pic { position: absolute; inset: 0 }
.tm-d-photo .tm-ini { --ini: 30cqw }
.tm-d-info { display: flex; flex-direction: column; gap: .5rem; padding: 2.2rem 2.2rem 2rem; min-width: 0 }
.tm-d-name { font-size: clamp(1.5rem, 4vw, 2rem); line-height: 1.15; margin-top: .4rem; padding-right: 2.4rem; overflow-wrap: anywhere }
.tm-d-role { margin: 0; color: var(--indigo); font: 600 1.05rem Manrope, sans-serif }
.tm-d-bio { margin-top: .8rem; color: #3f4152; font-size: 1rem; line-height: 1.65 }
.tm-d-bio p { margin: 0 0 .8rem }
.tm-tags { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .6rem }
.tm-tag { padding: .4rem .8rem; border-radius: 999px; border: 1px solid var(--card-line); background: #fff; font-size: .82rem; animation: chipIn .6s var(--ease) backwards; transition: background .25s, border-color .25s, color .25s, transform .3s var(--ease) }
.tm-tag:hover { background: rgba(37, 39, 201, .08); border-color: var(--indigo); color: var(--indigo); transform: translateY(-2px) }
.tm-tag:nth-child(2) { animation-delay: .06s } .tm-tag:nth-child(3) { animation-delay: .12s } .tm-tag:nth-child(4) { animation-delay: .18s } .tm-tag:nth-child(5) { animation-delay: .24s } .tm-tag:nth-child(n+6) { animation-delay: .3s }
.tm-social { display: flex; gap: .55rem; margin-top: 1.1rem }
.tm-social a { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--card-line); color: var(--ink); transition: background .25s, color .25s, border-color .25s, transform .3s var(--ease) }
.tm-social a svg { width: 18px; height: 18px }
.tm-social a:hover { background: var(--indigo); border-color: var(--indigo); color: #fff; transform: translateY(-3px) }

/* ===================== RESPONSIVE ===================== */
@media (max-width: 991px) {
  .tm-stats-wrap { margin-top: -2rem }
  .tm-lead-grid.tm-count-1 { max-width: 460px }
}
@media (max-width: 767px) {
  .tm-modal-body { grid-template-columns: 1fr }
  .tm-d-photo { aspect-ratio: 16 / 10; min-height: 0 }
  .tm-d-photo .tm-pic { object-position: 50% 18% }
  .tm-d-photo .tm-ini { --ini: 16cqw }
  .tm-d-info { padding: 1.5rem 1.4rem 1.6rem }
  .tm-d-name { padding-right: 0 }
  .tm-search { flex-basis: 100%; max-width: none; margin-left: 0 }
}
@media (max-width: 575px) {
  .tm-stats-wrap { margin-top: -1.6rem }
  .tm-stat { flex-basis: 100%; padding: 1.2rem 1rem }
  .tm-bar { gap: .8rem; margin-bottom: 1.3rem }
  .tm-filters button { padding: .5rem .85rem; font-size: .82rem }
  .tm-grid { gap: .9rem }
  .tm-lead-grid { gap: 1.1rem }
  .tm-lead-body { padding: 1.1rem 1.1rem 1.2rem }
  .tm-lead-body h3 { font-size: 1.25rem }
  dialog.tm-modal { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); border-radius: 20px }
  .tm-modal-card { max-height: calc(100dvh - 16px); border-radius: 20px }
  .tm-close { right: .55rem; top: .55rem; width: 38px; height: 38px }
  .torbit .av em { display: none }
  .tm-hero-btn { padding: .85rem 1.6rem }
}
@media (max-width: 400px) {
  .tm-grid { grid-template-columns: 1fr }
  .tm-photo { aspect-ratio: 1 / .85 }
}
@media (max-width: 360px) {
  .tm-body { padding: .9rem .95rem 1rem }
  .tm-d-info { padding: 1.2rem 1rem 1.3rem }
  .tm-lbl { letter-spacing: .06em }
}
@media (prefers-reduced-motion: reduce) {
  .torbit .ring, .torbit .cnt, .torbit .av, .torbit .core::before, .torbit .core::after, .tm-ini::before { animation: none }
  .tm-lead.reveal, .tm-card.reveal { opacity: 1 }
  .tm-lead.reveal.in, .tm-card.reveal.in, dialog.tm-modal[open], .tm-tag { animation: none }
  .tm-ink { transition: none }
}

/* advisory board: photo + name only (same cards as leadership) */
.tm-adv { cursor: default }
.tm-adv-grid { margin-top: .2rem }
.tm-adv .tm-lead-body { flex: none; padding: 1.1rem 1.4rem 1.3rem }
.tm-adv .tm-lead-body h3 { margin: 0 }
/* hero circle with many photos: smaller photos so they do not touch */
.torbit.many .av { --s: clamp(32px, 11.5cqw, 56px); border-width: 2px }
