/* ══════════════════════════════════════════════════════════════════════════
   CryptoPayr V2 — the MagicUI-style skin for the portal, admin and auth areas.

   An OVERRIDE layer loaded by the shared shells AFTER auth.css / portal.css /
   admin.css on every portal, admin and auth page. It restyles the existing
   class vocabulary (pt-*, ad-*, au-*) — no page markup changes — plus the
   v2-* components used by the dashboard. The shells add <body class="… v2">
   and a .v2-ambient background div; assets/js/v2.js drives the effects.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Tokens ─────────────────────────────────────────────────────────────── */
:root{
  --bg:#07090d; --surface:#0c1016; --surface-2:#10151d; --field:#10151d;
  --card:#0c1016;
  --line:rgba(255,255,255,.07); --line-2:rgba(255,255,255,.15);
  --ink:#f2f5f9; --ink-2:#c9d1dc; --muted:#8b94a3;
  --brand:#12b46a; --brand-2:#3ddc8f; --v2-beam:#3ddc8f; --v2-glow:rgba(18,180,106,.30);
  --ok:#34d399; --warn:#fbbf24; --danger:#f87171;
  --radius:18px;
  --shadow:0 1px 0 rgba(255,255,255,.03), 0 20px 44px -32px rgba(0,0,0,.6);
  color-scheme:dark;
}
[data-theme="light"]{
  --bg:#f6f8fb; --surface:#ffffff; --surface-2:#f2f5f9; --field:#f5f7fa;
  --card:#ffffff;
  --line:#e7ecf3; --line-2:#d5dde8;
  --ink:#0e1420; --ink-2:#33404f; --muted:#637082;
  --brand:#08a05a; --brand-2:#08a05a; --v2-beam:#08a05a; --v2-glow:rgba(8,160,90,.20);
  --ok:#059669; --warn:#d97706; --danger:#dc2626;
  --shadow:0 1px 2px rgba(15,23,42,.04), 0 14px 30px -24px rgba(15,23,42,.30);
  color-scheme:light;
}

/* ── Ambient background — grid pattern + top glow behind the page ─────────
   Deliberately STATIC and height-capped: the page ground is a plain solid
   colour, and the glow/grid overlay covers only the top band of the
   viewport, so scrolling and typing never repaint a full-screen fixed
   layer. Do not animate this — a panning background-position here repaints
   the whole viewport every frame and makes the entire app feel slow. */
body.v2{background:var(--bg);}
.v2-ambient{position:fixed;top:0;left:0;right:0;height:560px;z-index:-1;pointer-events:none;
  background:
    radial-gradient(720px 340px at 78% -8%, var(--v2-glow), transparent 68%),
    radial-gradient(560px 300px at 12% -6%, color-mix(in srgb,var(--brand) 12%,transparent), transparent 70%);
  -webkit-mask:linear-gradient(#000 55%,transparent);
  mask:linear-gradient(#000 55%,transparent);}
.v2-ambient::after{content:"";position:absolute;inset:0;
  background:
    linear-gradient(color-mix(in srgb,var(--ink) 5%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--ink) 5%,transparent) 1px,transparent 1px);
  background-size:44px 44px;
  -webkit-mask:radial-gradient(1000px 480px at 50% -60px,#000 30%,transparent 78%);
  mask:radial-gradient(1000px 480px at 50% -60px,#000 30%,transparent 78%);}

/* ── Sidebar shell (portal + admin share .pt-sb) ────────────────────────── */
/* No backdrop-filter here: blurring a full-height strip over the page is a
   heavy per-frame compositing cost — a near-solid surface reads the same. */
body.v2 .pt-sb{background:color-mix(in srgb,var(--surface) 97%,transparent);
  border-right:1px solid var(--line);}
@media(max-width:900px){body.v2 .pt-sb{background:var(--surface);}}
body.v2 .pt-sb-brand span,body.v2 .pt-mobtop .pt-brand span{
  background:linear-gradient(120deg,var(--ink),var(--brand) 70%,var(--v2-beam));
  -webkit-background-clip:text;background-clip:text;color:transparent;}
body.v2 .pt-sb-link{border:1px solid transparent;border-radius:11px;}
body.v2 .pt-sb-link:hover{background:color-mix(in srgb,var(--ink) 5%,transparent);}
body.v2 .pt-sb-link.active{color:var(--ink);font-weight:700;
  border-color:color-mix(in srgb,var(--brand) 32%,transparent);
  background:linear-gradient(120deg,color-mix(in srgb,var(--brand) 16%,transparent),color-mix(in srgb,var(--brand) 5%,transparent));
  box-shadow:0 8px 22px -14px var(--v2-glow);}
body.v2 .pt-sb-link.active svg{color:var(--brand);}
body.v2 .pt-sb-bal{border-radius:14px;border-color:color-mix(in srgb,var(--brand) 26%,transparent);
  background:linear-gradient(130deg,color-mix(in srgb,var(--brand) 14%,transparent),transparent 60%),var(--surface-2);}
body.v2 .pt-avatar{border-radius:50%;color:#04120b;background:linear-gradient(135deg,var(--v2-beam),var(--brand));}
body.v2 .pt-mobtop{background:var(--surface);}
body.v2 .pt-acct-menu{border-radius:14px;background:var(--surface);}

/* ── Cards ──────────────────────────────────────────────────────────────── */
body.v2 .pt-card,body.v2 .pt-stat,body.v2 .ad-chart{
  border-radius:var(--radius);box-shadow:var(--shadow);
  transition:transform .22s ease,border-color .22s ease;}
body.v2 .pt-card:hover,body.v2 .pt-stat:hover,body.v2 .ad-chart:hover{
  transform:translateY(-2px);border-color:var(--line-2);}
body.v2 .pt-stat.accent{border-color:color-mix(in srgb,var(--brand) 40%,transparent);
  background:
    radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--ink) 9%,transparent) 1px,transparent 0) 0 0/22px 22px,
    radial-gradient(120% 150% at 0% 0%,color-mix(in srgb,var(--brand) 10%,transparent),transparent 55%),var(--surface);}
[data-theme="light"] body.v2 .pt-stat.accent{border-color:color-mix(in srgb,var(--brand) 40%,transparent);
  background:
    radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--ink) 9%,transparent) 1px,transparent 0) 0 0/22px 22px,
    radial-gradient(120% 150% at 0% 0%,color-mix(in srgb,var(--brand) 10%,transparent),transparent 55%),var(--surface);}
