/* KLSV Asset Ownership
 * @source-id theme:css:motion-system
 * @owner klsv-theme/inc/frontend/assets.php
 * @layer theme-css/motion-system
 * @runtime-handle klsv-motion-system
 * @contracts data-animate/data-parallax primitives; no-JS content remains visible
 */

:root {
  --klsv-motion-ease-luxe: var(--klsv-motion-luxe, cubic-bezier(0.16, 1, 0.3, 1));
  --klsv-motion-delay: 0ms;
  --klsv-motion-distance: 14px;
  --klsv-motion-duration: var(--klsv-motion-normal, 240ms);
  --klsv-motion-img-duration: var(--klsv-motion-slow, 480ms);
  --klsv-motion-headline-distance: 20px;
  --klsv-motion-headline-duration: var(--klsv-motion-slow, 480ms);
  --klsv-motion-stagger-card: 55ms;
  --klsv-motion-stagger-tag: 28ms;
  --klsv-parallax-y: 0px;
}

/* ── Base reveal states ───────────────────────────────────── */
html.klsv-motion-ready [data-animate="fade-up"],
html.klsv-motion-ready [data-animate="fade-left"],
html.klsv-motion-ready [data-animate="img-reveal"],
html.klsv-motion-ready [data-klsv-motion-child] {
  opacity: 0;
  will-change: opacity, translate;
}

html.klsv-motion-ready [data-animate="fade-up"],
html.klsv-motion-ready [data-klsv-motion-child] {
  translate: 0 var(--klsv-motion-distance);
  transition:
    opacity var(--klsv-motion-duration) var(--klsv-motion-ease-luxe) var(--klsv-motion-delay),
    translate var(--klsv-motion-duration) var(--klsv-motion-ease-luxe) var(--klsv-motion-delay);
}

html.klsv-motion-ready [data-animate="fade-left"] {
  translate: calc(var(--klsv-motion-distance) * -1) 0;
  transition:
    opacity var(--klsv-motion-duration) var(--klsv-motion-ease-luxe) calc(var(--klsv-motion-delay) + 100ms),
    translate var(--klsv-motion-duration) var(--klsv-motion-ease-luxe) calc(var(--klsv-motion-delay) + 100ms);
}

html.klsv-motion-ready [data-animate="fade-up"].is-in,
html.klsv-motion-ready [data-animate="fade-left"].is-in,
html.klsv-motion-ready .is-in > [data-klsv-motion-child],
html.klsv-motion-ready [data-klsv-motion-child].is-in {
  opacity: 1;
  translate: 0 0;
}

html.klsv-motion-ready [data-animate="fade-up"].is-in,
html.klsv-motion-ready [data-animate="fade-left"].is-in,
html.klsv-motion-ready .is-in > [data-klsv-motion-child],
html.klsv-motion-ready [data-klsv-motion-child].is-in {
  will-change: auto;
}

/* ── Headline line split ──────────────────────────────────── */
html.klsv-motion-ready [data-animate="headline"] {
  visibility: hidden;
}

html.klsv-motion-ready [data-animate="headline"].is-split {
  visibility: visible;
}

.klsv-motion-line {
  display: block;
}

html.klsv-motion-ready .klsv-motion-line {
  opacity: 0;
  translate: 0 var(--klsv-motion-headline-distance);
  transition:
    opacity var(--klsv-motion-headline-duration) var(--klsv-motion-ease-luxe) var(--klsv-motion-delay),
    translate var(--klsv-motion-headline-duration) var(--klsv-motion-ease-luxe) var(--klsv-motion-delay);
  will-change: opacity, translate;
}

html.klsv-motion-ready [data-animate="headline"].is-in .klsv-motion-line {
  opacity: 1;
  translate: 0 0;
  will-change: auto;
}

/* ── Image clip-path reveal ───────────────────────────────── */
html.klsv-motion-ready [data-animate="img-reveal"] {
  overflow: hidden;
  clip-path: inset(100% 0 0 0);
  transform: translateZ(0);
  transition:
    opacity 1ms linear var(--klsv-motion-delay),
    clip-path var(--klsv-motion-img-duration) var(--klsv-motion-ease-luxe) var(--klsv-motion-delay);
}

