/* ══ Card Frames (applied via data-frame attribute on card containers) ══ */
[data-frame]:not([data-frame=""]):not([data-frame="none"]) {
    border: 3px solid transparent;
}
[data-frame="silver"] { border-color: #c0c0c0 !important; }
[data-frame="sapphire"] { border-color: #3b82f6 !important; box-shadow: 0 0 12px rgba(59,130,246,0.35), inset 0 0 12px rgba(59,130,246,0.08); }
[data-frame="emerald"] { border-color: #22c55e !important; box-shadow: 0 0 12px rgba(34,197,94,0.35), inset 0 0 12px rgba(34,197,94,0.08); }
[data-frame="amethyst"] { border-color: #a855f7 !important; box-shadow: 0 0 12px rgba(168,85,247,0.35), inset 0 0 12px rgba(168,85,247,0.08); }
[data-frame="ruby"] { border-color: #ef4444 !important; box-shadow: 0 0 14px rgba(239,68,68,0.4), inset 0 0 14px rgba(239,68,68,0.08); }
[data-frame="gold"] { border-color: #fbbf24 !important; box-shadow: 0 0 16px rgba(251,191,36,0.45), inset 0 0 14px rgba(251,191,36,0.08); }
[data-frame="diamond"] { border-color: #67e8f9 !important; box-shadow: 0 0 16px rgba(103,232,249,0.45), inset 0 0 14px rgba(103,232,249,0.1); }
[data-frame="rainbow"] {
    animation: frame-rainbow 3s linear infinite;
}
[data-frame="chromatic"] {
    animation: frame-chromatic 2s linear infinite;
}

@keyframes frame-rainbow {
    0%   { border-color: #ff0000; box-shadow: 0 0 14px rgba(255,0,0,0.35), inset 0 0 10px rgba(255,0,0,0.06); }
    16%  { border-color: #ff8800; box-shadow: 0 0 14px rgba(255,136,0,0.35), inset 0 0 10px rgba(255,136,0,0.06); }
    33%  { border-color: #ffff00; box-shadow: 0 0 14px rgba(255,255,0,0.35), inset 0 0 10px rgba(255,255,0,0.06); }
    50%  { border-color: #00ff00; box-shadow: 0 0 14px rgba(0,255,0,0.35), inset 0 0 10px rgba(0,255,0,0.06); }
    66%  { border-color: #0088ff; box-shadow: 0 0 14px rgba(0,136,255,0.35), inset 0 0 10px rgba(0,136,255,0.06); }
    83%  { border-color: #8800ff; box-shadow: 0 0 14px rgba(136,0,255,0.35), inset 0 0 10px rgba(136,0,255,0.06); }
    100% { border-color: #ff0000; box-shadow: 0 0 14px rgba(255,0,0,0.35), inset 0 0 10px rgba(255,0,0,0.06); }
}

@keyframes frame-chromatic {
    0%   { border-color: #ff0080; box-shadow: 0 0 18px rgba(255,0,128,0.4), inset 0 0 12px rgba(255,0,128,0.08); }
    25%  { border-color: #00ffff; box-shadow: 0 0 18px rgba(0,255,255,0.4), inset 0 0 12px rgba(0,255,255,0.08); }
    50%  { border-color: #ff00ff; box-shadow: 0 0 18px rgba(255,0,255,0.4), inset 0 0 12px rgba(255,0,255,0.08); }
    75%  { border-color: #80ff00; box-shadow: 0 0 18px rgba(128,255,0,0.4), inset 0 0 12px rgba(128,255,0,0.08); }
    100% { border-color: #ff0080; box-shadow: 0 0 18px rgba(255,0,128,0.4), inset 0 0 12px rgba(255,0,128,0.08); }
}
