/*
Theme Name: IP&LAW Free
Theme URI: https://ipandlaw.com/
Description: Lekki motyw potomny Twenty Twenty zastępujący nagłówek, stopkę i stronę 404 z Elementor Pro.
Author: IP&LAW
Template: twentytwenty
Version: 1.0.10
Text Domain: ipandlaw-free
*/

:root {
	--ip-navy: #0a2a41;
	--ip-navy-deep: #06233a;
	--ip-green: #5a9e3f;
	--ip-green-bright: #66ad48;
	--ip-white: #ffffff;
	--ip-muted: #dbe3e8;
	--ip-container: 1280px;
}

html {
	scroll-behavior: smooth;
}

body.ipandlaw-free {
	background: #fff;
}

/*
 * The cookie-consent plugin leaves its banner layer over the top of the
 * viewport in several states. The layer itself must not intercept the site
 * header; actual consent links and controls remain interactive.
 */
.cc-window {
	pointer-events: none !important;
}

.cc-window a,
.cc-window button,
.cc-window [role="button"] {
	pointer-events: auto !important;
}

.cc-window.cc-invisible {
	visibility: hidden !important;
}

.ip-skip-link {
	background: var(--ip-navy);
	color: #fff;
	left: 1rem;
	padding: 0.75rem 1rem;
	position: fixed;
	top: -5rem;
	z-index: 100000;
}

.ip-skip-link:focus {
	top: 1rem;
}

.ip-content-anchor {
	display: block;
	height: 0;
	scroll-margin-top: 120px;
}

.ip-site-header {
	background: #fff;
	box-shadow: 0 5px 30px rgba(0, 0, 0, 0.1);
	position: sticky;
	top: 0;
	z-index: 9999;
}

.admin-bar .ip-site-header {
	top: 32px;
}

.ip-header-inner {
	align-items: center;
	display: flex;
	justify-content: space-between;
	margin: 0 auto;
	max-width: var(--ip-container);
	min-height: 102px;
	padding: 10px 20px;
	position: relative;
}

.ip-brand {
	display: block;
	flex: 0 0 auto;
	line-height: 0;
}

.ip-brand img {
	height: auto;
	width: 108px;
}

.ip-primary-nav ul,
.ip-footer-links,
.ip-contact-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ip-primary-nav ul {
	align-items: center;
	display: flex;
	gap: 0;
}

.ip-primary-nav li {
	margin: 0;
	padding: 0 clamp(10px, 1.2vw, 19px);
}

body.ipandlaw-free .ip-primary-nav a {
	align-items: center;
	color: var(--ip-navy);
	display: flex;
	font-family: "Montserrat", Arial, sans-serif;
	font-size: 18px;
	font-weight: 300;
	line-height: 27px;
	padding: 27.5px 0;
	position: relative;
	text-decoration: none;
	transition: none !important;
	white-space: nowrap;
}

.ip-primary-nav a::before {
	background: var(--ip-green);
	content: "";
	height: 2px;
	left: 0;
	position: absolute;
	right: 100%;
	top: 17.5px;
	transition: none;
}

.ip-primary-nav a:hover,
.ip-primary-nav a:focus,
.ip-primary-nav li:hover > a,
.ip-primary-nav .current-menu-item > a,
.ip-primary-nav .current_page_item > a {
	color: var(--ip-green);
}

.ip-primary-nav a:hover::before,
.ip-primary-nav a:focus::before,
.ip-primary-nav li:hover > a::before,
.ip-primary-nav .current-menu-item > a::before,
.ip-primary-nav .current_page_item > a::before {
	right: 0;
}

.ip-menu-toggle {
	align-items: center;
	background: transparent;
	border: 0;
	color: var(--ip-green);
	cursor: pointer;
	display: none;
	height: 48px;
	justify-content: center;
	padding: 8px;
	width: 48px;
}

.ip-menu-toggle:hover,
.ip-menu-toggle:focus {
	background: #f3f6f1;
	color: var(--ip-navy);
}

