/* =========================================================================
   KAMAN – tokeny designu, baza typograficzna, przyciski, resety Shoptimizera
   ========================================================================= */

:root {
	--kmn-cream: #F5EFE3;
	--kmn-cream-2: #EFE7D7;
	--kmn-white: #fff;
	--kmn-ink: #1c1a19;
	--kmn-ink-2: #161311;
	--kmn-ink-3: #0f0c0a;
	--kmn-body: #4a4034;
	--kmn-muted: #6b5f4f;
	--kmn-muted-2: #8b8072;
	--kmn-gold: #A9884A;
	--kmn-gold-hover: #7d6432;
	--kmn-gold-lt: #C9A85F;
	--kmn-gold-pale: #D8BC82;
	--kmn-gold-soft: #c7ac74;
	--kmn-gold-bright: #e0c485;
	--kmn-on-dark: #e8ddc9;
	--kmn-on-dark-2: #c9bca4;
	--kmn-on-dark-3: #a99a7c;
	--kmn-on-dark-4: #7d7057;
	--kmn-cream-hi: #F7EFDD;
	--kmn-cream-hi-2: #F3E9D4;
	--kmn-serif: 'Cormorant Garamond', Georgia, serif;
	--kmn-sans: 'Hanken Grotesk', system-ui, -apple-system, sans-serif;
	--kmn-max: 1260px;
	--kmn-gutter: 30px;
	--kmn-head: 74px;
}

/* ---------- baza ---------- */

body.kmn-theme {
	font-family: var(--kmn-sans);
	font-size: 16px;
	line-height: 1.6;
	color: var(--kmn-ink);
	background: var(--kmn-cream);
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

.kmn-theme *,
.kmn-theme *::before,
.kmn-theme *::after {
	box-sizing: border-box;
}

/* :where() zeruje specyficzność selektora – reset nie może wygrać z regułami
   komponentów (.kmn-fill, .kmn-logo__mark itd.), a nadal bije reset rodzica. */
:where(.kmn-theme) img {
	max-width: 100%;
	height: auto;
}

.kmn-theme a {
	color: var(--kmn-gold);
	text-decoration: none;
	transition: color .3s ease;
}

.kmn-theme a:hover {
	color: var(--kmn-gold-hover);
}

.kmn-theme ::selection {
	background: var(--kmn-gold);
	color: #fff;
}

.kmn-theme h1,
.kmn-theme h2,
.kmn-theme h3,
.kmn-theme h4 {
	font-family: var(--kmn-serif);
	color: inherit;
	letter-spacing: normal;
	text-transform: none;
}

/* Zerowanie marginesów rodzica MUSI mieć zerową specyficzność klasową,
   inaczej bije odstępy komponentów (.kmn-hero__lead, .kmn-wyr__title itd.). */
:where(.kmn-theme) h1,
:where(.kmn-theme) h2,
:where(.kmn-theme) h3,
:where(.kmn-theme) h4,
:where(.kmn-theme) p {
	margin: 0;
}

.kmn-theme input,
.kmn-theme textarea,
.kmn-theme select,
.kmn-theme button {
	font-family: inherit;
}

/* kontener na definicje filtrów SVG - nie może wpływać na układ */
.kmn-svgdefs {
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
	pointer-events: none;
}

/* obraz wypełniający kontener */
.kmn-theme .kmn-fill {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	display: block;
}

.kmn-container {
	max-width: var(--kmn-max);
	margin: 0 auto;
	padding-left: var(--kmn-gutter);
	padding-right: var(--kmn-gutter);
	width: 100%;
}

/* ---------- typografia sekcji ---------- */

.kmn-eyebrow {
	font-size: 12px;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--kmn-gold);
	font-weight: 700;
	margin: 0 0 14px;
}

.kmn-eyebrow--dark {
	color: var(--kmn-gold-pale);
	font-weight: 600;
	letter-spacing: .24em;
}

.kmn-h2 {
	font-family: var(--kmn-serif);
	font-weight: 500;
	font-size: clamp(30px, 4vw, 50px);
	line-height: 1.03;
	margin: 0;
}

.kmn-h2--tight {
	font-size: clamp(32px, 4.2vw, 52px);
	line-height: 1.02;
}

