/* Carga progresiva y aparición de texto: compartidas por portal y blog. */
:root { --transition-fade: none; }
.site-loading { width: 100%; max-width: 1080px; margin: 0 auto 32px; padding: 24px 0; }
.site-loading-label { color: var(--color-text-muted); font-size: var(--font-size-meta); margin-bottom: 18px; }
.site-loading-shapes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.skeleton-block { display: block; border-radius: 10px; background: linear-gradient(100deg, #12232e 20%, #213c4a 50%, #12232e 80%); background-size: 200% 100%; animation: skeleton-shimmer 1.6s ease-in-out infinite; }
.skeleton-block--title { grid-column: 1 / -1; width: 70%; height: 40px; }
.skeleton-block--line, .skeleton-block--line-short { grid-column: 1 / -1; height: 18px; }
.skeleton-block--line-short { width: 60%; }
.skeleton-block--card { height: 180px; margin-top: 8px; }
.scroll-reveal { animation: text-reveal .45s ease-out both; }
.scroll-reveal:focus-within, .scroll-reveal:target { animation: none; }
@keyframes skeleton-shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@keyframes text-reveal { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 640px) { .site-loading-shapes { grid-template-columns: 1fr; } .skeleton-block--title { width: 85%; } .skeleton-block--card { height: 120px; } }
@media (prefers-reduced-motion: reduce) { .skeleton-block, .scroll-reveal { animation: none; } }