html.klsv-motion-ready [data-animate="img-reveal"] img {
  transform: scale(1.08);
  transition: transform var(--klsv-motion-img-duration) var(--klsv-motion-ease-luxe) var(--klsv-motion-delay);
  will-change: transform;
}

html.klsv-motion-ready [data-animate="img-reveal"].is-in {
  opacity: 1;
  clip-path: inset(0 0 0 0);
}

html.klsv-motion-ready [data-animate="img-reveal"].is-in img {
  transform: scale(1);
  will-change: auto;
}


/* CLS guard for image reveal surfaces. Existing component dimensions remain the owner. */
.klsv-profile-card__media[data-animate="img-reveal"],
.klsv-home-area-card-v2__media[data-animate="img-reveal"],
.klsv-malaysia-city-photo-card__media[data-animate="img-reveal"],
.klsv-peer-card[data-animate="img-reveal"] {
  overflow: hidden;
  aspect-ratio: 3 / 4;
}

.klsv-profile-stage__media[data-animate="img-reveal"] {
  overflow: hidden;
  min-height: clamp(320px, 48vw, 680px);
}

/* ── Card-list and tag-list child timings ─────────────────── */
html.klsv-motion-ready [data-animate="card-list"] > [data-klsv-motion-child] {
  transition-duration: var(--klsv-motion-duration);
}

html.klsv-motion-ready [data-animate="tag-list"] [data-klsv-motion-child] {
  transition-duration: var(--klsv-motion-duration);
}

/* ── Parallax custom-property transform ───────────────────── */
html.klsv-motion-ready [data-parallax] {
  translate: 0 var(--klsv-parallax-y);
  will-change: translate;
}

/* ── Hover / focus interaction states ─────────────────────── */
.klsv-card,
.klsv-card-shell,
.klsv-directory-card,
.klsv-profile-card,
.klsv-copy-card,
.klsv-utility-card,
.klsv-section-contract,
.klsv-home-v2__route-summary-card,
.klsv-home-area-card-v2,
.klsv-malaysia-city-card-v2,
.klsv-malaysia-city-entry-card,
.klsv-related-profile-card,
.klsv-single-summary-card,
.klsv-single-gallery,
.klsv-profile-facts-panel,
.klsv-related-profiles,
.klsv-overview-panel,
.klsv-facts-panel,
.klsv-faq-item{
  transition:
    translate var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    transform var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    box-shadow var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    border-color var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    filter var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe);
}

.klsv-card:hover,
.klsv-card-shell:hover,
.klsv-directory-card:hover,
.klsv-profile-card:hover,
.klsv-copy-card:hover,
.klsv-utility-card:hover,
.klsv-home-v2__route-summary-card:hover,
.klsv-home-area-card-v2:hover,
.klsv-malaysia-city-card-v2:hover,
.klsv-malaysia-city-entry-card:hover,
.klsv-related-profile-card:hover,
.klsv-single-gallery:hover,
.klsv-profile-facts-panel:hover,
.klsv-related-profiles:hover,
.klsv-overview-panel:hover,
.klsv-facts-panel:hover,
.klsv-faq-item:hover{
  translate: 0 -3px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.4);
}

.klsv-card:focus-within,
.klsv-card-shell:focus-within,
.klsv-directory-card:focus-within,
.klsv-profile-card:focus-within,
.klsv-copy-card:focus-within,
.klsv-utility-card:focus-within,
.klsv-home-v2__route-summary-card:focus-within,
.klsv-home-area-card-v2:focus-within,
.klsv-malaysia-city-card-v2:focus-within,
.klsv-malaysia-city-entry-card:focus-within,
.klsv-related-profile-card:focus-within,
.klsv-single-summary-card:focus-within,
.klsv-single-gallery:focus-within,
.klsv-profile-facts-panel:focus-within,
.klsv-related-profiles:focus-within,
.klsv-overview-panel:focus-within,
.klsv-facts-panel:focus-within,
.klsv-faq-item:focus-within{
  box-shadow:
    0 12px 32px rgba(0, 0, 0, 0.36),
    0 0 0 1px rgba(232, 184, 78, 0.22);
}

