.jw-board{--board:min(100%, calc(100dvh - 130px), 640px);width:var(--board);aspect-ratio:1;border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);touch-action:none;background:radial-gradient(circle at 50% 30%,#7c5cff1f,#0000 70%),#12110f;position:relative;overflow:hidden}.jw-cell,.jw-gem{width:12.5%;height:12.5%;transform:translate(calc(var(--c) * 100%), calc(var(--r) * 100%));position:absolute;top:0;left:0}.jw-cell{background:#ffffff06}.jw-cell:nth-child(odd){background:#ffffff0b}.jw-gem{cursor:pointer;background:0 0;border:0;padding:0;transition:transform .2s cubic-bezier(.3,1.3,.5,1),opacity .2s;animation:.28s cubic-bezier(.3,1.2,.5,1) both jw-drop;display:block}.jw-svg{filter:drop-shadow(0 4px 8px #00000073);width:82%;height:82%;transition:transform .18s var(--ease);margin:9%;display:block}.jw-gem:hover .jw-svg{transform:scale(1.08)}.jw-gem.is-selected .jw-svg{filter:drop-shadow(0 0 10px #ffffffb3);animation:.8s ease-in-out infinite jw-wiggle;transform:scale(1.14)}.jw-gem.is-hint .jw-svg{animation:.7s ease-in-out infinite jw-bounce}.jw-gem.is-clearing{opacity:0}.jw-gem.is-clearing .jw-svg{transform:scale(1.5)}.jw-gem.is-row .jw-svg,.jw-gem.is-col .jw-svg,.jw-gem.is-bomb .jw-svg{filter:drop-shadow(0 0 9px #ffffff8c)}.jw-rainbow{background:conic-gradient(#ff5a1f,#ffc43d,#6dffb0,#4dd9ff,#8f74ff,#ff5cc8,#ff5a1f);border-radius:50%;width:76%;height:76%;margin:12%;animation:3s linear infinite jw-spin;display:block;box-shadow:0 0 18px #ffffff80,inset 0 0 12px #fff9}.jw-float{z-index:10;font-family:var(--font-display);text-transform:uppercase;color:var(--amber);text-shadow:0 0 24px #ffc43db3;pointer-events:none;font-size:clamp(1.4rem,4vw,2.4rem);animation:1s ease-out both jw-float;position:absolute;top:42%;left:50%;translate:-50%}.jw-legend{color:var(--muted);gap:10px;margin:0;padding:0;font-size:.82rem;line-height:1.5;list-style:none;display:grid}.jw-legend b{color:var(--paper);font-weight:650}@keyframes jw-drop{0%{translate:0 calc(-1 * (var(--r) + 1) * 100%);opacity:.2}}@keyframes jw-wiggle{50%{rotate:6deg}}@keyframes jw-bounce{50%{translate:0 -8%}}@keyframes jw-spin{to{rotate:360deg}}@keyframes jw-float{0%{opacity:0;transform:scale(.6)}25%{opacity:1;transform:scale(1.05)}to{opacity:0;transform:translateY(-40px)}}