.kmn-nowrap {
	white-space: nowrap;
}

.kmn-lead {
	font-size: 17px;
	line-height: 1.75;
	color: var(--kmn-body);
}

/* ---------- pasy i siatki sekcji ---------- */

.kmn-band {
	background: var(--kmn-cream);
}

.kmn-band--cream2 {
	background: var(--kmn-cream-2);
	border-top: 1px solid rgba(28, 26, 25, .08);
	border-bottom: 1px solid rgba(28, 26, 25, .08);
}

.kmn-band--topline {
	border-bottom: none;
}

.kmn-band--dark {
	background: var(--kmn-ink);
	color: var(--kmn-on-dark);
}

.kmn-band--dark2 {
	background: var(--kmn-ink-2);
	color: var(--kmn-on-dark);
}

.kmn-sec {
	padding-top: 92px;
	padding-bottom: 92px;
}

.kmn-sec__lead {
	max-width: 72ch;
	margin: 0 0 38px;
}

.kmn-sechead {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px;
	flex-wrap: wrap;
	margin-bottom: 40px;
}

.kmn-center {
	text-align: center;
}

.kmn-grid {
	display: grid;
	gap: 34px;
}

.kmn-grid--2 {
	grid-template-columns: repeat(2, 1fr);
}

.kmn-grid--3 {
	grid-template-columns: repeat(3, 1fr);
}

.kmn-grid--4 {
	grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 900px) {
	.kmn-sec {
		padding-top: 68px;
		padding-bottom: 68px;
	}

	.kmn-grid--3,
	.kmn-grid--4 {
		grid-template-columns: repeat(2, 1fr);
	}

	.kmn-grid--2 {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 640px) {
	.kmn-grid--3,
	.kmn-grid--4 {
		grid-template-columns: 1fr;
		gap: 28px;
	}
}

/* ---------- przyciski ---------- */

.kmn-theme .kmn-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 16px 30px;
	border-radius: 2px;
	font-family: var(--kmn-sans);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	border: 1px solid transparent;
	cursor: pointer;
	line-height: 1;
	text-align: center;
	transition: background .3s ease, color .3s ease, border-color .3s ease;
}

.kmn-theme .kmn-btn--dark {
	background: var(--kmn-ink);
	color: var(--kmn-cream);
}

.kmn-theme .kmn-btn--dark:hover {
	background: var(--kmn-gold);
	color: #fff;
}

.kmn-theme .kmn-btn--gold {
	background: var(--kmn-gold);
	color: #fff;
}

.kmn-theme .kmn-btn--gold:hover {
	background: var(--kmn-gold-soft);
	color: #fff;
}

.kmn-theme .kmn-btn--goldlt {
	background: var(--kmn-gold-lt);
	color: var(--kmn-ink-2);
	padding: 17px 32px;
	letter-spacing: .12em;
}

.kmn-theme .kmn-btn--goldlt:hover {
	background: var(--kmn-gold-bright);
	color: var(--kmn-ink-2);
}

.kmn-theme .kmn-btn--ghost {
	background: rgba(255, 255, 255, .06);
	color: var(--kmn-cream-hi);
	border-color: rgba(247, 239, 221, .45);
	padding: 17px 32px;
	letter-spacing: .12em;
	backdrop-filter: blur(4px);
}

.kmn-theme .kmn-btn--ghost:hover {
	background: rgba(255, 255, 255, .14);
	color: var(--kmn-cream-hi);
}

.kmn-theme .kmn-btn--ghostdark {
	background: transparent;
	color: var(--kmn-ink);
	border-color: rgba(28, 26, 25, .28);
}

.kmn-theme .kmn-btn--ghostdark:hover {
	border-color: var(--kmn-gold);
	color: var(--kmn-gold);
	background: transparent;
}

.kmn-theme .kmn-btn--ghostlight {
	background: transparent;
	color: var(--kmn-cream);
	border-color: rgba(245, 239, 227, .3);
}

.kmn-theme .kmn-btn--ghostlight:hover {
	border-color: var(--kmn-gold-soft);
	color: var(--kmn-gold-soft);
	background: transparent;
}

