/*
Theme Name: FART
Template: twentytwentyfive
Description: Motyw potomny dla kortów tenisowych FART Poznań. Bordo i „naszywka” z logo, zieleń kortu, pomarańczowa piłka.
Version: 0.2.0
Requires at least: 6.6
Requires PHP: 7.4
Text Domain: fart
License: GPL-2.0-or-later
*/

/* ---------------------------------------------------------------------------
 * Podstawy
 * ------------------------------------------------------------------------ */

:root {
	--fart-jasny-80: rgb(255 250 243 / 0.82);
	--fart-szew: rgb(255 196 150 / 0.4);
	--fart-linia-kortu: rgb(255 255 255 / 0.16);
}

@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

[id] {
	scroll-margin-top: 1rem;
}

:where(a, button, summary, input, select, textarea):focus-visible {
	outline: 2px solid var(--wp--preset--color--pomarancz);
	outline-offset: 3px;
}

/* Bez odstępów między nagłówkiem, treścią i stopką — sekcje stykają się kolorami. */
.wp-site-blocks > * {
	margin-block-start: 0;
}

.fart-main {
	padding-block: 0;
}

.fart-main > .wp-block-post-content > .alignfull {
	margin-block: 0;
}

/* ---------------------------------------------------------------------------
 * Nagłówek: logo „naszywka” wisi od górnej krawędzi
 * ------------------------------------------------------------------------ */

.fart-header {
	position: relative;
	z-index: 20;
	background: var(--wp--preset--color--naszywka);
	color: var(--wp--preset--color--jasny);
}

.fart-header__bar {
	align-items: center;
	min-height: 4.5rem;
}

/* Logo na naszywce — ta sama tkanina i szew co cennik (patrz .fart-naszywka). */
.fart-header .fart-logo {
	align-self: flex-start;
	flex-shrink: 0;
	position: relative;
	z-index: 2;
	width: 11.5rem;
	margin: 0 0 -7rem;
	padding: 1.75rem 1.5rem 2.4rem;
	background: linear-gradient(180deg, #7d1b05 0%, #93290a 55%, #7a1904 100%);
	border-radius: 0 0 50% 50% / 0 0 2rem 2rem;
	box-shadow:
		0 1.5rem 2.5rem -1rem rgb(20 2 0 / 0.65),
		inset 0 1px 0 rgb(255 255 255 / 0.08);
}

.fart-header .fart-logo::before {
	content: "";
	position: absolute;
	inset: 0 0.5rem 0.5rem;
	border: 2px dashed var(--fart-szew);
	border-top: 0;
	border-radius: 0 0 50% 50% / 0 0 1.65rem 1.65rem;
	pointer-events: none;
}

.fart-logo a {
	display: block;
}

.fart-logo img {
	display: block;
	width: 100%;
	height: auto;
}

.fart-header__menu {
	gap: 1.5rem;
	align-items: center;
}

.fart-nav a {
	color: var(--wp--preset--color--jasny);
	text-decoration: none;
}

.fart-nav a:hover {
	color: var(--wp--preset--color--pomarancz);
}

.fart-nav .wp-block-navigation__responsive-container-open,
.fart-nav .wp-block-navigation__responsive-container-close {
	color: var(--wp--preset--color--jasny);
}

.fart-nav .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--wp--preset--color--naszywka);
	color: var(--wp--preset--color--jasny);
	font-size: 1.6rem;
}

.fart-btn-tel .wp-block-button__link {
	padding: 0.35em 1em;
	font-size: 1.1rem;
	white-space: nowrap;
}

@media (max-width: 781px) {
	.fart-header .fart-logo {
		width: 7rem;
		margin-bottom: -3.5rem;
		padding: 1rem 0.85rem 1.5rem;
		border-radius: 0 0 50% 50% / 0 0 1.25rem 1.25rem;
	}

	.fart-header .fart-logo::before {
		inset: 0 0.35rem 0.35rem;
		border-radius: 0 0 50% 50% / 0 0 1rem 1rem;
	}

	.fart-header .fart-header__cta {
		display: none;
	}
}

/* Przyciski z obrysem na ciemnym tle */
.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: inherit;
	border: 2px solid currentColor;
}

.is-style-outline > .wp-block-button__link:hover {
	background: rgb(255 250 243 / 0.1);
	color: inherit;
}

/* ---------------------------------------------------------------------------
 * Hero: nagłówek, słoń z rakietą i cennik-naszywka
 * ------------------------------------------------------------------------ */

.fart-hero {
	--fart-hero-top: var(--wp--preset--spacing--60);
	position: relative;
	padding-block: var(--fart-hero-top) var(--wp--preset--spacing--60);
	background:
		radial-gradient(ellipse 60% 70% at 20% 0%, rgb(143 35 0 / 0.55), transparent 70%),
		var(--wp--preset--color--bordo);
	color: var(--wp--preset--color--jasny);
}

