/**
 * Novarius Identity & Regions — 0.9.4.1
 * ---------------------------------------------------------------
 * Warstwa addytywna, ładowana jako ostatnia (patrz p7portal_assets()
 * w functions.php — zależy od p7portal-main i, na stronie głównej,
 * od p7portal-civic-aurora-desktop). Style tu zawarte:
 *
 *   1) layout nowych regionów (header-top, hero-modules,
 *      content-modules, kolumny stopki, strefa partnerów);
 *   2) domyślne stylowanie widżetów rdzenia WP wewnątrz tych regionów
 *      (.widget/.p7-widget-title) — bez tego widżety renderują się
 *      bez żadnego stylu motywu;
 *   3) warianty logo (ciemne tło / sticky header);
 *   4) przełącznik wysokiego kontrastu (data-p7-contrast="high").
 *
 * inc/customizer-identity.php dopina do tego pliku (via
 * wp_add_inline_style) tokeny koloru i typografii z Customizera —
 * te reguły tutaj tylko KONSUMUJĄ --p7-custom-*/--p7-font-* i mają
 * bezpieczne wartości domyślne (var(fallback)), więc plik działa
 * poprawnie nawet zanim inline CSS zostanie wygenerowany.
 */

/* =========================================================
   1. TYPOGRAFIA Z CUSTOMIZERA
   ========================================================= */
body, input, button, select, textarea {
	font-family: var(--p7-font-body, inherit);
}
h1, h2, h3, h4, h5, h6,
.p7-kicker, .p7-eyebrow, .p7-mini-kicker {
	font-family: var(--p7-font-heading, inherit);
}

/* =========================================================
   2. HEADER TOP — alerty + dostępność
   ========================================================= */
