/**
 * Fediya public — UI Pro Max polish layer (Soft UI Evolution)
 * Transitions / focus / hover / a11y only.
 * DO NOT change brand colors or page layout structure.
 * Tokens: themes.css (--accent, --ring, --shadow, --glass-border, …)
 */

/* —— Clickable affordance —— */
.btn,
.btn-primary,
.btn-ghost,
.glass-pill,
.card-row__hit,
.contact-chip,
.convert-cta-strip__btn,
.fediya-floating-call,
a.blog-row__view-btn,
button:not(:disabled),
[role="button"]:not([aria-disabled="true"]),
.catalog-nav a,
.site-header a,
.site-footer a,
.error-page__recovery-link,
.error-page__quick-link {
  cursor: pointer;
}

/* —— Soft transitions (150–300ms) —— */
.btn,
.btn-primary,
.btn-ghost,
.glass-pill,
.glass-card,
.contact-chip,
.convert-cta-strip__btn,
.project-row.glass-card,
.service-row.glass-card,
.blog-row.glass-card,
.team-row.glass-card,
.about-row.glass-card,
.admin-platform-card.glass-card,
.site-header a,
.site-footer a,
.catalog-nav a,
.contact-field input,
.contact-field textarea,
.contact-field select {
  transition-property: transform, box-shadow, border-color, background-color, color, filter, opacity;
  transition-duration: 200ms;
  transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

/* —— Focus visible (existing --ring) —— */
.btn:focus-visible,
.btn-primary:focus-visible,
.btn-ghost:focus-visible,
.glass-pill:focus-visible,
a:focus-visible,
button:focus-visible,
.contact-chip:focus-visible,
.convert-cta-strip__btn:focus-visible,
.fediya-floating-call:focus-visible,
.contact-field input:focus-visible,
.contact-field textarea:focus-visible,
.contact-field select:focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 3px;
}

.contact-field input:focus-visible,
.contact-field textarea:focus-visible,
.contact-field select:focus-visible {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--glass-border));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 35%, transparent);
}

/* —— Card / row hover polish (no layout shift beyond existing lift) —— */
.glass-card:hover {
  border-color: color-mix(in srgb, var(--accent) 22%, var(--glass-border));
  box-shadow: var(--shadow-lg);
}

.project-row.glass-card:hover,
.service-row.glass-card:hover,
.blog-row.glass-card:hover,
.team-row.glass-card:hover,
.about-row.glass-card:hover {
  border-color: color-mix(in srgb, var(--accent) 28%, var(--glass-border));
  box-shadow: var(--shadow);
}

/* —— Buttons —— */
.btn-primary:hover {
  filter: brightness(1.04);
}

.btn-primary:active {
  filter: brightness(0.97);
  transform: translateY(1px);
}

.btn-ghost:hover,
.glass-pill:hover {
  border-color: color-mix(in srgb, var(--accent) 28%, var(--glass-border));
}

/* —— List media —— */
.blog-row__media img,
.project-row__media img,
.service-row__media img,
.team-row__media img {
  transition: transform 280ms cubic-bezier(0.22, 1, 0.36, 1), filter 280ms ease;
}

.blog-row:hover .blog-row__media img,
.project-row:hover .project-row__media img,
.service-row:hover .service-row__media img,
.team-row:hover .team-row__media img {
  transform: scale(1.03);
  filter: saturate(1.04);
}

/* —— CTA strip / chips —— */
.convert-cta-strip__btn:hover {
  filter: brightness(1.03);
}

.contact-chip:hover {
  border-color: color-mix(in srgb, var(--accent) 30%, var(--glass-border));
  box-shadow: var(--shadow);
}

/* —— Header / footer links —— */
.site-footer a:hover,
.catalog-nav a:hover {
  color: var(--accent-2);
}

/* —— Selection —— */
::selection {
  background: color-mix(in srgb, var(--accent-soft) 80%, transparent);
  color: var(--text);
}

/* —— Reduced motion —— */
@media (prefers-reduced-motion: reduce) {
  .btn,
  .btn-primary,
  .btn-ghost,
  .glass-pill,
  .glass-card,
  .contact-chip,
  .convert-cta-strip__btn,
  .project-row.glass-card,
  .service-row.glass-card,
  .blog-row.glass-card,
  .team-row.glass-card,
  .blog-row__media img,
  .project-row__media img,
  .service-row__media img,
  .team-row__media img {
    transition: none !important;
    transform: none !important;
    filter: none !important;
  }

  .btn-primary:active {
    transform: none;
  }
}

/* —— Narrow mobile: no horizontal overflow from polish —— */
@media (max-width: 480px) {
  .glass-card:hover,
  .project-row.glass-card:hover,
  .service-row.glass-card:hover,
  .blog-row.glass-card:hover,
  .team-row.glass-card:hover {
    transform: none;
  }

  .blog-row:hover .blog-row__media img,
  .project-row:hover .project-row__media img,
  .service-row:hover .service-row__media img,
  .team-row:hover .team-row__media img {
    transform: none;
  }
}