body.v2 .pt-stat.accent .pt-stat-ico{color:#04120b;background:linear-gradient(135deg,var(--v2-beam),var(--brand));}
body.v2 .pt-cardhead .pt-cico{border-radius:12px;}

/* ── Buttons ────────────────────────────────────────────────────────────── */
body.v2 .pt-quick a{border-radius:12px;transition:.18s;}
body.v2 .pt-quick a:hover{transform:translateY(-1px);}
body.v2 .pt-quick a.primary,body.v2 .au-btn:not(.ghost){
  position:relative;overflow:hidden;border:none;color:#fff;
  background:linear-gradient(135deg,var(--brand),#0c8f55);
  box-shadow:0 10px 26px -14px var(--v2-glow);}
body.v2 a.au-btn:not(.ghost){color:#fff;}
body.v2 .pt-quick a.primary:hover,body.v2 .au-btn:not(.ghost):hover{
  opacity:1;transform:translateY(-1px);box-shadow:0 14px 30px -12px var(--v2-glow);}
/* Shimmer sweeps via transform (compositor-only) — never animate `left`. */
body.v2 .pt-quick a.primary::after,body.v2 .au-btn.v2-shimmer::after{
  content:"";position:absolute;top:0;bottom:0;left:0;width:55%;
  transform:translateX(-160%) skewX(-20deg);will-change:transform;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.38),transparent);
  animation:v2shimmer 2.8s ease infinite;}
@keyframes v2shimmer{0%{transform:translateX(-160%) skewX(-20deg);}55%,100%{transform:translateX(260%) skewX(-20deg);}}
body.v2 .au-btn.danger{background:linear-gradient(135deg,#f87171,#ef4444);box-shadow:0 10px 26px -14px rgba(248,113,113,.35);}
body.v2 .au-btn.ghost{border:1px solid var(--line-2);color:var(--ink);background:transparent;box-shadow:none;}
body.v2 .au-btn.ghost:hover{border-color:var(--brand);color:var(--brand);}
body.v2 .pt-copy{border-radius:8px;}
body.v2 .pt-chip{transition:.15s;}
body.v2 .pt-chip.active{box-shadow:0 8px 20px -12px var(--v2-glow);}

/* ── Forms ──────────────────────────────────────────────────────────────── */
body.v2 .au-input{border-radius:11px;background:var(--field);border-color:var(--line-2);transition:border-color .15s,box-shadow .15s;}
body.v2 .au-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 18%,transparent);}
body.v2 .rf-seg{border-radius:11px;}
body.v2 .rf-seg-btn.active{background:linear-gradient(135deg,var(--brand),#0c8f55);}

/* ── Tables + badges ────────────────────────────────────────────────────── */
body.v2 .pt-table th{font-size:10.5px;letter-spacing:.8px;font-weight:700;}
body.v2 .pt-table td{border-bottom:1px dashed var(--line);}
body.v2 .pt-table tbody tr:hover{background:color-mix(in srgb,var(--ink) 3%,transparent);}
body.v2 .pt-badge{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);
  background:var(--surface-2);color:var(--muted);}
body.v2 .pt-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;}
body.v2 .pt-completed,body.v2 .pt-yes{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 35%,transparent);background:color-mix(in srgb,var(--ok) 10%,transparent);}
body.v2 .pt-pending,body.v2 .pt-processing{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 35%,transparent);background:color-mix(in srgb,var(--warn) 10%,transparent);}
body.v2 .pt-expired,body.v2 .pt-cancelled,body.v2 .pt-rejected,body.v2 .pt-banned{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent);background:color-mix(in srgb,var(--danger) 10%,transparent);}
body.v2 .pt-created{color:var(--muted);}
body.v2 .pt-admin{color:#a78bfa;border-color:rgba(167,139,250,.35);background:rgba(167,139,250,.10);}
[data-theme="light"] body.v2 .pt-completed{color:var(--ok);}
[data-theme="light"] body.v2 .pt-pending,[data-theme="light"] body.v2 .pt-processing{color:var(--warn);}
[data-theme="light"] body.v2 .pt-expired,[data-theme="light"] body.v2 .pt-cancelled,
[data-theme="light"] body.v2 .pt-rejected,[data-theme="light"] body.v2 .pt-banned{color:var(--danger);}
[data-theme="light"] body.v2 .pt-created{color:var(--muted);}

/* ── Tabs, bars, mix, modal, toasts ─────────────────────────────────────── */
body.v2 .pt-tab.is-active{border-bottom-color:var(--brand);}
body.v2 .pt-bar{background:var(--surface-2);}
body.v2 .pt-bar-fill,body.v2 .pt-mix-fill,body.v2 .tx-progress-bar span{
  background:linear-gradient(90deg,var(--brand),var(--v2-beam));}
body.v2 .pt-mix-track{background:var(--surface-2);}
body.v2 .pt-modal{border-radius:16px;background:var(--surface);}
body.v2 .pt-toast{border-radius:12px;}
body.v2 .pt-flash{border-radius:12px;}

/* ── Auth pages (body.au) ───────────────────────────────────────────────── */
body.v2.au{background:transparent;background-image:none;}
body.v2 .au-card{position:relative;border-radius:20px;
  background:
    radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--ink) 8%,transparent) 1px,transparent 0) 0 0/22px 22px,
    var(--card);
  border-color:var(--line-2);box-shadow:0 40px 90px -45px rgba(0,0,0,.7),0 0 60px -30px var(--v2-glow);}
