:root {
  --ts-radius-btn: 10px;
  --ts-radius-pill: 999px;
  --ts-ease: cubic-bezier(.2, .7, .2, 1);
  --ts-dur: 160ms;

  --ts-link-line: color-mix(in srgb, var(--color-text-link) 45%, transparent);
  --ts-primary-soft: color-mix(in srgb, var(--color-primary) 14%, transparent);
  --ts-primary-glow: color-mix(in srgb, var(--color-primary) 45%, transparent);
}

main a:not([class]),
main a.underline,
main a.link,
.prose a {
  color: var(--color-text-link);
  text-decoration-line: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
  text-decoration-color: var(--ts-link-line);
  font-weight: 500;
  border-radius: 3px;
  transition: color var(--ts-dur) var(--ts-ease),
              text-decoration-color var(--ts-dur) var(--ts-ease),
              text-decoration-thickness var(--ts-dur) var(--ts-ease);
}
main a:not([class]):visited,
main a.underline:visited,
main a.link:visited,
.prose a:visited { color: var(--color-text-link); }
main a:not([class]):hover,
main a.underline:hover,
main a.link:hover,
.prose a:hover {
  color: var(--color-primary-text-hover);
  text-decoration-color: currentColor;
  text-decoration-thickness: 2px;
}

.link-standalone {
  display: inline-flex; align-items: center; gap: .4em;
  min-height: 44px; padding: 0 .1em;
  color: var(--color-text-link); font-weight: 600;
  text-decoration: none;
}
.link-standalone::after {
  content: "→"; transition: transform var(--ts-dur) var(--ts-ease);
}
.link-standalone:visited { color: var(--color-text-link); }
.link-standalone:hover { color: var(--color-primary-text-hover); }
.link-standalone:hover::after { transform: translateX(3px); }

.btn, a.btn, button.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  min-height: 44px; padding: 10px 20px;
  border-radius: var(--ts-radius-btn);
  font-weight: 600; line-height: 1.2; text-decoration: none;
  transition: background-color var(--ts-dur) var(--ts-ease),
              border-color var(--ts-dur) var(--ts-ease),
              color var(--ts-dur) var(--ts-ease),
              box-shadow var(--ts-dur) var(--ts-ease),
              transform var(--ts-dur) var(--ts-ease);
}
a.btn:visited { color: inherit; }
a.btn-primary, a.btn-primary:visited { color: var(--color-text-on-primary); }
.btn-primary { background: var(--color-primary); border: 1px solid var(--color-primary); }
.btn-primary:hover { background: var(--color-primary-dark); border-color: var(--color-primary-dark); }

.btn-secondary, a.btn-secondary:visited {
  background: transparent; color: var(--color-primary-text);
  border: 1px solid var(--color-border-strong);
}
.btn-secondary:hover {
  background: var(--ts-primary-soft);
  border-color: var(--color-primary-light);
  color: var(--color-primary-text-hover);
}
.btn-ghost, a.btn-ghost:visited {
  background: transparent; color: var(--color-primary-text);
  border: 1px solid transparent;
}
.btn-ghost:hover { background: var(--ts-primary-soft); color: var(--color-primary-text-hover); }

.btn-sm { min-height: 40px; padding: 8px 14px; font-size: .9375rem; }
.btn .btn-icon { width: 1.1em; height: 1.1em; flex: none; }
.btn .btn-arrow { transition: transform var(--ts-dur) var(--ts-ease); }
.btn:hover .btn-arrow { transform: translateX(3px); }

.btn:active { transform: translateY(0) scale(.98); }
.btn:focus-visible, .chip:focus-visible, .link-standalone:focus-visible,
main a:focus-visible {
  outline: 2px solid var(--color-border-focus);
  outline-offset: 3px;
}

.chip, a.chip:visited {
  display: inline-flex; align-items: center; gap: .5em;
  min-height: 40px; padding: 6px 14px;
  border-radius: var(--ts-radius-pill);
  border: 1px solid var(--color-border-strong);
  background: var(--color-bg-tertiary);
  color: var(--color-text-primary);
  font-weight: 500; text-decoration: none;
  transition: border-color var(--ts-dur) var(--ts-ease), background-color var(--ts-dur) var(--ts-ease);
}
.chip:hover { border-color: var(--color-primary-light); background: var(--ts-primary-soft); }
.chip[aria-current="page"], .chip.is-active { border-color: var(--color-primary); background: var(--ts-primary-soft); }
.chip .chip-count {
  min-width: 1.6em; padding: 0 .45em; border-radius: var(--ts-radius-pill);
  background: var(--color-bg-secondary); color: var(--color-text-secondary);
  font-size: .8125rem; text-align: center;
}

a.usc-card, a.card-link {
  text-decoration: none;
  transition: border-color var(--ts-dur) var(--ts-ease), transform var(--ts-dur) var(--ts-ease), box-shadow var(--ts-dur) var(--ts-ease);
}
a.usc-card:hover, a.card-link:hover { border-color: var(--color-primary-light); }

.sidebar a:not(.btn), .site-footer a:not(.btn) {
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0% 1px; background-repeat: no-repeat; background-position: 0 100%;
  transition: background-size var(--ts-dur) var(--ts-ease), color var(--ts-dur) var(--ts-ease);
}
.sidebar a:not(.btn):hover, .site-footer a:not(.btn):hover { background-size: 100% 1px; color: var(--color-text-primary); }
.sidebar a:not(.btn):visited, .site-footer a:not(.btn):visited { color: inherit; }
.site-footer .footer-linkbtn {
  font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0% 1px; background-repeat: no-repeat; background-position: 0 100%;
  transition: background-size var(--ts-dur) var(--ts-ease), color var(--ts-dur) var(--ts-ease);
}
.site-footer .footer-linkbtn:hover { background-size: 100% 1px; color: var(--color-text-primary); }
.site-footer .footer-linkbtn { min-height: 24px; padding: 2px 0; }

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 0 0 4px var(--ts-primary-soft), 0 8px 22px -8px var(--ts-primary-glow);
  }
  .btn-secondary:hover, .chip:hover {
    box-shadow: 0 0 0 3px var(--ts-primary-soft);
  }
  a.usc-card:hover, a.card-link:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 28px -14px var(--ts-primary-glow);
  }
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .btn-primary:hover {
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--color-primary-light) 70%, transparent),
      0 0 10px -1px color-mix(in srgb, var(--color-primary-light) 55%, transparent),
      0 0 26px -6px color-mix(in srgb, var(--color-primary-light) 70%, transparent),
      0 8px 22px -10px var(--ts-primary-glow);
  }
  .btn-secondary:hover, .btn-ghost:hover, .chip:hover {
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--color-primary-light) 45%, transparent),
      0 0 14px -4px color-mix(in srgb, var(--color-primary-light) 45%, transparent);
  }
  .link-standalone:hover { text-shadow: 0 0 12px color-mix(in srgb, var(--color-primary-light) 45%, transparent); }
}

@media (forced-colors: active) {
  .btn, .chip { border: 1px solid ButtonText; }
  .btn:hover, .chip:hover { box-shadow: none; transform: none; }
}

.btn.btn-wrap { white-space: normal; text-align: left; max-width: 100%; overflow-wrap: anywhere; justify-content: flex-start; }

.voivodeship-filter .chip { flex-shrink: 0; white-space: nowrap; }

.hero-trust .chip { font-size: 0.8125rem; }
