/* ==========================================================================
   Versilo: siatka i szkielet (nagłówek, menu, pasek zakładek, stopka)
   ========================================================================== */

.container {
	width: 100%;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

.container--narrow {
	max-width: var(--container-narrow);
}

.section {
	position: relative;
	padding-block: var(--section-y);
}

.section--flush-top {
	padding-top: 0;
}

.section--dark {
	background: var(--ink);
	color: var(--on-dark);
	--line: var(--on-dark-line);
	--line-strong: #3a3a40;
	--muted: var(--on-dark-muted);
	--sand: var(--dark-raise);
	--stone: var(--dark-raise);
}

.section--bone {
	background: var(--bone);
}

/* ---------- Nagłówek ----------
   Na górze strony przezroczysty. Po przewinięciu zawartość zbiera się
   w pływającą pigułkę ze szkła, odsuniętą od krawędzi, jak pasek w aplikacji. */

.site-header {
	position: fixed;
	inset: 0 0 auto;
	z-index: 100;
	padding: 10px max(6px, calc(var(--gutter) - 1.1rem)) 0;
	pointer-events: none;
}

.header-inner {
	pointer-events: auto;
	max-width: calc(var(--container) - 2 * var(--gutter) + 2.2rem);
	height: calc(var(--header-h) - 10px);
	margin-inline: auto;
	padding-inline: 1.1rem 0.6rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--s-5);
	border: 1px solid transparent;
	border-radius: var(--r-pill);
	transition: background-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out),
		border-color var(--dur) var(--ease-out);
}

.site-header.is-stuck .header-inner {
	background: var(--glass);
	-webkit-backdrop-filter: var(--blur);
	backdrop-filter: var(--blur);
	border-color: color-mix(in srgb, var(--line) 75%, transparent);
	box-shadow: var(--shadow-1);
}

/* Nad ciemnym wideo (główna) i zdjęciem (Smokingi) jasne kolory, dopóki
   pasek nie dostanie szklanego tła. */
.is-home .site-header:not(.is-stuck),
.page-smokingi .site-header:not(.is-stuck) {
	color: var(--on-dark);
}

.is-home .site-header:not(.is-stuck) .header-cta,
.page-smokingi .site-header:not(.is-stuck) .header-cta {
	--btn-bg: var(--on-dark);
	--btn-fg: var(--ink);
}

.brand {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	flex-shrink: 0;
	color: inherit;
}

.brand__mark {
	width: 24px;
	color: currentColor;
}

.brand__word {
	width: 98px;
	color: currentColor;
}

.nav {
	display: flex;
	align-items: center;
	gap: 0.15rem;
}

.nav__link {
	padding: 0.5rem 0.9rem;
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	white-space: nowrap;
	transition: background-color var(--dur-fast) linear;
}

.nav__link:hover {
	background: color-mix(in srgb, currentColor 8%, transparent);
}

.nav__link[aria-current='page'] {
	background: color-mix(in srgb, currentColor 11%, transparent);
	font-weight: 500;
}

.header-actions {
	display: flex;
	align-items: center;
	gap: var(--s-3);
}

.header-phone {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	padding: 0.5rem 0.75rem;
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	transition: background-color var(--dur-fast) linear;
}

.header-phone:hover {
	background: color-mix(in srgb, currentColor 8%, transparent);
}

.header-phone .icon {
	width: 18px;
	height: 18px;
}

/* Przełącznik języka: linki PL / SK / EN dopisuje skrypt GTranslate, tu tylko
   wygląd. Stała szerokość, żeby pasek nie drgnął, zanim skrypt je wstawi. */
.lang-switch {
	display: inline-flex;
	align-items: stretch;
	gap: 2px;
	width: 124px;
	height: 38px;
	padding: 3px;
	flex-shrink: 0;
	border: 1px solid color-mix(in srgb, currentColor 20%, transparent);
	border-radius: var(--r-pill);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	line-height: 1;
}

.lang-switch a.glink {
	flex: 1;
	display: grid;
	place-items: center;
	border-radius: var(--r-pill);
	font-weight: 500;
	opacity: 0.6;
	transition: opacity var(--dur-fast) linear, background-color var(--dur-fast) linear;
}

.lang-switch a.glink:hover,
.lang-switch a.glink[aria-busy='true'] {
	opacity: 1;
	background: color-mix(in srgb, currentColor 8%, transparent);
}

.lang-switch a.glink.gt-current-lang {
	opacity: 1;
	font-weight: 500;
	background: color-mix(in srgb, currentColor 13%, transparent);
}

