.ecard{background:var(--c-cream-raised);border:1px solid var(--c-line-strong);transition:transform var(--t-med) var(--e-out), border-color var(--t-med) var(--e-out);grid-template-rows:auto 1fr;display:grid;overflow:hidden}.ecard--hovered{border-color:var(--c-turf);transform:translateY(-4px)}.ecard__media{aspect-ratio:16/11;background:var(--c-cream-sunken);position:relative;overflow:hidden}.ecard__media img{object-fit:cover;object-position:top center;width:100%;height:100%;transition:object-position 2.8s var(--e-out)}.ecard--hovered .ecard__media img{object-position:bottom center}.ecard__media-fallback{background-image:var(--blueprint);background-size:var(--blueprint-size);width:100%;height:100%}.ecard__media:after{content:"";left:50%;bottom:var(--s-2);background:color-mix(in srgb, var(--c-turf) 82%, transparent);background-image:linear-gradient(var(--c-on-turf), var(--c-on-turf)), linear-gradient(var(--c-on-turf), var(--c-on-turf));opacity:0;width:22px;height:22px;transition:opacity var(--t-med) var(--e-out);pointer-events:none;background-position:9px 6px,11px 6px;background-repeat:no-repeat;background-size:2px 8px,2px 8px;border-radius:50%;position:absolute;transform:translate(-50%)}.ecard:not(.ecard--hovered) .ecard__media:after{opacity:.7}.ecard__body{gap:var(--s-2);padding:var(--s-5);flex-direction:column;display:flex}.ecard__head{justify-content:space-between;align-items:baseline;gap:var(--s-3);display:flex}.ecard__name{font-size:var(--fs-h3)}.ecard__year{font-family:var(--f-mono);font-size:var(--fs-micro);color:var(--c-ink-faint)}.ecard__blurb{color:var(--c-ink-dim);font-size:var(--fs-small)}.ecard__stack{gap:var(--s-2);margin-top:var(--s-1);flex-wrap:wrap;list-style:none;display:flex}.ecard__tag{font-family:var(--f-mono);padding:2px var(--s-2);border:1px solid var(--c-green);color:var(--c-turf);background:color-mix(in srgb, var(--c-green) 12%, transparent);font-size:.68rem}.ecard__visit{align-items:center;gap:var(--s-2);font-family:var(--f-mono);font-size:var(--fs-micro);letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--c-gold);margin-top:auto;display:inline-flex}.ecard__visit svg{width:20px;height:10px;transition:transform var(--t-med) var(--e-out)}.ecard--hovered .ecard__visit svg{transform:translate(4px)}@media (prefers-reduced-motion:reduce){.ecard__media img{transition:none}.ecard--hovered .ecard__media img{object-position:top center}}