body.v2 .au-brand span{background:linear-gradient(120deg,var(--ink),var(--brand) 70%,var(--v2-beam));
  -webkit-background-clip:text;background-clip:text;color:transparent;}
body.v2 .au-oauth{border-radius:12px;transition:.15s;}
body.v2 .au-oauth:hover{transform:translateY(-1px);}

/* ══════════════════════════════════════════════════════════════════════════
   V2 dashboard components (portal/dashboard.php bento)
   ══════════════════════════════════════════════════════════════════════════ */

/* Hero */
.v2-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin:0 0 22px;}
.v2-hero h1{margin:0 0 6px;font-size:30px;font-weight:800;letter-spacing:-.5px;line-height:1.15;}
/* The shine runs twice on load, then the text settles as a static gradient —
   an infinite background-position animation repaints the heading forever. */
.v2-grad{background:linear-gradient(90deg,var(--ink) 0%,var(--brand) 35%,var(--v2-beam) 55%,var(--ink) 80%);
  background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:v2shine 5s linear 2;}
@keyframes v2shine{to{background-position:-250% 0;}}
.v2-hero p{margin:0;color:var(--muted);font-size:14px;}

/* Bento grid */
.v2-bento{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;}
.v2-bento .pt-card{margin-bottom:0;}
.v2-card{position:relative;grid-column:span 12;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:20px;overflow:hidden;box-shadow:var(--shadow);
  transition:transform .22s ease,border-color .22s ease;}
.v2-card:hover{transform:translateY(-2px);border-color:var(--line-2);}
.v2-card::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s;
  background:radial-gradient(420px 220px at var(--mx,50%) var(--my,0%),color-mix(in srgb,var(--brand) 9%,transparent),transparent 70%);}