.p7-header-top-shell {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 8px clamp(16px, 3vw, 32px);
	background: var(--p7-custom-primary, var(--p7-navy-950, #10233f));
	color: #fff;
	font-size: 13px;
}
.p7-header-top {
	flex: 1;
	min-width: 0;
}
.p7-header-top .widget { color: inherit; }

.p7-a11y-toggle {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 12px;
	border: 1px solid rgba(255, 255, 255, .35);
	border-radius: 999px;
	background: transparent;
	color: #fff;
	font: inherit;
	font-size: 12.5px;
	font-weight: 600;
	cursor: pointer;
}
.p7-a11y-toggle svg { width: 14px; height: 14px; }
.p7-a11y-toggle:hover { background: rgba(255, 255, 255, .12); }
.p7-a11y-toggle[aria-pressed="true"] {
	background: #fff;
	color: var(--p7-custom-primary, #10233f);
	border-color: #fff;
}

.p7-appearance-panel .p7-a11y-toggle {
  color: var(--p7-text);
  border-color: var(--p7-border);
  background: var(--p7-card);
}
.p7-appearance-panel .p7-a11y-toggle:hover { background: var(--p7-soft); }
.p7-appearance-panel .p7-a11y-toggle[aria-pressed="true"] {
  color: #fff;
  border-color: var(--p7-custom-primary, var(--p7-blue-700));
  background: var(--p7-custom-primary, var(--p7-blue-700));
}

/* =========================================================
   3. TRYB WYSOKIEGO KONTRASTU
   ========================================================= */
html[data-p7-contrast="high"] {
	--p7-border: #000;
	--p7-muted: #1a1a1a;
}
html[data-p7-contrast="high"] body { background: #fff; color: #000; }
html[data-p7-contrast="high"] a { text-decoration: underline; }
html[data-p7-contrast="high"] .p7-button,
html[data-p7-contrast="high"] .p7-card-link,
html[data-p7-contrast="high"] .widget a {
	outline: 1px solid currentColor;
}
html[data-p7-contrast="high"] :focus-visible {
	outline: 3px solid #000 !important;
	outline-offset: 2px;
}
[data-p7-theme="dark"][data-p7-contrast="high"] body { background: #000; color: #fff; }

/* =========================================================
   4. WARIANTY LOGO (ciemne tło / sticky header)
   ========================================================= */
.p7-brand-logo { position: relative; display: inline-flex; align-items: center; }
.p7-brand-logo__variant {
	position: absolute; inset: 0;
	height: 100%; width: auto; object-fit: contain;
	opacity: 0; pointer-events: none;
	transition: opacity .2s ease;
}
[data-p7-theme="dark"] .p7-brand-logo .custom-logo { opacity: 0; }
[data-p7-theme="dark"] .p7-brand-logo__variant--dark { opacity: 1; }

.p7-site-header.is-elevated .p7-brand-logo .custom-logo,
.p7-site-header.is-elevated .p7-brand-logo__variant--dark { opacity: 0; }
.p7-site-header.is-elevated .p7-brand-logo__variant--sticky { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
	.p7-brand-logo__variant { transition: none; }
}

/* =========================================================
   5. HERO MODULES — geoportal / statystyki live / wyszukiwarka
   ========================================================= */
.p7-hero-modules {
	margin-top: 28px;
	padding-top: 24px;
	border-top: 1px solid var(--p7-border);
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 16px;
}
.p7-hero-modules .widget {
	background: var(--p7-card);
	border: 1px solid var(--p7-border);
	border-radius: var(--p7-radius-sm, 12px);
	padding: 16px 18px;
}
.p7-hero-modules .p7-widget-title {
	font-size: 13px; text-transform: uppercase; letter-spacing: .04em;
	color: var(--p7-muted); margin: 0 0 8px;
}

/* =========================================================
   6. CONTENT MODULES — rail boczny (Jakość Powietrza, Rozkład Jazdy…)
   ========================================================= */
.p7-content-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 40px;
	align-items: start;
}
.p7-content-layout__main { min-width: 0; }

.p7-content-modules {
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.p7-content-modules .widget {
	background: var(--p7-card);
	border: 1px solid var(--p7-border);
	border-radius: var(--p7-radius-sm, 12px);
	padding: 18px 20px;
	box-shadow: var(--p7-shadow-sm);
}
.p7-content-modules .p7-widget-title {
	font-size: 12px; text-transform: uppercase; letter-spacing: .05em;
	color: var(--p7-muted); margin: 0 0 10px; font-weight: 700;
}

@media (min-width: 900px) {
	.p7-content-layout { grid-template-columns: minmax(0, 1fr) 300px; }
}

/* =========================================================
   7. STOPKA — kolumny modułowe + strefa partnerów/UE
   ========================================================= */
.p7-footer-grid {
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.p7-footer-col .p7-widget-title {
	font-size: 12px; text-transform: uppercase; letter-spacing: .05em;
	margin: 0 0 10px;
}
.p7-footer-col .widget + .widget { margin-top: 20px; }
.p7-footer-col a { display: block; padding: 4px 0; }

.p7-footer-partners {
	border-top: 1px solid var(--p7-border);
	padding: 24px clamp(16px, 3vw, 32px);
	display: flex; flex-wrap: wrap; align-items: center; gap: 24px;
}
.p7-footer-partners img { max-height: 44px; width: auto; }
.p7-footer-partners .widget { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.p7-footer-partners a { font-size: 12.5px; }

@media (forced-colors: active) {
	.p7-a11y-toggle, .p7-hero-modules .widget, .p7-content-modules .widget {
		border: 1px solid ButtonText;
	}
}


/* =========================================================
   9. ELASTIC CORRECTIVE — tenant base vs resident override
   ========================================================= */
.p7-accent-default {
  min-width: 38px;
  padding-inline: 9px !important;
  border-radius: 999px !important;
  font-size: 10px !important;
  font-weight: 850 !important;
  letter-spacing: .04em;
}
.p7-status--success { color: var(--p7-custom-success, var(--p7-green-700)); }
.p7-status--warning { color: var(--p7-custom-warning, #a86f0a); }
.p7-status--danger,
.p7-status--critical { color: var(--p7-custom-danger, var(--p7-red-700)); }

/* =========================================================
   10. NOVARIUS 0.9.5.2 — HERO SMART CONTRAST + LOCAL TEXT GUARD
   One renderer, three sources: preset / image / hybrid.
   This layer intentionally loads after Civic Aurora so the selected Hero
   visual remains the final owner of the header background.
   ========================================================= */
.p7-hero--composer {
	isolation: isolate;
	min-height: var(--p7-hero-height-desktop, 590px);
	background: #071522 !important;
}
.p7-hero--composer .p7-hero-media {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	pointer-events: none;
}
.p7-hero--composer .p7-hero-media__image,
.p7-hero--composer .p7-hero-media__preset,
.p7-hero--composer .p7-hero-media__overlay {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}
.p7-hero--composer .p7-hero-media__image {
	object-fit: cover;
	object-position: var(--p7-hero-focal-x, 50%) var(--p7-hero-focal-y, 50%);
	transform: scale(1.002);
	opacity: 0;
	transition: opacity .22s ease;
}
.p7-hero--composer .p7-hero-media__preset {
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	opacity: 0;
	transition: opacity .22s ease;
}
.p7-hero--preset .p7-hero-media__preset { opacity: 1; }
.p7-hero--image .p7-hero-media__image { opacity: 1; }
.p7-hero--hybrid .p7-hero-media__image { opacity: 1; }
.p7-hero--hybrid .p7-hero-media__preset { opacity: .46; mix-blend-mode: screen; }

.p7-hero--preset-civic-skyline .p7-hero-media__preset { background-image: url("../images/hero-presets/civic-skyline.svg"); }
.p7-hero--preset-urban-lines .p7-hero-media__preset { background-image: url("../images/hero-presets/urban-lines.svg"); }
.p7-hero--preset-smart-grid .p7-hero-media__preset { background-image: url("../images/hero-presets/smart-grid.svg"); }
.p7-hero--preset-soft-horizon .p7-hero-media__preset { background-image: url("../images/hero-presets/soft-horizon.svg"); }
.p7-hero--preset-city-glow .p7-hero-media__preset { background-image: url("../images/hero-presets/city-glow.svg"); }
.p7-hero--preset-local-identity .p7-hero-media__preset { background-image: url("../images/hero-presets/local-identity.svg"); }
.p7-hero--preset-aurora-civic .p7-hero-media__preset { background-image: url("../images/hero-presets/aurora-civic.svg"); }
.p7-hero--preset-glass-metropolis .p7-hero-media__preset { background-image: url("../images/hero-presets/glass-metropolis.svg"); }
.p7-hero--preset-luminous-orbit .p7-hero-media__preset { background-image: url("../images/hero-presets/luminous-orbit.svg"); }
.p7-hero--preset-river-city .p7-hero-media__preset { background-image: url("../images/hero-presets/river-city.svg"); }
.p7-hero--preset-topographic-pulse .p7-hero-media__preset { background-image: url("../images/hero-presets/topographic-pulse.svg"); }
.p7-hero--preset-civic-constellation .p7-hero-media__preset { background-image: url("../images/hero-presets/civic-constellation.svg"); }

.p7-hero--composer .p7-hero-media__overlay {
	background: rgb(5 17 30 / var(--p7-hero-overlay-alpha, .42));
	opacity: .34;
}
/* Pełnoekranowy tint jest celowo delikatny. Czytelność tekstu zapewnia
   lokalny guard poniżej, więc grafika miasta nie wygląda jak wyłączona. */
.p7-hero--preset .p7-hero-media__overlay { opacity: .16; }
.p7-hero--image .p7-hero-media__overlay { opacity: .34; }
.p7-hero--hybrid .p7-hero-media__overlay { opacity: .28; }
.p7-hero--composer .p7-hero-media::after {
	position: absolute;
	inset: 0;
	content: "";
	pointer-events: none;
	/* Guard chroni tylko lewą strefę copy; prawa część grafiki pozostaje żywa. */
	background: linear-gradient(90deg,
		rgba(3,13,24,.84) 0%,
		rgba(3,13,24,.70) 24%,
		rgba(3,13,24,.40) 43%,
		rgba(3,13,24,.14) 58%,
		rgba(3,13,24,0) 72%);
}
.p7-hero--composer.p7-hero--text-dark .p7-hero-media__overlay {
	background: rgb(255 255 255 / var(--p7-hero-overlay-alpha, .42));
}
.p7-hero--composer.p7-hero--text-dark .p7-hero-media::after {
	background: linear-gradient(90deg,
		rgba(255,255,255,.92) 0%,
		rgba(255,255,255,.80) 24%,
		rgba(255,255,255,.50) 43%,
		rgba(255,255,255,.18) 58%,
		rgba(255,255,255,0) 72%);
}

.p7-hero--composer .p7-hero-grid,
.p7-hero--composer .p7-hero-modules {
	position: relative;
	z-index: 2;
}
.p7-hero--composer .p7-hero-grid {
	min-height: var(--p7-hero-height-desktop, 590px);
}

/* Text contrast is owned by Hero, not by global light/dark mode.
   Nazwa JST ma osobny token od hasła — nie dziedziczy już przypadkowo
   koloru wszystkich spanów w H1. */
body.home .p7-hero--composer.p7-hero--text-light,
body.home .p7-hero--composer.p7-hero--text-light h1,
body.home .p7-hero--composer.p7-hero--text-light .p7-hero-copy > p {
	color: #f7fbff;
}
body.home .p7-hero--composer.p7-hero--text-light .p7-hero-title__city {
	color: #ffffff;
	text-shadow: 0 2px 22px rgba(0,0,0,.30), 0 1px 2px rgba(0,0,0,.20);
}
body.home .p7-hero--composer.p7-hero--text-light .p7-hero-title__tagline,
body.home .p7-hero--composer.p7-hero--text-light .p7-kicker {
	color: color-mix(in srgb, var(--p7-custom-accent, #1769aa) 36%, #ffffff);
}
body.home .p7-hero--composer.p7-hero--text-light .p7-hero-copy > p { color: rgba(247,251,255,.86); }

body.home .p7-hero--composer.p7-hero--text-dark,
body.home .p7-hero--composer.p7-hero--text-dark h1,
body.home .p7-hero--composer.p7-hero--text-dark .p7-hero-copy > p {
	color: #101828;
}
body.home .p7-hero--composer.p7-hero--text-dark .p7-hero-title__city {
	color: #101828;
	text-shadow: 0 1px 0 rgba(255,255,255,.42);
}
body.home .p7-hero--composer.p7-hero--text-dark .p7-hero-title__tagline,
body.home .p7-hero--composer.p7-hero--text-dark .p7-kicker {
	color: color-mix(in srgb, var(--p7-custom-primary, #163a5f) 88%, #000000);
}
body.home .p7-hero--composer.p7-hero--text-dark .p7-hero-copy > p { color: #344054; }

body.home .p7-hero--composer .p7-button--primary {
	border-color: var(--p7-custom-accent, #1769aa);
	background: var(--p7-custom-accent, #1769aa);
	color: #fff;
	box-shadow: 0 16px 36px rgb(7 40 67 / .22);
}
body.home .p7-hero--composer .p7-button--primary:hover {
	filter: brightness(.92);
}
body.home .p7-hero--composer.p7-hero--text-light .p7-button--secondary {
	border-color: rgba(255,255,255,.46);
	background: rgba(7,24,40,.18);
	color: #fff;
	backdrop-filter: blur(8px);
}
body.home .p7-hero--composer.p7-hero--text-light .p7-button--secondary:hover { background: rgba(7,24,40,.32); }
body.home .p7-hero--composer.p7-hero--text-dark .p7-button--secondary {
	border-color: rgba(16,40,64,.24);
	background: rgba(255,255,255,.62);
	color: #163a5f;
	backdrop-filter: blur(8px);
}

/* The status panel is intentionally readable independently of the photo. */
body.home .p7-hero--composer .p7-command-panel {
	border-color: rgba(214,226,236,.72);
	background: rgba(255,255,255,.88);
	box-shadow: 0 28px 72px rgba(3,18,31,.22), inset 0 1px 0 rgba(255,255,255,.92);
	backdrop-filter: blur(18px) saturate(112%);
	color: #1d2939;
}
body.home .p7-hero--composer .p7-command-row {
	border-color: rgba(207,219,229,.72);
	color: #1d2939;
}
body.home .p7-hero--composer .p7-command-row--date time strong { color: #101828; }
body.home .p7-hero--composer .p7-command-row--date time span,
body.home .p7-hero--composer .p7-command-row__copy small { color: #667085; }
body.home .p7-hero--composer .p7-command-row__icon {
	border-color: color-mix(in srgb, var(--p7-custom-accent, #1769aa) 18%, transparent);
	background: color-mix(in srgb, var(--p7-custom-accent, #1769aa) 10%, #fff);
	color: var(--p7-custom-primary, #163a5f);
}
body.home .p7-hero--composer .p7-command-row--link:hover {
	background: linear-gradient(90deg, color-mix(in srgb, var(--p7-custom-accent, #1769aa) 8%, transparent), transparent);
}

/* Hero widget region follows the same protected visual surface. */
body.home .p7-hero--composer .p7-hero-modules {
	border-top-color: rgba(255,255,255,.22);
}
body.home .p7-hero--composer .p7-hero-modules .widget {
	border-color: rgba(215,226,235,.7);
	background: rgba(255,255,255,.88);
	color: #1d2939;
	backdrop-filter: blur(14px);
}
body.home .p7-hero--composer .p7-hero-modules .p7-widget-title { color: #667085; }

@media (max-width: 680px) {
	.p7-hero--composer,
	.p7-hero--composer .p7-hero-grid {
		min-height: var(--p7-hero-height-mobile, 500px);
	}
	.p7-hero--composer .p7-hero-media::after {
		background: linear-gradient(180deg, rgba(3,13,24,.84) 0%, rgba(3,13,24,.64) 38%, rgba(3,13,24,.24) 62%, rgba(3,13,24,.08) 78%, rgba(3,13,24,0) 92%);
	}
	.p7-hero--composer.p7-hero--text-dark .p7-hero-media::after {
		background: linear-gradient(180deg, rgba(255,255,255,.94) 0%, rgba(255,255,255,.82) 38%, rgba(255,255,255,.38) 62%, rgba(255,255,255,.10) 78%, rgba(255,255,255,0) 92%);
	}
}

@media (prefers-reduced-motion: no-preference) {
	.p7-hero--composer.p7-hero--preset .p7-hero-media__preset,
	.p7-hero--composer.p7-hero--hybrid .p7-hero-media__preset {
		animation: p7-hero-ambient 18s ease-in-out infinite alternate;
	}
	@keyframes p7-hero-ambient {
		from { transform: scale(1.015) translate3d(0,0,0); }
		to { transform: scale(1.045) translate3d(-.6%,.35%,0); }
	}
}

/* Accessibility: high contrast removes decorative media entirely. */
html[data-p7-contrast="high"] .p7-hero--composer .p7-hero-media { display: none; }
html[data-p7-contrast="high"] .p7-hero--composer { background: #fff !important; color: #000 !important; }
html[data-p7-theme="dark"][data-p7-contrast="high"] .p7-hero--composer { background: #000 !important; color: #fff !important; }
@media (forced-colors: active) {
	.p7-hero--composer .p7-hero-media { display: none; }
	.p7-hero--composer { background: Canvas !important; color: CanvasText !important; }
}

.p7-hero--composer::before,
.p7-hero--composer::after { display: none; }

html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-command-panel {
	border-color: rgba(145,184,211,.2);
	background: rgba(6,22,37,.78);
	box-shadow: 0 28px 72px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.05);
	color: #f4f9fc;
}
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-command-row {
	border-color: rgba(157,197,223,.14);
	color: #f4f9fc;
}
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-command-row--date time strong { color: #fff; }
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-command-row--date time span,
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-command-row__copy small { color: #a9c0d0; }
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-command-row__icon {
	border-color: rgba(133,198,235,.16);
	background: rgba(26,81,116,.26);
	color: color-mix(in srgb, var(--p7-custom-accent, #1769aa) 42%, #fff);
}
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-command-row--link:hover { background: rgba(91,165,207,.08); }
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-hero-modules .widget {
	border-color: rgba(145,184,211,.2);
	background: rgba(6,22,37,.8);
	color: #f4f9fc;
}
html[data-p7-theme="dark"] body.home .p7-hero--composer .p7-hero-modules .p7-widget-title { color: #a9c0d0; }

html[data-p7-contrast="high"] body.home .p7-hero--composer,
html[data-p7-contrast="high"] body.home .p7-hero--composer h1,
html[data-p7-contrast="high"] body.home .p7-hero--composer h1 span,
html[data-p7-contrast="high"] body.home .p7-hero--composer .p7-kicker,
html[data-p7-contrast="high"] body.home .p7-hero--composer .p7-hero-copy > p {
	color: #000 !important;
}
html[data-p7-theme="dark"][data-p7-contrast="high"] body.home .p7-hero--composer,
html[data-p7-theme="dark"][data-p7-contrast="high"] body.home .p7-hero--composer h1,
html[data-p7-theme="dark"][data-p7-contrast="high"] body.home .p7-hero--composer h1 span,
html[data-p7-theme="dark"][data-p7-contrast="high"] body.home .p7-hero--composer .p7-kicker,
html[data-p7-theme="dark"][data-p7-contrast="high"] body.home .p7-hero--composer .p7-hero-copy > p {
	color: #fff !important;
}
