/* Motion layer, loaded last. Everything here is switched off for visitors who ask for reduced motion
   (site.css removes all transitions and animations under prefers-reduced-motion). */

/* Reveal on scroll: site.js adds .reveal to blocks below the fold and .in when they enter the screen */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .7s ease, transform .8s cubic-bezier(.2, .7, .2, 1); }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; } }

/* Cards: lift and slow zoom on the cover */
.card { transition: transform .35s ease, box-shadow .35s ease; }
.card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px color-mix(in srgb, var(--atlantic) 14%, transparent); }
.card .top.cover img, .post-card .ph img { transition: transform 1.2s cubic-bezier(.2, .7, .2, 1); }
.card:hover .top.cover img, .post-card:hover .ph img { transform: scale(1.06); }
.more span[aria-hidden="true"] { display: inline-block; transition: transform .25s ease; }
a:hover .more span[aria-hidden="true"], a.more:hover span[aria-hidden="true"] { transform: translateX(4px); }
.btn { transition: transform .15s ease, background-color .2s ease, color .2s ease, box-shadow .2s ease; }

/* Photo tiles: gentle zoom on hover */
.pic.ph img { transition: transform 1.4s cubic-bezier(.2, .7, .2, 1); }
.pic.ph:hover img { transform: scale(1.04); }

/* Partner logos as two moving rows; site.js builds the rows, the grid stays as fallback */
.logos.marquee { display: grid; grid-template-columns: none; gap: 28px; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.marquee-row { display: flex; width: max-content; gap: 56px; animation: marquee 48s linear infinite; }
.marquee-row.reverse { animation-direction: reverse; }
.marquee-row li { flex: none; list-style: none; }
.marquee-row img { width: 140px; max-width: none; height: 96px; object-fit: contain; }
.logo-wall:hover .marquee-row, .logo-wall:focus-within .marquee-row { animation-play-state: paused; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* Archive notice on old posts */
.archive-note { background: var(--ice); color: var(--atlantic); border-radius: var(--r); padding: 14px 18px; font-size: 15px; }
.archive-note a { color: var(--royal); }

/* Honeypot fields stay out of sight */
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.news-intro { font-size: 14px; opacity: .85; margin: 0; }
.site-footer .news { margin-top: 16px; }

/* Comfortable tap targets for text links (WCAG 2.2 target size) */
a.more, .site-footer address a { display: inline-block; padding-block: 5px; }
