/* slow x1.6 applied 2026-10-23 */
/* v2.css: the 2026-10-23 redesign layer, loaded after main.css/lines.css/motion.css.
   sysenta.com = «units» hero (dark band in both themes); product sites = the living metro line.
   Start states of every animation live under html.mo only, so no-JS and reduced motion show the final picture. */

/* ---------- shared ---------- */
.v2 .w{display:inline-block}
.mo .v2 .w{opacity:0;transform:translateY(32px);animation:v2up 1.28s cubic-bezier(.2,.8,.2,1) forwards}
.mo .v2 .w:nth-child(2){animation-delay:.08s}.mo .v2 .w:nth-child(3){animation-delay:.16s}.mo .v2 .w:nth-child(4){animation-delay:.24s}
.mo .v2 .w:nth-child(5){animation-delay:.32s}.mo .v2 .w:nth-child(6){animation-delay:0.64s}.mo .v2 .w:nth-child(7){animation-delay:0.77s}
.mo .v2 .w:nth-child(8){animation-delay:0.9s}.mo .v2 .w:nth-child(9){animation-delay:1.02s}.mo .v2 .w:nth-child(10){animation-delay:1.15s}
@keyframes v2up{to{opacity:1;transform:none}}
@keyframes v2fade{to{opacity:1}}
@keyframes v2pop{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes v2draw{to{stroke-dashoffset:0}}
.v2 .btn{transition:transform .25s var(--sx-ease),background .25s}
.v2 .btn:hover{transform:translateY(-2px)}

/* ---------- sysenta.com: «units» hero ---------- */
.v2u{--uk:#111316;--uk2:#171A1E;--ul:#262A30;--ut:#F2F3F5;--ut2:#AEB4BC;--ut3:#8E959E;background:var(--uk);color:var(--ut);padding-block:clamp(2rem,4vw,3.5rem) clamp(1.5rem,3vw,2.5rem);overflow:hidden}
.v2u-in{display:grid;gap:2rem;align-items:center}
@media (min-width:1000px){.v2u-in{grid-template-columns:minmax(0,1fr) minmax(0,520px);gap:3rem}}
.v2u-h1{font-size:clamp(2.3rem,1.3rem + 3.6vw,4.6rem);line-height:1.12;font-weight:700;margin:0;letter-spacing:-.01em;color:var(--ut)}
html[lang="en"] .v2u-h1{letter-spacing:-.03em;line-height:1.04}
.v2u-h1 br+.w,.v2u-h1 br~.w{color:var(--ut2)}
.v2u-lead{color:var(--ut2);font-size:clamp(1rem,.95rem + .3vw,1.2rem);line-height:1.9;margin:1.1rem 0 0;max-width:38em}
.v2u-acts{display:flex;flex-wrap:wrap;gap:.75rem;margin:1.5rem 0 0}
.v2u .v2-btn{background:var(--ut);color:var(--uk);border-color:var(--ut)}
.v2u .v2-btn-line{background:transparent;color:var(--ut);border:1px solid #4A515A}
.v2u .v2-btn-line:hover{border-color:var(--ut)}
.v2u-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1.5rem;margin:1.8rem 0 0;padding-top:1.2rem;border-top:1px solid var(--ul)}
@media (min-width:700px){.v2u-facts{grid-template-columns:repeat(4,minmax(0,1fr))}}
.v2u-facts dt{font-size:.8125rem;color:var(--ut3)}.v2u-facts dd{margin:0;font-weight:700;font-size:.9375rem}
.mo .v2u-lead,.mo .v2u-acts,.mo .v2u-facts{opacity:0;animation:v2fade 1.12s 0.96s forwards}
.mo .v2u-acts{animation-delay:1.2s}.mo .v2u-facts{animation-delay:1.44s}

.v2u-art{position:relative;width:min(100%,520px);aspect-ratio:1;margin-inline:auto}
.v2u-svg{position:absolute;inset:0;width:100%;height:100%}
.v2u-svg .un rect{fill:var(--c)}
.v2u-svg .core{fill:var(--ut)}
.v2u-svg .sp{stroke:var(--ul);stroke-width:2}
.v2u-svg .pk{fill:var(--ut)}
.mo .v2u-svg .un{transform-box:fill-box;transform-origin:center}
.mo .v2u-svg .u1{animation:v2u1 1.6s .2s cubic-bezier(.2,.8,.2,1) both}.mo .v2u-svg .u2{animation:v2u2 1.6s .35s cubic-bezier(.2,.8,.2,1) both}
.mo .v2u-svg .u3{animation:v2u3 1.6s 0.8s cubic-bezier(.2,.8,.2,1) both}.mo .v2u-svg .u4{animation:v2u4 1.6s 1.04s cubic-bezier(.2,.8,.2,1) both}
@keyframes v2u1{from{transform:translate(-30px,-40px);opacity:0}}@keyframes v2u2{from{transform:translate(40px,-30px);opacity:0}}
@keyframes v2u3{from{transform:translate(30px,40px);opacity:0}}@keyframes v2u4{from{transform:translate(-40px,30px);opacity:0}}
.mo .v2u-svg .un rect{animation:v2tint 1.92s 2.72s forwards}
@keyframes v2tint{to{fill:var(--ut)}}
.v2u-svg .un rect{fill:var(--ut)}
.mo .v2u-svg .un rect{fill:var(--c)}
.mo .v2u-svg .core{transform-box:fill-box;transform-origin:center;animation:v2pop 0.8s 1.92s cubic-bezier(.3,1.6,.5,1) both}
.mo .v2u-svg .sp{stroke-dasharray:240;stroke-dashoffset:240;animation:v2draw 1.28s 2.88s forwards}
.v2u .orb{position:absolute;transform:translate(-50%,-50%);font-size:clamp(1.1rem,1.8vw,1.55rem);transition:transform .3s var(--sx-ease)}
.v2u .orb .bullet{width:2.4em;height:2.4em;border-radius:.55em}
.v2u .orb:hover,.v2u .orb:focus-visible{transform:translate(-50%,-50%) scale(1.12)}
.mo .v2u .orb{animation:v2orb 0.72s cubic-bezier(.3,1.6,.5,1) both}
@keyframes v2orb{from{transform:translate(-50%,-50%) scale(0)}}
.v2u .o0{left:50.00%;top:9.64%;animation-delay:3.2s}.v2u .o1{left:78.54%;top:21.46%;animation-delay:3.36s}.v2u .o2{left:90.36%;top:50.00%;animation-delay:3.52s}.v2u .o3{left:78.54%;top:78.54%;animation-delay:3.68s}
.v2u .o4{left:50.00%;top:90.36%;animation-delay:3.84s}.v2u .o5{left:21.46%;top:78.54%;animation-delay:4s}.v2u .o6{left:9.64%;top:50.00%;animation-delay:4.16s}.v2u .o7{left:21.46%;top:21.46%;animation-delay:4.32s}

.v2u-cards{list-style:none;margin:2rem 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
@media (min-width:700px){.v2u-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:1200px){.v2u-cards{grid-template-columns:repeat(8,minmax(0,1fr))}}
.ucard{display:grid;gap:.35rem;height:100%;padding:.9rem;border:1px solid var(--ul);border-radius:14px;background:var(--uk2);color:var(--ut);text-decoration:none;transition:transform .3s var(--sx-ease),border-color .3s,box-shadow .3s}
.ucard .bullet{font-size:1rem;margin-bottom:.3rem}
.ucard b{font-size:.9375rem}.ucard small{color:var(--ut3);font-size:.8125rem;line-height:1.5}
.ucard:hover,.ucard:focus-visible,.ucard.is-hot{transform:translateY(-6px);border-color:var(--c);box-shadow:inset 0 -3px 0 var(--c)}
.mo .v2u-cards li{opacity:0;animation:v2fade 0.8s forwards}
.mo .v2u-cards li:nth-child(1){animation-delay:3.84s}.mo .v2u-cards li:nth-child(2){animation-delay:3.97s}.mo .v2u-cards li:nth-child(3){animation-delay:4.1s}.mo .v2u-cards li:nth-child(4){animation-delay:4.22s}
.mo .v2u-cards li:nth-child(5){animation-delay:4.35s}.mo .v2u-cards li:nth-child(6){animation-delay:4.48s}.mo .v2u-cards li:nth-child(7){animation-delay:4.61s}.mo .v2u-cards li:nth-child(8){animation-delay:4.74s}

/* ---------- product sites: the living line ---------- */
.v2-prod .ride-hero{background:color-mix(in srgb,var(--c) 6%,var(--sx-ground))}
.mo .v2-prod .lh-value{animation:v2up 1.28s cubic-bezier(.2,.8,.2,1) both}
.mo .v2-prod .lh-lead,.mo .v2-prod .ride-hero .acts,.mo .v2-prod .lh-note{opacity:0;animation:v2fade 1.12s 0.64s forwards}
.mo .v2-prod .ride-hero .acts{animation-delay:0.88s}.mo .v2-prod .lh-note{animation-delay:1.12s}
.mo .v2-prod .ride-track::before{transform:scaleX(0);transform-origin:right;animation:v2line 2.24s .3s cubic-bezier(.4,0,.2,1) forwards}
html[dir="ltr"].mo .v2-prod .ride-track::before{transform-origin:left}
@keyframes v2line{to{transform:scaleX(1)}}
.mo .v2-prod .ride label{opacity:0;animation:v2fade 0.64s forwards}
.mo .v2-prod .ride label:nth-of-type(1){animation-delay:0.8s}.mo .v2-prod .ride label:nth-of-type(2){animation-delay:0.99s}.mo .v2-prod .ride label:nth-of-type(3){animation-delay:1.18s}
.mo .v2-prod .ride label:nth-of-type(4){animation-delay:1.38s}.mo .v2-prod .ride label:nth-of-type(5){animation-delay:1.57s}.mo .v2-prod .ride label:nth-of-type(6){animation-delay:1.76s}
.mo .v2-prod .ride label:nth-of-type(7){animation-delay:1.95s}.mo .v2-prod .ride label:nth-of-type(8){animation-delay:2.14s}.mo .v2-prod .ride label:nth-of-type(9){animation-delay:2.34s}
.mo .v2-prod .ride label:nth-of-type(10){animation-delay:2.53s}
/* the train: a capsule in the line colour (not a ring), gliding between stations */
.v2-prod .ride-train{width:46px;height:24px;margin-inline-start:-23px;top:8px;border-radius:12px;border:3px solid var(--sx-ground);background:var(--sx-text);transition:inset-inline-start 1.44s cubic-bezier(.65,0,.35,1)}
.v2-prod .ride-shot img{transition:opacity 0.8s}
.v2-prod .lh-media img,.v2-prod .ride-shot img{border-radius:14px;border:2px solid var(--sx-text)}
.v2-prod .ride-progress{height:3px;background:var(--sx-line);border-radius:2px;margin-top:.5rem;overflow:hidden}
.v2-prod .ride-progress i{display:block;height:100%;width:0;background:var(--c)}
.v2-prod .ride-progress.run i{width:100%;transition:width var(--dwell,7.2s) linear}


/* ---------- every section moves (owner 2026-10-23: «كل جزء يتحرك»): v2.js adds .v2in once a block is in view ---------- */
/* headings: a short bar draws under each section title */
.v2 .sec .h2{position:relative}
.v2 .sec .h2::after{content:"";display:block;width:56px;height:4px;border-radius:2px;background:var(--c,var(--ink));margin-top:.55rem}
.mo .v2 .sec .h2::after{transform:scaleX(0);transform-origin:right;transition:transform 1.28s .15s var(--sx-ease)}
html[dir="ltr"].mo .v2 .sec .h2::after{transform-origin:left}
.mo .v2 .sec .h2.v2in::after{transform:scaleX(1)}

/* lines (routes): the line draws, stations pop, a train rides it; the row tints on hover */
.v2 .route{transition:background .3s,padding .3s}
.v2 .route:hover{background:color-mix(in srgb,var(--c) 7%,transparent);padding-inline:1rem;border-radius:10px}
.mo .v2 .route .stops::before{transform:scaleX(0);transform-origin:right;transition:transform 1.92s var(--sx-ease)}
html[dir="ltr"].mo .v2 .route .stops::before{transform-origin:left}
.mo .v2 .route.v2in .stops::before{transform:scaleX(1)}
.mo .v2 .route .stops li::before{transform:scale(0);transition:transform 0.72s cubic-bezier(.3,1.6,.5,1)}
.mo .v2 .route.v2in .stops li::before{transform:scale(1)}
.mo .v2 .route .stops li:nth-child(1)::before{transition-delay:0.8s}.mo .v2 .route .stops li:nth-child(2)::before{transition-delay:1.12s}
.mo .v2 .route .stops li:nth-child(3)::before{transition-delay:1.44s}.mo .v2 .route .stops li:nth-child(4)::before{transition-delay:1.76s}
.v2-tr{position:absolute;top:6px;inset-inline-start:0;width:30px;height:14px;border-radius:7px;background:var(--ink);border:2px solid var(--ground);pointer-events:none;opacity:0;z-index:1}
.mo .v2 .route.v2in .v2-tr{opacity:1;transition:opacity .3s 2.08s;animation:v2ride 11.2s 2.08s ease-in-out infinite alternate}
@keyframes v2ride{from{inset-inline-start:0}to{inset-inline-start:calc(100% - 30px)}}
.mo .v2 .route .bullet-lg{transition:transform 0.64s cubic-bezier(.3,1.6,.5,1)}
.mo .v2 .route:hover .bullet-lg{transform:rotate(-6deg) scale(1.08)}

/* screenshots row: cards rise, the lit card lifts and its screen pans */
.mo .v2 .plat{opacity:0;transform:translateY(30px);transition:opacity 0.96s,transform 0.96s var(--sx-ease)}
.mo .v2 .plat.v2in{opacity:1;transform:none}
.v2 .plat a{transition:transform 0.64s var(--sx-ease),box-shadow 0.64s}
.v2 .plat img{transition:transform 3.84s ease-in-out}
.v2 .plat.is-hot a,.v2 .plat a:hover{transform:translateY(-8px);box-shadow:var(--sx-sh3)}
.v2 .plat.is-hot img,.v2 .plat a:hover img{transform:scale(1.07) translateY(-2%)}

/* the one-account journey: the rail draws down, stops pop in turn */
.mo .v2 .journey::before{transform:scaleY(0);transform-origin:top;transition:transform 2.56s var(--sx-ease)}
.mo .v2 .journey.v2in::before{transform:scaleY(1)}
@media (min-width:900px){.mo .v2 .journey:not(.journey-col)::before{transform:scaleX(0);transform-origin:right}html[dir="ltr"].mo .v2 .journey:not(.journey-col)::before{transform-origin:left}.mo .v2 .journey.v2in:not(.journey-col)::before{transform:scaleX(1)}}
.mo .v2 .journey li{opacity:0;transform:translateX(16px);transition:opacity 0.8s,transform 0.8s var(--sx-ease)}
html[dir="ltr"].mo .v2 .journey li{transform:translateX(-16px)}
.mo .v2 .journey.v2in li{opacity:1;transform:none}
.mo .v2 .journey.v2in li:nth-child(2){transition-delay:.3s}.mo .v2 .journey.v2in li:nth-child(3){transition-delay:0.96s}
.mo .v2 .journey.v2in li:nth-child(4){transition-delay:1.44s}.mo .v2 .journey.v2in li:nth-child(5){transition-delay:1.92s}

/* tables: rows slide in one by one, the line colour grows along each row's start edge */
.v2 .dep tbody tr{position:relative;transition:background .25s}
.v2 .dep tbody tr:hover{background:color-mix(in srgb,var(--c,var(--ink)) 6%,transparent)}
.mo .v2 .dep tbody tr{opacity:0;transform:translateX(24px);transition:opacity 0.72s,transform 0.72s var(--sx-ease),background .25s}
html[dir="ltr"].mo .v2 .dep tbody tr{transform:translateX(-24px)}
.mo .v2 .dep.v2in tbody tr{opacity:1;transform:none}
.v2 .dep tbody th[scope=row],.v2 .dep tbody tr>td:first-child{box-shadow:inset -4px 0 0 var(--c,transparent)}
html[dir="ltr"] .v2 .dep tbody th[scope=row],html[dir="ltr"] .v2 .dep tbody tr>td:first-child{box-shadow:inset 4px 0 0 var(--c,transparent)}

/* price table: a bar per line, as long as its real starting price (catalog), growing in */
.v2-bar{display:block;height:6px;border-radius:3px;background:var(--c,var(--ink));margin-top:.35rem;width:var(--w,0%);max-width:220px}
.mo .v2 .dep .v2-bar{transform:scaleX(0);transform-origin:right;transition:transform 1.6s var(--sx-ease)}
html[dir="ltr"].mo .v2 .dep .v2-bar{transform-origin:left}
.mo .v2 .dep.v2in .v2-bar{transform:scaleX(1);transition-delay:0.64s}

/* plan cards (pricing): rise in turn; the popular plan's border breathes */
.mo .v2 .plan{opacity:0;transform:translateY(26px);transition:opacity 0.8s,transform 0.8s var(--sx-ease)}
.mo .v2 .plan.v2in{opacity:1;transform:none}
.v2 .plan{transition:transform .3s var(--sx-ease)}
.v2 .plan:hover{transform:translateY(-6px)}
.mo .v2 .plan.is-pop.v2in{animation:v2breathe 4.16s 1.6s ease-in-out infinite}
@keyframes v2breathe{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--c,var(--ink)) 18%,transparent)}}

