/*
 * Linki w treści po najechaniu (Recepcja → Wygląd → „Linki po najechaniu”, body.rcp-linkfx-*).
 * Menu ma własne efekty (widget-menu.css).
 *
 * Trzy rodzaje linków, bo każdy potrzebuje innej techniki:
 * 1. Linki ze stałą kreską (border-bottom): „Cała galeria” (.rcp-sh__link), „Zobacz więcej”
 *    w układzie wierszy (.rcp-services__more-link), link pod kartami usług (.rcp-services__all-link), linki w „Zaletach” (.rcp-ft__link). Efekt rysuje się NA tej kresce (::after
 *    przykrywa border), żeby nie było dwóch linii.
 * 2. Linki w tekście: kontakt, pasek informacji, edytor tekstu, dokumenty (.rcp-prose).
 *    Kreska jako tło (działa też dla linku w dwóch wierszach).
 * 3. Karty usług: efekt na tytule i „Zobacz więcej”, gdy kursor jest nad całą kartą.
 * Na ciemnych sekcjach (.rcp-is-dark z links.js) efekt używa koloru dodatkowego.
 * Kolor tekstu zmienia się szybko (0,1 s): wolne przejście z bieli do koloru przechodzi przez blady odcień, który widać do końca animacji kreski.
 */

body[class*="rcp-linkfx-"] {
	--rcp-link-line: var(--rcp-color-primary, #8c5e52);
	--rcp-link-hover: var(--rcp-color-primary, #8c5e52);
	--rcp-link-soft: var(--rcp-color-secondary, #f3ede1);
}

body[class*="rcp-linkfx-"] .rcp-is-dark {
	--rcp-link-line: var(--rcp-color-on-dark, #f3ede1);
	--rcp-link-hover: var(--rcp-color-on-dark, #f3ede1);
	--rcp-link-soft: rgb(255 255 255 / 0.12);
}

body[class*="rcp-linkfx-"] .rcp-is-light {
	--rcp-link-line: var(--rcp-color-primary, #8c5e52);
	--rcp-link-hover: var(--rcp-color-primary, #8c5e52);
	--rcp-link-soft: var(--rcp-color-secondary, #f3ede1);
}

/* Linki w tekście: bez podkreślenia przeglądarki (każdy wariant rysuje własne). */
body[class*="rcp-linkfx-"] :is(.rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a):is(:hover, :focus-visible) {
	text-decoration: none;
}

/* ================================================================
 * Kreska od lewej (underline)
 * ============================================================== */

/* 1. Ze stałą kreską: kolor kreski przechodzi od lewej. */
body.rcp-linkfx-underline :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link) {
	position: relative;
}
body.rcp-linkfx-underline :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link)::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 2px;
	background: var(--rcp-link-line);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 0.4s var(--rcp-ease, ease);
}
body.rcp-linkfx-underline :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link):is(:hover, :focus-visible)::after {
	transform: scaleX(1);
}

/* 2. W tekście i 3. w kartach: kreska jako tło. */
body.rcp-linkfx-underline :is(.rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a, .rcp-services__link, .rcp-services__more) {
	text-decoration: none;
	background-image: linear-gradient(var(--rcp-link-line), var(--rcp-link-line));
	background-repeat: no-repeat;
	background-position: left bottom;
	background-size: 0 2px;
	transition: background-size 0.35s var(--rcp-ease, ease);
}
body.rcp-linkfx-underline :is(.rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a):is(:hover, :focus-visible),
body.rcp-linkfx-underline .rcp-services__card.is-linked:is(:hover, :focus-within) :is(.rcp-services__link, .rcp-services__more) {
	background-size: 100% 2px;
}
body.rcp-linkfx-underline .rcp-services__link {
	padding-bottom: 2px;
}

/* ================================================================
 * Strzałka i kolor główny (arrow)
 * ============================================================== */

body.rcp-linkfx-arrow :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link, .rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a, .rcp-services__link, .rcp-services__more) {
	transition: color 0.1s linear, border-color 0.1s linear;
}
body.rcp-linkfx-arrow :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link)::after {
	content: "→";
	display: inline-block;
	margin-left: 0.5em;
	letter-spacing: 0;
	transition: transform 0.3s var(--rcp-ease, ease);
}
body.rcp-linkfx-arrow .rcp-services__more::after {
	display: inline-block;
	transition: transform 0.3s var(--rcp-ease, ease);
}
body.rcp-linkfx-arrow :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link, .rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a):is(:hover, :focus-visible),
body.rcp-linkfx-arrow .rcp-services__card.is-linked:is(:hover, :focus-within) :is(.rcp-services__link, .rcp-services__more) {
	color: var(--rcp-link-hover);
	border-color: var(--rcp-link-hover);
}
body.rcp-linkfx-arrow :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link):is(:hover, :focus-visible)::after,
body.rcp-linkfx-arrow .rcp-services__card.is-linked:is(:hover, :focus-within) .rcp-services__more::after {
	transform: translateX(5px);
}

