.sq .tag{position:absolute;top:2px;right:3px;font-size:12px;font-weight:700;line-height:1;padding:1px 3px;border-radius:4px;background:#c0392b;color:#fff;pointer-events:none}
.sq.frz{box-shadow:inset 0 0 0 4px #5fb7ffcc}
.sq.boom{background-image:radial-gradient(#ff8c1acc,transparent 70%)}
#info{color:var(--muted);font-size:.9rem;min-height:1.2em}
a.back{color:var(--accent);text-decoration:none}
button:disabled{opacity:.4;cursor:default}

/* ---- animation layer (ockit.js + anim.js) ---- */
.ock-d{position:absolute;inset:0;pointer-events:none;z-index:1}
.ock-board .sq .pc{position:relative;z-index:2}
@media (update:none){.ock-board .ock-d,.ock-board .ock-d *,.ock-board .ock-a,.ock-board .ock-a .pc,.ock-board .ock-a::before,.ock-board .ock-a::after{animation:none!important;transition:none!important}}
.sq.cd .pc{opacity:.6;transition:opacity .3s}
.ock-recharge{display:flex;align-items:center;justify-content:center;z-index:3}
.ock-recharge svg{width:86%;height:86%;transform:rotate(-90deg);overflow:visible}
.ock-recharge circle{fill:none;stroke-width:4}
.ock-recharge .bg{stroke:#00000033}
.ock-recharge .fg{stroke:#58cc02;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;animation:ockCharge 1.5s linear forwards}
@keyframes ockCharge{to{stroke-dashoffset:0}}
.ock-recharge b{position:absolute;right:4%;bottom:4%;width:26%;height:26%;border-radius:50%;background:#ffc800;border:2px solid #fff;box-shadow:0 2px 0 #cc9a00;display:flex;align-items:center;justify-content:center;animation:ockZz 1.6s ease-in-out infinite}
.ock-recharge b svg{width:70%;height:70%;transform:none}
@keyframes ockZz{0%,100%{transform:translateY(0)}50%{transform:translateY(-12%)}}
.sq.ock-ready .pc{animation:ockReady .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes ockReady{0%{transform:scale(.8,1.1)}45%{transform:translateY(-10%) scale(1.1,.92)}100%{transform:none}}
.oc-energy .bar i{position:relative;display:block;transition:width .25s cubic-bezier(.34,1.56,.64,1);border-radius:99px;background-color:#58cc02;box-shadow:inset 0 -3px 0 #46a302}
.oc-energy .bar i::after{content:"";position:absolute;left:6px;right:6px;top:2px;height:30%;border-radius:99px;background:#ffffff66}
.oc-energy .bar i.ock-full{animation:ockPulse 1.4s ease-in-out infinite;background-color:#ffc800;box-shadow:inset 0 -3px 0 #cc9a00}
@keyframes ockPulse{50%{transform:scaleY(1.18)}}
