/*
Theme Name: ModaLisa
Theme URI: https://modalisa.com.pl
Author: Strony WWW Pomorze
Author URI: https://stronywwwpomorze.pl
Description: Autorski motyw sklepu ModaLisa. Napisany od zera, bez Nicepage. Kolorystyka i typografia marki, ostre narozniki, nacisk na wygodne przegladanie i filtrowanie oferty.
Version: 1.0.0
Requires at least: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: modalisa
Tags: woocommerce, e-commerce, fashion
WC requires at least: 8.0
WC tested up to: 11.0
*/

/* ==========================================================================
   Zmienne marki
   ========================================================================== */

:root {
	/* grafity - podstawowy tekst i tla kontrastowe */
	--ml-ink:          #111111;
	--ml-ink-soft:     #3a3a3a;
	--ml-ink-muted:    #6f6f6f;
	--ml-ink-faint:    #9a9a9a;

	/* szalwia - kolor prowadzacy marki */
	--ml-sage:         #7a877e;
	--ml-sage-deep:    #4f5d53;
	--ml-sage-light:   #b5c9bc;
	--ml-sage-pale:    #d4e0d8;
	--ml-sage-wash:    #f4f7f5;

	/* zloto - akcent, ceny promocyjne, wyroznienia */
	--ml-gold:         #c29a51;
	--ml-gold-bright:  #cfb53e;
	--ml-gold-deep:    #9d7a38;

	/* krem i biele */
	--ml-cream:        #e3dcd0;
	--ml-paper:        #ffffff;
	--ml-paper-alt:    #fafafa;

	/* funkcjonalne */
	--ml-line:         #e2e2e2;
	--ml-line-strong:  #c9c9c9;
	--ml-sale:         #a4342b;
	--ml-ok:           #4f7a52;

	/* siatka */
	--ml-max:          1440px;
	--ml-gutter:       clamp(16px, 3vw, 40px);
	--ml-sidebar:      272px;

	/* typografia */
	--ml-font: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
	--ml-tracking-label: .14em;

	/* klient nie uzywa zaokraglen - trzymamy to w jednym miejscu */
	--ml-radius: 0px;

	--ml-header-h: 0px;
	--ml-ease: cubic-bezier(.4, 0, .2, 1);
}

/* ==========================================================================
   Reset i podstawy
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	font-family: var(--ml-font);
	font-size: 15px;
	line-height: 1.65;
	color: var(--ml-ink);
	background: var(--ml-paper);
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

img, svg, video { max-width: 100%; height: auto; display: block; }

a { color: inherit; text-decoration: none; }
a:hover { color: var(--ml-gold-deep); }

button { font: inherit; color: inherit; }

h1, h2, h3, h4, h5 {
	margin: 0 0 .6em;
	font-weight: 500;
	line-height: 1.2;
	letter-spacing: -.01em;
}

h1 { font-size: clamp(28px, 4vw, 44px); }
h2 { font-size: clamp(22px, 3vw, 32px); }
h3 { font-size: clamp(18px, 2vw, 22px); }

p { margin: 0 0 1em; }

ul, ol { margin: 0 0 1em; padding-left: 1.2em; }

hr { border: 0; border-top: 1px solid var(--ml-line); margin: 2rem 0; }

:focus-visible {
	outline: 2px solid var(--ml-gold);
	outline-offset: 2px;
}

.ml-sr {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.ml-skip {
	position: absolute;
	top: -100px; left: 0;
	z-index: 999;
	padding: 12px 20px;
	background: var(--ml-ink);
	color: #fff;
}
.ml-skip:focus { top: 0; }

/* ==========================================================================
   Uklad
   ========================================================================== */

.ml-wrap {
	width: 100%;
	max-width: var(--ml-max);
	margin-inline: auto;
	padding-inline: var(--ml-gutter);
}

.ml-main { min-height: 50vh; }

/* etykiety w stylu butikowym: wersaliki, rozstrzelone */
.ml-label {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: var(--ml-tracking-label);
	text-transform: uppercase;
	color: var(--ml-ink-muted);
}

/* ==========================================================================
   Przyciski
   ========================================================================== */

