/* V3.5 Website · Our services v2 (11 Nov 2026, cleaner): hero, one grid of 11 service cards, experience, contact. Uses home-talvo.css for the card + preview styles. */
.sx-acts{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.sx-btn{display:inline-flex;align-items:center;gap:8px;height:52px;padding:0 24px;border-radius:999px;font:700 15px var(--tv-font);text-decoration:none;transition:transform .2s var(--tv-ease),background .2s,box-shadow .2s}
.sx-btn:active{transform:scale(.97)}
.sx-btn.is-red{background:var(--tv-red);color:var(--sv-paint-fff);box-shadow:var(--tv-sh-red)}.sx-btn.is-red:hover{background:var(--tv-red-hover)}
.sx-btn.is-red svg{transition:transform .25s var(--tv-ease)}.sx-btn.is-red:hover svg{transform:translateX(3px)}
.sx-btn.is-ghost{background:var(--tv-card);color:var(--tv-ink);border:1px solid var(--tv-line-2)}.sx-btn.is-ghost:hover{box-shadow:var(--tv-sh-card)}
.sx-btn.is-glass{background:rgba(255,255,255,.1);color:var(--sv-paint-fff);border:1px solid rgba(255,255,255,.28)}.sx-btn.is-glass:hover{background:var(--sv-paint-fff);color:var(--tv-ink)}
 .sx-qr{gap:22px;align-items:stretch}
 .sx-qr .v-note{transition-delay:0s}
 .sx-qr-row{display:flex;align-items:center;gap:22px}
 .sx-qr .v-qr-box{width:130px;height:130px;padding:12px}
 .sx-gate{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
 .sx-gate b{font-size:40px;font-weight:800;letter-spacing:-.04em;font-variant-numeric:tabular-nums;line-height:1}
 .sx-gate small{color:var(--tv-mute);font-size:14px}
 .sx-crew{gap:12px}
 .sx-crew-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}
 .sx-crew-h .v-mono{color:var(--tv-mute)}
 .sx-crew-h b{font-size:18px;font-weight:800}
 .sx-role{display:grid;grid-template-columns:auto 90px 1fr auto;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.85);box-shadow:0 8px 20px -16px rgba(0,0,0,.3)}
 .sx-ri{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--tv-green-soft);color:var(--sv-paint-1f8a5b)}
 .sx-rn{font-weight:800;font-size:14px}
 .sx-rb{height:6px;border-radius:6px;background:var(--tv-line);overflow:hidden}
 .sx-rb i{display:block;height:100%;width:var(--w);border-radius:inherit;background:var(--sv-paint-1f8a5b);transform:scaleX(0);transform-origin:left;transition:transform .7s cubic-bezier(.16,1,.3,1) .2s}
 .is-in .sx-rb i{transform:scaleX(1)}
 .sx-role b{font:700 12px var(--tv-mono);color:var(--tv-ink)}
 .sx-role{grid-template-columns:auto 1fr auto}
 .sx-rb{display:none}
 .sx-qr .v-qr-box{width:96px;height:96px}
 .sx-rb i{transform:none;transition:none}
 .sx-qr .v-qr-box{--qr:130px}
 .sx-gate b{display:inline-block;min-width:5ch}
 .sx-pay{gap:16px;justify-content:center}
 .sx-band{position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:14px;align-items:center;padding:16px 20px;border-radius:999px;background:linear-gradient(120deg,var(--sv-paint-141414),var(--sv-paint-3a1420));color:var(--sv-paint-fff);box-shadow:0 18px 30px -20px rgba(0,0,0,.6)}
 .sx-band-chip{grid-row:1/3;width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 35% 35%,var(--sv-paint-ffd36b),var(--sv-paint-c98a12));box-shadow:0 0 0 4px rgba(255,211,107,.18)}
 .sx-band b{font-size:16px;font-weight:800}
 .sx-band small{font:700 11px var(--tv-mono);letter-spacing:.08em;color:var(--sv-paint-d8d5cd)}
 .sx-pay-rows{display:flex;flex-direction:column;gap:8px}
 .sx-pay-r{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-radius:12px;background:rgba(255,255,255,.9);font-size:14px;opacity:0;transform:translateX(-10px);transition:opacity .4s var(--tv-ease),transform .5s var(--tv-ease)}
 .is-in .sx-pay-r{opacity:1;transform:none}
 .is-in .sx-pay-r.is-2{transition-delay:.15s}
 .is-in .sx-pay-r.is-3{transition-delay:.3s}
 .sx-pay-r b{font:700 13px var(--tv-mono)}
 .sx-pay-r b.is-up{color:var(--sv-paint-1f8a5b)}
 .sx-pay-bal{display:flex;justify-content:space-between;align-items:baseline;padding:0 4px}
 .sx-pay-bal .v-mono{color:var(--tv-mute)}
 .sx-pay-bal b{font-size:30px;font-weight:800;letter-spacing:-.03em}
 .sx-pay-r{opacity:1;transform:none;transition:none}
