.tm-band{
  --tm-bg:#EDE8DC;
  --tm-text:#1A1A1A;
  --tm-eyebrow:#8A8578;
  --tm-gap:72px;
  --tm-size:19px;
  --tm-pad:44px;
  --tm-speed:40s;
  --tm-font:inherit;

  background:var(--tm-bg);
  font-family:var(--tm-font);
  padding:var(--tm-pad) 0;
  overflow:hidden;
  width:100%;
  box-sizing:border-box;
}
.tm-band *,.tm-band *::before,.tm-band *::after{box-sizing:border-box}

.tm-eyebrow{
  margin:0 0 26px;
  text-align:center;
  color:var(--tm-eyebrow);
  font-size:12px;
  font-weight:600;
  letter-spacing:.17em;
  text-transform:uppercase;
  line-height:1.4;
  padding:0 20px;
}

.tm-viewport{
  overflow:hidden;
  width:100%;
}

.tm-track{
  display:flex;
  align-items:center;
  width:max-content;
  will-change:transform;
  animation:tm-scroll var(--tm-speed) linear infinite;
}

/* The track holds N identical copies laid end to end. Spacing lives on each
   item as a right margin rather than flex `gap`, because `gap` is only applied
   *between* children — that makes the last copy narrower than the others and
   the loop visibly jumps. With a uniform margin every copy is the same width,
   so shifting by exactly 1/N lands the next copy where the first began. */
@keyframes tm-scroll{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(calc(-100% / var(--tm-copies, 2)),0,0)}
}

.tm-reverse .tm-track{animation-direction:reverse}
.tm-pause:hover .tm-track{animation-play-state:paused}

.tm-item{
  display:inline-flex;
  align-items:center;
  gap:11px;
  flex:none;
  color:var(--tm-text);
  font-size:var(--tm-size);
  font-weight:400;
  line-height:1.2;
  white-space:nowrap;
  text-decoration:none;
  margin-right:var(--tm-gap);
  opacity:.92;
  transition:opacity .2s ease,color .2s ease;
}
a.tm-item:hover{opacity:1;text-decoration:none}

.tm-icon{flex:none;opacity:.85}
.tm-name{white-space:nowrap}

.tm-logo{
  max-height:calc(var(--tm-size) * 2.1);
  width:auto;
  display:block;
  flex:none;
}
.tm-gray .tm-logo{
  filter:grayscale(1);
  opacity:.7;
  transition:filter .25s ease,opacity .25s ease;
}
.tm-gray .tm-item:hover .tm-logo{filter:grayscale(0);opacity:1}

/* Edge fade — masks the track so items dissolve rather than clip. */
.tm-has-fade .tm-viewport{
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%);
}

@media (max-width:720px){
  .tm-band{--tm-gap:44px;--tm-size:16px;--tm-pad:30px}
  .tm-eyebrow{font-size:11px;margin-bottom:20px}
  .tm-has-fade .tm-viewport{
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
    mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
  }
}

/* Motion is decorative here, so stop it and let people scroll the row by hand. */
@media (prefers-reduced-motion:reduce){
  .tm-track{animation:none}
  .tm-viewport{overflow-x:auto;scrollbar-width:none}
  .tm-viewport::-webkit-scrollbar{display:none}
}

/* ---------- theme-conflict guards ---------- */
.tm-band .tm-item{background:none!important;padding:0!important;margin-left:0!important;border:0!important;box-shadow:none!important;text-transform:none!important;font-family:inherit!important}
.tm-band .tm-logo{margin:0!important;border-radius:0!important;box-shadow:none!important;max-width:none!important}
.tm-band .tm-eyebrow{font-family:inherit!important}