.nav-toggle {
	display: none;
	width: 44px;
	height: 44px;
	border-radius: var(--r-pill);
	place-items: center;
}

.nav-toggle__bars {
	display: block;
	width: 20px;
	height: 8px;
	position: relative;
}

.nav-toggle__bars::before,
.nav-toggle__bars::after {
	content: '';
	position: absolute;
	left: 0;
	width: 100%;
	height: 1.5px;
	border-radius: 2px;
	background: currentColor;
	transition: transform var(--dur) var(--ease-out);
}

.nav-toggle__bars::before {
	top: 0;
}

.nav-toggle__bars::after {
	bottom: 0;
}

.nav-open .nav-toggle__bars::before {
	transform: translateY(3.25px) rotate(45deg);
}

.nav-open .nav-toggle__bars::after {
	transform: translateY(-3.25px) rotate(-45deg);
}

.nav-open .site-header {
	color: var(--ink);
}

.nav-open .site-header .header-inner {
	background: transparent;
	box-shadow: none;
	border-color: transparent;
}

@media (max-width: 1240px) {
	.header-phone span {
		display: none;
	}
}

@media (max-width: 1080px) {
	.nav {
		display: none;
	}

	.nav-toggle {
		display: grid;
	}
}

/* To samo powyżej progu, gdy etykiety (np. po przetłumaczeniu) nie mieszczą
   się w pasku. Klasę liczy skrypt z realnych szerokości. */
.site-header.is-compact .nav {
	display: none;
}

.site-header.is-compact .nav-toggle {
	display: grid;
}

@media (max-width: 860px) {
	/* Na telefonie rezerwację i telefon niesie pasek zakładek. */
	.header-actions .header-cta,
	.header-actions .header-phone {
		display: none;
	}

	.header-inner {
		padding-inline: 0.9rem 0.25rem;
	}
}

/* ---------- Menu mobilne ---------- */

.mobile-nav {
	position: fixed;
	inset: 0;
	z-index: 99;
	background: var(--paper);
	padding: calc(var(--header-h) + var(--s-4)) var(--gutter) calc(var(--s-6) + env(safe-area-inset-bottom));
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: var(--s-6);
	clip-path: inset(0 0 100% 0);
	transition: clip-path 0.55s var(--ease-out), visibility 0s 0.55s;
	visibility: hidden;
	overflow-y: auto;
}

.nav-open .mobile-nav {
	clip-path: inset(0 0 0 0);
	visibility: visible;
	transition: clip-path 0.55s var(--ease-out);
}

.mobile-nav__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding-block: 0.55rem;
	border-bottom: 1px solid var(--line);
	font-family: var(--font-display);
	font-size: clamp(1.9rem, 8vw, 2.8rem);
	line-height: 1.15;
	opacity: 0;
	transform: translateY(0.8rem);
	transition: opacity 0.45s var(--ease-out), transform 0.45s var(--ease-out);
	transition-delay: calc(var(--i, 0) * 40ms);
}

.mobile-nav__link .icon {
	width: 22px;
	color: var(--muted);
}

.mobile-nav__link[aria-current='page'] {
	color: var(--brass-ink);
}

.nav-open .mobile-nav__link {
	opacity: 1;
	transform: none;
}

.mobile-nav__meta {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--s-3);
}

.mobile-nav__salon {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: var(--s-4);
	background: var(--bone);
	border-radius: var(--r);
	font-size: var(--fs-sm);
	color: var(--muted);
}

.mobile-nav__salon strong {
	color: var(--ink);
	font-weight: 500;
}

.mobile-nav__salon a {
	color: var(--ink);
	font-variant-numeric: tabular-nums;
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-color: var(--line-strong);
}

