/* ============================================================================
   TriggerFlex Engines — base styles (STRUCTURAL). Brand tokens overridden in brand.css.
   ========================================================================== */
:root {
  --flex-bg: #0E0D0C;
  --flex-fg: #F3ECDD;
  --flex-accent: #C2A878;
  --flex-line: rgba(243, 236, 221, .14);
  --flex-radius: 14px;
}
.flex-prep [data-flex-reveal],
.flex-prep [data-flex-stagger] > * { opacity: 0; }
.flex-stage { position: relative; min-height: 88vh; overflow: hidden; }
[data-flex-snap] { position: relative; height: 100vh; overflow: hidden; }
[data-flex-snap] .flex-snap-track { display: flex; height: 100%; width: max-content; will-change: transform; }
[data-flex-snap] [data-flex-snap-slide] { flex: 0 0 100vw; height: 100vh; position: relative; overflow: hidden; }
[data-flex-stack] { position: relative; }
[data-flex-stack] [data-flex-stack-card] { will-change: transform; transform-origin: center top; }
[data-flex-trail] { position: relative; overflow: hidden; }
[data-flex-trail] [data-flex-trail-img] {
  position: absolute; top: 0; left: 0;
  width: 240px; height: 180px;
  border-radius: 10px; background-size: cover; background-position: 50% 50%;
  pointer-events: none; will-change: transform, opacity;
}
.flex-hover-cursor {
  position: absolute; top: 0; left: 0; width: 320px; height: 230px; margin: -115px 0 0 -160px;
  border-radius: 12px; background-size: cover; background-position: 50% 50%;
  pointer-events: none; z-index: 5; will-change: transform, opacity;
}
[data-flex-throwable] { position: relative; min-height: 60vh; overflow: hidden; }
[data-flex-throwable] [data-flex-throwable-item] {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 14px 26px; border: 1px solid var(--flex-accent); border-radius: 40px;
  color: var(--flex-fg); font-size: 15px; white-space: nowrap; user-select: none;
}
[data-flex-magnetic] { display: inline-flex; will-change: transform; }
[data-flex-kinetic] .fx-kline { display: block; overflow: hidden; }
[data-flex-kinetic] .fx-kchar { display: inline-block; will-change: transform; }
[data-flex-mosaic] > * { will-change: transform; }
[data-flex-spotlight] { position: relative; overflow: hidden; }
[data-flex-spotlight] .flex-spot-layer {
  position: absolute; inset: 0; background-size: cover; background-position: 50% 50%;
  -webkit-mask-image: radial-gradient(circle 190px at var(--mx,50%) var(--my,50%), #000 0, rgba(0,0,0,.15) 60%, transparent 72%);
          mask-image: radial-gradient(circle 190px at var(--mx,50%) var(--my,50%), #000 0, rgba(0,0,0,.15) 60%, transparent 72%);
}
[data-flex-marquee] { overflow: hidden; white-space: nowrap; }
[data-flex-marquee] > * { display: inline-block; white-space: nowrap; will-change: transform; }
[data-flex-skew] { will-change: transform; }
[data-flex-wipe] { position: relative; }
[data-flex-wipe] [data-flex-wipe-top] { clip-path: inset(0 100% 0 0); }