.fart-hero__cols {
	gap: clamp(2rem, 5vw, 4.5rem);
}

.fart-hero__tekst {
	padding-top: clamp(1.5rem, 4vw, 3.5rem);
}

.fart-hero h1 {
	max-width: 13ch;
	margin-block: 0;
	color: var(--wp--preset--color--jasny);
	font-size: clamp(2.6rem, 6vw, 4.6rem);
	line-height: 0.98;
	letter-spacing: -0.01em;
	text-wrap: balance;
}

.fart-hero__lead {
	max-width: 36ch;
	margin-block: 1.25rem 2rem;
	color: var(--fart-jasny-80);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.5;
}

.fart-hero__slon {
	margin-block: clamp(2rem, 5vw, 3.5rem) 0;
}

.fart-hero__slon img {
	display: block;
	width: min(26rem, 100%);
	height: auto;
}

/* Naszywka — ten sam kształt co tło logo: zszywana tkanina z zaokrąglonym dołem. */
.fart-naszywka {
	--fart-cennik-text: var(--wp--preset--color--jasny);
	--fart-cennik-muted: rgb(255 250 243 / 0.72);
	--fart-cennik-line: rgb(255 250 243 / 0.16);
	--fart-cennik-price: #f6b44c;
	--fart-cennik-accent: #f6b44c;

	position: relative;
	padding: clamp(1.75rem, 3vw, 2.5rem) clamp(1.25rem, 3vw, 2.25rem) clamp(2.75rem, 5vw, 3.5rem);
	background: linear-gradient(180deg, #7d1b05 0%, #93290a 55%, #7a1904 100%);
	border-radius: 0 0 50% 50% / 0 0 2.25rem 2.25rem;
	box-shadow:
		0 2rem 3rem -1.25rem rgb(20 2 0 / 0.65),
		inset 0 1px 0 rgb(255 255 255 / 0.08);
	color: var(--wp--preset--color--jasny);
}

.fart-naszywka::before {
	content: "";
	position: absolute;
	inset: 0.6rem;
	border: 2px dashed var(--fart-szew);
	border-radius: 0 0 50% 50% / 0 0 1.85rem 1.85rem;
	pointer-events: none;
}

/* Na szerokim ekranie naszywka „wisi” od nagłówka, jak logo. */
@media (min-width: 782px) {
	.fart-hero .fart-naszywka {
		margin-top: calc(-1 * var(--fart-hero-top));
		padding-top: calc(var(--fart-hero-top) * 0.6 + 1rem);
	}

	.fart-hero .fart-naszywka::before {
		border-top: 0;
		top: 0;
	}
}

.fart-naszywka .fart-cennik__title {
	color: var(--wp--preset--color--jasny);
	font-size: clamp(1.7rem, 3vw, 2.2rem);
}

.fart-naszywka .fart-cennik__table {
	font-size: 1.05rem;
}

.fart-naszywka .fart-cennik__price {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-size: 1.6rem;
}

.fart-naszywka .fart-cennik__next summary {
	color: var(--wp--preset--color--jasny);
}

.fart-naszywka .fart-cennik__phone {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-size: 1.8rem;
}

/* ---------------------------------------------------------------------------
 * Sekcje treści
 * ------------------------------------------------------------------------ */

.fart-sekcja {
	padding-block: var(--wp--preset--spacing--60);
}

.fart-sekcja h2 {
	margin-block-start: 0;
}

.fart-sekcja p,
.fart-sekcja li {
	max-width: 60ch;
}

.fart-sekcja .wp-block-image img {
	border-radius: 4px;
}

/* Sekcja na zielonym tle z liniami kortu w tle. */
.fart-sekcja--kort {
	position: relative;
	overflow: hidden;
	background: var(--wp--preset--color--kort);
	color: var(--wp--preset--color--jasny);
}

.fart-sekcja--kort > * {
	position: relative;
	z-index: 1;
}

.fart-sekcja--kort h2 {
	color: var(--wp--preset--color--jasny);
}

.fart-sekcja--kort a {
	color: var(--wp--preset--color--pomarancz);
}

/*
 * Linie kortu rysowane tylko tam, gdzie nie ma treści, przy każdej szerokości ekranu:
 * - obrys (linie końcowe i boczne) — zawsze ~2.5rem na zewnątrz szerokiej treści,
 * - linie deblowe — druga linia u góry i u dołu, nad i pod treścią,
 * - siatka — pionowo na środku, czyli w odstępie między dwiema równymi kolumnami.
 * Linii serwisowych nie ma — przy układzie tekst + zdjęcie zawsze przecinałyby treść.
 */
.fart-sekcja--kort {
	--kort-y: 1.5rem;
	--kort-deblowe: 1.25rem;
	--kort-x: max(0.5rem, calc((100% - var(--wp--style--global--wide-size, 1200px)) / 2 - 2.5rem));
	padding-block: calc(var(--wp--preset--spacing--60) + 2rem);
}

.fart-sekcja--kort .wp-block-columns {
	column-gap: clamp(3rem, 8vw, 7rem);
}

.fart-sekcja--kort::before,
.fart-sekcja--kort::after {
	content: "";
	position: absolute;
	z-index: 0;
	pointer-events: none;
}

.fart-sekcja--kort::before {
	inset: var(--kort-y) var(--kort-x);
	border: 3px solid var(--fart-linia-kortu);
	background: linear-gradient(var(--fart-linia-kortu), var(--fart-linia-kortu)) center / 3px 100% no-repeat;
}

.fart-sekcja--kort::after {
	inset: calc(var(--kort-y) + var(--kort-deblowe)) var(--kort-x);
	border-block: 3px solid var(--fart-linia-kortu);
}

.fart-sekcja--kort .wp-block-image img {
	outline: 2px solid rgb(255 255 255 / 0.55);
	outline-offset: 0.5rem;
}

/* Lista z piłkami tenisowymi zamiast kropek. */
.fart-lista {
	padding-left: 0;
	list-style: none;
}

.fart-lista li {
	position: relative;
	padding-left: 1.75rem;
	margin-block: 0.5rem;
}

.fart-lista li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.4em;
	width: 0.85em;
	height: 0.85em;
	border-radius: 50%;
	background:
		radial-gradient(circle at -20% 50%, transparent 55%, rgb(255 255 255 / 0.85) 57%, rgb(255 255 255 / 0.85) 63%, transparent 65%),
		radial-gradient(circle at 120% 50%, transparent 55%, rgb(255 255 255 / 0.85) 57%, rgb(255 255 255 / 0.85) 63%, transparent 65%),
		var(--wp--preset--color--pomarancz);
}