.ml-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 14px 28px;
	border: 1px solid var(--ml-ink);
	border-radius: var(--ml-radius);
	background: var(--ml-ink);
	color: #fff;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: var(--ml-tracking-label);
	text-transform: uppercase;
	cursor: pointer;
	transition: background .25s var(--ml-ease), color .25s var(--ml-ease), border-color .25s var(--ml-ease);
}
.ml-btn:hover {
	background: var(--ml-gold-deep);
	border-color: var(--ml-gold-deep);
	color: #fff;
}

.ml-btn--ghost {
	background: transparent;
	color: var(--ml-ink);
}
.ml-btn--ghost:hover {
	background: var(--ml-ink);
	color: #fff;
	border-color: var(--ml-ink);
}

.ml-btn--gold {
	background: var(--ml-gold);
	border-color: var(--ml-gold);
}

.ml-btn--sm { padding: 10px 18px; font-size: 11px; }
.ml-btn--block { width: 100%; }

/* ==========================================================================
   Naglowek
   ========================================================================== */

.ml-header {
	position: sticky;
	top: 0;
	z-index: 200;
	background: var(--ml-paper);
	border-bottom: 1px solid var(--ml-line);
}

/* pasek ogloszen */
.ml-ann {
	background: var(--ml-sage-deep);
	color: #fff;
	font-size: 12px;
	letter-spacing: .04em;
	overflow: hidden;
}
.ml-ann__inner {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
	min-height: 38px;
	padding-inline: var(--ml-gutter);
}
.ml-ann__track { position: relative; flex: 0 1 auto; text-align: center; }
.ml-ann__slide {
	display: none;
	animation: ml-fade .5s var(--ml-ease);
}
.ml-ann__slide.is-active { display: block; }
.ml-ann__nav {
	border: 0;
	background: none;
	color: rgba(255,255,255,.7);
	font-size: 18px;
	line-height: 1;
	padding: 4px 8px;
	cursor: pointer;
}
.ml-ann__nav:hover { color: #fff; }

@keyframes ml-fade { from { opacity: 0 } to { opacity: 1 } }

/* pasek glowny */
.ml-header__main {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 24px;
	min-height: 82px;
	padding-block: 12px;
}

.ml-header__nav {
	display: flex;
	align-items: center;
	gap: 26px;
}

.ml-nav__link {
	position: relative;
	font-size: 12px;
	font-weight: 500;
	letter-spacing: var(--ml-tracking-label);
	text-transform: uppercase;
	padding-block: 6px;
	white-space: nowrap;
}
.ml-nav__link::after {
	content: '';
	position: absolute;
	left: 0; right: 100%; bottom: 0;
	height: 1px;
	background: var(--ml-gold);
	transition: right .3s var(--ml-ease);
}
.ml-nav__link:hover::after,
.ml-nav__link[aria-current]::after { right: 0; }

.ml-header__logo {
	justify-self: center;
	display: flex;
	align-items: center;
}
.ml-header__logo img { max-height: 54px; width: auto; }
.ml-header__logo-text {
	font-size: 24px;
	letter-spacing: .22em;
	text-transform: uppercase;
	font-weight: 300;
}

.ml-header__tools {
	justify-self: end;
	display: flex;
	align-items: center;
	gap: 4px;
}

.ml-tool {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px; height: 42px;
	border: 0;
	background: none;
	cursor: pointer;
	color: var(--ml-ink);
	transition: color .2s var(--ml-ease);
}
.ml-tool:hover { color: var(--ml-gold-deep); }
.ml-tool svg { width: 21px; height: 21px; }

.ml-tool__count {
	position: absolute;
	top: 4px; right: 2px;
	min-width: 17px; height: 17px;
	padding: 0 4px;
	background: var(--ml-gold);
	color: #fff;
	font-size: 10px;
	font-weight: 600;
	line-height: 17px;
	text-align: center;
}

/* pasek kategorii */
.ml-header__cats {
	border-top: 1px solid var(--ml-line);
	background: var(--ml-sage-wash);
}
.ml-catbar {
	display: flex;
	align-items: center;
	gap: 4px;
	overflow-x: auto;
	scrollbar-width: none;
	min-height: 46px;
}
.ml-catbar::-webkit-scrollbar { display: none; }
.ml-catbar__link {
	flex: 0 0 auto;
	padding: 8px 14px;
	font-size: 12px;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--ml-sage-deep);
	white-space: nowrap;
	transition: background .2s var(--ml-ease), color .2s var(--ml-ease);
}
.ml-catbar__link:hover,
.ml-catbar__link.is-active {
	background: var(--ml-sage-deep);
	color: #fff;
}

