.tnm-reveal{opacity:0;transform:translateY(28px);transition:opacity 1.15s cubic-bezier(.16,1,.3,1),transform 1.15s cubic-bezier(.16,1,.3,1);will-change:opacity,transform;}
.tnm-reveal.tnm-in{opacity:1;transform:none;}

.elementor-element-2655ac2 .elementor-widget-image img,
.elementor-element-6d14cdc .elementor-widget-image img,
.elementor-element-a0f6198 .elementor-widget-image img,
.elementor-element-20ba8d1 .elementor-widget-image img{
  transition:transform 1.6s cubic-bezier(.16,1,.3,1), filter 1s ease;
  will-change:transform;
}
.elementor-element-2655ac2:hover .elementor-widget-image img,
.elementor-element-6d14cdc:hover .elementor-widget-image img,
.elementor-element-a0f6198:hover .elementor-widget-image img,
.elementor-element-20ba8d1:hover .elementor-widget-image img{
  transform:scale(1.045);
  filter:brightness(1.06);
}

.tnm-rule{position:relative; transform-origin:left center; transform:scaleX(0); transition:transform 1.4s cubic-bezier(.16,1,.3,1);}
.tnm-rule.tnm-in{transform:scaleX(1);}
.tnm-rule-v{transform-origin:top center; transform:scaleY(0); transition:transform 1.4s cubic-bezier(.16,1,.3,1);}
.tnm-rule-v.tnm-in{transform:scaleY(1);}

.elementor-element-806046c{ background-attachment:local; }

/* Studio image script overlay: Elementor's container "_position: absolute" control only
   emitted the offset/z-index declarations, not the position:absolute itself, so the overlay
   text rendered in normal flow (pushed outside the image) instead of layered on top of it.
   Handling it directly here instead of relying on that control. */
.elementor-element-2d33e3e{ position:relative; }
.elementor-element-843f538{ position:absolute !important; }

/* IMPORTANT: hidden state is only ever applied via a JS-added class (.tnm-handwritten-pending),
   never on the bare .elementor-element-3f8f8d2 selector. If JS never runs, this element is
   never hidden in the first place -- progressive enhancement, not graceful degradation. */
.tnm-handwritten-pending{
  clip-path:inset(0 100% 0 0);
  transition:clip-path 1.9s cubic-bezier(.65,0,.35,1);
}
.tnm-handwritten-pending.tnm-in{ clip-path:inset(0 0% 0 0); }

/* Mobile: shrink the custom Latest Release play button so it doesn't crowd the
   artwork thumbnail and PLAY/LISTEN NOW text on narrow screens. */
@media (max-width: 767px){
  .tnm-play-btn{ width:44px !important; height:44px !important; }
  .tnm-play-btn svg{ width:13px !important; height:13px !important; }
}

/* Global safety net: nothing on this page should ever force horizontal scroll on mobile. */
@media (max-width: 767px){
  html, body{ overflow-x: hidden; max-width: 100%; }
}

@media (prefers-reduced-motion: reduce){
  .tnm-reveal, .tnm-rule, .tnm-rule-v, .tnm-handwritten-pending,
  .elementor-element-2655ac2 .elementor-widget-image img,
  .elementor-element-6d14cdc .elementor-widget-image img,
  .elementor-element-a0f6198 .elementor-widget-image img,
  .elementor-element-20ba8d1 .elementor-widget-image img{
    transition:none !important; opacity:1 !important; transform:none !important; clip-path:none !important;
  }
}
