/* Pulido visual acotado. Cada negocio conserva sus fuentes, arte y composición. */
html[data-campaign-polish] a,
html[data-campaign-polish] button {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
html[data-campaign-polish] :is(a,button,input,select):focus-visible {
  outline: 2px solid var(--accent, currentColor);
  outline-offset: 4px;
}
html[data-campaign-polish] :is(.menu-link,.hub-main,.hub-menu,.menu-cover,.contact-card,.contact-link,.barca-action,.hub-contacts a,.hub-links a) {
  transition: box-shadow .22s ease, border-color .22s ease, transform .22s ease;
}
html[data-campaign-polish] :is(.category-tabs a,.category-tabs button,.category-select) {
  transition: color .18s ease, background-color .18s ease, border-color .18s ease;
}
html[data-campaign-polish] dialog {
  max-width: calc(100vw - 24px);
  max-height: calc(100dvh - 24px);
}
html[data-campaign-polish] dialog::backdrop {
  background-color: rgba(0,0,0,.66);
}
html[data-campaign-polish].campaign-motion .campaign-intro {
  animation: campaign-arrive .42s ease-out backwards;
}
html[data-campaign-polish].campaign-motion .campaign-arrival {
  animation: campaign-arrive .38s ease-out backwards;
  animation-delay: calc(var(--arrival-order,0) * 45ms);
}
@keyframes campaign-arrive {
  from { opacity: .86; }
  to { opacity: 1; }
}
@media (hover:hover) and (pointer:fine) {
  html[data-campaign-polish] :is(.menu-link,.hub-main,.hub-menu,.menu-cover,.barca-menu):hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(0,0,0,.13);
  }
  html[data-campaign-polish] :is(.contact-card,.contact-link,.hub-contacts a,.hub-links a):hover {
    transform: translateY(-1px);
  }
}
@media (prefers-reduced-motion:reduce) {
  html[data-campaign-polish] .campaign-intro,
  html[data-campaign-polish] .campaign-arrival { animation:none!important; }
  html[data-campaign-polish] :is(a,button,input,select) { transition:none!important; }
}
