.reveal { opacity: 1; transform: none; }
.hero-copy { animation: arrive .65s ease-out both; }
.hero-art { animation: draw-in .9s ease-out both; }
@keyframes arrive { from { opacity: 0; transform: translateY(20px); } }
@keyframes draw-in { from { opacity: 0; transform: scale(.96); } }
@media (prefers-reduced-motion: reduce) {
  .hero-copy, .hero-art { animation: none; }
}

@media (min-width: 761px) {
  .mag-grid .story:last-child { grid-column: span 12; }
  .mag-grid .story:last-child > a { display: grid; grid-template-columns: minmax(260px, .55fr) 1fr; gap: clamp(2rem, 6vw, 7rem); }
}

/* Article-specific cover system: deterministic, original SVG art per story. */
.story-art::before, .story-art::after { display: none; }
.story-art { isolation: isolate; background: var(--ink); }
.story-art > span { position: relative; z-index: 2; font-size: .72rem; letter-spacing: .09em; text-transform: uppercase; }
.article-art { width: 100%; height: 100%; overflow: visible; }
.story-svg { position: absolute; inset: 0; transition: transform .55s cubic-bezier(.2,.8,.2,1), filter .55s; }
.story:hover .story-svg { transform: scale(1.045) rotate(.5deg); filter: saturate(1.18); }
.article-art .backdrop { fill: var(--ink); }
.article-art .line { fill: none; stroke: var(--accent); stroke-width: 2.2; vector-effect: non-scaling-stroke; }
.article-art .line.strong { stroke-width: 4; }
.article-art .ghost { fill: none; stroke: color-mix(in srgb, var(--accent) 48%, var(--paper)); stroke-width: 1.4; opacity: .72; }
.article-art .fill { fill: url(#unused); fill: var(--accent); opacity: .82; }
.article-art .paper { fill: var(--paper); opacity: .82; }
.article-art .frame { fill: none; stroke: color-mix(in srgb, var(--paper) 24%, transparent); stroke-width: 1; }
.article-visual .hero-article-art { position: absolute; inset: 0; }
.article-visual-label { position: absolute; left: clamp(1.2rem, 5vw, 5rem); bottom: clamp(1.2rem, 4vw, 3.5rem); z-index: 2; color: var(--paper); font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.family-editorial .article-art .frame { stroke-dasharray: 2 8; }
.family-magazine .article-art .fill { opacity: .92; }
.family-business .article-art .line { stroke-linecap: square; }
