/* ==========================================================================
   polish.css — small shared refinements, added 2026-09-21.
   Presentation and small-screen fit only: no content or colour changes.
   Remove the single <link> in includes/header.php to revert all of it.
   ========================================================================== */

/* --- Photographs ----------------------------------------------------------
   The venue and previous-edition photos already sit in .card-lift frames.
   Give them one shared frame and a slow zoom so the hover reads as a photo
   rather than just a shadow. */
figure.card-lift,
.card-lift > figure,
figure { overflow: hidden; }

figure img,
.card-lift > img {
   display: block;
   transition: transform .6s cubic-bezier(.22, .61, .36, 1);
   will-change: transform;
}
figure:hover img,
.card-lift:hover > img { transform: scale(1.045); }

/* --- In-page navigation ---------------------------------------------------
   Anchor links inside the programme and key-date pages jump; ease them. */
html { scroll-behavior: smooth; }

/* --- Respect the viewer's motion preference ------------------------------ */
@media (prefers-reduced-motion: reduce) {
   html { scroll-behavior: auto; }
   figure img,
   .card-lift > img,
   .card-lift { transition: none !important; }
   figure:hover img,
   .card-lift:hover > img { transform: none !important; }
}

/* --- Long URLs on narrow screens ------------------------------------------
   The Zoom join links in the programme are unbreakable strings and pushed
   the page ~10px wider than a 320px screen, so the whole page scrolled
   sideways. Let them wrap instead. */
.content-card a,
.slot a,
.card a { overflow-wrap: anywhere; }

/* --- Justified text on phones ---------------------------------------------
   The speaker biographies are justified. In a ~300px column that leaves
   large, uneven word gaps, so fall back to ragged-right on small screens. */
@media (max-width: 575.98px) {
   .text-justify,
   [style*="text-align: justify"],
   [style*="text-align:justify"] { text-align: left !important; }
}