.sv-page{padding:28px var(--o5-edge,clamp(16px,3vw,40px)) 48px;display:flex;flex-direction:column;gap:clamp(56px,7vw,96px)}
.sx-body .tb-backrow.is-auto+.sv-page{padding-top:28px}
.sx-acts,.sv-acts{display:flex;flex-wrap:wrap;gap:10px}
/* hero: centred, calm */
.sv-hero{text-align:center;display:flex;flex-direction:column;align-items:center;padding-top:clamp(8px,3vw,32px)}
.sv-hero .hm-kick{justify-content:center}
.sv-hero h1{margin:6px 0 0;font:800 clamp(40px,5.6vw,72px)/1.02 var(--tv-font);letter-spacing:-.045em;color:var(--tv-ink)}
.sv-hero h1 em{font-style:normal;color:var(--tv-red)}
.sv-hero p{margin:18px 0 0;font-size:18px;line-height:1.55;color:var(--tv-mute);max-width:44ch}
.sv-hero .sv-acts{justify-content:center;margin-top:28px}
.sv-nums{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;width:min(100%,880px);margin:44px 0 0;padding:22px 0;border-block:1px solid var(--tv-line-2)}
.sv-nums>div{display:flex;flex-direction:column-reverse;gap:4px;padding:0 12px}
.sv-nums>div+div{border-left:1px solid var(--tv-line-2)}
.sv-nums dt{font:700 11px var(--tv-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--tv-mute-2)}
.sv-nums dd{margin:0}.sv-nums b{font-size:clamp(28px,3vw,38px);font-weight:800;letter-spacing:-.035em;font-variant-numeric:tabular-nums;color:var(--tv-ink)}
/* section heads */
.sv-sec{scroll-margin-top:100px}
.sv-sec-h{margin-bottom:24px}
.sv-sec-h h2{margin:6px 0 0;font:800 clamp(28px,3vw,40px)/1.1 var(--tv-font);letter-spacing:-.035em;color:var(--tv-ink);max-width:24ch}
/* the grid: same white cards as the home page */
.sv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.sv-card.is-wide{grid-column:span 2}
.sv-card{opacity:0;transform:translateY(14px);transition:opacity .5s var(--tv-ease),transform .5s var(--tv-ease),box-shadow .35s,border-color .35s}
.sv-grid.is-in .sv-card{opacity:1;transform:none}
.sv-grid.is-in .sv-card:hover{transform:translateY(-4px)}
.sv-grid.is-in .sv-card:nth-child(2){transition-delay:.05s}.sv-grid.is-in .sv-card:nth-child(3){transition-delay:.1s}.sv-grid.is-in .sv-card:nth-child(4){transition-delay:.15s}.sv-grid.is-in .sv-card:nth-child(5){transition-delay:.2s}.sv-grid.is-in .sv-card:nth-child(6){transition-delay:.25s}.sv-grid.is-in .sv-card:nth-child(n+7){transition-delay:.3s}
.sv-grid.is-in .sv-card:hover{transition-delay:0s}
.sv-pv{display:contents}
.sv-card .svc3-viz{height:200px}
.sv-card.is-blue .svc3-viz{background:var(--tv-blue-soft)}.sv-card.is-green .svc3-viz{background:var(--tv-green-soft)}.sv-card.is-amber .svc3-viz{background:var(--tv-amber-soft)}.sv-card.is-red .svc3-viz{background:var(--tv-red-soft)}
.sv-card.is-blue .svc3-tag{color:var(--sv-paint-2563eb)}.sv-card.is-green .svc3-tag{color:var(--sv-paint-1f8a5b)}.sv-card.is-amber .svc3-tag{color:var(--sv-paint-b37a0e)}
.sv-card .svc3-txt h3{font-size:21px}
/* ticketing preview inside a light card */
.sv-card .v-live{justify-content:space-between}
.sv-card .v-live-top{color:var(--tv-mute)}.sv-card .v-live-num b{color:var(--tv-ink)}.sv-card .v-live-num span{color:var(--tv-mute)}
.sv-card .v-bars i{background:linear-gradient(180deg,var(--sv-paint-eb003b),rgba(235,0,59,.18))}
/* access: compact */
.sv-card .sx-qr{gap:12px}.sv-card .sx-qr .v-note{display:none}.sv-card .sx-qr .v-qr-box{width:96px;height:96px;--qr:96px;padding:9px}.sv-card .sx-gate b{font-size:30px}
/* crew: three rows */
.sv-card .sx-crew{gap:7px;justify-content:center}.sv-card .sx-crew-h{display:none}.sv-card .sx-role{padding:7px 10px;grid-template-columns:auto 70px 1fr auto}.sv-card .sx-role:nth-child(n+5){display:none}.sv-card .sx-ri{width:26px;height:26px}
.sv-card .sx-pay{gap:10px}.sv-card .sx-band{padding:12px 16px}
/* turnkey browser */
.sv-turn{align-items:center}
.sv-br{width:88%;border-radius:14px;background:var(--sv-paint-fff);box-shadow:0 14px 30px -20px rgba(0,0,0,.4);overflow:hidden}
.sv-br-bar{display:flex;align-items:center;gap:5px;padding:8px 10px;background:var(--tv-skin)}.sv-br-bar i{width:7px;height:7px;border-radius:50%;background:var(--tv-line-3)}
.sv-br-bar span{margin-left:8px;padding:3px 10px;border-radius:999px;background:var(--sv-paint-fff);font:700 10.5px var(--tv-mono);color:var(--tv-mute)}
.sv-br-hd{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;color:var(--sv-paint-fff);animation:sv-brand 6s infinite}
.sv-br-hd b{font-size:15px;font-weight:800}.sv-br-btn{padding:5px 12px;border-radius:999px;background:var(--sv-paint-fff);color:var(--tv-ink);font:700 11.5px var(--tv-font)}
.sv-br-l{height:9px;margin:12px 14px 0;border-radius:6px;background:var(--tv-line)}.sv-br-l.is-s{width:55%;margin-bottom:14px}
@keyframes sv-brand{0%,30%{background:var(--sv-paint-2563eb)}35%,63%{background:var(--sv-paint-1f8a5b)}68%,95%{background:var(--sv-paint-7c3aed)}100%{background:var(--sv-paint-2563eb)}}
/* kiosk */
.sv-kiosk{align-items:center;justify-content:center}
.sv-k{display:flex;flex-direction:column;align-items:center}
.sv-k-scr{display:flex;flex-direction:column;align-items:center;gap:4px;width:170px;padding:16px 12px;border-radius:14px 14px 4px 4px;background:var(--sv-paint-141414);color:var(--sv-paint-fff);text-align:center;border:5px solid var(--sv-paint-2a2a2a)}
.sv-k-scr small{font:700 9.5px var(--tv-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--sv-paint-bdb9b0)}.sv-k-scr b{font-size:14px;font-weight:800}
.sv-k-btn{margin-top:6px;padding:5px 12px;border-radius:999px;background:var(--tv-red);font:700 11px var(--tv-font)}
.sv-k-slot{position:relative;width:120px;height:10px;border-radius:0 0 8px 8px;background:var(--sv-paint-2a2a2a);overflow:visible}
.sv-k-tix{position:absolute;left:50%;top:6px;padding:8px 14px;border-radius:6px;background:var(--sv-paint-fff);border:1px dashed var(--tv-line-3);font:700 10px var(--tv-mono);letter-spacing:.1em;white-space:nowrap;transform:translate(-50%,-14px);opacity:0;transition:transform .7s var(--tv-ease) .3s,opacity .3s .3s}
.is-in .sv-k-tix{transform:translate(-50%,0);opacity:1}
/* wallet */
.sv-wal{align-items:center}
.sv-w{width:78%;padding:16px 18px;border-radius:20px;background:var(--sv-paint-fff);box-shadow:0 14px 30px -20px rgba(0,0,0,.35)}
.sv-w small{color:var(--tv-mute)}.sv-w>b{display:block;margin:2px 0 8px;font-size:34px;font-weight:800;letter-spacing:-.035em}
.sv-w-r{display:flex;justify-content:space-between;padding:7px 0;border-top:1px solid var(--tv-line);font-size:13px}.sv-w-r em{font:700 12px var(--tv-mono);font-style:normal;color:var(--tv-mute)}
/* messages */
.sv-msg{gap:8px;justify-content:center}
.sv-m{display:flex;align-items:center;gap:10px;width:max-content;max-width:92%;padding:8px 12px 8px 8px;border-radius:16px;background:var(--sv-paint-fff);font-size:13px;box-shadow:0 8px 20px -14px rgba(0,0,0,.3);opacity:0;transform:translateY(8px);transition:opacity .4s var(--tv-ease),transform .5s var(--tv-ease)}
.sv-m.is-ig{margin-left:22px}.sv-m.is-app{margin-left:44px}
.is-in .sv-m{opacity:1;transform:none}.is-in .sv-m.is-ig{transition-delay:.2s}.is-in .sv-m.is-app{transition-delay:.4s}
.sv-m-i{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:8px;color:var(--sv-paint-fff);font:800 10px var(--tv-font)}
.is-wa .sv-m-i{background:var(--sv-paint-25d366)}.is-ig .sv-m-i{background:linear-gradient(45deg,var(--sv-paint-f9a03f),var(--sv-paint-e1306c),var(--sv-paint-833ab4))}.is-app .sv-m-i{background:var(--tv-red)}
/* custom */
.sv-cust{align-items:center;justify-content:center}
.sv-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:280px}
.sv-chips span{padding:8px 14px;border-radius:999px;background:var(--sv-paint-fff);border:1px solid var(--tv-line-2);font:700 12px var(--tv-mono);color:var(--tv-ink)}
.sv-chips .is-you{border:1.5px dashed var(--sv-paint-2563eb);color:var(--sv-paint-2563eb);background:transparent}
/* experience */
.sv-exp{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.sv-exp-t{display:flex;flex-direction:column;gap:4px;padding:8px 8px 16px;border-radius:var(--tv-r-card-in);background:var(--tv-card);border:1px solid var(--tv-line)}
.sv-exp-img{display:block;aspect-ratio:16/10;margin-bottom:10px;border-radius:calc(var(--tv-r-card-in) - 6px);background-size:cover;background-position:center}
.sv-exp-t b{padding:0 8px;font-size:16px;font-weight:800;letter-spacing:-.015em}.sv-exp-t small{padding:0 8px;font-size:13.5px;color:var(--tv-mute)}
/* contact: white card, no black */
.sv-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:clamp(28px,4vw,48px);border-radius:var(--tv-r-card);background:var(--tv-card);border:1px solid var(--tv-line);box-shadow:var(--tv-sh-card);position:relative;overflow:hidden;isolation:isolate}
.sv-cta::before{content:"";position:absolute;z-index:-1;right:-140px;top:-180px;width:460px;height:460px;border-radius:50%;background:radial-gradient(closest-side,rgba(235,0,59,.12),transparent)}
.sv-cta h2{margin:0;font:800 clamp(28px,3vw,40px)/1.1 var(--tv-font);letter-spacing:-.035em}.sv-cta p{margin:10px 0 0;color:var(--tv-mute);font-size:16px}
@media (max-width:1000px){.sv-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sv-exp{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.sv-page{padding:16px var(--o5-edge,16px) 32px}.sv-grid{grid-template-columns:minmax(0,1fr)}.sv-card.is-wide{grid-column:auto}.sv-nums{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:16px}.sv-nums>div:nth-child(3){border-left:0}.sx-btn{flex:1 1 100%;justify-content:center}.sv-exp{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}}
@media (prefers-reduced-motion:reduce){.sv-card,.sv-m,.sv-k-tix{opacity:1;transform:none;transition:none}.sv-br-hd{animation:none;background:var(--sv-paint-2563eb)}}
/* more breathing room left and right (Mac, 11 Nov 23:21): content sits inside the header pill, max 1200px wide */
.sv-page{padding-inline:max(calc(var(--o5-edge,40px) + 32px),calc((100% - 1200px)/2))}
@media (max-width:620px){.sv-page{padding-inline:calc(var(--o5-edge,16px) + 4px)}}
/* numbers: the same four tiles as the home page Past records (count up on scroll, hover to count again) */
.o5 .sv-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;width:min(100%,980px);margin:44px auto 0;text-align:left}
.o5 .sv-stats .oh-stat{background:var(--tv-card);cursor:default}
@media (max-width:860px){.o5 .sv-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* accreditation preview: a badge with allowed and blocked zones */
.sv-acc{align-items:center;justify-content:center}
.sv-badge{position:relative;width:min(240px,86%);padding:14px 14px 16px;border-radius:16px;background:var(--sv-paint-fff);box-shadow:0 14px 30px -20px rgba(0,0,0,.4);border-top:6px solid var(--sv-paint-1f8a5b)}
.sv-badge-top{display:flex;align-items:center;gap:10px}
.sv-badge-ph{flex:none;width:40px;height:40px;border-radius:12px;background:url(/images/services-v35/cat-conferences.jpg) 30% 40%/260% no-repeat}
.sv-badge-top b{display:block;font-size:14px;font-weight:800}.sv-badge-top small{display:block;font:700 10px var(--tv-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--tv-mute)}
.sv-badge-z{display:flex;gap:6px;margin-top:12px}
.sv-badge-z span{padding:4px 9px;border-radius:999px;font:700 10.5px var(--tv-mono);opacity:0;transform:scale(.8);transition:opacity .3s,transform .4s var(--tv-spring)}
.sv-badge-z .is-ok{background:var(--tv-green-soft);color:var(--sv-paint-1f8a5b)}.sv-badge-z .is-ok::before{content:"✓ "}
.sv-badge-z .is-no{background:var(--tv-red-soft);color:var(--tv-red);text-decoration:line-through}
.is-in .sv-badge-z span{opacity:1;transform:none}.is-in .sv-badge-z span:nth-child(2){transition-delay:.15s}.is-in .sv-badge-z span:nth-child(3){transition-delay:.3s}
.sv-badge-qr{position:absolute;right:12px;bottom:12px;width:26px;height:26px;border-radius:5px;background:repeating-linear-gradient(90deg,var(--sv-paint-141414) 0 3px,transparent 3px 5px),repeating-linear-gradient(0deg,var(--sv-paint-141414) 0 3px,transparent 3px 5px);background-blend-mode:multiply;opacity:.85}
@media (prefers-reduced-motion:reduce){.sv-badge-z span{opacity:1;transform:none;transition:none}}
/* in-page links (See all services, Compare the models) glide down instead of jumping; reduced motion jumps */
@media (prefers-reduced-motion:no-preference){html:has(.sv-page){scroll-behavior:smooth}}
.sv-page [id]{scroll-margin-top:96px}

/* ── Every service preview gently alive (11 Nov 23:52), like the scanning card. Short moves (≤ .7s) with rests between; reduced motion = still. ── */
@media (prefers-reduced-motion:no-preference){
/* self-service: the ticket prints, rests, goes back; the button breathes */
.sv-k-tix{animation:sv-print 4.8s var(--tv-ease) infinite}
@keyframes sv-print{0%,8%{transform:translate(-50%,-14px);opacity:0}18%,80%{transform:translate(-50%,0);opacity:1}92%,100%{transform:translate(-50%,-14px);opacity:0}}
.sv-k-btn{animation:sv-breath 2.4s ease-in-out infinite}
@keyframes sv-breath{0%,100%{box-shadow:0 0 0 0 rgba(235,0,59,.45)}50%{box-shadow:0 0 0 6px rgba(235,0,59,0)}}
/* accreditation: zones tick in one by one, a light passes over the badge */
.sv-badge::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.75) 50%,transparent 60%) -120% 0/250% 100% no-repeat;animation:sv-shine 4.5s ease-in-out infinite;pointer-events:none}
@keyframes sv-shine{0%,60%{background-position:-120% 0}85%,100%{background-position:120% 0}}
.is-in .sv-badge-z span{animation:sv-zone 4.5s var(--tv-ease) infinite}
.is-in .sv-badge-z span:nth-child(2){animation-delay:.25s}.is-in .sv-badge-z span:nth-child(3){animation-delay:.5s}
@keyframes sv-zone{0%,6%{opacity:0;transform:scale(.85)}14%,88%{opacity:1;transform:none}96%,100%{opacity:0;transform:scale(.85)}}
/* cashless: tap ring on the wristband, the rows take turns */
.sx-band-chip{position:relative}
.sx-band-chip::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--sv-paint-ffd36b);animation:sv-tap 2.6s ease-out infinite}
@keyframes sv-tap{0%{opacity:.9;transform:scale(.8)}35%,100%{opacity:0;transform:scale(1.6)}}
.is-in .sx-pay-r{animation:sv-row 5.2s var(--tv-ease) infinite}
.is-in .sx-pay-r.is-2{animation-delay:.3s}.is-in .sx-pay-r.is-3{animation-delay:.6s}
@keyframes sv-row{0%{opacity:0;transform:translateX(-10px)}10%,86%{opacity:1;transform:none}96%,100%{opacity:0;transform:translateX(10px)}}
/* wallet: rows slide in one after another, the balance glows */
.is-in .sv-w-r{animation:sv-row 5s var(--tv-ease) infinite}.is-in .sv-w-r:nth-of-type(2){animation-delay:.35s}
.sv-w>b{animation:sv-glow 5s ease-in-out infinite}
@keyframes sv-glow{0%,40%,100%{color:var(--tv-ink)}50%,60%{color:var(--sv-paint-1f8a5b)}}
/* events: Staff and Rentals take turns */
.sv-evt-tabs i,.sv-evt-pane{animation-duration:6s;animation-iteration-count:infinite;animation-timing-function:var(--tv-ease)}
/* marketing: messages arrive in turn and leave together */
.is-in .sv-m{animation:sv-msg 5.4s var(--tv-ease) infinite}
.is-in .sv-m.is-ig{animation-delay:.45s}.is-in .sv-m.is-app{animation-delay:.9s}
@keyframes sv-msg{0%{opacity:0;transform:translateY(8px)}8%,84%{opacity:1;transform:none}94%,100%{opacity:0;transform:translateY(-6px)}}
/* reporting: a dot rides the end of the line, the chart redraws from time to time */
.is-in .v-stroke{animation:sv-draw 6s var(--tv-ease) infinite}
@keyframes sv-draw{0%{stroke-dashoffset:400}12%,90%{stroke-dashoffset:0}100%{stroke-dashoffset:0}}
/* design: the ticket tries the colours */
.v-tix-l{animation:sv-skin 7.2s steps(1) infinite}
@keyframes sv-skin{0%,24%{background:linear-gradient(120deg,var(--sv-paint-eb003b),var(--sv-paint-ff7a3d))}25%,49%{background:linear-gradient(120deg,var(--sv-paint-141414),var(--sv-paint-3a3a3a))}50%,74%{background:linear-gradient(120deg,var(--sv-paint-e0a21e),var(--sv-paint-f2c14e))}75%,100%{background:linear-gradient(120deg,var(--sv-paint-11a99a),var(--sv-paint-16d9c6))}}
.v-sw i{animation:sv-pick 7.2s steps(1) infinite}
.v-sw i:nth-child(2){animation-delay:1.8s}.v-sw i:nth-child(3){animation-delay:3.6s}.v-sw i:nth-child(4){animation-delay:5.4s}
@keyframes sv-pick{0%,24%{transform:translateY(-4px);box-shadow:0 0 0 3px var(--sv-paint-fff),0 0 0 5px rgba(20,20,20,.25)}25%,100%{transform:none;box-shadow:0 2px 6px rgba(0,0,0,.15)}}
/* custom: chips pop in, "+ your idea" keeps nudging */
.is-in .sv-chips span{animation:sv-chip 6s var(--tv-ease) infinite}
.is-in .sv-chips span:nth-child(2){animation-delay:.15s}.is-in .sv-chips span:nth-child(3){animation-delay:.3s}.is-in .sv-chips span:nth-child(4){animation-delay:.45s}.is-in .sv-chips span:nth-child(5){animation-delay:.6s}
@keyframes sv-chip{0%{opacity:0;transform:scale(.85)}8%,88%{opacity:1;transform:none}96%,100%{opacity:0;transform:scale(.9)}}
.sv-chips .is-you{background-image:linear-gradient(90deg,rgba(37,99,235,.12),rgba(37,99,235,0));background-size:200% 100%;animation:sv-chip 6s var(--tv-ease) infinite .6s,sv-sweep 2.4s linear infinite}
@keyframes sv-sweep{to{background-position:-200% 0}}
/* turnkey: a cursor taps Buy tickets */
.sv-br-btn{position:relative;animation:sv-press 3.6s var(--tv-ease) infinite}
@keyframes sv-press{0%,70%,100%{transform:none}78%{transform:scale(.92)}86%{transform:none}}
}
/* events preview: two panes */
.sv-evt{gap:10px;justify-content:center}
.sv-evt-tabs{position:relative;display:inline-flex;align-self:flex-start;padding:3px;border-radius:999px;background:rgba(255,255,255,.75)}
.sv-evt-tabs span{position:relative;z-index:1;padding:4px 12px;font:700 11px var(--tv-mono);color:var(--tv-mute)}
.sv-evt-tabs i{position:absolute;z-index:0;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:999px;background:var(--sv-paint-fff);box-shadow:0 1px 4px rgba(0,0,0,.1);animation-name:sv-tabpill}
@keyframes sv-tabpill{0%,45%{transform:none}50%,95%{transform:translateX(100%)}100%{transform:none}}
.sv-evt-p{position:relative;display:grid}
.sv-evt-pane{grid-area:1/1;display:flex;flex-direction:column;gap:7px}
.sv-evt-pane.is-a{animation-name:sv-paneA}.sv-evt-pane.is-b{animation-name:sv-paneB;opacity:0}
@keyframes sv-paneA{0%,44%{opacity:1;transform:none}50%,94%{opacity:0;transform:translateX(-10px)}100%{opacity:1;transform:none}}
@keyframes sv-paneB{0%,44%{opacity:0;transform:translateX(10px)}50%,94%{opacity:1;transform:none}100%{opacity:0;transform:translateX(10px)}}
.sv-evt .sx-role{padding:7px 10px}.sv-evt .sx-role:nth-child(n+4){display:none}
@media (prefers-reduced-motion:reduce){.sv-evt-pane.is-b{display:none}.sv-evt-pane,.sv-evt-tabs i{animation:none!important;opacity:1}}
.sv-evt .sx-rb{display:none}.sv-evt .sx-role{grid-template-columns:auto 1fr auto}
/* 12 Nov: the numbers live in a rounded white card after "Trusted by the biggest names" */
.o5 .sv-numsec .sv-numcard{display:flex;flex-direction:column;align-items:center;gap:28px;padding:clamp(32px,4vw,52px) clamp(20px,4vw,56px);border-radius:var(--tv-r-card);background:var(--tv-card);border:1px solid var(--tv-line);box-shadow:var(--tv-sh-card);text-align:center}
.o5 .sv-numsec .sv-num-h h2{margin:8px 0 0}
.o5 .sv-numsec .sv-num-h .hm-kick{justify-content:center}
.o5 .sv-numsec .sv-stats{margin:0;width:auto}
/* 12 Nov: the CTA's soft red glow is alive, like the Franchising card: it drifts slowly on its own, follows the pointer, and a light sweep crosses the card on hover. */
.sv-cta{--gx:0px;--gy:0px}
.sv-cta::after{content:"";position:absolute;z-index:-1;left:-160px;bottom:-220px;width:420px;height:420px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,122,61,.10),transparent);pointer-events:none}
@media (prefers-reduced-motion:no-preference){
 .sv-cta::before{translate:var(--gx) var(--gy);transition:translate .9s cubic-bezier(.22,1,.36,1);animation:svGlow 9s ease-in-out infinite alternate}
 .sv-cta::after{animation:svGlow2 11s ease-in-out infinite alternate}
 .sv-cta .sv-cta-sweep{position:absolute;inset:0;z-index:-1;overflow:hidden;border-radius:inherit;pointer-events:none}
 .sv-cta .sv-cta-sweep::before{content:"";position:absolute;top:0;left:-50%;width:35%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.75),transparent);transform:skewX(-18deg);transition:left .8s cubic-bezier(.22,.61,.36,1)}
 .sv-cta:hover .sv-cta-sweep::before{left:120%}
}
@keyframes svGlow{0%{transform:translate(0,0) scale(1)}50%{transform:translate(-140px,60px) scale(1.15)}100%{transform:translate(-320px,110px) scale(.95)}}
@keyframes svGlow2{0%{transform:translate(0,0)}100%{transform:translate(260px,-90px) scale(1.2)}}
/* 12 Nov: "In numbers" card, livelier. Four tiles, each in a brand palette colour; icon, count-up, bar, pointer glow, lift on hover.
   Two soft colour blobs drift slowly behind the tiles. Reduced motion: still, numbers final. */