.klsv-btn,
.klsv-button,
.klsv-profile-command-button,
.klsv-link-pill,
.klsv-content-state__action{
  transition:
    translate var(--klsv-motion-fast, 160ms) var(--klsv-motion-ease-luxe),
    transform var(--klsv-motion-fast, 160ms) var(--klsv-motion-ease-luxe),
    filter var(--klsv-motion-fast, 160ms) var(--klsv-motion-ease-luxe),
    box-shadow var(--klsv-motion-fast, 160ms) var(--klsv-motion-ease-luxe),
    border-color var(--klsv-motion-fast, 160ms) var(--klsv-motion-ease-luxe);
}

.klsv-btn:hover,
.klsv-button:hover,
.klsv-profile-command-button:hover,
.klsv-link-pill:hover,
.klsv-content-state__action:hover{
  translate: 0 -2px;
  filter: brightness(1.15);
}

.klsv-btn:focus-visible,
.klsv-button:focus-visible,
.klsv-profile-command-button:focus-visible,
.klsv-link-pill:focus-visible,
.klsv-content-state__action:focus-visible,
.klsv-link:focus-visible,
.klsv-copy a:focus-visible,
.klsv-content-article__body a:focus-visible,
.klsv-main .entry-content a:focus-visible{
  outline: 2px solid rgba(232, 184, 78, 0.72);
  outline-offset: 3px;
}

/* Scoped rich text / utility link underline. Avoid buttons, chips and cards. */
.klsv-link,
.klsv-copy a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]),
.klsv-content-article__body a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]),
.klsv-main .entry-content a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]) {
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0 1px;
  text-decoration: none;
  transition:
    background-size var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    color var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    opacity var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe);
}

.klsv-link:hover,
.klsv-link:focus-visible,
.klsv-copy a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]):hover,
.klsv-copy a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]):focus-visible,
.klsv-content-article__body a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]):hover,
.klsv-content-article__body a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]):focus-visible,
.klsv-main .entry-content a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]):hover,
.klsv-main .entry-content a:not([class*="button"]):not([class*="chip"]):not([class*="pill"]):focus-visible {
  background-size: 100% 1px;
}

/* ── Map signal micro motion ──────────────────────────────── */
@keyframes klsv-motion-signal-pulse {
  0%, 100% {
    box-shadow:
      0 0 0 0 rgba(232, 184, 78, 0.0),
      0 0 18px rgba(232, 184, 78, 0.16);
  }
  50% {
    box-shadow:
      0 0 0 5px rgba(232, 184, 78, 0.08),
      0 0 28px rgba(232, 184, 78, 0.24);
  }
}

@keyframes klsv-motion-map-scan {
  0% { transform: translate3d(-120%, 0, 0); opacity: 0; }
  20% { opacity: 0.45; }
  100% { transform: translate3d(120%, 0, 0); opacity: 0; }
}

.klsv-directory-map__node i {
  animation: klsv-motion-signal-pulse calc(var(--klsv-motion-soft-loop, 5200ms) / 2) var(--klsv-motion-ease-luxe) infinite;
}

.klsv-directory-map__node:hover i,
.klsv-directory-map__node:focus-visible i,
.klsv-directory-map__node.is-active i {
  animation-duration: 1200ms;
}

.klsv-directory-map__scan {
  animation: klsv-motion-map-scan var(--klsv-motion-soft-loop, 5200ms) linear infinite;
}


/* ── Load-order visibility fix: load-safe visible layer ───── */
html.klsv-motion-ready .klsv-directory-map{
  will-change: translate, opacity;
}

.klsv-directory-map__ring {
  animation: klsv-motion-ring-breathe calc(var(--klsv-motion-soft-loop, 5200ms) + 1000ms) var(--klsv-motion-ease-luxe) infinite;
}

.klsv-directory-map__ring--two {
  animation-delay: 700ms;
}

.klsv-directory-map__ring--three {
  animation-delay: 1400ms;
}

@keyframes klsv-motion-ring-breathe {
  0%, 100% {
    opacity: 0.34;
    transform: translate3d(0, 0, 0) scale(1);
  }
  50% {
    opacity: 0.68;
    transform: translate3d(0, 0, 0) scale(1.025);
  }
}

.klsv-directory-map__node {
  transition:
    translate var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    scale var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    transform var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    filter var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    border-color var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    box-shadow var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe);
}

