/* === EchoMystic: Heroes === */
.frames{display:grid;gap:1.25rem;grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){.frames{grid-template-columns:repeat(2,minmax(0,1fr))}}
.frame{position:relative;background:none;border:0;padding:0;cursor:pointer;outline-offset:6px}
.frame img{display:block;width:100%;height:auto;border-radius:10px}
.frame::after{content:"";position:absolute;inset:0;border-radius:10px;pointer-events:none;box-shadow:0 0 0 rgba(0,0,0,0);transition:box-shadow .25s}
.frame:hover::after,.frame:focus-visible::after{box-shadow:0 0 26px rgba(45,160,255,.45), inset 0 0 16px rgba(45,160,255,.25)}
.frame-label{position:absolute;left:12px;bottom:10px;font-weight:700;letter-spacing:.04em;text-shadow:0 2px 8px #000}

/* Modal */
.modal[hidden]{display:none}
.modal{position:fixed;inset:0;z-index:80}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(2px)}
.modal-card{position:relative;margin:6vh auto;width:min(1000px,92vw);display:grid;grid-template-columns:52% 48%;border-radius:14px;overflow:hidden;background:linear-gradient(180deg,#0b0f14 0%,#0a0d11 100%);border:1px solid rgba(255,255,255,.06)}
@media (max-width:800px){.modal-card{grid-template-columns:1fr;margin:0;width:100vw;height:100vh;border-radius:0}}
.modal-media{background:#070a0d;display:flex;align-items:center;justify-content:center}
.modal-media img{width:100%;height:100%;object-fit:contain}
.modal-body{padding:28px}
.modal-body h3{margin:0 0 8px;font-size:1.6rem;letter-spacing:.04em}
.modal-body p{margin:0 0 14px;opacity:.9}
.modal-body ul{margin:0;padding-left:1.1rem;display:grid;gap:.45rem}
.modal-close{position:absolute;top:10px;right:10px;border:0;background:rgba(255,255,255,.06);color:#fff;width:36px;height:36px;border-radius:8px;cursor:pointer}
.btn{display:inline-block;padding:.65rem 1rem;border:1px solid rgba(0,164,255,.5);border-radius:8px}