.o5 .sv-numsec .sv-numcard{position:relative;overflow:hidden;isolation:isolate}
.o5 .sv-numsec .sv-numcard::before,.o5 .sv-numsec .sv-numcard::after{content:"";position:absolute;z-index:-1;border-radius:50%;filter:blur(10px);pointer-events:none}
.o5 .sv-numsec .sv-numcard::before{width:420px;height:420px;left:-140px;top:-180px;background:radial-gradient(closest-side,rgba(235,0,59,.10),transparent)}
.o5 .sv-numsec .sv-numcard::after{width:460px;height:460px;right:-160px;bottom:-220px;background:radial-gradient(closest-side,rgba(19,214,195,.14),transparent)}
.o5 .sv-numsec .oh-records-stats{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px!important;width:100%!important;max-width:1040px}
.o5 .sv-numsec .oh-records-stats .oh-stat.oh-stat.oh-stat:nth-child(n){position:relative;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;align-items:flex-start;padding:22px 22px 26px!important;border-radius:22px;background:rgba(255,255,255,.85)!important;border:1px solid var(--tv-line)!important;box-shadow:0 1px 2px rgba(26,22,18,.04)!important;text-align:left;--mx:50%;--my:0%;transition:transform .45s var(--tv-ease),box-shadow .45s,border-color .45s}
.o5 .sv-numsec .oh-stat:nth-child(1){--acc:var(--sv-paint-eb003b);--ink:var(--sv-paint-c70032);--soft:var(--sv-paint-fde6ec);--glow:rgba(235,0,59,.12)}
.o5 .sv-numsec .oh-stat:nth-child(2){--acc:var(--sv-paint-13c4b2);--ink:var(--sv-paint-0b8276);--soft:var(--sv-paint-ddf7f3);--glow:rgba(19,196,178,.16)}
.o5 .sv-numsec .oh-stat:nth-child(3){--acc:var(--sv-paint-a970d8);--ink:var(--sv-paint-7e45af);--soft:var(--sv-paint-f1e7fa);--glow:rgba(169,112,216,.16)}
.o5 .sv-numsec .oh-stat:nth-child(4){--acc:var(--sv-paint-f7802b);--ink:var(--sv-paint-b65a13);--soft:var(--sv-paint-feebdd);--glow:rgba(247,128,43,.16)}
.o5 .sv-numsec .oh-stat::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .35s var(--tv-ease);background:radial-gradient(260px circle at var(--mx) var(--my),var(--glow),transparent 70%)}
.o5 .sv-numsec .oh-stat.oh-stat.oh-stat:hover{transform:translateY(-4px)!important;box-shadow:var(--tv-sh-lift)!important;border-color:color-mix(in srgb,var(--acc) 30%,transparent)!important}
.o5 .sv-numsec .oh-stat:hover::before{opacity:1}
.o5 .sv-numsec .oh-records-stats .oh-stat-ic{display:grid!important;place-items:center;width:42px;height:42px;margin:0 0 16px;border-radius:13px;background:var(--soft);color:var(--ink);transition:transform .4s var(--tv-ease),background .25s,color .25s}
.o5 .sv-numsec .oh-stat:hover .oh-stat-ic{transform:rotate(-8deg) scale(1.08);background:var(--acc);color:var(--sv-paint-fff)}
.o5 .sv-numsec .oh-records-stats .oh-stat b{font-size:clamp(30px,3vw,42px);color:var(--tv-ink)}
.o5 .sv-numsec .oh-records-stats .oh-stat>span:not(.oh-stat-ic){margin-top:8px;color:var(--tv-mute)}
.o5 .sv-numsec .oh-records-stats .oh-stat-bar{position:absolute;left:0;right:0;bottom:0;width:auto;height:4px;background:color-mix(in srgb,var(--acc) 14%,transparent);border-radius:0}
.o5 .sv-numsec .oh-records-stats .oh-stat-bar::after{width:var(--p);background:linear-gradient(90deg,var(--acc),color-mix(in srgb,var(--acc) 55%,var(--sv-paint-fff)));border-radius:0 4px 4px 0}
.o5 .sv-numsec .oh-stat:hover .oh-stat-bar::after{width:100%}
@media (prefers-reduced-motion:no-preference){
 .o5 .sv-numsec .sv-numcard::before{animation:svBlobA 14s ease-in-out infinite alternate}
 .o5 .sv-numsec .sv-numcard::after{animation:svBlobB 16s ease-in-out infinite alternate}
}
@keyframes svBlobA{to{transform:translate(220px,90px) scale(1.15)}}
@keyframes svBlobB{to{transform:translate(-260px,-70px) scale(1.1)}}
@media (max-width:860px){.o5 .sv-numsec .oh-records-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:420px){.o5 .sv-numsec .oh-records-stats{gap:10px!important}.o5 .sv-numsec .oh-records-stats .oh-stat.oh-stat.oh-stat:nth-child(n){padding:16px 14px 20px!important}}