.klsv-directory-map__node:hover,
.klsv-directory-map__node:focus-visible {
  translate: 0 -3px;
  scale: 1.015;
  filter: brightness(1.14);
}

html.klsv-motion-ready [data-klsv-auto-motion="1"][data-animate="fade-up"] {
  transition-duration: var(--klsv-motion-duration);
}

/* Batch 13: stable class contracts for later premium motion batches. */
.klsv-motion-card-lift,
.klsv-motion-media-reveal,
.klsv-motion-badge-pulse,
.klsv-motion-cta-shine {
  transform: translateZ(0);
}

.klsv-motion-card-lift {
  transition:
    transform var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    translate var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    box-shadow var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe),
    border-color var(--klsv-motion-normal, 240ms) var(--klsv-motion-ease-luxe);
}

.klsv-motion-cta-shine {
  position: relative;
  overflow: hidden;
}

.klsv-motion-cta-shine::after {
  content: "";
  position: absolute;
  inset: -35% auto -35% -55%;
  width: 42%;
  background: var(--klsv-premium-cta-shine, linear-gradient(110deg, transparent 0%, rgba(255,255,255,.16) 42%, transparent 72%));
  opacity: 0;
  transform: translate3d(-110%, 0, 0) skewX(-16deg);
  transition:
    opacity var(--klsv-motion-fast, 160ms) var(--klsv-motion-ease-luxe),
    transform var(--klsv-motion-slow, 480ms) var(--klsv-motion-ease-luxe);
  pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
  .klsv-motion-card-lift:hover {
    translate: 0 -2px;
    box-shadow: var(--klsv-glow-soft, 0 0 48px rgba(195,170,120,.12));
  }

  .klsv-motion-cta-shine:hover::after {
    opacity: .78;
    transform: translate3d(330%, 0, 0) skewX(-16deg);
  }
}

@media (hover: none), (pointer: coarse) {
  .klsv-motion-card-lift:hover,
  .klsv-motion-cta-shine:hover {
    transform: none;
    translate: none;
  }

  .klsv-motion-cta-shine::after {
    display: none;
  }
}



/* ── Load-order fix: page CSS loads before this layer ─ */
html.klsv-motion-ready [data-animate="headline"],
html.klsv-motion-ready [data-animate="fade-up"],
html.klsv-motion-ready [data-animate="fade-left"],
html.klsv-motion-ready [data-animate="img-reveal"],
html.klsv-motion-ready [data-klsv-motion-child] {
  backface-visibility: hidden;
}

html.klsv-motion-ready [data-animate="headline"].is-in,
html.klsv-motion-ready [data-animate="fade-up"].is-in,
html.klsv-motion-ready [data-animate="fade-left"].is-in,
html.klsv-motion-ready [data-animate="img-reveal"].is-in {
  pointer-events: auto;
}

html.klsv-motion-ready .klsv-directory-map__node:hover,
html.klsv-motion-ready .klsv-directory-map__node:focus-visible,
html.klsv-motion-ready .klsv-btn:hover,
html.klsv-motion-ready .klsv-button:hover{
  position: relative;
}


/* ── Reduced motion and fallback visibility ───────────────── */
html.klsv-motion-ready :where([data-klsv-motion-static="1"], [data-klsv-critical-content="1"]),
html.klsv-motion-ready :where([data-klsv-motion-static="1"], [data-klsv-critical-content="1"]) :where([data-animate], [data-klsv-motion-child]) {
  opacity: 1 !important;
  transform: none !important;
  translate: none !important;
  scale: none !important;
  clip-path: none !important;
  transition: none !important;
  visibility: visible !important;
}

html.klsv-motion-disabled [data-animate],
html.klsv-motion-disabled [data-klsv-motion-child] {
  opacity: 1 !important;
  transform: none !important;
  translate: none !important;
  scale: none !important;
  clip-path: none !important;
  transition: none !important;
  animation: none !important;
  visibility: visible !important;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
  }

  [data-animate],
  [data-klsv-motion-child],
  [data-parallax],
  .klsv-motion-line {
    opacity: 1 !important;
    transform: none !important;
    translate: none !important;
    scale: none !important;
    clip-path: none !important;
    transition: none !important;
    animation: none !important;
    visibility: visible !important;
  }

  .klsv-directory-map__node i,
  .klsv-directory-map__scan,
  .klsv-directory-map__ring {
    animation: none !important;
  }
}