/* przelacznik mobilny */
.ml-burger { display: none; }

/* ==========================================================================
   Wyszukiwarka z podpowiedziami
   ========================================================================== */

.ml-search { position: relative; }

.ml-search__panel {
	position: fixed;
	left: 0; right: 0;
	top: var(--ml-header-h);
	z-index: 210;
	background: var(--ml-paper);
	border-bottom: 1px solid var(--ml-line);
	box-shadow: 0 18px 40px -24px rgba(0,0,0,.4);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-8px);
	transition: opacity .22s var(--ml-ease), transform .22s var(--ml-ease), visibility .22s;
}
.ml-search.is-open .ml-search__panel {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.ml-search__form {
	display: flex;
	align-items: center;
	gap: 12px;
	padding-block: 22px;
	border-bottom: 1px solid var(--ml-line);
}
.ml-search__input {
	flex: 1;
	border: 0;
	background: none;
	font-family: inherit;
	font-size: clamp(18px, 3vw, 26px);
	font-weight: 300;
	color: var(--ml-ink);
	padding: 4px 0;
}
.ml-search__input::placeholder { color: var(--ml-ink-faint); }
.ml-search__input:focus { outline: 0; }
.ml-search__submit,
.ml-search__close {
	border: 0; background: none; cursor: pointer; padding: 6px;
	color: var(--ml-ink-muted);
}
.ml-search__submit:hover, .ml-search__close:hover { color: var(--ml-ink); }

.ml-search__results {
	max-height: min(62vh, 560px);
	overflow-y: auto;
	padding-block: 8px 22px;
}

.ml-search__hint {
	padding: 18px 0;
	color: var(--ml-ink-muted);
	font-size: 13px;
}

.ml-suggest__group + .ml-suggest__group { margin-top: 18px; }
.ml-suggest__title {
	margin: 14px 0 8px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: var(--ml-tracking-label);
	text-transform: uppercase;
	color: var(--ml-ink-faint);
}

.ml-suggest__terms { display: flex; flex-wrap: wrap; gap: 8px; }
.ml-suggest__term {
	padding: 7px 13px;
	border: 1px solid var(--ml-line);
	font-size: 12px;
	transition: border-color .2s var(--ml-ease), background .2s var(--ml-ease);
}
.ml-suggest__term:hover { border-color: var(--ml-ink); background: var(--ml-sage-wash); }

.ml-suggest__items {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 4px 20px;
}
.ml-suggest__item {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 8px;
	transition: background .2s var(--ml-ease);
}
.ml-suggest__item:hover,
.ml-suggest__item.is-active { background: var(--ml-sage-wash); }
.ml-suggest__thumb {
	flex: 0 0 56px;
	width: 56px; height: 72px;
	object-fit: cover;
	background: var(--ml-sage-wash);
}
.ml-suggest__body { min-width: 0; }
.ml-suggest__name {
	font-size: 13px;
	line-height: 1.35;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.ml-suggest__price { font-size: 13px; color: var(--ml-gold-deep); margin-top: 2px; }
.ml-suggest__all {
	display: block;
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid var(--ml-line);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: var(--ml-tracking-label);
	text-transform: uppercase;
}

.ml-backdrop {
	position: fixed;
	inset: 0;
	z-index: 190;
	background: rgba(17,17,17,.35);
	opacity: 0;
	visibility: hidden;
	transition: opacity .25s var(--ml-ease), visibility .25s;
}
.ml-backdrop.is-on { opacity: 1; visibility: visible; }

/* ==========================================================================
   Szuflada mobilna
   ========================================================================== */

.ml-drawer {
	position: fixed;
	top: 0; bottom: 0; left: 0;
	width: min(88vw, 380px);
	z-index: 220;
	background: var(--ml-paper);
	display: flex;
	flex-direction: column;
	transform: translateX(-100%);
	transition: transform .3s var(--ml-ease);
}
.ml-drawer.is-open { transform: none; }

.ml-drawer__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 18px 20px;
	border-bottom: 1px solid var(--ml-line);
}
.ml-drawer__body { flex: 1; overflow-y: auto; padding: 8px 0 30px; }

.ml-drawer__link {
	display: block;
	padding: 13px 20px;
	font-size: 13px;
	letter-spacing: .06em;
	text-transform: uppercase;
	border-bottom: 1px solid var(--ml-line);
}
.ml-drawer__group { border-bottom: 1px solid var(--ml-line); }
.ml-drawer__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 13px 20px;
	border: 0;
	background: none;
	font-size: 13px;
	letter-spacing: .06em;
	text-transform: uppercase;
	cursor: pointer;
	text-align: left;
}
.ml-drawer__toggle svg { transition: transform .25s var(--ml-ease); flex: 0 0 auto; }
.ml-drawer__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.ml-drawer__sub { display: none; padding: 0 0 10px; background: var(--ml-sage-wash); }
.ml-drawer__sub.is-open { display: block; }
.ml-drawer__sub a {
	display: block;
	padding: 9px 34px;
	font-size: 13px;
	color: var(--ml-ink-soft);
}

