/* v19-anim.css: section animations on Cost of Delay (bill meters), Exhibitions (panels lock in), Delivery Lifecycle (QC pass + dispatch).
   Driven by js/v19-anim.js: [data-v19a] gets .v19-go once in view and .v19-run while in view (animations paused otherwise).
   Reduced motion: no .v19-go is ever set, so every element shows its static frame. */
[data-v19a] *{animation-play-state:paused}
[data-v19a].v19-run *{animation-play-state:running}

/* ---------- Cost of Delay: each bill's meter ticks ---------- */
.v19-cod .c-tile .v19-m{position:absolute;z-index:3;top:16px;left:14px;display:flex;align-items:center;gap:9px;padding:6px 12px 6px 6px;border-radius:99px;background:rgba(7,8,13,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.14);font:800 .62rem/1 Montserrat,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#fff}
.v19-cod .c-tile .v19-m span,.v19-cod .c-tile .v19-m i{position:relative;left:auto;right:auto;bottom:auto;display:block;margin:0;font:inherit;letter-spacing:inherit;color:inherit;z-index:auto}
.v19-cod .v19-m svg{width:34px;height:34px;flex:none;overflow:visible}
.v19-cod .v19-m .tr{fill:none;stroke:rgba(255,255,255,.16);stroke-width:3}
.v19-cod .v19-m .ar{fill:none;stroke:var(--c);stroke-width:3;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:38;transform:rotate(-90deg);transform-origin:20px 20px}
.v19-cod .v19-m .tk{stroke:rgba(255,255,255,.5);stroke-width:1.4}
.v19-cod .v19-m .nd{stroke:#fff;stroke-width:2.2;stroke-linecap:round;transform:rotate(225deg);transform-origin:20px 20px}
.v19-cod .v19-m .hb{fill:var(--c)}
.v19-cod .c-tile .v19-m .lb{display:flex;flex-direction:column;gap:6px}
.v19-cod .c-tile .v19-m .sg{width:64px;height:7px;border-radius:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.2) 0 5px,transparent 5px 7px)}
.v19-cod .c-tile .v19-m .sg i{position:absolute;left:0;top:0;bottom:0;width:62.5%;background:repeating-linear-gradient(90deg,var(--c) 0 5px,transparent 5px 7px)}
.v19-cod .c-tile .v19-m .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--c);margin-right:6px;vertical-align:1px}
.v19-go .v19-m .nd{animation:v19nd var(--sp,4s) steps(12,end) infinite}
.v19-go .v19-m .ar{animation:v19ar var(--sp,4s) steps(12,end) infinite}
.v19-go .c-tile .v19-m .sg i{animation:v19sg calc(var(--sp,4s)*2) steps(9,jump-none) infinite}
.v19-go .c-tile .v19-m .dot{animation:v19dot 1s ease-out infinite}
.v19-go .c-tile:nth-child(2) .v19-m *{animation-delay:-.7s}.v19-go .c-tile:nth-child(3) .v19-m *{animation-delay:-1.9s}.v19-go .c-tile:nth-child(4) .v19-m *{animation-delay:-2.6s}
@keyframes v19nd{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes v19ar{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
@keyframes v19sg{0%{width:0}100%{width:100%}}
@keyframes v19dot{0%{box-shadow:0 0 0 0 var(--c)}100%{box-shadow:0 0 0 7px transparent}}
@media(max-width:480px){.v19-cod .c-tile .v19-m{top:12px;left:9px;gap:6px;padding:4px 9px 4px 4px;font-size:.5rem}.v19-cod .v19-m svg{width:24px;height:24px}.v19-cod .c-tile .v19-m .sg{width:42px;height:6px}}

/* ---------- Exhibitions: modular panels lock into place ---------- */
.v19-lock .sx-card figure{position:relative}
.v19-lock figure.v19-sl{background:#0b0c12 repeating-linear-gradient(90deg,transparent 0 calc(33.33% - 1px),rgba(255,255,255,.22) calc(33.33% - 1px) 33.33%)}
.v19-lock figure.v19-sl:before{content:"";position:absolute;inset:10px;border:1px dashed rgba(255,255,255,.28);border-radius:6px}
.v19-lock figure.v19-sl>img{opacity:0}
.v19-lock .v19-p{position:absolute;top:0;bottom:0;width:33.34%;overflow:hidden;opacity:0;z-index:1}
.v19-lock .v19-p img{position:absolute;top:0;height:100%;width:300%;max-width:none;object-fit:cover}
.v19-lock .v19-p:nth-child(2){left:0}.v19-lock .v19-p:nth-child(2) img{left:0}
.v19-lock .v19-p:nth-child(3){left:33.33%}.v19-lock .v19-p:nth-child(3) img{left:-100%}
.v19-lock .v19-p:nth-child(4){left:66.66%}.v19-lock .v19-p:nth-child(4) img{left:-200%}
.v19-lock .v19-pin{position:absolute;z-index:2;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:3px;background:var(--acc);box-shadow:0 0 0 3px rgba(230,0,126,.3),0 0 14px rgba(230,0,126,.8);opacity:0;transform:scale(.3)}
.v19-lock .v19-sheen{position:absolute;inset:0;z-index:2;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.28) 50%,transparent 65%);transform:translateX(-110%);pointer-events:none}
.v19-lock .v19-go .v19-p{animation:v19in .62s cubic-bezier(.3,1.5,.5,1) both}
.v19-lock .v19-go .v19-p:nth-child(2){--fx:-34px;--fy:0px;animation-delay:.05s}
.v19-lock .v19-go .v19-p:nth-child(3){--fx:0px;--fy:-28px;animation-delay:.32s}
.v19-lock .v19-go .v19-p:nth-child(4){--fx:34px;--fy:0px;animation-delay:.59s}
.v19-lock .v19-go .v19-pin{animation:v19pin .9s ease-out both;animation-delay:calc(.75s + var(--d,0s))}
.v19-lock .v19-go .v19-sheen{animation:v19sh 1s ease-in-out 1.45s both}
@keyframes v19in{0%{opacity:0;transform:translate(var(--fx),var(--fy)) scale(.97)}35%{opacity:1}100%{opacity:1;transform:none}}
@keyframes v19pin{0%{opacity:0;transform:scale(.3)}25%{opacity:1;transform:scale(1.25)}45%{transform:scale(1)}75%{opacity:1}100%{opacity:0;transform:scale(1)}}
@keyframes v19sh{to{transform:translateX(110%)}}

/* ---------- Delivery Lifecycle: QC check passes, crate dispatched ---------- */
.v19-qc{position:relative}
.v19-hud{position:absolute;left:12px;bottom:12px;z-index:2;width:min(300px,calc(100% - 24px));padding:10px 12px;border-radius:12px;background:rgba(7,8,13,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.14);color:#fff;font:800 .62rem/1 Montserrat,sans-serif;letter-spacing:.14em;text-transform:uppercase}
.v19-hud svg{display:block;width:100%;height:auto;overflow:visible}
.v19-hud .lbl{position:relative;height:1em;margin-bottom:8px}
.v19-hud .lbl b{position:absolute;left:0;top:0;white-space:nowrap;opacity:0}
.v19-hud .lbl .l2,.v19-hud .lbl .l3{color:#7fe0b8}
.v19-hud .lbl .l2{opacity:1}
.v19-hud .rd{stroke:rgba(255,255,255,.25);stroke-width:1.5;stroke-dasharray:4 5}
.v19-hud .cr rect{fill:#c99a5b;stroke:#7a5530;stroke-width:1.4}.v19-hud .cr path{stroke:#7a5530;stroke-width:1.4;fill:none}
.v19-hud .scan{stroke:var(--acc);stroke-width:2.4;opacity:0}
.v19-hud .ok{transform-box:fill-box;transform-origin:center}.v19-hud .ok circle{fill:#0a7f55;stroke:#fff;stroke-width:1.5}.v19-hud .ok path{fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.v19-hud .tb{fill:#e9edf5}.v19-hud .tc{fill:#1f6feb}.v19-hud .wh{fill:#111522;stroke:#9aa3b8;stroke-width:1.5}
.v19-hud .ck circle{fill:none;stroke:rgba(255,255,255,.3);stroke-width:1.4}.v19-hud .ck path{fill:none;stroke:#7fe0b8;stroke-width:1.8;stroke-linecap:round;opacity:1}
.v19-hud svg{overflow:hidden}
/* static frame (reduced motion / before start) = crate at QC station, all checks ticked, QC passed */
.v19-go .v19-hud .lbl .l1{animation:v19l1 8s infinite}
.v19-go .v19-hud .lbl .l2{animation:v19l2 8s infinite}
.v19-go .v19-hud .lbl .l3{animation:v19l3 8s infinite}
.v19-go .v19-hud .scan{animation:v19scan 8s linear infinite}
.v19-go .v19-hud .ck path{animation:v19ck 8s infinite}
.v19-go .v19-hud .ck g:nth-child(2) path{animation-name:v19ck2}.v19-go .v19-hud .ck g:nth-child(3) path{animation-name:v19ck3}
.v19-go .v19-hud .ok{animation:v19ok 8s infinite}
.v19-go .v19-hud .cr{animation:v19cr 8s infinite}
.v19-go .v19-hud .tk{animation:v19tk 8s infinite}
.v19-go .gate.v19-g{animation:v19g 8s infinite}
@keyframes v19l1{0%,30%{opacity:1}33%,100%{opacity:0}}
@keyframes v19l2{0%,31%{opacity:0}34%,59%{opacity:1}62%,100%{opacity:0}}
@keyframes v19l3{0%,60%{opacity:0}63%,93%{opacity:1}96%,100%{opacity:0}}
@keyframes v19scan{0%,3%{opacity:0;transform:translateY(0)}5%{opacity:1}15%{transform:translateY(30px)}25%{transform:translateY(0)}29%{opacity:1;transform:translateY(14px)}31%,100%{opacity:0;transform:translateY(14px)}}
@keyframes v19ck{0%,9%{opacity:0}11%,93%{opacity:1}96%,100%{opacity:0}}
@keyframes v19ck2{0%,17%{opacity:0}19%,93%{opacity:1}96%,100%{opacity:0}}
@keyframes v19ck3{0%,25%{opacity:0}27%,93%{opacity:1}96%,100%{opacity:0}}
@keyframes v19ok{0%,30%{opacity:0;transform:scale(.2)}34%{opacity:1;transform:scale(1.25)}37%,57%{opacity:1;transform:scale(1)}59%,100%{opacity:0;transform:scale(1)}}
@keyframes v19cr{0%,38%{transform:translateX(0);opacity:1;animation-timing-function:cubic-bezier(.5,0,.3,1)}58%{transform:translateX(196px);opacity:1}60%,96%{transform:translateX(196px);opacity:0}96.1%{transform:translateX(0);opacity:0}100%{transform:translateX(0);opacity:1}}
@keyframes v19tk{0%,64%{transform:translateX(0);opacity:1;animation-timing-function:cubic-bezier(.55,0,.85,.45)}86%{transform:translateX(150px);opacity:0}86.1%,94%{transform:translateX(0);opacity:0}100%{transform:translateX(0);opacity:1}}
@keyframes v19g{0%,31%{box-shadow:0 0 0 0 rgba(10,127,85,0);background:#e7f6ef}34%{box-shadow:0 0 0 6px rgba(10,127,85,.25);background:#c9eedc}50%,100%{box-shadow:0 0 0 0 rgba(10,127,85,0);background:#e7f6ef}}
@media(max-width:480px){.v19-hud{left:8px;bottom:8px;padding:7px 9px;font-size:.52rem;width:min(250px,calc(100% - 16px))}.v19-hud .lbl{margin-bottom:5px}}

@media(prefers-reduced-motion:reduce){[data-v19a] *{animation:none!important}}
