/* v49.0.61 — restrained public frontend motion system */
:root{--v4962-ease:cubic-bezier(.22,1,.36,1);--v4962-fast:220ms;--v4962-normal:620ms}

/* Scroll reveal is opt-in from JS so content never disappears when JS is unavailable. */
.v4962-reveal{opacity:1;transform:none}
.v4962-reveal.is-visible{animation:v4962RevealIn var(--v4962-normal) var(--v4962-ease) var(--v4962-delay,0ms) both}

/* Hero entrance */
.v4962-motion-ready .v4918-hero-copy>.v4918-eyebrow{animation:v4962HeroIn 560ms var(--v4962-ease) 40ms both}
.v4962-motion-ready .v4918-hero-copy>h1{animation:v4962HeroIn 680ms var(--v4962-ease) 110ms both}
.v4962-motion-ready .v4918-hero-copy>p{animation:v4962HeroIn 680ms var(--v4962-ease) 180ms both}
.v4962-motion-ready .v4918-hero-actions{animation:v4962HeroIn 680ms var(--v4962-ease) 250ms both}
.v4962-motion-ready .v4918-mode-chips{animation:v4962HeroIn 680ms var(--v4962-ease) 320ms both}
.v4962-motion-ready .v4960-home-visual{animation:v4962VisualIn 760ms var(--v4962-ease) 120ms both}

/* Main illustration: subtle continuous motion, never large enough to look gimmicky. */
.v4962-motion-ready .v4960-home-visual .v4961-hq-visual{animation:v4962Float 7.5s ease-in-out 1.1s infinite alternate;transform-origin:center center;will-change:transform}
.v4962-motion-ready .v4960-visual-chip{animation:v4962ChipFloat 5.6s ease-in-out infinite alternate;will-change:transform}
.v4962-motion-ready .v4960-chip-b{animation-delay:-1.7s}.v4962-motion-ready .v4960-chip-c{animation-delay:-3s}

/* Cards and linked surfaces */
.v4918-home-panel,.v4918-course-card,.catalog-card,.v4960-entity-card,.v4960-session-card,.v4918-mode-grid>a,.faq-item{transition:transform var(--v4962-fast) ease,box-shadow var(--v4962-fast) ease,border-color var(--v4962-fast) ease}
.v4918-home-panel:hover,.v4918-course-card:hover,.catalog-card:hover,.v4960-entity-card:hover,.v4960-session-card:hover,.v4918-mode-grid>a:hover{transform:translateY(-4px);box-shadow:0 20px 46px rgba(28,57,82,.09);border-color:#cfe4e1}
.v4918-course-card img,.catalog-card img,.v4960-entity-card img,.v4960-session-card img,.v4960-panel-visual img{transition:transform 420ms var(--v4962-ease)}
.v4918-course-card:hover img,.catalog-card:hover img,.v4960-entity-card:hover img,.v4960-session-card:hover img{transform:scale(1.025)}
.v4918-list-row .ui-icon,.v4960-card-actions .ui-icon,.v4960-session-link .ui-icon,.v4918-mode-grid>a>.ui-icon:last-child{transition:transform var(--v4962-fast) var(--v4962-ease)}
.rtl .v4918-list-row:hover .ui-icon:last-child,.rtl .v4960-session-link:hover .ui-icon,.rtl .v4918-mode-grid>a:hover>.ui-icon:last-child{transform:translateX(-4px)}
.ltr .v4918-list-row:hover .ui-icon:last-child,.ltr .v4960-session-link:hover .ui-icon,.ltr .v4918-mode-grid>a:hover>.ui-icon:last-child{transform:translateX(4px)}

/* Buttons get tactile feedback and a short shine only on hover. */
.public-header .btn,.v49-public-home .btn,.catalog-section .btn,.public-form-page .btn,.detail-hero .btn{position:relative;overflow:hidden;transition:transform var(--v4962-fast) ease,box-shadow var(--v4962-fast) ease,background-color var(--v4962-fast) ease}
.public-header .btn:hover,.v49-public-home .btn:hover,.catalog-section .btn:hover,.public-form-page .btn:hover,.detail-hero .btn:hover{transform:translateY(-2px)}
.public-header .btn:active,.v49-public-home .btn:active,.catalog-section .btn:active,.public-form-page .btn:active,.detail-hero .btn:active{transform:translateY(0) scale(.985)}
.btn-primary::after,.btn-gold::after{content:"";position:absolute;inset:-40% auto -40% -55%;width:34%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg);transition:left 520ms var(--v4962-ease);pointer-events:none}
.btn-primary:hover::after,.btn-gold:hover::after{left:125%}

/* Header reacts gently to scroll. */
.public-header.v4962-scrolled{box-shadow:0 12px 34px rgba(20,48,67,.09);border-bottom-color:rgba(210,225,226,.88)}
.public-header{transition:box-shadow 240ms ease,border-color 240ms ease,background-color 240ms ease}

/* Mobile menu opens rather than popping into place. */
@media(max-width:980px){
  .v4962-motion-ready .public-header .public-nav.open,.v4962-motion-ready .public-header .public-nav.is-open{animation:v4962MenuIn 240ms var(--v4962-ease) both}
}

/* A tiny pulse when stat count-up reaches its final value. */
.v4918-stats strong.v4962-count-complete{animation:v4962CountPop 280ms var(--v4962-ease)}

@keyframes v4962RevealIn{from{opacity:.96;transform:translate3d(0,10px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes v4962HeroIn{from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes v4962VisualIn{from{opacity:0;transform:translate3d(22px,10px,0) scale(.97)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@keyframes v4962Float{from{transform:translate3d(0,0,0) rotate(-.2deg)}to{transform:translate3d(0,-7px,0) rotate(.2deg)}}
@keyframes v4962ChipFloat{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-5px,0)}}
@keyframes v4962MenuIn{from{opacity:0;transform:translateY(-8px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes v4962CountPop{0%{transform:scale(1)}55%{transform:scale(1.045)}100%{transform:scale(1)}}

/* Accessibility/performance contract. */
@media(prefers-reduced-motion:reduce){
  .v4962-reveal,.v4962-reveal.is-visible{opacity:1!important;transform:none!important;transition:none!important}
  .v4962-motion-ready .v4918-hero-copy>*,.v4962-motion-ready .v4960-home-visual,.v4962-motion-ready .v4960-home-visual .v4961-hq-visual,.v4962-motion-ready .v4960-visual-chip,.v4918-stats strong.v4962-count-complete{animation:none!important;transform:none!important}
  .v4918-home-panel,.v4918-course-card,.catalog-card,.v4960-entity-card,.v4960-session-card,.v4918-mode-grid>a,.faq-item,.v4918-course-card img,.catalog-card img,.v4960-entity-card img,.v4960-session-card img,.v4960-panel-visual img,.public-header,.public-header .btn,.v49-public-home .btn,.catalog-section .btn,.public-form-page .btn,.detail-hero .btn{transition:none!important}
  .btn-primary::after,.btn-gold::after{display:none!important}
}