.kmn-theme .kmn-btn--block {
	display: flex;
	width: 100%;
}

.kmn-theme .kmn-btn--sm {
	padding: 10px 16px;
	font-size: 11px;
	letter-spacing: .08em;
}

/* link tekstowy typu „Zobacz wszystkie →” */
.kmn-theme .kmn-textlink {
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
	color: var(--kmn-gold);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
}

.kmn-theme .kmn-textlink:hover {
	color: var(--kmn-gold-hover);
}

/* ---------- animacje ---------- */

@keyframes kmnFade {
	from { opacity: 0; }
	to { opacity: 1; }
}

@keyframes kmnUp {
	from { opacity: 0; transform: translateY(28px); }
	to { opacity: 1; transform: none; }
}

@keyframes kmnHeroUp {
	from { opacity: 0; transform: translateY(26px); }
	to { opacity: 1; transform: none; }
}

@keyframes kmnKen {
	0% { transform: scale(1.04); }
	100% { transform: scale(1.16); }
}

@keyframes kmnZoom {
	from { transform: scale(1.12); }
	to { transform: scale(1); }
}

@keyframes kmnBar {
	from { width: 0%; }
	to { width: 100%; }
}

@keyframes kmnMarq {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}

@keyframes kmnWipe {
	0% { clip-path: inset(0 100% 0 0); }
	42% { clip-path: inset(0 0 0 0); }
	58% { clip-path: inset(0 0 0 0); }
	100% { clip-path: inset(0 100% 0 0); }
}

@keyframes kmnWipeLine {
	0% { left: 0%; }
	42% { left: 100%; }
	58% { left: 100%; }
	100% { left: 0%; }
}

@keyframes kmnLabA {
	0% { opacity: 1; }
	35% { opacity: 0; }
	65% { opacity: 0; }
	100% { opacity: 1; }
}

@keyframes kmnLabB {
	0% { opacity: 0; }
	35% { opacity: 1; }
	65% { opacity: 1; }
	100% { opacity: 0; }
}

@keyframes kmnRule {
	from { transform: scaleX(0); }
	to { transform: scaleX(1); }
}

/* pojawianie się sekcji przy scrollu */
.kmn-rv {
	opacity: 0;
	transform: translateY(32px);
	transition: opacity .9s cubic-bezier(.22, .7, .2, 1), transform .9s cubic-bezier(.22, .7, .2, 1);
}

.kmn-rv.is-in {
	opacity: 1;
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	.kmn-rv {
		opacity: 1;
		transform: none;
		transition: none;
	}
	.kmn-theme *,
	.kmn-theme *::before,
	.kmn-theme *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
	}
}

/* ---------- resety nad Shoptimizerem ---------- */

.kmn-theme .site-header,
.kmn-theme .site-footer,
.kmn-theme .shoptimizer-sticky-add-to-cart,
.kmn-theme .header-widget-region,
.kmn-theme .top-bar,
.kmn-theme .call-back-feature,
.kmn-theme .shoptimizer-mobile-menu,
.kmn-theme .site-search {
	display: none !important;
}

.kmn-theme .site-content,
.kmn-theme #content,
.kmn-theme .site {
	margin: 0;
	padding: 0;
	max-width: none;
	width: auto;
	background: transparent;
}

.kmn-theme .content-area,
.kmn-theme #primary {
	float: none;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}

.kmn-theme .widget-area,
.kmn-theme #secondary {
	display: none;
}

.kmn-theme ul,
.kmn-theme ol {
	margin: 0;
}

.kmn-theme button:focus-visible,
.kmn-theme a:focus-visible,
.kmn-theme input:focus-visible,
.kmn-theme textarea:focus-visible,
.kmn-theme select:focus-visible {
	outline: 2px solid var(--kmn-gold);
	outline-offset: 2px;
}

/* ---------- responsywność bazowa ---------- */

@media (max-width: 900px) {
	:root {
		--kmn-gutter: 22px;
	}
}

@media (max-width: 640px) {
	:root {
		--kmn-gutter: 20px;
	}

	.kmn-nowrap {
		white-space: normal;
	}
}

@media (max-width: 1080px) {
	.kmn-nowrap {
		white-space: normal;
	}
}
