/* =========================================================
   GM SHOCK Motion - Service Journey [gms_journey] + Stacked Cards [gms_cards]
   ========================================================= */
.gms-journey, .gms-cards {
	--sx-purple: #7B2CF5;
	--sx-ink: #111;
	--sx-text: #3a3a3a;
	font-family: var(--e-global-typography-primary-font-family, 'Outfit'), 'Montserrat', system-ui, sans-serif;
	color: var(--sx-text);
}
.gms-journey__head, .gms-cards__head { max-width: 860px; margin: 0 auto 10px; padding: 0 24px; text-align: center; }
.gms-journey__head h2, .gms-cards__head h2 { margin: 0 0 12px; color: var(--sx-purple); font-weight: 800; font-size: clamp(26px, 3vw, 38px); line-height: 1.2; }
.gms-journey__head p, .gms-cards__head p { margin: 0; font-size: 15.5px; line-height: 1.7; }

.gms-chips { list-style: none !important; margin: 0 0 18px !important; padding: 0 !important; display: flex; flex-wrap: wrap; gap: 8px; }
.gms-chips li { list-style: none !important; margin: 0 !important; font-weight: 700; font-size: 12px; line-height: 1; padding: 8px 12px; border-radius: 7px; background: #000; color: #fff; transition: transform .25s, background .25s; }
.gms-chips li::marker { content: none; }
.gms-chips li:nth-child(3n+2) { background: var(--sx-purple); }
.gms-chips li:hover { transform: translateY(-2px); }
.gms-chips li > a, .gms-chips li > span { display: block; color: inherit !important; text-decoration: none !important; }
.gms-chips li.is-link { padding: 0; }
.gms-chips li.is-link > a { padding: 8px 12px; border-radius: inherit; }
.gms-chips li.is-link > a::after { content: '\2197'; display: inline-block; margin-left: 6px; font-size: .9em; opacity: 0; transform: translate(-4px, 2px); transition: opacity .25s, transform .25s; }
.gms-chips li.is-link:hover { background: var(--tg-hover, #5B14CC) !important; box-shadow: 0 8px 18px -8px rgba(123,44,245,.6); }
.gms-chips li.is-link:hover > a::after { opacity: 1; transform: none; }
.gms-chips li.is-link > a:focus-visible { outline: 2px solid var(--tg-hover, #5B14CC); outline-offset: 3px; }

/* =================== Tag Block [gms_tags] =================== */
.gms-tags {
	--tg-h: #7B2CF5; --tg-t: #3a3a3a; --tg-c1: #000; --tg-c2: #7B2CF5; --tg-ct: #fff; --tg-hover: #5B14CC;
	--tg-hfs: clamp(28px, 3.2vw, 40px); --tg-cfs: 15px; --tg-cpad: 12px 16px;
	font-family: var(--e-global-typography-primary-font-family, 'Outfit'), 'Montserrat', system-ui, sans-serif;
}
.gms-tags--h-sm { --tg-hfs: clamp(22px, 2.4vw, 30px); }
.gms-tags--h-lg { --tg-hfs: clamp(32px, 4vw, 52px); }
.gms-tags--c-sm { --tg-cfs: 12.5px; --tg-cpad: 8px 12px; }
.gms-tags--c-lg { --tg-cfs: 17px; --tg-cpad: 14px 20px; }
.gms-tags--center { text-align: center; }
.gms-tags__title { margin: 0 0 14px; color: var(--tg-h); font-weight: 800; font-size: var(--tg-hfs); line-height: 1.15; }
.gms-tags__text { margin: 0 0 20px; color: var(--tg-t); font-size: 17px; line-height: 1.7; max-width: 680px; }
.gms-tags--center .gms-tags__text { margin-left: auto; margin-right: auto; }
.gms-tags .gms-chips { gap: 10px; margin: 0 !important; }
.gms-tags--center .gms-chips { justify-content: center; }
.gms-tags .gms-chips li { font-size: var(--tg-cfs); padding: var(--tg-cpad); border-radius: 8px; background: var(--tg-c1); color: var(--tg-ct); }
.gms-tags .gms-chips li.is-link { padding: 0; }
.gms-tags .gms-chips li.is-link > a { padding: var(--tg-cpad); }
.gms-tags--p-mix .gms-chips li:nth-child(3n+2) { background: var(--tg-c2); }
.gms-tags--p-alternate .gms-chips li:nth-child(even) { background: var(--tg-c2); }
.gms-tags--p-two .gms-chips li { background: var(--tg-c2); }
.gms-tags--p-one .gms-chips li:nth-child(3n+2) { background: var(--tg-c1); }

html.gms-sx-js .gms-tags--animate:not(.is-in) .gms-chips li { opacity: 0; transform: translateY(12px) scale(.92); }
.gms-tags--animate.is-in .gms-chips li { animation: gmsTagPop .5s cubic-bezier(.3,1.5,.5,1) calc(var(--ci, 0) * .07s) backwards; }
html.gms-sx-js .gms-tags--animate:not(.is-in) .gms-tags__title, html.gms-sx-js .gms-tags--animate:not(.is-in) .gms-tags__text { opacity: 0; transform: translateY(14px); }
.gms-tags--animate .gms-tags__title, .gms-tags--animate .gms-tags__text { transition: opacity .6s ease, transform .7s cubic-bezier(.22,1,.36,1); }
@keyframes gmsTagPop { from { opacity: 0; transform: translateY(12px) scale(.92); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .gms-tags--animate .gms-chips li { animation: none !important; opacity: 1 !important; transform: none !important; } }

/* =================== Service Journey =================== */
.gms-journey { --j-line: #7B2CF5; --j-char: 120px; position: relative; padding: 50px 0 20px; }
.gms-journey__track { position: relative; max-width: 1180px; margin: 0 auto; padding: 40px 32px 100px; }
.gms-journey__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; z-index: 0; }
.gms-journey__line-bg { fill: none; stroke: color-mix(in srgb, var(--j-line) 18%, transparent); stroke-width: 4; stroke-linecap: round; stroke-dasharray: 2 12; }
.gms-journey__line { fill: none; stroke: var(--j-line); stroke-width: 5; stroke-linecap: round; filter: drop-shadow(0 0 6px color-mix(in srgb, var(--j-line) 45%, transparent)); }
.gms-journey--noline .gms-journey__svg { display: none; }

.gms-journey__char {
	position: absolute; left: 0; top: 0; z-index: 4; pointer-events: none;
	width: var(--j-char) !important; max-width: none !important; height: auto !important;
	transform: translate3d(-300px, -300px, 0) translate(-50%, -50%);
	will-change: transform; transition: opacity .35s ease, scale .35s ease;
	filter: drop-shadow(0 10px 18px rgba(60, 10, 140, .35));
}
.gms-journey__char.is-away { opacity: 0; scale: .55; }

.gms-journey__item { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; padding: 70px 0; }
.gms-journey__item.is-rev .gms-journey__text { order: 2; }
.gms-journey__title { margin: 0 0 12px; color: var(--sx-purple); font-weight: 800; font-size: clamp(24px, 2.6vw, 34px); line-height: 1.2; }
.gms-journey__intro { margin: 0 0 16px; font-size: 15px; line-height: 1.7; }
.gms-journey__list-title { font-weight: 800; color: var(--sx-ink); font-size: 14px; margin-bottom: 10px; }
.gms-journey__extra { font-size: 14px; line-height: 1.7; margin: 0 0 18px; white-space: pre-line; }
.gms-journey__frame { position: relative; max-width: 540px; margin: 0 auto; }
.gms-journey__img { display: block; width: 100% !important; height: auto !important; max-width: 100% !important; }
.gms-journey__img--char { position: absolute !important; inset: 0; height: 100% !important; object-fit: contain; opacity: 0; transform: scale(.97); transition: opacity .45s ease, transform .5s cubic-bezier(.3,1.4,.5,1); }
.gms-journey__item.is-docked .gms-journey__img--char { opacity: 1; transform: none; }
.gms-journey__dock { position: absolute; left: 50%; top: 50%; width: 1px; height: 1px; }
.gms-journey__frame::after { content: ''; position: absolute; left: 50%; top: 50%; width: 60%; aspect-ratio: 1; border-radius: 50%; transform: translate(-50%, -50%) scale(.6); border: 3px solid color-mix(in srgb, var(--j-line) 50%, transparent); opacity: 0; pointer-events: none; }
.gms-journey__item.is-docked .gms-journey__frame::after { animation: gmsDockRing 1.1s ease-out; }
@keyframes gmsDockRing { 0% { opacity: .9; transform: translate(-50%, -50%) scale(.5); } 100% { opacity: 0; transform: translate(-50%, -50%) scale(1.25); } }

html.gms-sx-js .gms-journey__text > * { opacity: 0; transform: translateY(22px); transition: opacity .6s ease, transform .7s cubic-bezier(.22,1,.36,1); }
html.gms-sx-js .gms-journey__item.is-in .gms-journey__text > * { opacity: 1; transform: none; }
html.gms-sx-js .gms-journey__item.is-in .gms-journey__text > *:nth-child(2) { transition-delay: .08s; }
html.gms-sx-js .gms-journey__item.is-in .gms-journey__text > *:nth-child(3) { transition-delay: .16s; }
html.gms-sx-js .gms-journey__item.is-in .gms-journey__text > *:nth-child(n+4) { transition-delay: .24s; }
html.gms-sx-js .gms-journey__frame { opacity: 0; transform: scale(.94); transition: opacity .7s ease, transform .8s cubic-bezier(.22,1,.36,1); }
html.gms-sx-js .gms-journey__item.is-in .gms-journey__frame { opacity: 1; transform: none; }

@media (max-width: 900px) {
	.gms-journey { --j-char: min(var(--j-char), 80px); }
	.gms-journey__track { padding: 24px 20px 70px 34px; }
	.gms-journey__item { grid-template-columns: 1fr; gap: 26px; padding: 44px 0; }
	.gms-journey__item.is-rev .gms-journey__text { order: 0; }
}
@media (prefers-reduced-motion: reduce) {
	.gms-journey__char { display: none; }
	html.gms-sx-js .gms-journey__text > *, html.gms-sx-js .gms-journey__frame { opacity: 1; transform: none; transition: none; }
	.gms-journey__img--char { opacity: 1; }
}

/* =================== Stacked Cards =================== */
.gms-cards { --c-top: 84px; --c-peek: 26px; --c-minh: 480px; --c-radius: 26px; position: relative; padding: 50px 0 30px; }
.gms-cards__list { list-style: none !important; margin: 30px auto 0 !important; max-width: 1180px; padding: 0 32px !important; display: grid; gap: 34px; }
.gms-cards__list::after { content: ''; display: block; height: calc(var(--c-count, 4) * var(--c-peek) + 22vh); }
.gms-cards__card { position: sticky; top: calc(var(--c-top) + var(--i) * var(--c-peek)); list-style: none !important; margin: 0 !important; }
.gms-cards__card::marker { content: none; }
.gms-cards__inner {
	--dim: 0;
	position: relative; display: grid; grid-template-columns: .95fr 1.05fr;
	min-height: var(--c-minh); border-radius: var(--c-radius); overflow: hidden;
	background: #fff; border: 1.5px solid #E7E2F2;
	box-shadow: 0 -8px 30px rgba(40,10,90,.06), 0 24px 60px rgba(40,10,90,.12);
	transform-origin: 50% 0; will-change: transform;
}
.gms-cards__inner::after { content: ''; position: absolute; inset: 0; background: #0b0614; opacity: calc(var(--dim) * .35); pointer-events: none; border-radius: inherit; }
.gms-cards__card.is-img-right .gms-cards__media { order: 2; }
.gms-cards__media { position: relative; display: flex; align-items: center; justify-content: center; padding: 34px; background: #F3ECFF; overflow: hidden; }
.gms-cards__media::before { content: ''; position: absolute; width: 70%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(closest-side, rgba(123,44,245,.28), transparent); filter: blur(10px); }
.gms-cards__img { position: relative; width: 100% !important; max-height: 430px; height: auto !important; object-fit: contain; transition: transform .8s cubic-bezier(.22,1,.36,1); }
.gms-cards__card:hover .gms-cards__img { transform: scale(1.04) rotate(-1deg); }
.gms-cards__body { display: flex; flex-direction: column; justify-content: center; padding: 48px 46px; }
.gms-cards__num { font-weight: 900; font-size: 54px; line-height: 1; color: transparent; -webkit-text-stroke: 1.5px var(--sx-purple); margin-bottom: 10px; opacity: .55; }
.gms-cards__title { margin: 0 0 8px; color: var(--sx-purple); font-weight: 800; font-size: clamp(22px, 2.4vw, 32px); line-height: 1.2; text-transform: uppercase; }
.gms-cards__subtitle { margin: 0 0 12px; color: #111; font-weight: 700; font-size: 18px; }
.gms-cards__text { margin: 0 0 18px; font-size: 15px; line-height: 1.7; white-space: pre-line; }
.gms-cards__body .gms-btn { align-self: flex-start; }
.gms-cards--no-num .gms-cards__num { display: none; }

.gms-cards__inner.is-purple { background: var(--sx-purple); border-color: var(--sx-purple); color: #EDE4FF; }
.gms-cards__inner.is-purple .gms-cards__media { background: rgba(255,255,255,.1); }
.gms-cards__inner.is-purple .gms-cards__title, .gms-cards__inner.is-purple .gms-cards__subtitle { color: #fff; }
.gms-cards__inner.is-purple .gms-cards__num { -webkit-text-stroke-color: #fff; }
.gms-cards__inner.is-purple .gms-chips li { background: #fff; color: #3d0f8a; }
.gms-cards__inner.is-purple .gms-chips li:nth-child(3n+2) { background: #000; color: #fff; }
.gms-cards__inner.is-dark { background: #000; border-color: #000; color: #d8d2e8; }
.gms-cards__inner.is-dark .gms-cards__media { background: #15101f; }
.gms-cards__inner.is-dark .gms-cards__title { color: #A979FF; }
.gms-cards__inner.is-dark .gms-cards__subtitle { color: #fff; }

html.gms-sx-js .gms-cards--enter .gms-cards__card { opacity: 0; translate: 0 40px; transition: opacity .7s ease, translate .8s cubic-bezier(.22,1,.36,1); }
html.gms-sx-js .gms-cards--enter .gms-cards__card.is-in { opacity: 1; translate: 0 0; }

@media (max-width: 900px) {
	.gms-cards { --c-top: 66px; --c-peek: 14px; }
	.gms-cards__list { padding-left: 16px !important; padding-right: 16px !important; gap: 22px; }
	.gms-cards__inner { grid-template-columns: 1fr; min-height: 0; }
	.gms-cards__card.is-img-right .gms-cards__media { order: 0; }
	.gms-cards__media { padding: 22px; max-height: 260px; }
	.gms-cards__img { max-height: 210px; }
	.gms-cards__body { padding: 26px 22px 30px; }
	.gms-cards__num { font-size: 38px; }
}
@media (prefers-reduced-motion: reduce) {
	html.gms-sx-js .gms-cards--enter .gms-cards__card { opacity: 1; translate: none; transition: none; }
}