/* Motion hardening: critical content and reduced-motion users never wait on reveal observers. */
html.klsv-motion-disabled :where([data-animate], [data-klsv-motion-child]),
html.klsv-motion-ready :where([data-klsv-motion-static="1"], [data-klsv-critical-content="1"]),
html.klsv-motion-ready :where([data-klsv-motion-static="1"], [data-klsv-critical-content="1"]) :where([data-animate], [data-klsv-motion-child]) {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  translate: none !important;
  clip-path: none !important;
}

@media (prefers-reduced-motion: reduce) {
  html :where([data-animate], [data-klsv-motion-child], [data-parallax]) {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    translate: none !important;
    clip-path: none !important;
  }
}


/* Motion, performance and accessibility pass */
.klsv-btn:focus-visible,
.klsv-button:focus-visible,
.klsv-profile-command-button:focus-visible,
.klsv-link-pill:focus-visible,
.klsv-content-state__action:focus-visible,
.klsv-directory-card:focus-visible,
.klsv-profile-card a:focus-visible,
.klsv-malaysia-city-strip__link:focus-visible,
.klsv-faq-item summary:focus-visible {
  outline: 2px solid rgba(118, 140, 159, 0.82);
  outline-offset: 4px;
  box-shadow:
    0 0 0 4px rgba(118, 140, 159, 0.12),
    0 14px 36px rgba(0, 0, 0, 0.34);
}

.klsv-faq-item summary {
  cursor: pointer;
}

@media (hover: none), (pointer: coarse) {
  .klsv-card:hover,
  .klsv-card-shell:hover,
  .klsv-directory-card:hover,
  .klsv-profile-card:hover,
  .klsv-copy-card:hover,
  .klsv-utility-card:hover,
  .klsv-home-v2__route-summary-card:hover,
  .klsv-home-area-card-v2:hover,
  .klsv-malaysia-city-card-v2:hover,
  .klsv-malaysia-city-entry-card:hover,
  .klsv-related-profile-card:hover,
  .klsv-single-gallery:hover,
  .klsv-profile-facts-panel:hover,
  .klsv-related-profiles:hover,
  .klsv-overview-panel:hover,
  .klsv-facts-panel:hover,
  .klsv-faq-item:hover,
  .klsv-btn:hover,
  .klsv-button:hover,
  .klsv-profile-command-button:hover,
  .klsv-link-pill:hover,
  .klsv-content-state__action:hover {
    translate: none;
    transform: none;
    filter: none;
  }

  .klsv-directory-map__scan,
  .klsv-directory-map__ring,
  .klsv-directory-map__node i {
    animation: none;
  }

  [data-parallax] {
    --klsv-parallax-y: 0px !important;
    translate: 0 0 !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .klsv-card,
  .klsv-card-shell,
  .klsv-directory-card,
  .klsv-profile-card,
  .klsv-copy-card,
  .klsv-utility-card,
  .klsv-btn,
  .klsv-button,
  .klsv-profile-command-button,
  .klsv-link-pill,
  .klsv-content-state__action,
  .klsv-mobile-sticky-cta,
  .klsv-profile-mobile-cta,
  .klsv-single-mobile-cta {
    animation: none !important;
    transition: none !important;
  }
}

/* Mobile-first: desktop enhances with more travel and longer duration. */
@media (min-width: 768px) and (hover: hover) {
  :root {
    --klsv-motion-distance: 22px;
    --klsv-motion-duration: 460ms;
    --klsv-motion-img-duration: 680ms;
    --klsv-motion-headline-distance: 32px;
    --klsv-motion-headline-duration: 520ms;
    --klsv-motion-stagger-card: 70ms;
    --klsv-motion-stagger-tag: 38ms;
  }
}

/* Batch 1 motion guardrails: feedback without mobile drift or hidden content. */
.klsv-motion-safe-hover {
  transition:
    transform var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe),
    box-shadow var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe),
    border-color var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe);
}

@media (hover: hover) and (pointer: fine) {
  .klsv-motion-safe-hover:hover {
    transform: translateY(-1px);
  }
}