.v2-card:hover::after{opacity:1;}
.v2-s3{grid-column:span 3;}.v2-s4{grid-column:span 4;}.v2-s5{grid-column:span 5;}
.v2-s7{grid-column:span 7;}.v2-s12{grid-column:span 12;}
@media(max-width:1080px){.v2-s3,.v2-s4{grid-column:span 6;}.v2-s5,.v2-s7{grid-column:span 12;}}
@media(max-width:640px){.v2-s3,.v2-s4{grid-column:span 12;}.v2-hero h1{font-size:24px;}}

.v2-kicker{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.8px;
  text-transform:uppercase;color:var(--muted);margin:0 0 10px;}
.v2-kicker svg{width:14px;height:14px;color:var(--brand);flex:none;}
.v2-kicker .v2-right{margin-left:auto;letter-spacing:0;text-transform:none;font-weight:600;font-size:12px;}
.v2-kicker a{text-decoration:none;}

/* Border-beam card */
@property --v2a{syntax:'<angle>';initial-value:0deg;inherits:false;}
.v2-beamcard{isolation:isolate;background:
  radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--ink) 9%,transparent) 1px,transparent 0) 0 0/22px 22px,
  radial-gradient(120% 150% at 0% 0%,color-mix(in srgb,var(--brand) 10%,transparent),transparent 55%),var(--surface);}
.v2-beamcard::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;z-index:1;pointer-events:none;
  background:conic-gradient(from var(--v2a),transparent 0deg,transparent 300deg,var(--v2-beam) 345deg,#b6ffd9 355deg,transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
  animation:v2beam 7s linear infinite;}
@keyframes v2beam{to{--v2a:360deg;}}

/* Balance */
.v2-bal-num{display:flex;align-items:baseline;gap:4px;margin:6px 0 2px;font-weight:800;letter-spacing:-1px;
  font-size:44px;line-height:1;font-variant-numeric:tabular-nums;}
.v2-bal-num .cur{font-size:22px;color:var(--muted);font-weight:700;letter-spacing:0;}
.v2-bal-sub{color:var(--muted);font-size:13px;margin:6px 0 16px;}
.v2-bal-links{display:flex;gap:10px;flex-wrap:wrap;}
.v2-minibtn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;font-size:13px;font-weight:600;
  text-decoration:none;border:1px solid var(--line-2);color:var(--ink);background:color-mix(in srgb,var(--surface-2) 70%,transparent);transition:.15s;}
.v2-minibtn:hover{border-color:var(--brand);color:var(--brand);}
.v2-waiver{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line-2);font-size:12.5px;color:var(--muted);}
.v2-waiver strong{color:var(--brand);}

/* Buttons (hero actions) */
.v2-actions{display:flex;gap:10px;flex-wrap:wrap;}
.v2-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:12px;font-size:14px;font-weight:600;
  text-decoration:none;border:1px solid var(--line-2);color:var(--ink);background:var(--surface);transition:.18s;}
.v2-btn:hover{transform:translateY(-1px);border-color:var(--brand);color:var(--brand);}
.v2-btn.v2-shimmer{position:relative;overflow:hidden;border:none;color:#fff;
  background:linear-gradient(135deg,var(--brand),#0c8f55);box-shadow:0 10px 26px -14px var(--v2-glow);}
.v2-btn.v2-shimmer:hover{color:#fff;transform:translateY(-1px);box-shadow:0 14px 30px -12px var(--v2-glow);}
.v2-btn.v2-shimmer::after{content:"";position:absolute;top:0;bottom:0;left:0;width:55%;
  transform:translateX(-160%) skewX(-20deg);will-change:transform;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.38),transparent);animation:v2shimmer 2.8s ease infinite;}

/* Number ticker + KPI tiles */
.v2-tick{font-variant-numeric:tabular-nums;}
.v2-kpi strong{display:block;font-size:26px;font-weight:800;letter-spacing:-.6px;margin:2px 0;font-variant-numeric:tabular-nums;}
.v2-kpi small{color:var(--muted);font-size:12px;}
.v2-kpi .v2-delta{color:var(--brand);font-weight:700;}

/* Area chart */
.v2-chart{width:100%;height:auto;display:block;margin-top:6px;}
.v2-chart .v2-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 5;}
.v2-line{fill:none;stroke:var(--brand);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:1;stroke-dashoffset:1;animation:v2draw 1.6s cubic-bezier(.4,0,.2,1) .25s forwards;}
@keyframes v2draw{to{stroke-dashoffset:0;}}
.v2-area{opacity:0;animation:v2fadein 1s ease 1s forwards;}
@keyframes v2fadein{to{opacity:1;}}
.v2-dot{fill:transparent;stroke:transparent;stroke-width:0;cursor:pointer;}
.v2-dot:hover{fill:var(--brand);r:4;stroke:color-mix(in srgb,var(--brand) 30%,transparent);stroke-width:8;}
.v2-axis{fill:var(--muted);font-size:12px;font-family:inherit;}
.v2-empty{padding:34px 0;color:var(--muted);font-size:13.5px;text-align:center;}

