La ficha completa
El disparador y la hoja van juntos en el mismo fragmento porque no se entienden por separado: sin JavaScript la ficha no abre, y lo único que salva la degradación es que la tarjeta sea un enlace real al proyecto.
El guion de abrir/cerrar es de la vitrina. ficha.css no trae JavaScript: solo pinta.
El marcado
<button type="button" class="fbtn" data-ficha-abrir="ficha-demo">Abrir la ficha</button>
<div class="caso-overlay" id="ficha-demo" hidden>
<div class="caso-fondo" data-ficha-cerrar></div>
<div class="caso-panel" role="dialog" aria-modal="true" aria-labelledby="ficha-demo-titulo">
<button type="button" class="caso-cerrar" data-ficha-cerrar aria-label="Cerrar la ficha">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg>
</button>
<!-- En producción aquí va <img src="/captura.png" alt="…">. La vitrina pinta
un armazón para no traerse una imagen que no documenta nada. -->
<div class="caso-panel__media">
<svg viewBox="0 0 320 200" class="h-full w-full" role="img" aria-label="Armazón de una captura de pantalla" opacity="0.35">
<g fill="currentColor">
<rect x="0" y="0" width="320" height="22" opacity="0.5"/>
<rect x="0" y="22" width="72" height="178" opacity="0.28"/>
<rect x="88" y="40" width="140" height="12"/>
<rect x="88" y="62" width="200" height="8" opacity="0.6"/>
<rect x="88" y="78" width="176" height="8" opacity="0.6"/>
<rect x="88" y="108" width="90" height="60" opacity="0.4"/>
<rect x="190" y="108" width="98" height="60" opacity="0.4"/>
</g>
</svg>
</div>
<div class="caso-panel__cuerpo">
<p class="caso-panel__meta">Plataforma · Logística</p>
<h3 class="caso-panel__titulo" id="ficha-demo-titulo">Un proyecto de ejemplo</h3>
<p class="caso-panel__desc">La descripción completa cabe aquí porque la ficha no es un tooltip: es la parada intermedia entre la tarjeta y el sitio real. Quien llega hasta abajo ya decidió.</p>
<div class="caso-panel__chips">
<span class="rounded-sm border border-border px-2 py-1 font-mono text-[0.65rem] uppercase tracking-[0.12em] text-text-muted">Astro</span>
<span class="rounded-sm border border-border px-2 py-1 font-mono text-[0.65rem] uppercase tracking-[0.12em] text-text-muted">AWS</span>
</div>
<a href="/componentes" class="caso-panel__cta fbtn fbtn--primario">Ver el proyecto</a>
</div>
</div>
</div>