/* ================================================================
 * Kreska stała, po najechaniu grubsza w kolorze głównym (line-thick)
 * ============================================================== */

body.rcp-linkfx-line-thick :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link) {
	transition: color 0.1s linear, border-color 0.1s linear, box-shadow 0.1s linear;
}
body.rcp-linkfx-line-thick :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link):is(:hover, :focus-visible) {
	color: var(--rcp-link-hover);
	border-color: var(--rcp-link-line);
	box-shadow: 0 1px 0 var(--rcp-link-line);
}
body.rcp-linkfx-line-thick :is(.rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a, .rcp-services__link) {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.25em;
	transition: color 0.1s linear, text-decoration-color 0.1s linear;
}
body.rcp-linkfx-line-thick :is(.rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a):is(:hover, :focus-visible),
body.rcp-linkfx-line-thick .rcp-services__card.is-linked:is(:hover, :focus-within) .rcp-services__link {
	color: var(--rcp-link-hover);
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-decoration-color: var(--rcp-link-line);
}
body.rcp-linkfx-line-thick .rcp-services__card.is-linked:is(:hover, :focus-within) .rcp-services__more {
	color: var(--rcp-link-hover);
}

/* ================================================================
 * Delikatne tło (soft-bg): tło wychodzi poza tekst cieniem, układ się nie przesuwa
 * ============================================================== */

body.rcp-linkfx-soft-bg :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link, .rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a, .rcp-services__link) {
	border-radius: 2px;
	transition: background-color 0.1s linear, box-shadow 0.1s linear;
}
body.rcp-linkfx-soft-bg :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link, .rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a):is(:hover, :focus-visible),
body.rcp-linkfx-soft-bg .rcp-services__card.is-linked:is(:hover, :focus-within) .rcp-services__link {
	background-color: var(--rcp-link-soft);
	box-shadow: 0 0 0 0.35em var(--rcp-link-soft);
}
body.rcp-linkfx-soft-bg .rcp-services__card.is-linked:is(:hover, :focus-within) .rcp-services__more {
	color: var(--rcp-link-hover);
}

/* ================================================================
 * Sam kolor główny (color)
 * ============================================================== */

body.rcp-linkfx-color :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link, .rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a, .rcp-services__link, .rcp-services__more) {
	transition: color 0.1s linear, border-color 0.1s linear;
}
body.rcp-linkfx-color :is(.rcp-sh a.rcp-sh__link, .rcp-services a.rcp-services__more-link, .rcp-services__all a.rcp-services__all-link, .rcp-ft a.rcp-ft__link, .rcp-contact__item a, a.rcp-is__value, .rcp-is__value a, .elementor-widget-text-editor a:not(.elementor-button), .rcp-prose a):is(:hover, :focus-visible),
body.rcp-linkfx-color .rcp-services__card.is-linked:is(:hover, :focus-within) :is(.rcp-services__link, .rcp-services__more) {
	color: var(--rcp-link-hover);
	border-color: var(--rcp-link-hover);
}

@media (prefers-reduced-motion: reduce) {
	body[class*="rcp-linkfx-"] :is(.rcp-sh__link, .rcp-services__more-link, .rcp-services__all-link, .rcp-ft__link, .rcp-services__link, .rcp-services__more, .rcp-contact__item a, .rcp-is__value, .elementor-widget-text-editor a, .rcp-prose a),
	body[class*="rcp-linkfx-"] :is(.rcp-sh__link, .rcp-services__more-link, .rcp-services__all-link, .rcp-ft__link, .rcp-services__more)::after {
		transition: none;
	}
}
