/* Impeccable animate — trail travel as feedback, not a reveal on every block.
   Focal: hero/title arrival (landing-reveal). Timing: transitions.dev tokens. */
@import url('./ds-transitions-root.css?v=cmtb-prod-20260902p');
@import url('./ds-transitions-lib.css?v=cmtb-prod-20260902p');
@import url('./ds-transitions-bridge.css?v=cmtb-prod-20260902p');

.btn,
.btn--ghost,
.btn--glass,
.nav__link,
.nav__account,
.ds-nav__item,
.ds-nav__sub-item,
.ds-topbar__icon-btn,
.chip,
.badge,
.faq-item,
.service-card.service-card--v2,
.coach-card,
.newsroom-card,
.ds-card,
.account-panel,
.vt-session-card,
.help-accordion__item,
select,
.glass-input,
.cm-modal--confirm,
.cm-toast,
.toast {
  transition:
    color var(--dur-fast) var(--ease-out),
    background-color var(--dur-fast) var(--ease-out),
    border-color var(--dur-fast) var(--ease-out),
    box-shadow var(--dur-fast) var(--ease-out),
    transform var(--dur-fast) var(--ease-out),
    filter var(--dur-fast) var(--ease-out),
    opacity var(--dur-fast) var(--ease-out);
}

.btn__icon {
  transition: transform var(--dur-fast) var(--ease-out);
}

.btn:hover .btn__icon,
.btn:focus-visible .btn__icon {
  transform: translateX(var(--learn-shift, 2px));
}

.btn:active:not(:disabled) {
  transform: translateY(0) scale(0.98);
}

/* Ghost / glass: same Action trail as primary, quieter fill. Compact sm ghosts
   had transform/box-shadow forced off — they read as dead chrome. */