/* Dane kontaktowe pod pozycjami menu */
.ml-drawer__stopka {
	margin-top: 26px;
	padding: 20px;
	background: var(--ml-sage-wash);
	font-size: 14px;
	line-height: 1.6;
}
.ml-drawer__stopka a {
	display: block;
	color: var(--ml-gold-deep);
	word-break: break-word;
}
.ml-drawer__stopka p {
	margin: 8px 0 0;
	color: var(--ml-ink-muted);
	font-size: 13px;
}

/* ==========================================================================
   Stopka
   ========================================================================== */

.ml-footer {
	margin-top: 80px;
	background: var(--ml-ink);
	color: rgba(255,255,255,.72);
	font-size: 13px;
}
.ml-footer a { color: rgba(255,255,255,.72); }
.ml-footer a:hover { color: var(--ml-gold-bright); }

.ml-footer__grid {
	display: grid;
	grid-template-columns: 1.4fr repeat(3, 1fr);
	gap: 40px;
	padding-block: 60px 44px;
}
.ml-footer__title {
	margin-bottom: 18px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: var(--ml-tracking-label);
	text-transform: uppercase;
	color: #fff;
}
.ml-footer__list { list-style: none; margin: 0; padding: 0; }
.ml-footer__list li { margin-bottom: 9px; }