/* Galeria */
.fart-sekcja--galeria {
	padding-top: 0;
}

.fart-galeria.wp-block-gallery {
	gap: 0.75rem;
}

.fart-galeria .wp-block-image img {
	border-radius: 3px;
}

/* Kontakt */
.fart-sekcja--kontakt {
	background: var(--wp--preset--color--piasek);
}

.fart-adres {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-size: 1.5rem;
	font-weight: 600;
	line-height: 1.25;
	color: var(--wp--preset--color--bordo);
}

.fart-mapa {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	max-height: 26rem;
	border: 0;
	border-radius: 4px;
	background: var(--wp--preset--color--krem);
}

/* ---------------------------------------------------------------------------
 * Stopka
 * ------------------------------------------------------------------------ */

.fart-footer {
	position: relative;
	padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--naszywka);
	color: var(--fart-jasny-80);
}

/* Szew jak na naszywce */
.fart-footer::before {
	content: "";
	position: absolute;
	inset: 0.6rem 0 auto;
	border-top: 2px dashed var(--fart-szew);
}

.fart-footer a {
	color: var(--wp--preset--color--jasny);
}

.fart-footer__slon {
	margin: 0;
}

.fart-footer__nazwa {
	margin-top: 0.5rem;
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--wp--preset--color--jasny);
}

.fart-footer__tytul {
	margin-bottom: 0.4rem;
	color: var(--wp--preset--color--pomarancz);
	font-size: 1.15rem;
}

.fart-footer__copy {
	margin-top: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--small);
	opacity: 0.7;
}

/* Pasek „Zadzwoń” na telefonach */
.fart-callbar {
	display: none;
}

@media (max-width: 781px) {
	.fart-callbar {
		position: fixed;
		inset: auto 0 0;
		z-index: 50;
		display: flex;
		justify-content: center;
		gap: 0.5rem;
		padding: 0.85rem 1rem calc(0.85rem + env(safe-area-inset-bottom, 0px));
		background: var(--wp--preset--color--pomarancz);
		color: var(--wp--preset--color--atrament);
		font-family: var(--wp--preset--font-family--barlow-condensed);
		font-size: 1.25rem;
		font-weight: 700;
		text-decoration: none;
		box-shadow: 0 -0.5rem 1.5rem rgb(0 0 0 / 0.2);
	}

	body {
		padding-bottom: 3.5rem;
	}
}

/* ---------------------------------------------------------------------------
 * Pozostałe strony
 * ------------------------------------------------------------------------ */

.fart-page {
	padding-block: var(--wp--preset--spacing--60);
}

.fart-404 {
	padding-block: var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--bordo);
	color: var(--wp--preset--color--jasny);
}

.fart-404 h1 {
	color: var(--wp--preset--color--jasny);
}

@media (max-width: 781px) {
	/* Kolumny jedna pod drugą — siatka przecięłaby tekst, zostaje sam obrys,
	   a ramka zdjęcia zlewałaby się z linią boczną. */
	.fart-sekcja--kort .wp-block-image img {
		outline: 0;
	}

	.fart-sekcja--kort::before {
		background: none;
	}

	.fart-hero__slon img {
		width: min(18rem, 80%);
	}
}