/* closing band: the coloured lines run */
.mo .v2 .close-lines i{background-size:200% 100%}
.mo .v2 .close.v2in .close-lines i{animation:v2run 1.92s var(--sx-ease) both}
.mo .v2 .close.v2in .close-lines i:nth-child(2n){animation-delay:.12s}.mo .v2 .close.v2in .close-lines i:nth-child(3n){animation-delay:.24s}
@keyframes v2run{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.mo .v2 .close .close-lines i{transform-origin:right}
html[dir="ltr"].mo .v2 .close .close-lines i{transform-origin:left}
.mo .v2 .close .close-plate{opacity:0;transform:scale(.94);transition:opacity 0.96s 1.28s,transform 0.96s 1.28s var(--sx-ease)}
.mo .v2 .close.v2in .close-plate{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){.v2-tr{display:none}}


/* ---------- product inner pages (features, use cases, pricing, contact) — values already slowed ×1.6 ---------- */
/* page head: the bullet drops onto the line, then a short line in the product colour draws under the title */
.mo .v2 .page-top .sign-h .bullet{animation:v2pop .8s .16s cubic-bezier(.3,1.6,.5,1) both}
.mo .v2 .page-top .sign-h>span{display:inline-block;animation:v2up 1.28s .24s cubic-bezier(.2,.8,.2,1) both}
.mo .v2 .page-top .lead,.mo .v2 .page-top .acts,.mo .v2 .page-top .note{opacity:0;animation:v2fade 1.12s .8s forwards}
.v2-prod .page-top{position:relative}
.v2-prod .page-top::after{content:"";display:block;height:8px;border-radius:4px;background:var(--c);margin-top:1.6rem;max-width:420px}
.mo .v2-prod .page-top::after{transform:scaleX(0);transform-origin:right;animation:v2line 1.9s .6s cubic-bezier(.4,0,.2,1) forwards}
html[dir="ltr"].mo .v2-prod .page-top::after{transform-origin:left}

/* vertical lines (features modules, «also» lists, routes): the rail draws down, stations pop, a train follows the reader */
.v2 .mods,.v2 .route-list{--rail:1}
.mo .v2 .mods::before,.mo .v2 .route-list::before{transform:scaleY(0);transform-origin:top;transition:transform 2.6s cubic-bezier(.4,0,.2,1)}
.mo .v2 .mods.v2in::before,.mo .v2 .route-list.v2in::before{transform:scaleY(1)}
.mo .v2 .mod::before,.mo .v2 .route-list li::before{transform:scale(0);transition:transform .72s cubic-bezier(.3,1.6,.5,1)}
.mo .v2 .mod.v2in::before,.mo .v2 .route-list.v2in li::before{transform:scale(1)}
.mo .v2 .route-list li{opacity:0;transform:translateY(18px);transition:opacity .8s,transform .8s var(--sx-ease)}
.mo .v2 .route-list.v2in li{opacity:1;transform:none}
.v2-vt{position:absolute;inset-inline-start:calc(1rem - 7px);top:0;width:24px;height:40px;border-radius:12px;background:var(--sx-text);border:3px solid var(--sx-ground);z-index:2;pointer-events:none;transition:top .25s linear}
.route-list .v2-vt{inset-inline-start:calc(1rem - 7px)}

/* feature modules: copy from one side, screenshot from the other; the list ticks in */
.mo .v2 .mod .mod-copy{opacity:0;transform:translateX(30px);transition:opacity 1.12s,transform 1.12s var(--sx-ease)}
.mo .v2 .mod .mod-shot{opacity:0;transform:translateX(-30px) scale(.97);transition:opacity 1.28s .24s,transform 1.28s .24s var(--sx-ease)}
html[dir="ltr"].mo .v2 .mod .mod-copy{transform:translateX(-30px)}
html[dir="ltr"].mo .v2 .mod .mod-shot{transform:translateX(30px) scale(.97)}
.mo .v2 .mod.v2in .mod-copy,.mo .v2 .mod.v2in .mod-shot{opacity:1;transform:none}
.mo .v2 .mod .mod-copy li{opacity:0;transition:opacity .64s}
.mo .v2 .mod.v2in .mod-copy li{opacity:1}
.mo .v2 .mod.v2in .mod-copy li:nth-child(1){transition-delay:.64s}.mo .v2 .mod.v2in .mod-copy li:nth-child(2){transition-delay:.8s}
.mo .v2 .mod.v2in .mod-copy li:nth-child(3){transition-delay:.96s}.mo .v2 .mod.v2in .mod-copy li:nth-child(4){transition-delay:1.12s}
.mo .v2 .mod.v2in .mod-copy li:nth-child(5){transition-delay:1.28s}.mo .v2 .mod.v2in .mod-copy li:nth-child(6){transition-delay:1.44s}
.v2 .mod-shot a{transition:transform .5s var(--sx-ease),box-shadow .5s}
.v2 .mod-shot img{transition:transform 3.8s ease-in-out}
.v2 .mod-shot a:hover{transform:translateY(-6px);box-shadow:var(--sx-sh3)}
.v2 .mod-shot a:hover img{transform:scale(1.05) translateY(-2%)}

/* phones: rise and settle with a slight tilt */
.mo .v2 .phones figure{opacity:0;transform:translateY(40px) rotate(-3deg);transition:opacity 1.12s,transform 1.12s var(--sx-ease)}
.mo .v2 .phones figure:nth-child(2){transform:translateY(60px) rotate(3deg);transition-delay:.32s}
.mo .v2 .phones.v2in figure{opacity:1;transform:none}

/* use cases: the fit cards rise one after another, the colour bar grows; the price counts (motion.js) */
.v2 .fit{position:relative;border-top-color:transparent}
.v2 .fit::before{content:"";position:absolute;top:-10px;inset-inline:0;height:10px;background:var(--c);border-radius:2px}
.mo .v2 .fit{opacity:0;transform:translateY(26px);transition:opacity .96s,transform .96s var(--sx-ease)}
.mo .v2 .fit.v2in{opacity:1;transform:none}
.mo .v2 .fit::before{transform:scaleX(0);transform-origin:right;transition:transform 1.3s .3s var(--sx-ease)}
html[dir="ltr"].mo .v2 .fit::before{transform-origin:left}
.mo .v2 .fit.v2in::before{transform:scaleX(1)}
.mo .v2 .case{opacity:0;transition:opacity 1.28s}
.mo .v2 .case.v2in{opacity:1}

/* customers and facts */
.mo .v2 .rider-list li{opacity:0;transform:scale(.92);transition:opacity .8s,transform .8s cubic-bezier(.3,1.4,.5,1)}
.mo .v2 .rider-list.v2in li{opacity:1;transform:none}
.v2 .rider{transition:transform .3s var(--sx-ease)}
.v2 .rider:hover{transform:translateY(-4px)}

/* FAQ: questions slide in; an opened answer unfolds */
.mo .v2 .faq details{opacity:0;transform:translateY(14px);transition:opacity .8s,transform .8s var(--sx-ease)}
.mo .v2 .faq.v2in details{opacity:1;transform:none}
.v2 .faq summary::after{transition:background .3s,transform .4s var(--sx-ease)}
.v2 .faq details[open] summary::after{transform:scale(1.2)}
.mo .v2 .faq details[open] p{animation:v2up .8s cubic-bezier(.2,.8,.2,1) both}

/* contact: the trial box and the form fields come in turn */
.mo .v2 .trial-box{opacity:0;transform:translateY(20px);animation:v2up 1.12s .48s cubic-bezier(.2,.8,.2,1) forwards}
.mo .v2 .fld{opacity:0;animation:v2fade .8s forwards}
.mo .v2 .fld:nth-of-type(1){animation-delay:.64s}.mo .v2 .fld:nth-of-type(2){animation-delay:.8s}.mo .v2 .fld:nth-of-type(3){animation-delay:.96s}
.mo .v2 .fld:nth-of-type(4){animation-delay:1.12s}.mo .v2 .fld:nth-of-type(5){animation-delay:1.28s}.mo .v2 .fld:nth-of-type(6){animation-delay:1.44s}
.v2 .fld input:focus,.v2 .fld textarea:focus,.v2 .fld select:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--c,var(--ink)) 30%,transparent)}

@media (prefers-reduced-motion:reduce){.v2-vt{display:none}}

/* ---------- reduced motion: final picture, nothing moves ---------- */
@media (prefers-reduced-motion:reduce){
  .v2u-svg .pk{display:none}
  .v2-prod .ride-train{transition:none}
  .v2-prod .ride-progress{display:none}
}

/* graphics wait until they are on screen (stacked mobile layouts): v2.js adds .v2in */
.mo .v2u-art:not(.v2in) *,.mo .v2u-cards:not(.v2in) *{animation-play-state:paused!important}
.mo .v2u-cards:not(.v2in) li{animation-play-state:paused!important}
