.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.frz .pc{filter:saturate(.75) brightness(1.05)}
.ock-ice{inset:7%;z-index:3}
.ock-ice svg{width:100%;height:100%;display:block;overflow:visible}
.ock-ice .cube{animation:ockBreathe 2.8s ease-in-out infinite;animation-delay:var(--ock-t,0s);transform-origin:50% 90%}
.ock-ice .tw{transform-box:fill-box;transform-origin:center;animation:ockTwinkle 2.4s ease-in-out infinite}
.ock-ice .tw.b{animation-delay:-1.2s}
@keyframes ockBreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025,.985)}}
@keyframes ockTwinkle{0%,100%{transform:scale(.6) rotate(0);opacity:.6}50%{transform:scale(1.1) rotate(45deg);opacity:1}}
.sq.ock-freezing .ock-ice svg{animation:ockSnap .6s cubic-bezier(.34,1.56,.64,1) both}
@keyframes ockSnap{0%{transform:scale(1.6);opacity:0}40%{transform:scale(.88,.92);opacity:1}70%{transform:scale(1.06,.97)}100%{transform:none}}
.sq.ock-freezing .pc{animation:ockShiver .5s ease-out}
@keyframes ockShiver{0%,100%{transform:none}20%{transform:scale(1.08,.9)}45%{transform:rotate(-4deg)}70%{transform:rotate(3deg)}}
.ock-crack{inset:7%;z-index:3}
.ock-crack svg{width:100%;height:100%;display:block}
.sq.ock-thaw .ock-crack svg{animation:ockCrack .5s cubic-bezier(.34,1.56,.64,1) forwards}
@keyframes ockCrack{0%{transform:scale(1)}25%{transform:scale(1.08,.94)}55%{transform:scale(1.04);opacity:1}100%{transform:scale(1.25);opacity:0}}
.sq.ock-thaw .pc{animation:ockShake .45s ease-out .1s}
@keyframes ockShake{0%,100%{transform:none}25%{transform:translateY(-8%) scale(.94,1.08)}55%{transform:scale(1.08,.94)}}
