/* Feedback stays inside the board. No glow, flashing backdrop or layout shift. */
.chessboard .tactics-move-feedback{position:absolute;top:2%;right:2%;width:clamp(18px,39%,32px);height:clamp(18px,39%,32px);z-index:6;pointer-events:none;filter:drop-shadow(0 1px 2px #0005);animation:tactics-badge-in .22s cubic-bezier(.2,.7,.2,1) both}
.tactics-move-feedback svg{display:block;width:100%;height:100%;overflow:visible}
.tactics-badge-face{fill:#83ac45;stroke:#d0e5aa;stroke-width:1.2;stroke-linejoin:round}
.tactics-move-wrong .tactics-badge-face{fill:#b95449;stroke:#edb0a8}
.tactics-badge-mark{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.chessboard.tactics-feedback-new{animation:tactics-board-in .18s ease-out both}
.chessboard.tactics-feedback-wrong .square.wrong{animation:tactics-square-error .24s ease-out both}
.chessboard.tactics-feedback-complete{animation:tactics-board-complete .32s ease-out both}
.puzzle-combination-strip{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;margin:12px 0 3px}
.puzzle-combination-strip .combination-dot{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--line);border:1px solid var(--muted);opacity:.45}
.puzzle-combination-strip .combination-dot.done{background:var(--green);border-color:var(--green);opacity:1}
.puzzle-combination-strip .combination-dot.active{border-color:var(--green);opacity:1}
.puzzle-combination-strip span:last-child{margin-left:3px}
.puzzle-feedback-error{border-left:3px solid #c76457}
.puzzle-feedback-success{border-left:3px solid var(--green)}
.puzzle-result-card .puzzle-result-heading svg{width:23px;height:23px}
.puzzle-next-row .button-primary{flex:1}
.puzzle-level-label{font-size:10px;color:var(--muted);line-height:1.4;text-align:right;white-space:nowrap}
.puzzle-level-label b{display:block;font-size:15px;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.puzzle-review-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:12px;margin-top:12px}
.puzzle-review-summary strong{font-size:15px;color:var(--ink)}
.puzzle-review-summary .button{padding:7px 10px;font-size:12px;min-height:32px}
@keyframes tactics-badge-in{from{opacity:.3;transform:translateY(3px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes tactics-board-in{from{opacity:.75;transform:translateY(2px)}to{opacity:1;transform:none}}
@keyframes tactics-square-error{0%,100%{transform:none}33%{transform:translateX(-2px)}66%{transform:translateX(2px)}}
@keyframes tactics-board-complete{0%,100%{outline:0 solid transparent}40%{outline:2px solid #83ac4566}}
@media(prefers-reduced-motion:reduce){.chessboard.tactics-feedback-new,.chessboard.tactics-feedback-complete,.chessboard.tactics-feedback-wrong .square.wrong,.chessboard .tactics-move-feedback{animation:none;transform:none}}