.ml-footer__brand {
	font-size: 22px;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: #fff;
	font-weight: 300;
	margin-bottom: 16px;
}
.ml-footer__social { display: flex; gap: 12px; margin-top: 18px; }
.ml-footer__social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px; height: 38px;
	border: 1px solid rgba(255,255,255,.25);
	transition: background .2s var(--ml-ease), border-color .2s var(--ml-ease);
}
.ml-footer__social a:hover { background: var(--ml-gold); border-color: var(--ml-gold); color: #fff; }

.ml-footer__pay { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.ml-footer__pay span {
	padding: 6px 10px;
	border: 1px solid rgba(255,255,255,.2);
	font-size: 10px;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.ml-footer__bar {
	border-top: 1px solid rgba(255,255,255,.14);
	padding-block: 22px;
	display: flex;
	flex-wrap: wrap;
	gap: 12px 26px;
	justify-content: space-between;
	font-size: 12px;
}

/* --- druga sekcja stopki: pelny spis dzialow i marek --- */

.ml-footer__kategorie {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1.2fr;
	gap: 40px;
	padding-block: 36px;
	border-top: 1px solid rgba(255, 255, 255, .14);
}
.ml-footer__spis {
	list-style: none;
	margin: 0;
	padding: 0;
	column-count: 2;
	column-gap: 26px;
	font-size: 13px;
}
.ml-footer__kategorie .ml-footer__kolumna:nth-child(2) .ml-footer__spis,
.ml-footer__kategorie .ml-footer__kolumna:nth-child(3) .ml-footer__spis { column-count: 1; }
.ml-footer__spis li { margin-bottom: 8px; break-inside: avoid; }
.ml-footer__spis a {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 10px;
}
.ml-footer__spis span { font-size: 11px; color: rgba(255, 255, 255, .38); }

/* Odnosnik do ponownego otwarcia banera zgod - wyglada jak reszta paska,
   ale musi byc przyciskiem, bo nigdzie nie prowadzi. */
.ml-komunikaty:not(:empty) { margin: 18px auto 0; }
.ml-komunikaty .woocommerce-notices-wrapper:empty { display: none; }

.ml-footer__zgody {
	background: none;
	border: 0;
	padding: 0;
	font: inherit;
	color: rgba(255, 255, 255, .55);
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.ml-footer__zgody:hover { color: #fff; }

@media (max-width: 900px) {
	.ml-footer__kategorie { grid-template-columns: 1fr; gap: 28px; }
}

/* ==========================================================================
   Pasek demo
   ========================================================================== */

.ml-demobar {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 300;
	background: var(--ml-gold-deep);
	color: #fff;
	font-size: 12px;
	letter-spacing: .04em;
	text-align: center;
	padding: 9px 44px 9px 16px;
}
/* Przy otwartej nakladce (szuflada filtrow, wyszukiwarka, menu) pasek demo
   i pasek zakupu schodza z drogi - inaczej zaslaniaja przyciski na dole. */
body.ml-nakladka .ml-demobar,
body.ml-nakladka .ml-sticky { display: none; }

.ml-demobar button {
	position: absolute;
	right: 8px; top: 50%;
	transform: translateY(-50%);
	border: 0; background: none; color: #fff;
	font-size: 18px; line-height: 1; cursor: pointer;
	padding: 4px 8px;
}

/* ==========================================================================
   Responsywnosc
   ========================================================================== */

@media (max-width: 1100px) {
	.ml-footer__grid { grid-template-columns: 1fr 1fr; gap: 34px; }
}

@media (max-width: 960px) {
	.ml-header__main {
		grid-template-columns: auto 1fr auto;
		min-height: 66px;
	}
	.ml-header__nav { display: none; }
	.ml-burger {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 42px; height: 42px;
		border: 0; background: none; cursor: pointer;
	}
	.ml-header__logo { justify-self: center; }
	.ml-header__logo img { max-height: 40px; }
	.ml-header__logo-text { font-size: 18px; }
}

@media (max-width: 600px) {
	.ml-footer__grid { grid-template-columns: 1fr; gap: 30px; padding-block: 44px 30px; }
	.ml-footer__bar { justify-content: center; text-align: center; }

	/* Nagłówek jest przyklejony, więc na telefonie zabiera ekran przez cały
	   czas przeglądania. Trzy paski - ogłoszenia, logo, kategorie - zjadały
	   152 z 896 pikseli. Ścieśniamy je do 130, nie ruszając niczego innego. */
	.ml-ann__inner { min-height: 32px; gap: 10px; }
	.ml-ann { font-size: 11px; }
	.ml-header__main { min-height: 56px; }
	.ml-header__logo img { max-height: 34px; }
	.ml-catbar { min-height: 40px; }
	.ml-catbar__link { padding: 7px 12px; font-size: 11px; }
}

/* Pasek kategorii przewija się w bok, ale ostatni kafelek jest ucięty krawędzią
   ekranu i wygląda jak błąd składu, a nie jak zaproszenie do przesunięcia.
   Miękkie wygaszenie przy prawej krawędzi mówi, że jest dalszy ciąg. Zostaje
   też na dużym ekranie - gdy pasek się mieści, gradient idzie od przezroczystego
   do koloru tła, czyli nie widać go wcale. `pointer-events: none`, żeby nie
   przechwytywało dotknięcia. */
.ml-header__cats { position: relative; }
.ml-header__cats::after {
	content: '';
	position: absolute;
	top: 0; right: 0; bottom: 0;
	width: 34px;
	pointer-events: none;
	background: linear-gradient(to right, rgba(255, 255, 255, 0), var(--ml-sage-wash));
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .001ms !important;
		transition-duration: .001ms !important;
	}
}

/* ==========================================================================
   Okruszki nawigacyjne
   ========================================================================== */

.ml-crumbs {
	padding-block: 22px 0;
	font-size: 12px;
	color: var(--ml-ink-faint);
}
.ml-crumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.ml-crumbs li + li::before {
	content: '/';
	margin-right: 6px;
	color: var(--ml-line-strong);
}
.ml-crumbs a:hover { color: var(--ml-ink); }
.ml-crumbs [aria-current] { color: var(--ml-ink-soft); }

/* ==========================================================================
   Strony tresciowe
   ========================================================================== */

.ml-page { padding-block: 10px 70px; }
.ml-page--center { text-align: center; padding-block: 80px 100px; }
.ml-page__title {
	margin: 18px 0 26px;
	font-weight: 300;
}
.ml-page__media { margin-bottom: 26px; }

.ml-prose {
	max-width: 74ch;
	font-size: 15px;
	color: var(--ml-ink-soft);
}
.ml-prose h2, .ml-prose h3 { color: var(--ml-ink); margin-top: 1.8em; }
.ml-prose a { color: var(--ml-gold-deep); border-bottom: 1px solid currentColor; }
.ml-prose img { margin-block: 1.4em; }
.ml-prose table { width: 100%; border-collapse: collapse; }
.ml-prose th, .ml-prose td { padding: 10px 12px; border: 1px solid var(--ml-line); text-align: left; }

.ml-posts {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 34px;
}
.ml-post__media { display: block; margin-bottom: 14px; background: var(--ml-sage-wash); }
.ml-post__title { font-size: 18px; font-weight: 400; margin-bottom: 6px; }
.ml-post__excerpt { color: var(--ml-ink-muted); font-size: 14px; }

/* menu z panelu WordPressa - te same style, co linki wpisane recznie */
.ml-nav { display: flex; align-items: center; gap: 26px; list-style: none; margin: 0; padding: 0; }
.ml-nav li { margin: 0; }
.ml-nav a {
	position: relative;
	display: block;
	font-size: 12px;
	font-weight: 500;
	letter-spacing: var(--ml-tracking-label);
	text-transform: uppercase;
	padding-block: 6px;
	white-space: nowrap;
}
.ml-nav a::after {
	content: '';
	position: absolute;
	left: 0; right: 100%; bottom: 0;
	height: 1px;
	background: var(--ml-gold);
	transition: right .3s var(--ml-ease);
}
.ml-nav a:hover::after,
.ml-nav .current-menu-item a::after { right: 0; }

.ml-count { color: var(--ml-ink-faint); font-size: 12px; }

/* --- rozwijane menu marek --- */

.ml-nav__grupa { position: relative; }
.ml-nav__przelacznik {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border: 0;
	background: none;
	cursor: pointer;
	font-family: inherit;
}
.ml-nav__przelacznik svg { transition: transform .25s var(--ml-ease); }
.ml-nav__grupa.jest-otwarte .ml-nav__przelacznik svg { transform: rotate(180deg); }

.ml-nav__podmenu {
	position: absolute;
	top: calc(100% + 10px);
	left: 50%;
	transform: translateX(-50%) translateY(-6px);
	min-width: 250px;
	padding: 8px 0;
	background: var(--ml-paper);
	border: 1px solid var(--ml-line);
	box-shadow: 0 22px 44px -26px rgba(0,0,0,.45);
	opacity: 0;
	visibility: hidden;
	transition: opacity .2s var(--ml-ease), transform .2s var(--ml-ease), visibility .2s;
	z-index: 210;
}
.ml-nav__grupa:hover .ml-nav__podmenu,
.ml-nav__grupa:focus-within .ml-nav__podmenu,
.ml-nav__grupa.jest-otwarte .ml-nav__podmenu {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%);
}

/* Mysz musi miec czym przejechac z przycisku do listy - bez tego pasa
   podmenu znika w polowie drogi. */
.ml-nav__podmenu::before {
	content: '';
	position: absolute;
	left: 0; right: 0; top: -12px;
	height: 12px;
}

.ml-nav__podmenu a {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 14px;
	padding: 9px 18px;
	font-size: 13px;
	letter-spacing: .04em;
	transition: background .18s var(--ml-ease);
}
.ml-nav__podmenu a:hover { background: var(--ml-sage-wash); }
.ml-nav__podmenu em { font-style: normal; font-size: 11px; color: var(--ml-ink-faint); }
.ml-nav__podmenu-stopka {
	margin-top: 6px;
	padding-top: 12px !important;
	border-top: 1px solid var(--ml-line);
	font-weight: 600;
	text-transform: uppercase;
	font-size: 11px !important;
	letter-spacing: var(--ml-tracking-label) !important;
}

/* ==========================================================================
   Nakladka ladowania WooCommerce
   WooCommerce przykrywa przeliczany fragment warstwa `blockOverlay` i rysuje
   na niej wlasne kolko z `loader.svg`. Podmieniamy je na logo sklepu - ta sama
   nakladka wychodzi przy zmianie ilosci w koszyku, przy przeliczaniu dostawy
   i przy skladaniu zamowienia, wiec klientka widzi ja czesciej niz jakikolwiek
   inny stan posredni.
   ========================================================================== */
.blockUI.blockOverlay::before,
.woocommerce .blockUI.blockOverlay::before,
.woocommerce .loader::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 132px;
	height: 58px;
	margin: -29px 0 0 -66px;
	background: var(--ml-logo, none) center center / contain no-repeat;
	animation: ml-puls 1.4s ease-in-out infinite;
	font-size: 0;
	color: transparent;
}

/* Przyciski maja wlasne, male kolko obok napisu - tam logo bylo by nieczytelne,
   wiec zostaje kropka w kolorze marki zamiast obcej grafiki. */
.woocommerce a.button.loading::after,
.woocommerce button.button.loading::after,
.woocommerce input.button.loading::after,
.woocommerce #respond input#submit.loading::after {
	content: "";
	width: 12px;
	height: 12px;
	margin-left: 8px;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	background: none;
	animation: ml-obrot .7s linear infinite;
	vertical-align: middle;
	display: inline-block;
}

@keyframes ml-puls {
	0%, 100% { opacity: 1; transform: scale(1); }
	50%      { opacity: .45; transform: scale(.94); }
}

@keyframes ml-obrot {
	to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
	.blockUI.blockOverlay::before,
	.woocommerce .blockUI.blockOverlay::before,
	.woocommerce .loader::before,
	.woocommerce a.button.loading::after,
	.woocommerce button.button.loading::after { animation: none; }
}

/* ==========================================================================
   Strona 404
   Adres, ktory nie istnieje, to nie jest slepy zaulek - to moment, w ktorym
   klientka jeszcze czegos szuka. Stad pole wyszukiwania od razu pod
   komunikatem, a nizej sekcja nowosci.
   ========================================================================== */
.ml-404 { padding: 64px 0 8px; text-align: center; }
.ml-404__tytul { font-size: clamp(30px, 5vw, 46px); font-weight: 300; margin: 0 0 14px; }
.ml-404__lead {
	max-width: 56ch;
	margin: 0 auto 30px;
	color: var(--ml-ink-soft);
	line-height: 1.6;
}
.ml-404__szukaj {
	display: flex;
	align-items: center;
	gap: 10px;
	max-width: 640px;
	margin: 0 auto;
	padding: 6px 6px 6px 16px;
	border: 1px solid var(--ml-line-strong);
	background: var(--ml-paper);
	text-align: left;
}
.ml-404__szukaj svg { flex: 0 0 auto; color: var(--ml-ink-faint); }
.ml-404__pole {
	flex: 1;
	min-width: 0;
	border: 0;
	padding: 12px 0;
	font: inherit;
	background: none;
	outline: none;
}
.ml-404__btn { flex: 0 0 auto; }
.ml-404__linki {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 10px 24px;
	margin: 22px 0 0;
	font-size: 14px;
}
.ml-404__linki a { color: var(--ml-ink-soft); text-decoration: underline; text-underline-offset: 3px; }
.ml-404__linki a:hover { color: var(--ml-gold); }

@media (max-width: 560px) {
	.ml-404 { padding-top: 40px; }
	.ml-404__szukaj { flex-wrap: wrap; padding: 12px; }
	.ml-404__pole { width: 100%; flex: 1 1 100%; }
	.ml-404__btn { width: 100%; }
}

/* Wyroznienie obietnicy "Wysylka jeszcze dzis" - tylko wtedy, gdy jest
   prawdziwa. Poza godzinami napis zostaje w zwyklej wadze, zeby wzrok
   nie obiecywal wiecej niz tresc. */
.ml-perk--mocna { font-weight: 600; color: var(--ml-gold); }