.btn--ghost,
.btn--glass,
body.ds-body--account .btn--ghost,
body.ds-body--account a.btn--ghost,
body.ds-body--account button.btn--ghost {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

.btn--ghost::after,
.btn--glass::after {
  content: "";
  position: absolute;
  left: 12%;
  right: 12%;
  bottom: 0.28rem;
  height: 2px;
  border-radius: 2px;
  background: var(--color-action, #0080ff);
  box-shadow: 0 0 8px rgba(var(--color-action-rgb), 0.4);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.38s cubic-bezier(0.16, 1, 0.3, 1);
  pointer-events: none;
  z-index: 1;
}

.btn--ghost:hover::after,
.btn--ghost:focus-visible::after,
.btn--glass:hover::after,
.btn--glass:focus-visible::after {
  transform: scaleX(1);
}

@media (pointer: fine) {
  .btn--ghost:hover,
  .btn--ghost:focus-visible,
  .btn--glass:hover,
  .btn--glass:focus-visible,
  body.ds-body--account .btn--ghost.btn--sm:hover,
  body.ds-body--account .btn--ghost.btn--sm:focus-visible {
    transform: translateY(-1px);
  }
}

body.ds-body--account .account-shortcut:hover,
body.ds-body--account .account-shortcut:focus-visible {
  transform: translateY(-2px);
}

body.ds-body--account .vt-seg__btn {
  transition:
    color 180ms cubic-bezier(0.16, 1, 0.3, 1),
    background-color 180ms cubic-bezier(0.16, 1, 0.3, 1),
    border-color 180ms cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 200ms cubic-bezier(0.16, 1, 0.3, 1);
}

a:not(.btn):not(.nav__link):not(.ds-nav__item) {
  transition: color var(--dur-instant) var(--ease-out);
}

input:not([type='checkbox']):not([type='radio']):not([type='hidden']):focus-visible,
textarea:focus-visible,
select:focus-visible,
.glass-input:focus-visible {
  box-shadow: 0 0 0 3px rgba(var(--color-action-rgb), 0.28);
  border-color: var(--color-action);
  transition:
    box-shadow var(--dur-instant) var(--ease-out),
    border-color var(--dur-instant) var(--ease-out);
}

input:invalid:not(:placeholder-shown):not(:focus),
.cm-field-error:not(:empty) {
  border-color: var(--danger);
}

.faq-item__a {
  transition: grid-template-rows var(--dur-slow) var(--ease-out);
}

.faq-item__icon {
  transition: transform var(--dur-med) var(--ease-out), color var(--dur-fast) var(--ease-out),
    background-color var(--dur-fast) var(--ease-out);
}

.help-accordion__panel {
  transition:
    grid-template-rows var(--dur-slow) var(--ease-out),
    opacity var(--dur-med) var(--ease-out);
}

.ds-nav__item:hover,
.ds-nav__sub-item:hover {
  background-color: rgba(var(--color-action-rgb), 0.08);
}

.ds-topbar__icon-btn:hover {
  transform: translateY(-1px);
}

.cm-modal-backdrop {
  transition: opacity var(--dur-med) var(--ease-out);
}

.cm-modal--confirm {
  animation: cmtb-modal-in var(--dur-slow) var(--ease-out) both;
}

@keyframes cmtb-modal-in {
  from {
    opacity: 0;
    filter: blur(8px);
    transform: translate3d(0, 0.4rem, 0);
  }
  to {
    opacity: 1;
    filter: none;
    transform: none;
  }
}

.toast:not(.t-toast),
.cm-toast:not(.t-toast) {
  animation: cmtb-toast-in var(--toast-open, var(--dur-slow)) var(--toast-ease, var(--ease-out)) both;
}

@keyframes cmtb-toast-in {
  from {
    opacity: 0;
    filter: blur(6px);
    transform: translate3d(0, 0.75rem, 0);
  }
  to {
    opacity: 1;
    filter: none;
    transform: none;
  }
}

@media (pointer: fine) {
  .service-card.service-card--v2:hover,
  .coach-card:hover,
  .newsroom-card:hover {
    transform: translateY(-2px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .cm-modal--confirm,
  .toast,
  .cm-toast {
    animation: none !important;
    filter: none !important;
    transform: none !important;
  }

  .btn:hover .btn__icon,
  .btn:focus-visible .btn__icon,
  .service-card.service-card--v2:hover,
  .coach-card:hover,
  .newsroom-card:hover,
  .ds-topbar__icon-btn:hover,
  .btn--ghost:hover,
  .btn--glass:hover,
  body.ds-body--account .btn--ghost.btn--sm:hover,
  body.ds-body--account .account-shortcut:hover {
    transform: none;
  }

  .btn--ghost::after,
  .btn--glass::after {
    transition: none;
  }

  .btn--ghost:hover::after,
  .btn--ghost:focus-visible::after,
  .btn--glass:hover::after,
  .btn--glass:focus-visible::after {
    transform: scaleX(1);
  }
}

/* Last sheet: never pull heroes under the floating capsule nav. */
body.pub-page > main,
body.ds-booking-body > main,
body.page-legal > main,
body.lp-home > main {
  padding-top: 0 !important;
}

body.lp-home .hero,
body.lp-home .hero--stage,
body.pub-page main > .page-hero,
body.pub-page main > .pub-hero,
body.pub-page main > section.page-hero,
body.ds-booking-body main > .page-hero,
body.page-legal main > .page-hero,
body.page-legal main > .page-hero--legal {
  margin-top: 0 !important;
  padding-top: var(--page-hero-pad-top) !important;
}

/* On-Action ink: selected pills must not inherit muted/link blue. */
.legal-docs a[aria-current='page'],
.legal-docs a[aria-current='true'],
.legal-docs a[aria-current='page']:hover,
.legal-docs a[aria-current='true']:hover,
.services-catalog__pill.is-active,
.newsroom__filter.is-active,
.chip.is-active,
.admin-chip.is-active,
.vt-seg__btn.is-on,
.btn--primary,
a.btn--primary {
  color: var(--color-on-action, #fff) !important;
}

/* Catalog: trail on the card, not a halo on the price / ribbon pills. */
.service-card.service-card--v2.cmtb-lift-card:hover,
.service-card.service-card--v2.cmtb-lift-card:focus-within,
.service-card.service-card--v2:hover,
.service-card.service-card--v2:focus-within {
  transform: translateY(-2px);
  border-color: rgba(255, 255, 255, 0.16);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 18px 44px rgba(0, 0, 0, 0.36);
}

.service-card--v2 .service-card__price-pill,
.service-card--v2 .service-card__ribbon,
.service-card--v2 .service-card__top-bar {
  pointer-events: none;
}

.service-card--v2:not(.service-card--sale) .service-card__price-pill,
.service-card--v2:not(.service-card--sale) .service-card__price-pill:hover {
  background: #14151a !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
  filter: none !important;
  transform: none !important;
}

.service-card--v2 .service-card__cta,
.service-card--v2 .service-card__cta:hover,
.service-card--v2 .service-card__cta:focus-visible {
  color: var(--color-on-action, #fff) !important;
  -webkit-text-fill-color: var(--color-on-action, #fff) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3) !important;
}

.services-catalog__pill:hover:not(.is-active),
.newsroom__filter:hover:not(.is-active),
.aide-category-pill:hover:not(.is-active) {
  transform: none !important;
  box-shadow: none !important;
}

.site-footer a:not(.btn),
.footer-col a,
.footer-link-list a,
.footer-grid--expanded .footer-col a,
.legal-toc ol a {
  color: var(--text-0) !important;
}

.site-footer a:not(.btn):hover,
.site-footer a:not(.btn):focus-visible,
.footer-col a:hover {
  color: var(--color-action-hover) !important;
}

.legal-toc ol a:hover,
.legal-toc ol a:focus-visible {
  color: var(--text-0) !important;
}

.legal-toc ol a.is-active,
.legal-toc ol a[aria-current='true'] {
  color: var(--text-0) !important;
}

.footer-support-card a {
  color: var(--color-action-hover) !important;
}

/* Destructive chrome: no Action trail, no blue type in a red box. */
[data-cancel-session]::after,
[data-seance-cancel]::after,
.btn--danger::after,
.cm-dialog__btn--danger::after,
.account-cancel-actions .btn--ghost::after {
  content: none !important;
  display: none !important;
}

[data-cancel-session],
[data-seance-cancel] {
  color: rgba(232, 232, 232, 0.92) !important;
}

.cm-policy.is-danger p,
.cm-policy.is-danger li,
.cm-dialog--danger .cm-dialog__message {
  color: #b8b8b8 !important;
}

.cm-policy.is-danger a,
.cm-dialog--danger a,
.cm-policy.is-danger .cm-check a {
  color: #e6e6e6 !important;
}

.cm-policy.is-danger a:hover,
.cm-dialog--danger a:hover {
  color: #fff !important;
}

.service-card--v2.service-card--popular .service-card__price-pill,
.service-card--v2.is-featured .service-card__price-pill,
.service-card--v2.service-card--popular .service-card__price-pill:hover,
.service-card--v2.is-featured .service-card__price-pill:hover {
  border-color: rgba(255, 255, 255, 0.12) !important;
  background: #14151a !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
}

@media (prefers-reduced-motion: reduce) {
  .service-card.service-card--v2.cmtb-lift-card:hover,
  .service-card.service-card--v2:hover,
  .service-card.service-card--v2:focus-within {
    transform: none;
  }
}

/* Hero / page title hit-words — Action blue gradient (wins over colorize/polish/distill). */
:root {
  --cmtb-hit-gradient: linear-gradient(
    120deg,
    #5ec2ff 0%,
    #0080ff 42%,
    #3d9fff 58%,
    #0066cc 100%
  );
}

.hero__title .gradient-text,
.page-hero__title .gradient-text,
h1 .gradient-text,
h2 .gradient-text {
  display: inline;
  background: var(--cmtb-hit-gradient) !important;
  background-size: 200% 200% !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  font-weight: inherit;
  animation: cmtbHitGradient 10s ease-in-out infinite;
}

@keyframes cmtbHitGradient {
  0%,
  100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero__title .gradient-text,
  .page-hero__title .gradient-text,
  h1 .gradient-text,
  h2 .gradient-text {
    animation: none !important;
    background-size: 100% 100% !important;
  }
}

/* Crisp UI — drop filter-blur from motion (causes fuzzy text on mobile/GPU layers). */
:root {
  --stagger-blur: 0px;
  --page-blur: 0px;
  --reveal-blur: 0px;
  --panel-blur: 0px;
  --icon-swap-blur: 0px;
  --text-swap-blur: 0px;
  --badge-blur: 0px;
  --toast-blur: 0px;
}

.anim-fade-up,
.t-stagger-line,
.cmtb-stagger-item,
.acct-stagger-item,
[data-cmtb-stagger-scroll] {
  filter: none !important;
}

.anim-fade-up.is-visible,
.t-stagger.is-shown .t-stagger-line,
.cmtb-stagger-item.is-visible,
.acct-stagger-item.is-visible {
  filter: none !important;
}

body.ds-body .account-view,
body.ds-body .account-view.is-active,
body.ds-body--admin .admin-view,
body.ds-body--admin .admin-view.is-active {
  filter: none;
  will-change: auto;
}

/* Inline booking calendar — always visible (pop may lack --portal). */
.cm-datepicker--inline .cm-datepicker__pop {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  filter: none !important;
}

/* Public viewport reveal — keep opacity/transform transitions crisp. */
body.lp-reveal-on .lp-reveal,
body.lp-reveal-on .lp-reveal.is-inview,
body.lp-reveal-on .anim-fade-up.lp-reveal,
body.lp-reveal-on .anim-fade-up.lp-reveal.is-inview {
  filter: none !important;
  will-change: auto;
}

/* ── Footer: smooth hover on links, buttons, icons, cards ── */
.site-footer .footer-link-list a,
.site-footer .footer-link-list__btn,
.site-footer .footer-col a:not(.btn),
.site-footer .footer-bottom a,
.site-footer .footer-bottom__cookies,
.site-footer .cm-cookie-link,
.site-footer .footer-bottom button {
  transition:
    color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.28s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.site-footer .footer-grid--expanded .footer-col a::after,
.site-footer .footer-grid--expanded .footer-col .footer-link-list__btn::after {
  transition: width 0.32s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.site-footer .footer-grid--expanded .footer-col:hover h5::after {
  transition:
    width 0.38s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.38s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.site-footer .footer-socials a {
  transition:
    color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    border-color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.28s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.site-footer .footer-socials a svg {
  transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.site-footer .footer-brand .footer-brand__cta,
.site-footer .footer-brand--lead .brand-logo--footer,
.site-footer .footer-support-card,
.site-footer .footer-support-card__glyph {
  transition:
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    border-color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.28s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.site-footer .cmtb-lang-switcher,
.site-footer .cmtb-lang-switcher__btn {
  transition:
    color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    border-color 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.28s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

@media (hover: hover) and (pointer: fine) {
  .site-footer .footer-socials a:hover svg,
  .site-footer .footer-socials a:focus-visible svg {
    transform: scale(1.08);
  }
}