.ip-menu-toggle-lines,
.ip-menu-toggle-lines::before,
.ip-menu-toggle-lines::after {
	background: currentColor;
	display: block;
	height: 2px;
	position: relative;
	transition: transform 180ms ease, opacity 180ms ease;
	width: 28px;
}

.ip-menu-toggle-lines::before,
.ip-menu-toggle-lines::after {
	content: "";
	left: 0;
	position: absolute;
}

.ip-menu-toggle-lines::before {
	top: -8px;
}

.ip-menu-toggle-lines::after {
	top: 8px;
}

.ip-menu-toggle[aria-expanded="true"] .ip-menu-toggle-lines {
	background: transparent;
}

.ip-menu-toggle[aria-expanded="true"] .ip-menu-toggle-lines::before {
	top: 0;
	transform: rotate(45deg);
}

.ip-menu-toggle[aria-expanded="true"] .ip-menu-toggle-lines::after {
	top: 0;
	transform: rotate(-45deg);
}

body.ipandlaw-free .ip-site-footer {
	background-color: var(--ip-navy) !important;
	color: #fff;
	font-family: "Poppins", Arial, sans-serif;
}

/*
 * Elementor Pro is no longer responsible for the global footer. Some
 * production pages can still render its legacy 2021 Theme Builder footer
 * after Pro is disabled, especially after an Elementor data migration.
 * Hide only that legacy Elementor footer; the theme-owned footer uses
 * .ip-site-footer and remains visible.
 */
body.ipandlaw-free .elementor-location-footer,
body.ipandlaw-free [data-elementor-type="footer"] {
	display: none !important;
}

/*
 * The English production pages also contain legacy 2021 footer sections
 * embedded directly in each page's Elementor content. They are not Theme
 * Builder locations and every page has different Elementor IDs. Scope the
 * cleanup to English documents and the exact legacy section IDs found in the
 * production markup. The theme footer is outside the Elementor page content.
 */
html[lang^="en"] body.ipandlaw-free [data-id="6ff2280"],
html[lang^="en"] body.ipandlaw-free [data-id="1246dea6"],
html[lang^="en"] body.ipandlaw-free [data-id="044b604"],
html[lang^="en"] body.ipandlaw-free [data-id="2b508c44"],
html[lang^="en"] body.ipandlaw-free [data-id="2fd4ed2"],
html[lang^="en"] body.ipandlaw-free [data-id="3c26688f"],
html[lang^="en"] body.ipandlaw-free [data-id="84ea0c2"],
html[lang^="en"] body.ipandlaw-free [data-id="636db90a"],
html[lang^="en"] body.ipandlaw-free [data-id="7242b36"],
html[lang^="en"] body.ipandlaw-free [data-id="360e6c9e"],
html[lang^="en"] body.ipandlaw-free [data-id="a232bcc"],
html[lang^="en"] body.ipandlaw-free [data-id="3f416ec7"],
html[lang^="en"] body.ipandlaw-free [data-id="3a4447c"],
html[lang^="en"] body.ipandlaw-free [data-id="1c04ace7"] {
	display: none !important;
}

/*
 * Keep team biographies as readable and compact as the service descriptions.
 * Element Pack inherits the global 27px text line-height, while Elementor's
 * service paragraphs use the intended 1.5 ratio (21px at a 14px font size).
 */
body.ipandlaw-free .elementor-widget-bdt-member .bdt-member-text {
	line-height: 1.5 !important;
}

.ip-footer-main {
	display: grid;
	gap: clamp(36px, 6vw, 90px);
	grid-template-columns: minmax(250px, 1.1fr) minmax(180px, 0.8fr) minmax(240px, 0.9fr);
	margin: 0 auto;
	max-width: var(--ip-container);
	padding: 50px 20px;
}

.ip-footer-brand img {
	height: auto;
	margin-bottom: 20px;
	width: 112px;
}

.ip-footer-brand p {
	color: #fff;
	font-size: 16px;
	line-height: 1.65;
	margin: 0;
	max-width: 370px;
}

.ip-site-footer .ip-footer-heading {
	color: rgba(255, 255, 255, 0.92);
	font-family: "Montserrat", Arial, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	margin: 0 0 18px;
	text-transform: uppercase;
}