@media (max-width: 420px) {
	.mobile-nav__meta {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ---------- Pasek zakładek (telefon) ---------- */

.tabbar {
	display: none;
}

@media (max-width: 860px) {

	.tabbar {
		position: fixed;
		z-index: 90;
		left: 10px;
		right: 10px;
		bottom: calc(10px + env(safe-area-inset-bottom));
		height: var(--tabbar-h);
		display: grid;
		grid-template-columns: repeat(5, minmax(0, 1fr));
		align-items: stretch;
		padding: 5px;
		background: var(--glass);
		-webkit-backdrop-filter: var(--blur);
		backdrop-filter: var(--blur);
		border: 1px solid color-mix(in srgb, var(--line) 80%, transparent);
		border-radius: 24px;
		box-shadow: var(--shadow-2);
		transition: transform var(--dur) var(--ease-out);
	}

	.nav-open .tabbar {
		transform: translateY(calc(100% + 30px));
	}

	.tabbar__item {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 3px;
		border-radius: 19px;
		font-size: 10.5px;
		font-weight: 500;
		letter-spacing: 0.01em;
		color: var(--muted);
		transition: transform var(--dur-fast) var(--ease-out), color var(--dur-fast) linear;
	}

	.tabbar__item:active {
		transform: scale(0.92);
	}

	.tabbar__item[aria-current='page'] {
		color: var(--ink);
	}

	.tabbar__icon {
		display: grid;
		place-items: center;
		width: 40px;
		height: 28px;
		border-radius: var(--r-pill);
		transition: background-color var(--dur-fast) linear;
	}

	.tabbar__item[aria-current='page'] .tabbar__icon {
		background: color-mix(in srgb, var(--ink) 8%, transparent);
	}

	.tabbar__icon .icon {
		width: 21px;
		height: 21px;
		stroke-width: 1.4;
	}

	.tabbar__item--main {
		color: var(--ink);
	}

	.tabbar__item--main .tabbar__icon,
	.tabbar__item--main[aria-current='page'] .tabbar__icon {
		width: 48px;
		background: var(--ink);
		color: var(--paper);
	}
}

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

.site-footer {
	position: relative;
	background: var(--ink);
	color: var(--on-dark);
	border-radius: var(--r-lg) var(--r-lg) 0 0;
	padding-block: var(--s-8) var(--s-6);
}

/* Ciemna sekcja tuż nad stopką zlewa się z nią, więc zaokrąglenie znika. */
.section--dark + .site-footer,
main:has(> :last-child.section--dark) + .site-footer {
	border-radius: 0;
}

.footer-top {
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr 0.9fr;
	gap: var(--s-7) var(--gutter);
	padding-bottom: var(--s-7);
}

.footer-brand__mark {
	width: 34px;
	color: var(--on-dark);
	margin-bottom: var(--s-4);
}

.footer-tagline {
	font-family: var(--font-display);
	font-size: var(--fs-xl);
	line-height: 1.2;
	margin-bottom: var(--s-5);
}

.footer-phones {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.3rem var(--s-4);
	align-items: baseline;
	font-size: var(--fs-sm);
}

.footer-phones a {
	font-size: var(--fs-lg);
	font-variant-numeric: tabular-nums;
}

.footer-phones span {
	color: var(--on-dark-muted);
	font-size: var(--fs-xs);
}

.footer-col__title {
	font-size: var(--fs-sm);
	font-weight: 500;
	margin-bottom: var(--s-3);
}

.footer-address {
	font-style: normal;
	font-size: var(--fs-sm);
	color: var(--on-dark-muted);
	margin-bottom: var(--s-4);
}

.footer-hours {
	display: grid;
	gap: 0.3rem;
	font-size: var(--fs-xs);
	color: var(--on-dark-muted);
}

.footer-hours div {
	display: flex;
	justify-content: space-between;
	gap: var(--s-4);
	max-width: 17rem;
}

.footer-hours dd {
	color: var(--on-dark);
	font-variant-numeric: tabular-nums;
}

.footer-col ul {
	display: grid;
	gap: 0.55rem;
	font-size: var(--fs-sm);
}

.footer-col a {
	color: var(--on-dark-muted);
	transition: color var(--dur-fast) linear;
}

.footer-col a:hover {
	color: var(--on-dark);
}

.footer-bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--s-3);
	padding-top: var(--s-5);
	border-top: 1px solid var(--on-dark-line);
	font-size: var(--fs-xs);
	color: var(--on-dark-muted);
}

.footer-bottom a {
	color: var(--on-dark-muted);
	text-decoration: underline;
	text-underline-offset: 0.15em;
	transition: color var(--dur-fast) linear;
}

.footer-bottom a:hover {
	color: var(--on-dark);
}

@media (max-width: 1000px) {
	.footer-top {
		grid-template-columns: 1fr 1fr;
	}

	.footer-brand {
		grid-column: 1 / -1;
	}
}

@media (max-width: 560px) {
	.footer-top {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--s-6);
	}
}

/* Zapas na pasek zakładek w stopce, nie w body: inaczej pod ciemną stopką
   zostawałby jasny pas. Na końcu pliku, żeby wygrać z padding-block stopki. */
@media (max-width: 860px) {
	.site-footer {
		padding-bottom: calc(var(--s-6) + var(--tabbar-h) + 22px + env(safe-area-inset-bottom));
	}
}