@media (hover: none), (pointer: coarse) {
  html.klsv-motion-ready [data-parallax],
  .klsv-motion-safe-hover,
  .klsv-motion-safe-hover:hover {
    transform: none;
    translate: 0 0;
  }
}

:where(
  .klsv-btn,
  .klsv-button,
  .klsv-profile-command-button,
  .klsv-link-pill,
  .klsv-content-state__action,
  .klsv-directory-card,
  .klsv-profile-card a,
  .klsv-malaysia-city-strip__link,
  .klsv-faq-item summary
):focus-visible {
  outline-color: var(--klsv-ui-focus-color, var(--klsv-ui-action-hover));
  box-shadow: var(--klsv-ui-focus-shadow, 0 0 0 4px rgba(195, 170, 120, .16));
}

html.klsv-motion-ready :where([data-klsv-critical-content="1"], [data-klsv-motion-static="1"]) {
  content-visibility: visible;
}

/* Batch 5: light motion budget and no-JS safe visibility. */
:root {
  --klsv-motion-hover-y: -1px;
  --klsv-motion-press-scale: .985;
}

html:not(.klsv-motion-ready):not(.klsv-motion-disabled) :where([data-animate], [data-klsv-motion-child]) {
  opacity: 1;
  visibility: visible;
}

@media (hover: hover) and (pointer: fine) {
  :where(
    .klsv-button,
    .klsv-btn,
    .klsv-link-pill,
    .klsv-section-link,
    .klsv-ui-action,
    .klsv-home-flat__route-card,
    .klsv-malaysia-city-card-v2,
    .klsv-profile-card,
    .klsv-related-profile-card
  ) {
    transition:
      transform var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe),
      box-shadow var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe),
      border-color var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe),
      background var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe),
      filter var(--klsv-ui-duration-normal, 220ms) var(--klsv-motion-ease-luxe);
  }

  :where(
    .klsv-button,
    .klsv-btn,
    .klsv-link-pill,
    .klsv-section-link,
    .klsv-ui-action
  ):active {
    transform: scale(var(--klsv-motion-press-scale));
  }
}

@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  :where(
    .klsv-home-flat__route-card,
    .klsv-malaysia-city-card-v2,
    .klsv-profile-card,
    .klsv-related-profile-card,
    .klsv-single-gallery,
    .klsv-profile-facts-panel,
    .klsv-profile-service-panel
  ):hover {
    transform: none;
    translate: 0 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  :root {
    --klsv-motion-hover-y: 0;
    --klsv-motion-press-scale: 1;
    --klsv-motion-distance: 0px;
    --klsv-motion-headline-distance: 0px;
  }
}

/* Batch 9: global motion budget v2. Keep motion quiet, fast and feedback-led. */
:root {
  --klsv-motion-fast: 140ms;
  --klsv-motion-normal: 190ms;
  --klsv-motion-slow: 300ms;
  --klsv-motion-ease-luxe: var(--klsv-motion-luxe, cubic-bezier(0.16, 1, 0.3, 1));
  --klsv-motion-duration: 220ms;
  --klsv-motion-img-duration: 320ms;
  --klsv-motion-headline-duration: 300ms;
  --klsv-motion-distance: 10px;
  --klsv-motion-headline-distance: 14px;
  --klsv-motion-stagger-card: 38ms;
  --klsv-motion-stagger-tag: 22ms;
  --klsv-motion-hover-y: -1px;
  --klsv-motion-hover-y-card: -1px;
  --klsv-motion-press-scale: .988;
  --klsv-motion-media-scale: 1.015;
}

@media (min-width: 768px) and (hover: hover) {
  :root {
    --klsv-motion-distance: 12px;
    --klsv-motion-duration: 260ms;
    --klsv-motion-img-duration: 380ms;
    --klsv-motion-headline-distance: 16px;
    --klsv-motion-headline-duration: 340ms;
    --klsv-motion-stagger-card: 42ms;
    --klsv-motion-stagger-tag: 24ms;
  }
}

