/* Angier K9 visual cards v3 (Claude). Additive; pairs with publication.css. */
.has-media{overflow:hidden}
.has-media>.card-media{display:block;position:relative;margin:-30px -30px 22px;aspect-ratio:16/9;overflow:hidden;background:#0b1415;border-bottom:1px solid #355154}
.has-media>.card-media img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 30%;transition:transform .7s var(--ease,ease)}
.has-media>.card-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#03070755 0,transparent 30%,transparent 62%,#03070799);pointer-events:none}
.has-media:hover>.card-media img,.has-media:focus-within>.card-media img{transform:scale(1.04)}
.has-media>.pub-icon{display:none}
.card-media-link{display:block;width:100%;height:100%;cursor:pointer}
.has-media>.card-badge{position:relative;z-index:2;width:max-content;max-width:100%;margin:-36px 0 16px -6px;display:flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#030707d9;border:1px solid #89d2d880;color:#e8f4f5;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1;box-shadow:0 6px 16px #0007;animation:card-badge-float 6s ease-in-out infinite}
.card-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:#89d2d8;box-shadow:0 0 0 3px #89d2d833}
.card-badge.is-illus::before{background:#9be0ca}
@keyframes card-badge-float{50%{transform:translateY(-3px)}}
.card-tile,.has-media>.card-illus{background:radial-gradient(circle at 28% 22%,#24464a 0,transparent 58%),repeating-linear-gradient(90deg,#89d2d80d 0 1px,transparent 1px 28px),repeating-linear-gradient(0deg,#89d2d80d 0 1px,transparent 1px 28px),linear-gradient(135deg,#142427,#050b0c)!important}
.card-tile{display:grid!important;place-items:center}.has-media>.card-tile{aspect-ratio:21/9}
.card-tile::after,.has-media>.card-illus::after{display:none}
.card-tile .pub-icon{display:block!important;width:118px!important;height:118px!important;color:#89d2d8;filter:drop-shadow(0 0 14px #89d2d866);transition:transform .5s var(--ease,ease)}
.has-media:hover>.card-tile .pub-icon{transform:scale(1.08)}
.card-illus .card-art{transition:transform .6s var(--ease,ease)}.has-media:hover>.card-illus .card-art,.has-media:focus-within>.card-illus .card-art{transform:scale(1.03)}
.card-art{display:block;width:100%;height:100%}
.card-art .float{animation:card-art-float 6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.card-art .trace{stroke-dashoffset:0;animation:card-art-trace 9s linear infinite}
.card-art .pulse{animation:card-art-pulse 1.6s ease-in-out infinite}
@keyframes card-art-float{50%{transform:translateY(-6px)}}@keyframes card-art-trace{to{stroke-dashoffset:-220}}@keyframes card-art-pulse{50%{opacity:.25}}
@media(prefers-reduced-motion:reduce){.card-art .float,.card-art .trace,.card-art .pulse{animation:none}}
.card.has-media{overflow:hidden}.card.has-media>.card-media{margin:-28px -28px 20px}.card.has-media>.card-badge{margin:-34px 0 14px -4px}
@media(max-width:650px){.has-media>.card-media{margin:-25px -25px 18px}.card-tile .pub-icon{width:96px!important;height:96px!important}.has-media>.card-badge{margin:-32px 0 14px -4px}}
@media(prefers-reduced-motion:reduce){.has-media>.card-media img,.card-tile .pub-icon,.card-illus .card-art{transition:none}.card-tile .pub-icon *,.card-badge,.card-art *{animation:none!important}.has-media:hover>.card-media img,.has-media:focus-within>.card-media img,.has-media:hover>.card-tile .pub-icon,.has-media:hover>.card-illus .card-art,.has-media:focus-within>.card-illus .card-art{transform:none}}
@media print{.has-media>.card-media,.has-media>.card-badge{display:none}}
@media (max-width:700px){body:not(.pub-home) .pub-resource>.card-media.card-illus,body:not(.pub-home) .pub-resource>.card-badge.is-illus{display:none}}
