/* V54. One hover owner per component; positioning transforms are never replaced. */
@media (hover:hover) and (pointer:fine) {
  header a, footer a, main a:not(.project-card,.hero-cta), main button, main .upload-button,
  main img, header img, footer img, .hero-image, .hero-bg, .inspiration-image, .heritage-bg {
    transition:scale .42s cubic-bezier(.2,.72,.24,1),filter .42s ease,color .30s ease,opacity .30s ease,border-color .30s ease,box-shadow .30s ease;
  }
  main .zoom img, main .project-card img, main .mosaic img, main .gallery img {
    transition:scale .42s cubic-bezier(.2,.72,.24,1),filter .42s ease,opacity .30s ease;
  }
  header a:hover, footer a:hover, main a:not(.project-card,.hero-cta):hover,
  main button:hover, main .upload-button:hover {scale:1.035}
  main img:hover {scale:1.028}
  /* Containers and text remain fixed; only the photograph scales. */
  .project-card:hover img, main figure:hover img, main .zoom:hover img {scale:1.035}
  :is(header a,footer a,main a:not(.project-card),main button) img:hover {scale:1}
  .comparison img:hover {scale:1}
  #about .hero-bear:hover > img, #contacts .contact-art:hover > img {scale:1.028}
  #about .hero-photo:hover > img {scale:1.012}
  .hero:hover .hero-image,.hero:hover .hero-bg,.inspiration:hover .inspiration-image,
  .heritage:hover .heritage-bg,.cover:hover .cover-img,.hero:hover .hero-img {scale:1.012}
  #about:hover:not(:has(.hero-copy:hover,.hero-bear:hover)) .hero-photo > img {scale:1.012}
  .play,.video-play,.divider button {transform-origin:center}
  .phone .play,.divider button {transform-origin:0 0}
  .play:hover,.video-play:hover,.divider button:hover {scale:1.06}
  .hero-cta:hover .play {scale:1.06}
  .contacts > .bear {transform-origin:50% 0}
}
@media (min-width:721px) and (max-width:900px) {
  html,main {scroll-snap-type:none !important}
  body,main {overflow-x:clip}
  .ai-grid {grid-template-columns:minmax(0,1fr) !important}
  .comparison {width:100% !important;min-width:0 !important;max-width:100% !important}
}
/* Contrast correction only: existing light-scene palette, no new panel. */
@media (min-width:901px), (min-width:721px) and (hover:hover) and (pointer:fine) {
  .topbar.on-light-scene {background:linear-gradient(180deg,rgba(241,236,227,.92),rgba(241,236,227,.22),transparent)}
  .topbar.on-light-scene .wordmark,.topbar.on-light-scene nav a {color:#34362f}
  .topbar.on-light-scene nav a:hover {color:#111411}
}
@media (prefers-reduced-motion:reduce) {
  html {scroll-behavior:auto !important}
  main *,header *,footer * {transition:none !important}
}


/* V57 STABILITY — Dentistry keeps true full-screen frames on desktop. */
@media (min-width:901px) {
  body.page-dentistry .screen {
    height:100vh;
    min-height:100vh;
  }
}