.ip-site-footer .ip-footer-column:nth-child(3) .ip-footer-heading {
	font-size: 18px;
	font-weight: 500;
	line-height: 27px;
}

.ip-footer-links li,
.ip-contact-list li {
	color: #fff;
	font-size: 15px;
	line-height: 1.65;
	margin: 0 0 5px;
}

.ip-site-footer a {
	color: #fff;
	text-decoration: none;
}

.ip-site-footer a:hover,
.ip-site-footer a:focus {
	color: #67d49a;
}

.ip-contact-list .ip-address {
	margin-bottom: 12px;
}

.ip-footer-bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.19);
}

.ip-footer-bottom-inner {
	align-items: center;
	display: flex;
	font-size: 14px;
	justify-content: space-between;
	margin: 0 auto;
	max-width: var(--ip-container);
	min-height: 64px;
	padding: 12px 20px;
}

.ip-footer-bottom p {
	color: #fff;
	margin: 0;
}

.ip-404 {
	align-items: center;
	background: var(--ip-navy-deep);
	color: #fff;
	display: flex;
	justify-content: center;
	min-height: 58vh;
	padding: 80px 20px;
	text-align: center;
}

.ip-404-inner {
	max-width: 720px;
}

.ip-404-code {
	color: var(--ip-green-bright);
	font-family: "Poppins", Arial, sans-serif;
	font-size: clamp(68px, 12vw, 150px);
	font-weight: 300;
	line-height: 1;
	margin: 0 0 16px;
}

.ip-404 h1 {
	color: #fff;
	font-family: "Poppins", Arial, sans-serif;
	font-size: clamp(30px, 5vw, 48px);
	font-weight: 400;
	margin: 0 0 16px;
}

.ip-404 p {
	color: var(--ip-muted);
	font-family: "Poppins", Arial, sans-serif;
	font-size: 18px;
	margin: 0 0 32px;
}

.ip-button {
	background: var(--ip-green);
	color: #fff;
	display: inline-block;
	font-family: "Poppins", Arial, sans-serif;
	font-size: 16px;
	padding: 14px 26px;
	text-decoration: none;
}

.ip-button:hover,
.ip-button:focus {
	background: #fff;
	color: var(--ip-navy);
}

@media (max-width: 1024px) {
	.ip-header-inner {
		min-height: 92px;
	}

	.ip-brand img {
		width: 94px;
	}

	.ip-menu-toggle {
		display: inline-flex;
	}

	.ip-primary-nav {
		background: #fff;
		box-shadow: 0 16px 24px rgba(0, 0, 0, 0.12);
		display: none;
		left: 0;
		position: absolute;
		right: 0;
		top: 100%;
	}

	.ip-primary-nav.is-open {
		display: block;
	}

	.ip-primary-nav ul {
		align-items: stretch;
		display: block;
		padding: 8px 20px 16px;
	}

	.ip-primary-nav li {
		border-bottom: 1px solid #eef0f1;
		padding: 0;
	}

	.ip-primary-nav li:last-child {
		border-bottom: 0;
	}

	body.ipandlaw-free .ip-primary-nav a {
		display: block;
		font-size: 16px;
		line-height: 26px;
		padding: 13px 4px;
	}

	.ip-primary-nav a::before {
		display: none;
	}

	.ip-footer-main {
		gap: 42px;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

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

@media (max-width: 782px) {
	.admin-bar .ip-site-header {
		top: 46px;
	}
}

@media (max-width: 640px) {
	.ip-header-inner {
		min-height: 88px;
		padding: 8px 16px;
	}

	.ip-brand img {
		width: 88px;
	}

	.ip-footer-main {
		display: block;
		padding: 40px 20px 28px;
	}

	.ip-footer-column {
		margin-bottom: 36px;
	}

	.ip-footer-column:last-child {
		margin-bottom: 0;
	}

	.ip-footer-bottom-inner {
		align-items: flex-start;
		display: block;
		padding-bottom: 22px;
		padding-top: 22px;
		text-align: center;
	}

	.ip-footer-bottom p + p {
		margin-top: 8px;
	}
}
