/**
 * Variant CSS: footer--contact-columns
 *
 * A contact-forward footer — brand + a short claim on the left, three columns of
 * concrete details (address / phone+email / hours) beside it, then a legal +
 * copyright bar under a hairline. Unlike the sitemap footer: the footer becomes
 * a business card. Always the dark page-foot surface, so contrast is explicit
 * on-dark (never polarity-dependent); the small labels take a color-mix accent
 * lift that stays legible in every theme. Part of the `footer` role.
 */

body.aibt-universal .universal-footer--contact-columns {
	background: var(--background-dark, #141414);
	color: var(--text-on-dark, #ffffff);
	padding-block: calc(clamp(2.8rem, 6vw, 4.4rem) * var(--density, 1));
}

/* Main row: brand + contact columns. */
body.aibt-universal .universal-footer--contact-columns .universal-footer__main {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
	gap: clamp(1.8rem, 4.5vw, 3.5rem);
	align-items: start;
	padding-bottom: calc(clamp(1.8rem, 4vw, 2.6rem) * var(--density, 1));
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__masthead {
	font-family: var(--font-display) !important;
	color: var(--text-on-dark, #ffffff) !important;
	margin: 0 0 var(--space-md) 0 !important;
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__tagline {
	font-family: var(--font-body) !important;
	font-size: var(--text-sm) !important;
	line-height: var(--leading-relaxed) !important;
	color: var(--text-on-dark, #ffffff) !important;
	opacity: 0.66;
	margin: 0 !important;
	max-width: 36ch;
}

/* Contact columns. */
body.aibt-universal .universal-footer--contact-columns .universal-footer__contact {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1.2rem, 3vw, 2rem);
}

/* Human-only footer-hours with no client hours → the loader blanks the value,
   leaving the static "Godziny" label orphaned above an empty <p>. Drop that
   column AND reflow the grid to the 2 remaining columns (a fixed repeat(3) would
   otherwise leave an empty third track / gap). Cleared value renders :empty. */
body.aibt-universal .universal-footer--contact-columns .universal-footer__ccol:has(> .universal-footer__cval:empty) {
	display: none !important;
}
body.aibt-universal .universal-footer--contact-columns .universal-footer__contact:has(.universal-footer__cval:empty) {
	grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__clabel {
	font-family: var(--font-body) !important;
	font-size: var(--text-xs) !important;
	font-weight: 700 !important;
	letter-spacing: var(--tracking-widest) !important;
	text-transform: uppercase !important;
	/* Accent lift so the label is legible on dark even when --accent == the
	   dark surface (light themes). */
	color: color-mix(in srgb, var(--accent) 45%, var(--on-dark, #ffffff)) !important;
	margin: 0 0 var(--space-sm) 0 !important;
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__cval {
	font-family: var(--font-body) !important;
	font-size: var(--text-sm) !important;
	line-height: 1.7 !important;
	color: var(--text-on-dark, #ffffff) !important;
	opacity: 0.86;
	margin: 0 !important;
}

/* Legal bar. */
body.aibt-universal .universal-footer--contact-columns .universal-footer__legal {
	gap: 0.8rem 1.2rem !important;
	padding-top: calc(clamp(1.4rem, 3vw, 2rem) * var(--density, 1));
	border-top: 1px solid color-mix(in srgb, var(--text-on-dark, #ffffff) 14%, transparent);
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__copyright {
	font-family: var(--font-body) !important;
	font-size: var(--text-xs) !important;
	color: var(--text-on-dark, #ffffff) !important;
	opacity: 0.58;
	margin: 0 !important;
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__legal-links {
	font-family: var(--font-body) !important;
	font-size: var(--text-xs) !important;
	color: color-mix(in srgb, var(--text-on-dark, #ffffff) 42%, transparent) !important;
	margin: 0 !important;
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__legal-links a {
	color: var(--text-on-dark, #ffffff) !important;
	opacity: 0.78;
	text-decoration: none;
	transition: color var(--duration-fast, 0.18s) var(--ease-default, ease),
		opacity var(--duration-fast, 0.18s) var(--ease-default, ease);
}

body.aibt-universal .universal-footer--contact-columns .universal-footer__legal-links a:hover {
	color: color-mix(in srgb, var(--accent) 55%, var(--on-dark, #FFFFFF)) !important;
	opacity: 1;
}

/* Keyboard focus ring — legal links signal focus only via colour otherwise. */
body.aibt-universal .universal-footer--contact-columns .universal-footer__legal-links a:focus-visible {
	outline: 2px solid color-mix(in srgb, var(--accent) 55%, var(--on-dark, #FFFFFF));
	outline-offset: 2px;
	border-radius: var(--decor-radius, 4px);
}

/* Tablet: brand stacks above the contact columns. */
@media (max-width: 800px) {
	body.aibt-universal .universal-footer--contact-columns .universal-footer__main {
		grid-template-columns: 1fr;
		gap: clamp(1.6rem, 5vw, 2.2rem);
	}
}

/* Narrow phones: drop wide tracking so the uppercase labels don't gap (A5). */
@media (max-width: 640px) {
	body.aibt-universal .universal-footer--contact-columns .universal-footer__clabel {
		letter-spacing: 0 !important;
	}
}

/* Phone: contact columns go single-column; legal centres. */
@media (max-width: 480px) {
	body.aibt-universal .universal-footer--contact-columns .universal-footer__contact {
		grid-template-columns: 1fr;
		gap: clamp(1.1rem, 4vw, 1.5rem);
	}
	body.aibt-universal .universal-footer--contact-columns .universal-footer__legal {
		justify-content: center !important;
		text-align: center;
	}
}
