/*!
 * Themeasy — Horizontal Timeline
 *
 * Draggable horizontal timeline of dated milestones. Each item stacks a date
 * (oversized ghost numerals or a compact accent label), a node on a continuous
 * axis line and a content card. The structure is a native horizontal scroller:
 * with no JavaScript (and in the Elementor editor) it is a scroll-snap row with
 * the first milestone highlighted; the widget JS upgrades it (--enhanced) with
 * a GSAP progress fill, node ignition, drag inertia, magnetic snap and arrows.
 * Content is never gated behind the animation.
 *
 * Tokens consumed: --tms-primary-color, --tms-heading-color, --tms-body-color,
 * --tms-border-color, --tms-bg-color, --tms-accent-font, --tms-heading-font
 * (public --tms-* design API).
 *
 * @author Themeasy
 * @link https://themeasy.co
 * @since 1.0.0
 */
.tms-horizontal-timeline{--tms-htl-item-width:320px;--tms-htl-gap:56px;--tms-htl-edge:40px;--tms-htl-line:2px;--tms-htl-node:14px;--tms-htl-node-bleed:7px;--tms-htl-card-bleed:28px;--tms-htl-arrow:44px;--tms-htl-nav-gap:20px;--tms-htl-ghost-alpha:.18;--tms-htl-mask-l:0px;--tms-htl-mask-r:56px;--tms-htl-ease:cubic-bezier(.22, 1, .36, 1);width:100%;position:relative}.tms-horizontal-timeline__viewport{overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding-inline:max(var(--tms-htl-edge), var(--tms-htl-node-bleed));scrollbar-width:none;-webkit-overflow-scrolling:touch;-webkit-mask-image:linear-gradient(90deg, transparent 0, #000 var(--tms-htl-mask-l), #000 calc(100% - var(--tms-htl-mask-r)), transparent 100%);-webkit-mask-image:linear-gradient(90deg, transparent 0, #000 var(--tms-htl-mask-l), #000 calc(100% - var(--tms-htl-mask-r)), transparent 100%);mask-image:linear-gradient(90deg, transparent 0, #000 var(--tms-htl-mask-l), #000 calc(100% - var(--tms-htl-mask-r)), transparent 100%);position:relative;overflow:auto hidden}.tms-horizontal-timeline__viewport::-webkit-scrollbar{display:none}.tms-horizontal-timeline__viewport:focus-visible{outline:2px solid var(--tms-primary-color,#4f46e5);outline-offset:4px;border-radius:8px}.tms-horizontal-timeline--enhanced:not(.tms-horizontal-timeline--at-start) .tms-horizontal-timeline__viewport{--tms-htl-mask-l:48px}.tms-horizontal-timeline--at-end .tms-horizontal-timeline__viewport{--tms-htl-mask-r:0px}.tms-horizontal-timeline--enhanced .tms-horizontal-timeline__viewport{scroll-snap-type:none}.tms-horizontal-timeline__track{align-items:stretch;gap:var(--tms-htl-gap);width:max-content;padding-inline:max(var(--tms-htl-edge), var(--tms-htl-node-bleed));padding-bottom:var(--tms-htl-card-bleed);display:flex;position:relative}.tms-horizontal-timeline__fill{z-index:1;width:0;height:var(--tms-htl-line);transform-origin:0;background-color:var(--tms-primary-color,#4f46e5);pointer-events:none;border-radius:100px;display:none;position:absolute;top:0;left:0;transform:scaleX(0)}.tms-horizontal-timeline--enhanced .tms-horizontal-timeline__fill{will-change:transform;display:block}.tms-horizontal-timeline__item{flex-direction:column;flex:0 0 var(--tms-htl-item-width);width:var(--tms-htl-item-width);scroll-snap-align:start;min-width:0;display:flex;position:relative}.tms-horizontal-timeline__meta{align-items:flex-end;margin-bottom:10px;display:flex}.tms-horizontal-timeline__date{white-space:nowrap;font-family:var(--tms-accent-font,inherit);letter-spacing:.16em;text-transform:uppercase;color:var(--tms-heading-color,#111827);font-size:.8125rem;font-weight:600;line-height:1.2;transition:color .3s,opacity .3s;display:inline-block}.tms-horizontal-timeline--ghost .tms-horizontal-timeline__date{font-family:var(--tms-heading-font,inherit);letter-spacing:-.02em;text-transform:none;opacity:var(--tms-htl-ghost-alpha);font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:1}.tms-horizontal-timeline .tms-horizontal-timeline__item--active .tms-horizontal-timeline__date,.tms-horizontal-timeline--static .tms-horizontal-timeline__item:first-child .tms-horizontal-timeline__date{color:var(--tms-primary-color,#4f46e5);opacity:1}.tms-horizontal-timeline__axis{height:calc(var(--tms-htl-node) + 12px);flex:none;position:relative}.tms-horizontal-timeline__axis:before{content:"";top:calc(50% - var(--tms-htl-line) / 2);left:calc(var(--tms-htl-node) / 2);width:calc(100% + var(--tms-htl-gap));height:var(--tms-htl-line);background-color:var(--tms-border-color,#e5e7eb);border-radius:100px;position:absolute}.tms-horizontal-timeline__item:last-child .tms-horizontal-timeline__axis:before{content:none}.tms-horizontal-timeline__node{top:calc(50% - var(--tms-htl-node) / 2);z-index:2;width:var(--tms-htl-node);height:var(--tms-htl-node);background-color:var(--tms-border-color,#e5e7eb);box-shadow:0 0 0 4px var(--tms-bg-color,#fff);border-radius:50%;transition:background-color .3s;position:absolute;left:0}.tms-horizontal-timeline__node:after{content:"";inset:calc(var(--tms-htl-node-bleed) * -1);background-color:var(--tms-primary-color,#4f46e5);opacity:0;border-radius:50%;transition:opacity .3s,transform .3s;position:absolute;transform:scale(.6)}.tms-horizontal-timeline .tms-horizontal-timeline__item--passed .tms-horizontal-timeline__node,.tms-horizontal-timeline--static .tms-horizontal-timeline__item:first-child .tms-horizontal-timeline__node{background-color:var(--tms-primary-color,#4f46e5)}.tms-horizontal-timeline .tms-horizontal-timeline__item--active .tms-horizontal-timeline__node:after,.tms-horizontal-timeline--static .tms-horizontal-timeline__item:first-child .tms-horizontal-timeline__node:after{opacity:.18;transform:scale(1)}.tms-horizontal-timeline__card{border:1px solid var(--tms-border-color,#e5e7eb);background-color:var(--tms-bg-color,#fff);transition:transform .35s var(--tms-htl-ease), box-shadow .35s var(--tms-htl-ease), border-color .3s ease;border-radius:16px;flex-direction:column;flex:auto;align-items:flex-start;margin-top:22px;padding:24px;display:flex;position:relative}.tms-horizontal-timeline .tms-horizontal-timeline__item--active .tms-horizontal-timeline__card,.tms-horizontal-timeline--static .tms-horizontal-timeline__item:first-child .tms-horizontal-timeline__card{border-color:var(--tms-primary-color,#4f46e5)}@media (hover:hover){.tms-horizontal-timeline__card:hover{transform:translateY(-4px);box-shadow:0 14px 28px #00000014}}.tms-horizontal-timeline__link{z-index:3;border-radius:inherit;position:absolute;top:0;bottom:0;left:0;right:0}.tms-horizontal-timeline__link:focus-visible{outline:2px solid var(--tms-primary-color,#4f46e5);outline-offset:2px}.tms-horizontal-timeline__icon{width:var(--tms-htl-icon-node,2em);height:var(--tms-htl-icon-node,2em);color:var(--tms-primary-color,#4f46e5);border-radius:.5em;justify-content:center;align-items:center;margin-bottom:1rem;font-size:1.25rem;display:inline-flex}.tms-horizontal-timeline__icon svg{fill:currentColor;width:1em;height:1em}.tms-horizontal-timeline__icon svg[fill=none]{fill:none;stroke:currentColor}.tms-horizontal-timeline__icon img{width:1em;height:1em}.tms-horizontal-timeline__title{color:var(--tms-heading-color,#111827);letter-spacing:normal;margin:0 0 1rem;font-size:1.125rem;line-height:1.35}.tms-horizontal-timeline__text{color:var(--tms-body-color,#4b5563);margin:0;font-size:.9375rem;line-height:1.6}.tms-horizontal-timeline__text>:last-child{margin-bottom:0}.tms-horizontal-timeline__nav{margin-top:max(0px, calc(var(--tms-htl-nav-gap) - var(--tms-htl-card-bleed)));padding-inline:var(--tms-htl-edge);justify-content:flex-end;gap:10px;display:none}.tms-horizontal-timeline--enhanced .tms-horizontal-timeline__nav{display:flex}.tms-horizontal-timeline__arrow{width:var(--tms-htl-arrow);height:var(--tms-htl-arrow);-webkit-appearance:none;appearance:none;border:1px solid var(--tms-border-color,#e5e7eb);color:var(--tms-heading-color,#111827);cursor:pointer;transition:color .3s ease, background-color .3s ease, border-color .3s ease, opacity .3s ease, transform .3s var(--tms-htl-ease);background-color:#0000;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.tms-horizontal-timeline__arrow:hover:not(:disabled){border-color:var(--tms-primary-color,#4f46e5);color:var(--tms-primary-color,#4f46e5);transform:translateY(-2px)}.tms-horizontal-timeline__arrow:focus-visible{border-color:var(--tms-primary-color,#4f46e5);color:var(--tms-primary-color,#4f46e5);transform:translateY(-2px)}.tms-horizontal-timeline__arrow:focus-visible{outline:2px solid var(--tms-primary-color,#4f46e5);outline-offset:3px}.tms-horizontal-timeline__arrow:disabled{opacity:.35;cursor:default}.tms-horizontal-timeline__arrow-chevron{border-top:2px solid;border-right:2px solid;width:9px;height:9px;transform:rotate(45deg)translate(-1px,1px)}.tms-horizontal-timeline__arrow--prev .tms-horizontal-timeline__arrow-chevron{transform:rotate(-135deg)translate(-1px,1px)}@media (hover:hover) and (pointer:fine){.tms-horizontal-timeline--enhanced .tms-horizontal-timeline__viewport{touch-action:pan-y;cursor:grab;overflow-x:hidden}.tms-horizontal-timeline--dragging .tms-horizontal-timeline__viewport{cursor:grabbing}}.tms-horizontal-timeline--dragging{-webkit-user-select:none;user-select:none}.tms-horizontal-timeline--dragging .tms-horizontal-timeline__track{pointer-events:none}@media (max-width:767px){.tms-horizontal-timeline--ghost .tms-horizontal-timeline__date{font-size:clamp(2rem,11vw,2.75rem)}.tms-horizontal-timeline__card{padding:20px}.tms-horizontal-timeline__nav{--tms-htl-nav-gap:16px}}@media (prefers-reduced-motion:reduce){.tms-horizontal-timeline__date,.tms-horizontal-timeline__node,.tms-horizontal-timeline__node:after,.tms-horizontal-timeline__card,.tms-horizontal-timeline__arrow{transition:none}.tms-horizontal-timeline__card:hover,.tms-horizontal-timeline__arrow:hover:not(:disabled){transform:none}.tms-horizontal-timeline__arrow:focus-visible{transform:none}}