.klsv-card,
.klsv-card-shell,
.klsv-directory-card,
.klsv-profile-card,
.klsv-copy-card,
.klsv-utility-card,
.klsv-home-v2__route-summary-card,
.klsv-home-area-card-v2,
.klsv-home-flat__route-card,
.klsv-malaysia-city-card-v2,
.klsv-malaysia-city-entry-card,
.klsv-malaysia-city-strip,
.klsv-malaysia-city-profile-card,
.klsv-malaysia-city-photo-card,
.klsv-related-profile-card,
.klsv-single-summary-card,
.klsv-single-gallery,
.klsv-profile-facts-panel,
.klsv-profile-service-panel,
.klsv-related-profiles,
.klsv-overview-panel,
.klsv-facts-panel,
.klsv-faq-item {
  transition:
    transform var(--klsv-motion-normal) var(--klsv-motion-ease-luxe),
    translate var(--klsv-motion-normal) var(--klsv-motion-ease-luxe),
    box-shadow var(--klsv-motion-normal) var(--klsv-motion-ease-luxe),
    border-color var(--klsv-motion-normal) var(--klsv-motion-ease-luxe),
    background var(--klsv-motion-normal) var(--klsv-motion-ease-luxe),
    filter var(--klsv-motion-normal) var(--klsv-motion-ease-luxe);
}

@media (hover: hover) and (pointer: fine) {
  .klsv-card:hover,
  .klsv-card-shell:hover,
  .klsv-directory-card:hover,
  .klsv-profile-card:hover,
  .klsv-copy-card:hover,
  .klsv-utility-card:hover,
  .klsv-home-v2__route-summary-card:hover,
  .klsv-home-area-card-v2:hover,
  .klsv-home-flat__route-card:hover,
  .klsv-malaysia-city-card-v2:hover,
  .klsv-malaysia-city-entry-card:hover,
  .klsv-malaysia-city-strip:hover,
  .klsv-malaysia-city-profile-card:hover,
  .klsv-malaysia-city-photo-card:hover,
  .klsv-related-profile-card:hover,
  .klsv-single-gallery:hover,
  .klsv-profile-facts-panel:hover,
  .klsv-profile-service-panel:hover,
  .klsv-related-profiles:hover,
  .klsv-overview-panel:hover,
  .klsv-facts-panel:hover,
  .klsv-faq-item:hover {
    translate: 0 var(--klsv-motion-hover-y-card);
  }

  .klsv-ds-listing-card:hover :where(.klsv-ds-listing-card__media img, .klsv-ds-media__image),
  .klsv-profile-card:hover :where(img, .klsv-ds-media__image),
  .klsv-malaysia-city-photo-card:hover :where(img, .klsv-ds-media__image),
  .klsv-malaysia-city-photo-card:hover .klsv-malaysia-city-photo-card__image,
  .klsv-malaysia-city-photo-card.klsv-ds-listing-card:hover .klsv-ds-listing-card__media .klsv-malaysia-city-photo-card__image,
  .klsv-malaysia-city-profile-card:hover :where(img, .klsv-ds-media__image) {
    transform: scale(var(--klsv-motion-media-scale));
  }

  .klsv-btn:hover,
  .klsv-button:hover,
  .klsv-profile-command-button:hover,
  .klsv-link-pill:hover,
  .klsv-section-link:hover,
  .klsv-section-actions a:hover,
  .klsv-ui-action:hover,
  .klsv-content-state__action:hover,
  .klsv-malaysia-city-strip__link:hover,
  .klsv-city-area-nav__item:hover {
    translate: 0 var(--klsv-motion-hover-y);
    filter: brightness(1.06);
  }
}

.klsv-btn,
.klsv-button,
.klsv-profile-command-button,
.klsv-link-pill,
.klsv-section-link,
.klsv-section-actions a,
.klsv-ui-action,
.klsv-content-state__action,
.klsv-malaysia-city-strip__link,
.klsv-city-area-nav__item {
  transition:
    transform var(--klsv-motion-fast) var(--klsv-motion-ease-luxe),
    translate var(--klsv-motion-fast) var(--klsv-motion-ease-luxe),
    filter var(--klsv-motion-fast) var(--klsv-motion-ease-luxe),
    box-shadow var(--klsv-motion-fast) var(--klsv-motion-ease-luxe),
    border-color var(--klsv-motion-fast) var(--klsv-motion-ease-luxe),
    background var(--klsv-motion-fast) var(--klsv-motion-ease-luxe),
    color var(--klsv-motion-fast) var(--klsv-motion-ease-luxe);
}