/* The supplied Services component base is 16px; Bootstrap otherwise supplies 14px. */
.services-v35{font-size:16px}

/* Restore the supplied home-stat inheritance inside the production master layout. */
.services-v35 .sv-numsec{font-family:Almarai,'Plus Jakarta Sans',sans-serif}
.services-v35 .sv-numsec h2{font:700 24px Almarai,'Plus Jakarta Sans',sans-serif}
.services-v35 .sv-numsec .oh-stat b{display:block;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.services-v35 .sv-numsec .oh-stat>span:not(.oh-stat-ic){display:block;font:700 11px var(--tv-mono);letter-spacing:.12em;text-transform:uppercase}
.services-v35 .sv-numsec .oh-stat-bar::after{content:"";position:absolute;inset:0;transform:scaleX(0);transform-origin:left;transition:transform .7s cubic-bezier(.16,1,.3,1) .25s}
/* The task caps transitions at .7s; only the approved count-ups are longer. */
@media(prefers-reduced-motion:no-preference){
 .services-v35 .sv-cta::before,.services-v35 .sv-cta .sv-cta-sweep::before{transition-duration:.7s}
 .services-v35 .sp2-float.svc3{transition-duration:.7s,.7s}
 .services-v35 .sv-numcard:not(.sv-loop-visible)::before,.services-v35 .sv-numcard:not(.sv-loop-visible)::after,
 .services-v35 .sv-cta:not(.sv-loop-visible)::before,.services-v35 .sv-cta:not(.sv-loop-visible)::after{animation-play-state:paused!important}
}
.services-v35 .sv-numsec .is-in .oh-stat-bar::after{transform:scaleX(1)}
@media (prefers-reduced-motion:reduce){.services-v35 .sv-numsec .oh-stat-bar::after{transform:none;transition:none}}

/* Preserve the supplied picker search spacing against the shared form label reset. */
.licensing-v35.lfp-dr.svq .lfp-pk-s{margin-block-end:2px}
