


.zzz-agent-icon {
    --icon-size: 128px;
    --attr-color: #666;
    position: relative;
    display: inline-block;
    width: var(--icon-size);
    border-radius: 10px;
    overflow: hidden;
    border: 2px solid var(--attr-color);
    background: color-mix(in srgb, var(--attr-color) 15%, #1a1a2e);
}


.zzz-agent-icon--sm  { --icon-size: 64px; }
.zzz-agent-icon--md  { --icon-size: 96px; }
.zzz-agent-icon--lg  { --icon-size: 192px; }

:is(.zzz-icon-link,.zzz-tier-agent-link,.zzz-agent-icons-link,.zzz-related-item,.zzz-formation-card__member-link) { display:inline-block;text-decoration:none;color:inherit;transition:transform .15s; }
:is(.zzz-icon-link,.zzz-tier-agent-link,.zzz-agent-icons-link,.zzz-related-item,.zzz-formation-card__member-link):hover { transform:scale(1.06);text-decoration:none; }
:is(.zzz-icon-link,.zzz-tier-agent-link,.zzz-agent-icons-link,.zzz-related-item,.zzz-formation-card__member-link):focus-visible { outline:2px solid var(--accent,#e07020);outline-offset:3px;border-radius:10px;text-decoration:none; }
@media(prefers-reduced-motion:reduce){:is(.zzz-icon-link,.zzz-tier-agent-link,.zzz-agent-icons-link,.zzz-related-item,.zzz-formation-card__member-link){transition:none}:is(.zzz-icon-link,.zzz-tier-agent-link,.zzz-agent-icons-link,.zzz-related-item,.zzz-formation-card__member-link):hover{transform:none}}


.zzz-agent-icon > img {
    display: block;
    width: 100%;
    height: var(--icon-size);
    aspect-ratio: 1 / 1;
    object-fit: cover;
    object-position: center top;
    position: relative;
    z-index: 1;
}

.zzz-agent-icon__placeholder { display:block;width:100%;height:var(--icon-size);background:var(--color-border,#d4d6d0); }

.zzz-agent-icon__attr > img {
    aspect-ratio: 1 / 1;
}


.zzz-agent-icon::after {
    display: none;
}


.zzz-agent-icon__name {
    position: relative;
    display: block;
    z-index: 3;
    padding: 3px 4px;
    text-align: center;
    font-size: clamp(12px, calc(var(--icon-size) * 0.125), 16px);
    font-weight: 600;
    color: #fff;
    background: color-mix(in srgb, var(--attr-color) 50%, #111);
    white-space: normal;
    overflow: hidden;
    overflow-wrap: anywhere;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    min-height: calc(2.6em + 6px);
    line-height: 1.3;
    pointer-events: none;
}

.zzz-agent-icon--sm .zzz-agent-icon__name {
    font-size: 12px;
    padding: 3px 4px;
}


.zzz-agent-icon__attr {
    position: absolute;
    top: 4px;
    left: 4px;
    z-index: 3;
    width: calc(var(--icon-size) * 0.22);
    height: calc(var(--icon-size) * 0.22);
    border-radius: 50%;
    background: var(--attr-color);
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

.zzz-agent-icon__attr > img {
    width: 70%;
    height: 70%;
    object-fit: contain;
}


.zzz-agent-icon__rank {
    position: absolute;
    top: 4px;
    right: 4px;
    z-index: 3;
    width: calc(var(--icon-size) * 0.22);
    height: calc(var(--icon-size) * 0.22);
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

.zzz-agent-icon__rank > img {
    width: 70%;
    height: 70%;
    object-fit: contain;
}


.zzz-agent-icon__role {
    position: absolute;
    bottom: 4px;
    left: 4px;
    z-index: 3;
    width: calc(var(--icon-size) * 0.22);
    height: calc(var(--icon-size) * 0.22);
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

.zzz-agent-icon:has(.zzz-agent-icon__name) .zzz-agent-icon__role {
    bottom: auto;
    top: calc(var(--icon-size) - var(--icon-size) * 0.22 - 4px);
}

.zzz-agent-icon__role > img {
    width: 70%;
    height: 70%;
    object-fit: contain;
}


.zzz-agent-icon__title {
    position: absolute;
    bottom: 4px;
    right: 4px;
    z-index: 3;
    width: calc(var(--icon-size) * 0.22);
    height: calc(var(--icon-size) * 0.22);
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

.zzz-agent-icon:has(.zzz-agent-icon__name) .zzz-agent-icon__title {
    bottom: auto;
    top: calc(var(--icon-size) - var(--icon-size) * 0.22 - 4px);
}

.zzz-agent-icon__title > img {
    width: 70%;
    height: 70%;
    object-fit: contain;
}


.zzz-agent-icon[data-attribute="frost"],
.zzz-agent-icon[data-attribute="auric-ink"],
.zzz-agent-icon[data-attribute="honed-edge"] {
    box-shadow:
        0 0 12px color-mix(in srgb, var(--attr-color) 50%, transparent),
        inset 0 0 6px color-mix(in srgb, var(--attr-color) 20%, transparent);
}

.zzz-agent-icon[data-attribute="frost"]::before,
.zzz-agent-icon[data-attribute="auric-ink"]::before,
.zzz-agent-icon[data-attribute="honed-edge"]::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--attr-color), transparent);
    z-index: 4;
}

.zzz-agent-icon[data-attribute="frost"]::after,
.zzz-agent-icon[data-attribute="auric-ink"]::after,
.zzz-agent-icon[data-attribute="honed-edge"]::after {
    box-shadow: inset 0 0 30px color-mix(in srgb, var(--attr-color) 8%, transparent);
    animation: zzz-icon-shimmer 3s ease-in-out infinite;
}

@keyframes zzz-icon-shimmer {
    0%, 100% { opacity: 0.8; }
    50% { opacity: 1; }
}

.zzz-agent-icon[data-attribute="frost"] .zzz-agent-icon__name,
.zzz-agent-icon[data-attribute="auric-ink"] .zzz-agent-icon__name,
.zzz-agent-icon[data-attribute="honed-edge"] .zzz-agent-icon__name {
    text-shadow: 0 0 8px var(--attr-color);
}