.klsv-btn:active,
.klsv-button:active,
.klsv-profile-command-button:active,
.klsv-link-pill:active,
.klsv-section-link:active,
.klsv-section-actions a:active,
.klsv-ui-action:active,
.klsv-content-state__action:active,
.klsv-malaysia-city-strip__link:active,
.klsv-city-area-nav__item:active {
  transform: scale(var(--klsv-motion-press-scale));
}

.klsv-ds-listing-card__media img,
.klsv-ds-media__image,
.klsv-profile-card img,
.klsv-malaysia-city-photo-card img,
.klsv-malaysia-city-photo-card__image,
.klsv-malaysia-city-photo-card.klsv-ds-listing-card .klsv-ds-listing-card__media .klsv-malaysia-city-photo-card__image,
.klsv-malaysia-city-profile-card img {
  transition:
    transform var(--klsv-motion-img-duration) var(--klsv-motion-ease-luxe),
    filter var(--klsv-motion-normal) var(--klsv-motion-ease-luxe);
}

@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  .klsv-card:hover,
  .klsv-card-shell:hover,
  .klsv-directory-card:hover,
  .klsv-profile-card:hover,
  .klsv-copy-card:hover,
  .klsv-utility-card:hover,
  .klsv-home-v2__route-summary-card:hover,
  .klsv-home-area-card-v2:hover,
  .klsv-home-flat__route-card:hover,
  .klsv-malaysia-city-card-v2:hover,
  .klsv-malaysia-city-entry-card:hover,
  .klsv-malaysia-city-strip:hover,
  .klsv-malaysia-city-profile-card:hover,
  .klsv-malaysia-city-photo-card:hover,
  .klsv-related-profile-card:hover,
  .klsv-single-gallery:hover,
  .klsv-profile-facts-panel:hover,
  .klsv-profile-service-panel:hover,
  .klsv-related-profiles:hover,
  .klsv-overview-panel:hover,
  .klsv-facts-panel:hover,
  .klsv-faq-item:hover,
  .klsv-btn:hover,
  .klsv-button:hover,
  .klsv-profile-command-button:hover,
  .klsv-link-pill:hover,
  .klsv-section-link:hover,
  .klsv-section-actions a:hover,
  .klsv-ui-action:hover,
  .klsv-content-state__action:hover,
  .klsv-malaysia-city-strip__link:hover,
  .klsv-city-area-nav__item:hover {
    translate: 0 0;
    transform: none;
    filter: none;
  }

  .klsv-ds-listing-card:hover :where(.klsv-ds-listing-card__media img, .klsv-ds-media__image),
  .klsv-profile-card:hover :where(img, .klsv-ds-media__image),
  .klsv-malaysia-city-photo-card:hover :where(img, .klsv-ds-media__image),
  .klsv-malaysia-city-photo-card:hover .klsv-malaysia-city-photo-card__image,
  .klsv-malaysia-city-photo-card.klsv-ds-listing-card:hover .klsv-ds-listing-card__media .klsv-malaysia-city-photo-card__image,
  .klsv-malaysia-city-profile-card:hover :where(img, .klsv-ds-media__image) {
    transform: none;
  }
}

@media (hover: hover) and (pointer: fine) {
  .klsv-card-media:hover,
  .klsv-profile-card__media:hover,
  .klsv-ds-listing-card__media:hover,
  .klsv-directory-card__media:hover,
  .klsv-kl-area-card__media:hover,
  .klsv-malaysia-city-profile-card__media:hover {
    box-shadow: inset 0 0 0 1px rgba(195,170,120,.18), 0 0 26px rgba(195,170,120,.12);
  }
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .klsv-card-media:hover img,
  .klsv-profile-card__media:hover img,
  .klsv-ds-listing-card__media:hover img,
  .klsv-directory-card__media:hover img,
  .klsv-kl-area-card__media:hover img,
  .klsv-malaysia-city-profile-card__media:hover .klsv-malaysia-city-profile-card__image {
    transform: scale(var(--klsv-motion-media-scale, 1.025));
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms;
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
  }
}

