/* FortunaCrest Digital v2 — additions: mega menu, orbit, tabs, service pages, animated visuals */

/* ---------- preloader ---------- */
.pre{position:fixed;inset:0;z-index:999;background:#000;display:grid;place-items:center;pointer-events:none;animation:preout .7s ease 1.25s forwards}
.pre img{width:92px;height:92px;border-radius:50%;animation:prepulse 1.1s ease-in-out infinite;box-shadow:0 0 70px rgba(242,185,75,.45)}
.pre i{position:absolute;width:150px;height:150px;border-radius:50%;border:1px solid rgba(242,185,75,.35);border-top-color:#F2B94B;animation:spin 1s linear infinite}
@keyframes preout{to{opacity:0;visibility:hidden}}
@keyframes prepulse{50%{transform:scale(1.08)}}
html.nopre .pre{display:none}
@keyframes up2{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes blink{50%{opacity:0}}
@keyframes tin{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}

/* ---------- cursor ring + ripple ---------- */
.cring{position:fixed;left:0;top:0;width:38px;height:38px;border:1.5px solid rgba(242,185,75,.65);border-radius:50%;pointer-events:none;z-index:400;transition:width .35s var(--ease),height .35s var(--ease),background .35s,border-color .35s,opacity .3s;will-change:transform}
.cring.big{width:70px;height:70px;background:rgba(242,185,75,.12);border-color:rgba(242,185,75,.95)}
.cring.off{opacity:0}
@media(pointer:coarse){.cring{display:none}}
.btn .rip{position:absolute;border-radius:50%;background:rgba(255,255,255,.5);transform:scale(0);animation:rip .7s ease-out forwards;pointer-events:none}
@keyframes rip{to{transform:scale(4);opacity:0}}

/* ---------- mega menu ---------- */
.menu .hasmm{height:52px;display:flex;align-items:center}
.menu .mm{position:absolute;top:52px;left:0;right:0;opacity:0;visibility:hidden;transform:translateY(-10px);transition:opacity .35s,transform .45s var(--ease),visibility .35s;background:rgba(10,10,12,.96);backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);border-bottom:1px solid rgba(255,255,255,.1);box-shadow:0 40px 80px rgba(0,0,0,.5);padding:34px 0 22px}
.menu .hasmm:hover .mm,.menu .hasmm:focus-within .mm{opacity:1;visibility:visible;transform:none}
.mm .in{width:min(1120px,92%);margin-inline:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:30px 44px;height:auto}
.menu .mm h5{font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:10px}
.menu .mm h5 a{font-size:inherit;color:inherit}
.menu .mm .mmc a{display:flex;align-items:center;gap:10px;font-size:.92rem;color:#d2d2d7;padding:6px 0;transition:color .25s,transform .35s var(--ease)}
.menu .mm .mmc a:hover{color:#fff;transform:translateX(5px)}
.mm .mi{width:22px;height:22px;display:grid;place-items:center;flex:none}
.mm .mi svg{width:16px;height:16px;stroke:var(--gold);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mm .mmf{width:min(1120px,92%);margin:22px auto 0;padding-top:18px;border-top:1px solid rgba(255,255,255,.1)}
.menu .mm .mmf a{color:var(--gold);font-weight:600;font-size:.92rem}

/* ---------- hero extras ---------- */
.typed-line{margin-top:20px;font-size:clamp(1.05rem,1.8vw,1.35rem);color:var(--mut);font-weight:500;opacity:0;animation:up2 .9s .65s forwards}
.typed-line .typed{font-weight:700;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.typed-line .cur{display:inline-block;width:2px;height:1.1em;margin-left:4px;vertical-align:-.2em;background:var(--gold);animation:blink 1s steps(1) infinite}
.fchip{position:absolute;display:flex;gap:9px;align-items:center;padding:10px 18px 10px 12px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);font-size:.85rem;font-weight:600;z-index:2;animation:bob2 6s ease-in-out infinite}
.fchip svg{width:18px;height:18px;stroke:var(--gold);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fc-a{left:7%;top:27%}.fc-b{right:8%;top:31%;animation-delay:-2s}.fc-c{left:10%;bottom:19%;animation-delay:-4s}.fc-d{right:10%;bottom:23%;animation-delay:-1s}
@keyframes bob2{50%{transform:translateY(-14px)}}
@media(max-width:1100px){.fchip{display:none}}

/* ---------- marquees ---------- */
.marq.rev .t{animation-direction:reverse}
.marq.tools{border:0;padding:16px 0;background:transparent}
.marq.tools span{font-size:1.15rem;font-weight:600;color:#8d8d93;gap:44px}
.marq.tools .t{gap:44px;animation-duration:70s}
.marq.tools span:after{content:"•";font-size:1.1rem}

/* ---------- orbit ---------- */
.orbwrap{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.orbit{--R:calc(min(500px,86vw)*.405);position:relative;width:min(500px,86vw);aspect-ratio:1;margin-inline:auto}
.orbit .ring{position:absolute;inset:6%;border:1px dashed rgba(242,185,75,.3);border-radius:50%}
.orbit .ring.r2{inset:26%;border-color:rgba(242,185,75,.18)}
.orbit .core{position:absolute;inset:33%;border-radius:50%;z-index:2}
.orbit .core img{width:100%;height:100%;border-radius:50%;animation:floaty 7s ease-in-out infinite;box-shadow:0 0 90px rgba(242,185,75,.35);position:relative}
.orbit .core:before{content:"";position:absolute;inset:-16%;border-radius:50%;background:conic-gradient(from 0deg,transparent 0 55%,rgba(242,185,75,.7) 80%,transparent);filter:blur(22px);animation:spin 8s linear infinite}
.orbit .spin{position:absolute;inset:0;animation:spin 70s linear infinite}
.orbit:hover .spin,.orbit:hover .on a{animation-play-state:paused}
.orbit .on{position:absolute;left:50%;top:50%;width:0;height:0;transform:rotate(calc(var(--i)*60deg)) translateY(calc(var(--R)*-1))}
.orbit .on a{position:absolute;left:-43px;top:-43px;width:86px;height:86px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border-radius:26px;background:rgba(18,18,20,.86);border:1px solid rgba(242,185,75,.38);backdrop-filter:blur(10px);font-size:.66rem;font-weight:600;letter-spacing:.04em;color:#f5f5f7;animation:counter 70s linear infinite;transition:border-color .3s,box-shadow .3s,background .3s}
.orbit .on a:hover{border-color:var(--gold);box-shadow:0 0 36px rgba(242,185,75,.5);background:rgba(40,30,8,.9)}
.orbit .on svg{width:24px;height:24px;stroke:var(--gold);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
@keyframes counter{from{transform:rotate(calc(var(--i)*-60deg))}to{transform:rotate(calc(var(--i)*-60deg - 360deg))}}
.catlist{margin-top:34px;display:grid;gap:12px}
.catrow{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:22px;border:1px solid var(--cardline);background:var(--card);transition:transform .45s var(--ease),border-color .3s,background .3s}
.catrow:hover{transform:translateX(8px);border-color:rgba(242,185,75,.5)}
.catrow .ico{margin:0;flex:none;width:42px;height:42px;border-radius:13px}
.catrow b{display:block;font-size:1.05rem;letter-spacing:-.02em}
.catrow small{color:var(--mut);font-size:.85rem}
.catrow .arr{margin-left:auto;color:var(--gold);font-size:1.4rem;transition:transform .4s var(--ease)}
.catrow:hover .arr{transform:translateX(6px)}

/* ---------- tabs + service cards ---------- */
.tabs{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:46px 0 34px}
.tab{padding:11px 22px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--mut);font:600 .95rem/1 inherit;font-family:inherit;cursor:pointer;transition:.35s var(--ease)}
.tab:hover{color:var(--fg);border-color:var(--gold)}
.tab.on{background:var(--grad);color:#1a1200;border-color:transparent;box-shadow:0 10px 36px rgba(242,185,75,.3)}
.tpanel{display:none}
.tpanel.on{display:block;animation:tin .6s var(--ease)}
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.svc-grid.four{grid-template-columns:repeat(4,1fr)}
.svc,.icard,.fcol,.ind,.svr,.res{position:relative;overflow:hidden}
.svc:before,.icard:before,.fcol:before,.ind:before,.svr:before,.res:before{content:"";position:absolute;inset:0;background:radial-gradient(380px circle at var(--mx,50%) var(--my,0%),rgba(242,185,75,.14),transparent 55%);opacity:0;transition:opacity .4s;pointer-events:none}
.svc:hover:before,.icard:hover:before,.fcol:hover:before,.ind:hover:before,.svr:hover:before,.res:hover:before{opacity:1}
.svc{display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--cardline);border-radius:26px;padding:28px;transition:transform .5s var(--ease),border-color .35s,box-shadow .5s}
.svc:hover{transform:translateY(-6px);border-color:rgba(242,185,75,.45);box-shadow:0 30px 70px rgba(0,0,0,.3)}
.light .svc:hover{box-shadow:0 30px 70px rgba(0,0,0,.12)}
.svc .ico{margin-bottom:12px}
.svc h3{font-size:1.18rem;letter-spacing:-.02em}
.svc p{color:var(--mut);font-size:.95rem;flex:1}
.svc .more{color:var(--gold);font-weight:600;font-size:.9rem;margin-top:10px}
.svc .more:after{content:" ›";display:inline-block;transition:transform .35s var(--ease)}
.svc:hover .more:after{transform:translateX(5px)}
.tcta{text-align:center;margin-top:36px}
.sec.light .ico{background:rgba(217,138,28,.12);border-color:rgba(217,138,28,.35)}
.sec.light .ico svg{stroke:#b9770f}
.sec.light .eyebrow{color:#b9770f}

/* ---------- funnel map ---------- */
.fmap{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-top:70px;position:relative}
.fmap:before{content:"";position:absolute;left:5%;right:5%;top:22px;height:2px;background:linear-gradient(90deg,transparent,rgba(242,185,75,.7),transparent)}
.fmap .dot{position:absolute;top:18px;left:5%;width:10px;height:10px;border-radius:50%;background:var(--gold);box-shadow:0 0 18px var(--gold);animation:travel 7s linear infinite}
@keyframes travel{from{left:5%;opacity:0}10%{opacity:1}90%{opacity:1}to{left:95%;opacity:0}}
.fcol{background:var(--card);border:1px solid var(--cardline);border-radius:28px;padding:26px 22px 28px;transition:transform .5s var(--ease),border-color .35s,box-shadow .5s}
.fcol:hover{transform:translateY(-10px);border-color:rgba(242,185,75,.5);box-shadow:0 36px 80px rgba(0,0,0,.35)}
.fcol .fn{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#000;border:2px solid var(--gold);color:var(--gold);font-weight:700;margin-bottom:20px;position:relative;z-index:1;box-shadow:0 0 26px rgba(242,185,75,.4)}
.fcol h3{font-size:1.4rem;margin-bottom:4px}
.fcol>p{color:var(--mut);font-size:.9rem;margin-bottom:16px}
.fcol a{display:block;padding:8px 0;font-size:.92rem;color:var(--fg);border-top:1px solid var(--line);transition:color .25s,padding-left .35s var(--ease)}
.fcol a:hover{color:var(--gold);padding-left:8px}

/* ---------- results ---------- */
.res{background:var(--card);border:1px solid var(--cardline);border-radius:30px;padding:34px}
.res .tg{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:600}
.res h3{font-size:1.4rem;margin:8px 0 22px}
.metric{margin-bottom:18px}
.metric div{display:flex;justify-content:space-between;font-size:.9rem;color:var(--mut);margin-bottom:8px}
.metric b{color:var(--fg)}
.pbar{height:8px;border-radius:8px;background:rgba(255,255,255,.08);overflow:hidden}
.light .pbar{background:rgba(0,0,0,.08)}
.pbar i{display:block;height:100%;width:0;background:var(--grad);border-radius:8px;transition:width 1.7s var(--ease)}
.note{color:var(--mut);font-size:.88rem;margin-top:26px;text-align:center}

/* ---------- industries chips (home) ---------- */
.chips a.chip{display:inline-block}
.chips.left{justify-content:flex-start}

/* ---------- comparison ---------- */
.cmp{max-width:920px;margin:60px auto 0;border:1px solid var(--cardline);border-radius:32px;overflow:hidden;background:var(--card)}
.cmp .r{display:grid;grid-template-columns:1.5fr 1fr 1fr;align-items:center;padding:20px 28px;border-top:1px solid var(--line);gap:14px}
.cmp .r:first-child{border-top:0}
.cmp .hd{font-weight:700;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
.cmp .hd .us{color:var(--gold)}
.cmp .c{text-align:center}
.cmp .y,.cmp .n{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;font-weight:700;transform:scale(0);transition:transform .7s var(--ease);transition-delay:calc(var(--r)*.12s + .3s)}
.cmp .y{background:var(--grad);color:#1a1200}
.cmp .n{background:rgba(255,255,255,.08);color:var(--mut)}
.light .cmp .n{background:rgba(0,0,0,.07)}
.cmp.in .y,.cmp.in .n{transform:none}

/* ---------- services overview ---------- */
.sfwrap{position:relative;max-width:560px;margin:40px auto 0}
.sfwrap input{width:100%;padding:18px 24px 18px 56px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.06);color:#fff;font:inherit;font-size:1rem;outline:none;transition:border-color .3s,box-shadow .3s}
.sfwrap input:focus{border-color:var(--gold);box-shadow:0 0 0 5px rgba(242,185,75,.14)}
.sfwrap svg{position:absolute;left:22px;top:50%;transform:translateY(-50%);width:20px;height:20px;stroke:var(--gold);fill:none;stroke-width:2;stroke-linecap:round}
.catbar{position:sticky;top:52px;z-index:90;background:rgba(0,0,0,.72);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(255,255,255,.08);overflow-x:auto;scrollbar-width:none}
.catbar::-webkit-scrollbar{display:none}
.catbar .in{display:flex;gap:6px;justify-content:center;width:max-content;min-width:100%;padding:10px 20px}
.catbar a{padding:9px 18px;border-radius:999px;font-size:.88rem;color:var(--mut);white-space:nowrap;transition:.3s var(--ease)}
.catbar a:hover{color:#fff}
.catbar a.on{background:rgba(242,185,75,.14);color:var(--gold)}
.cs-wrap{padding:110px 0;scroll-margin-top:100px;border-top:1px solid rgba(255,255,255,.06)}
.catsec{display:grid;grid-template-columns:.78fr 1.22fr;gap:80px;align-items:start}
.catside{position:sticky;top:150px}
.catside .pv{aspect-ratio:1;margin-top:34px;max-width:360px}
.catside .count{display:inline-block;margin-top:16px;color:var(--mut);font-size:.9rem}
.svc-list{display:grid;gap:14px}
.svr{display:grid;grid-template-columns:auto 1fr auto;gap:22px;align-items:center;background:var(--card);border:1px solid var(--cardline);border-radius:26px;padding:24px 28px;transition:transform .5s var(--ease),border-color .35s,box-shadow .5s}
.svr:hover{transform:translateX(8px);border-color:rgba(242,185,75,.5);box-shadow:0 24px 60px rgba(0,0,0,.3)}
.svr .ico{margin:0;width:50px;height:50px;border-radius:16px}
.svr h3{font-size:1.2rem;letter-spacing:-.02em;margin-bottom:4px}
.svr p{color:var(--mut);font-size:.94rem}
.svarr{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:.4s var(--ease)}
.svarr svg{width:18px;height:18px;stroke:var(--gold);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.svr:hover .svarr{background:var(--grad);border-color:transparent}
.svr:hover .svarr svg{stroke:#1a1200}
.svr.hide{display:none}
.cs-wrap.hide{display:none}
.nomatch{display:none;text-align:center;color:var(--mut);padding:80px 0}
.nomatch.show{display:block}

/* ---------- service detail ---------- */
.shero{padding:170px 0 90px;text-align:left}
.shgrid{display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center}
.shero .lead{margin:22px 0 0}
.shero .row-btn{margin-top:34px}
.crumb{display:flex;gap:8px;flex-wrap:wrap;font-size:.85rem;color:var(--mut);margin-bottom:26px}
.crumb a:hover{color:var(--gold)}
.crumb span{opacity:.5}
.h1s{font-size:clamp(2.3rem,5.4vw,4.4rem);max-width:none!important;margin:0!important}
.shero .eyebrow{margin-bottom:16px}
.ovgrid{display:grid;grid-template-columns:1.2fr .8fr;gap:70px;align-items:start}
.ovgrid .lead{margin-top:18px;max-width:none}
.ovside{display:grid;gap:22px}
.ovbox{background:var(--card);border:1px solid var(--cardline);border-radius:28px;padding:30px}
.ovbox h4{font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.ovbox p{color:var(--mut)}
.tagrow{display:flex;flex-wrap:wrap;gap:10px}
.tg2{padding:8px 16px;border-radius:999px;border:1px solid var(--line);font-size:.9rem}
.incl{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:64px}
.icard{background:var(--card);border:1px solid var(--cardline);border-radius:30px;padding:34px;transition:transform .5s var(--ease),border-color .35s,box-shadow .5s}
.icard:hover{transform:translateY(-8px);border-color:rgba(242,185,75,.5);box-shadow:0 30px 70px rgba(0,0,0,.3)}
.light .icard:hover{box-shadow:0 30px 70px rgba(0,0,0,.12)}
.icard .no{font-size:.8rem;letter-spacing:.14em;color:var(--gold);font-weight:700}
.icard h3{font-size:1.25rem;margin:14px 0 8px;letter-spacing:-.02em}
.icard p{color:var(--mut)}
.tools{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:44px}
.tchip{padding:14px 24px;border-radius:18px;background:var(--card);border:1px solid var(--cardline);font-weight:600;transition:transform .4s var(--ease),border-color .3s}
.tchip:hover{transform:translateY(-5px);border-color:var(--gold)}
.pn{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.pn a{padding:34px 36px;border:1px solid var(--cardline);border-radius:30px;background:var(--card);transition:transform .5s var(--ease),border-color .3s;display:block}
.pn a:hover{transform:translateY(-6px);border-color:rgba(242,185,75,.5)}
.pn small{color:var(--mut);letter-spacing:.14em;font-size:.76rem;text-transform:uppercase}
.pn b{display:block;font-size:1.4rem;letter-spacing:-.02em;margin-top:6px}
.pn a.r{text-align:right}
.engwrap{margin-top:60px}

/* ---------- industries page ---------- */
.ind-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.ind{background:var(--card);border:1px solid var(--cardline);border-radius:30px;padding:34px;transition:transform .5s var(--ease),border-color .35s,box-shadow .5s}
.ind:hover{transform:translateY(-6px);border-color:rgba(242,185,75,.5);box-shadow:0 30px 70px rgba(0,0,0,.3)}
.ind h3{font-size:1.45rem;letter-spacing:-.02em}
.ind p{color:var(--mut);margin:8px 0 20px}
.ind .tagrow a{padding:7px 14px;border-radius:999px;border:1px solid var(--line);font-size:.85rem;color:var(--fg);transition:.3s var(--ease)}
.ind .tagrow a:hover{background:var(--grad);color:#1a1200;border-color:transparent}

/* ---------- back to top ---------- */
.totop{position:fixed;left:22px;bottom:22px;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(0,0,0,.6);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--gold);display:grid;place-items:center;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(14px);transition:.4s var(--ease);z-index:90}
.totop.show{opacity:1;visibility:visible;transform:none}
.totop:hover{border-color:var(--gold);box-shadow:0 0 26px rgba(242,185,75,.4)}
.totop svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-90deg)}

/* ---------- animated visuals ---------- */
.vz{width:100%;height:100%;overflow:visible}
.vz *{transform-box:fill-box}
.vz-row{opacity:0;animation:vzrow 7s var(--ease) infinite backwards;animation-delay:calc(var(--i)*.28s)}
@keyframes vzrow{0%{opacity:0;transform:translateX(-34px)}12%,80%{opacity:1;transform:none}92%,100%{opacity:0;transform:translateX(22px)}}
.vz-type{transform-origin:left center;animation:vztype 7s ease infinite}
@keyframes vztype{0%{transform:scaleX(.04)}18%,88%{transform:scaleX(1)}100%{transform:scaleX(.04)}}
.vz-pulse{transform-origin:center;animation:vzpulse 3.6s ease-out infinite}
@keyframes vzpulse{0%{transform:scale(.55);opacity:.9}100%{transform:scale(1.12);opacity:0}}
.vz-spin{transform-origin:center;animation:spin 22s linear infinite}
.vz-arrow{stroke-dasharray:140;stroke-dashoffset:140;animation:vzarrow 4.5s ease infinite}
@keyframes vzarrow{0%{stroke-dashoffset:140}30%,80%{stroke-dashoffset:0}100%{stroke-dashoffset:140}}
.vz-bar{transform-origin:bottom center;animation:vzbar 4.5s var(--ease) infinite;animation-delay:calc(var(--i)*.15s)}
@keyframes vzbar{0%{transform:scaleY(.05)}30%,85%{transform:scaleY(1)}100%{transform:scaleY(.05)}}
.vz-bub{animation:vzrise 5.5s ease-in infinite;animation-delay:calc(var(--i)*-1.3s)}
@keyframes vzrise{0%{transform:translateY(0) scale(.5);opacity:0}15%{opacity:1}100%{transform:translateY(-170px) scale(1.15);opacity:0}}
.vz-code{stroke-dasharray:var(--l);stroke-dashoffset:var(--l);animation:vzcode 6.5s ease infinite;animation-delay:calc(var(--i)*.4s)}
@keyframes vzcode{0%{stroke-dashoffset:var(--l)}22%,86%{stroke-dashoffset:0}100%{stroke-dashoffset:var(--l)}}
.vz-cur{animation:blink 1s steps(1) infinite}
.vz-node{transform-origin:center;animation:vznode 3.2s ease-in-out infinite;animation-delay:calc(var(--i)*.4s)}
@keyframes vznode{50%{transform:scale(1.08)}}
.vz-line{stroke-dasharray:520;stroke-dashoffset:520;animation:vzline 5.5s ease infinite}
@keyframes vzline{0%{stroke-dashoffset:520}35%,85%{stroke-dashoffset:0}100%{stroke-dashoffset:520}}
.vz-area{opacity:0;animation:vzarea 5.5s ease infinite}
@keyframes vzarea{0%,20%{opacity:0}45%,85%{opacity:1}100%{opacity:0}}
.vz-dot{transform-origin:center;transform:scale(0);animation:vzdot 5.5s ease infinite;animation-delay:calc(var(--i)*.35s)}
@keyframes vzdot{0%,15%{transform:scale(0)}35%,85%{transform:scale(1)}100%{transform:scale(0)}}
.vz-sq{transform-origin:center;animation:spin 26s linear infinite}
.vz-sq.b{animation-duration:38s;animation-direction:reverse}
.vz-sq.c{animation-duration:54s}
.vzb{position:relative;width:100%;height:100%}
.vzb svg{position:absolute;inset:0;width:100%;height:100%}
.vzb img{position:absolute;left:50%;top:50%;width:46%;transform:translate(-50%,-50%);border-radius:50%;animation:floaty2 6s ease-in-out infinite;box-shadow:0 0 70px rgba(242,185,75,.35)}
@keyframes floaty2{50%{transform:translate(-50%,calc(-50% - 10px))}}

/* ---------- responsive ---------- */
@media(max-width:1000px){
  .orbwrap,.shgrid,.ovgrid,.catsec{grid-template-columns:1fr;gap:50px}
  .catside{position:static}
  .catside .pv{max-width:300px}
  .svc-grid,.svc-grid.four,.incl{grid-template-columns:repeat(2,1fr)}
  .fmap{grid-template-columns:1fr 1fr}.fmap:before,.fmap .dot{display:none}
  .ind-grid{grid-template-columns:1fr}
  .shero{padding:140px 0 70px}
  .cs-wrap{padding:80px 0}
}
@media(max-width:760px){
  .menu .mm{display:none}
  .menu .hasmm{height:auto}
  .svc-grid,.svc-grid.four,.incl,.fmap,.pn{grid-template-columns:1fr}
  .cmp .r{grid-template-columns:1.3fr .7fr .7fr;padding:16px 14px;font-size:.88rem}
  .svr{grid-template-columns:auto 1fr;padding:20px}.svr .svarr{display:none}
  .orbit .on a{width:74px;height:74px;left:-37px;top:-37px;font-size:.58rem;border-radius:22px}
  .orbit .on svg{width:20px;height:20px}
  .totop{display:none}
  .tabs{gap:8px}.tab{padding:10px 16px;font-size:.88rem}
  .pn a.r{text-align:left}
}
@media(prefers-reduced-motion:reduce){
  .vz-row,.vz-area{opacity:1!important}
  .vz-arrow,.vz-code,.vz-line{stroke-dashoffset:0!important}
  .vz-dot,.vz-bar{transform:none!important}
  .cmp .y,.cmp .n{transform:none!important}
  .pre{display:none}
  .typed-line{opacity:1!important}
  .pbar i{width:var(--w,100%)!important}
}

/* safety: never allow sideways page scroll (clip keeps sticky working) */
html,body{overflow-x:clip}