/* Fee-tier progress ring (compact) */
.v2-ringwrap{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.v2-ring{width:96px;height:96px;flex:none;}
.v2-ring .bg{fill:none;stroke:var(--line);stroke-width:8;}
.v2-ring .fg{fill:none;stroke:var(--brand);stroke-width:8;stroke-linecap:round;transform:rotate(-90deg);transform-origin:center;
  transition:stroke-dashoffset 1.4s cubic-bezier(.4,0,.2,1);}
.v2-ring text{fill:var(--ink);font-weight:800;font-size:20px;font-family:inherit;}
.v2-ring .pct-sub{fill:var(--muted);font-weight:600;font-size:9.5px;}
.v2-ringtxt{font-size:13px;color:var(--muted);min-width:140px;flex:1;line-height:1.55;}
.v2-ringtxt strong{color:var(--ink);}
.v2-ringtxt .next{color:var(--brand);font-weight:700;}

/* Coin mix bars + marquee */
.v2-mix{display:flex;flex-direction:column;gap:10px;margin-top:4px;}
.v2-mix-row{display:grid;grid-template-columns:80px 1fr auto;gap:10px;align-items:center;font-size:13px;}
.v2-mix-coin{display:flex;align-items:center;gap:7px;font-weight:700;}
.v2-mix-coin img{width:18px;height:18px;border-radius:50%;}
.v2-mix-track{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden;}
.v2-mix-fill{display:block;height:100%;border-radius:inherit;width:0;
  background:linear-gradient(90deg,var(--brand),var(--v2-beam));transition:width 1.2s cubic-bezier(.4,0,.2,1);}
.v2-mix-val{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;}
.v2-marquee{overflow:hidden;margin:16px -20px -20px;padding:12px 0;border-top:1px solid var(--line);
  -webkit-mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
  mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);}
.v2-marquee-track{display:flex;gap:10px;width:max-content;will-change:transform;animation:v2marquee 26s linear infinite;}
.v2-marquee:hover .v2-marquee-track{animation-play-state:paused;}
@keyframes v2marquee{to{transform:translateX(-50%);}}
.v2-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:700;
  border:1px solid var(--line-2);color:var(--ink-2);background:var(--surface-2);white-space:nowrap;}
.v2-chip img{width:16px;height:16px;border-radius:50%;}

/* Metric list */
.v2-list{display:flex;flex-direction:column;margin-top:2px;}
.v2-list-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;font-size:13.5px;
  border-bottom:1px dashed var(--line);}
.v2-list-row:last-child{border-bottom:none;}
.v2-list-row .k{color:var(--muted);display:flex;align-items:center;gap:8px;}
.v2-list-row .k svg{width:15px;height:15px;color:var(--brand);}
.v2-list-row .v{font-weight:700;font-variant-numeric:tabular-nums;}

/* Integration card */
.v2-int{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:760px){.v2-int{grid-template-columns:1fr;}}
.v2-int-label{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin-bottom:6px;}
.v2-key{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line-2);border-radius:10px;
  background:var(--surface-2);font-size:13px;}
.v2-key code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
.v2-key .pt-copy{flex:none;}

/* Blur-fade entrance */
.v2-fade{opacity:0;transform:translateY(14px);filter:blur(6px);
  animation:v2enter .7s cubic-bezier(.21,1,.36,1) forwards;animation-delay:calc(var(--d,0)*90ms);}
@keyframes v2enter{to{opacity:1;transform:none;filter:none;}}

/* Reduced motion — kill every v2 animation, render final states. */
@media(prefers-reduced-motion:reduce){
  body.v2 *,body.v2 *::before,body.v2 *::after,.v2-ambient::after{
    animation:none!important;transition:none!important;}
  .v2-fade{opacity:1;transform:none;filter:none;}
  .v2-line{stroke-dashoffset:0;}
  .v2-area{opacity:1;}
}
