/*
Theme Name: Kozman
Theme URI: https://kozmangroup.com/
Author: MaveriKode
Author URI: https://maverikode.com/
Description: Custom black & white editorial theme for Kozman Group — textile manufacturing since 1950. Split-logo header, curtain page transitions, scroll reveals, count-up figures and process list.
Version: 1.0.5
Requires at least: 6.3
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: kozman
*/

/* ==========================================================================
   Fonts — self-hosted (SIL Open Font License): Bodoni Moda, Manrope
   ========================================================================== */
@font-face { font-family: 'Bodoni Moda'; font-style: normal; font-weight: 400 900; font-display: swap; src: url(assets/fonts/bodoni-moda-latin-ext-opsz-normal.woff2) format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Bodoni Moda'; font-style: normal; font-weight: 400 900; font-display: swap; src: url(assets/fonts/bodoni-moda-latin-opsz-normal.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Bodoni Moda'; font-style: italic; font-weight: 400 900; font-display: swap; src: url(assets/fonts/bodoni-moda-latin-ext-opsz-italic.woff2) format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Bodoni Moda'; font-style: italic; font-weight: 400 900; font-display: swap; src: url(assets/fonts/bodoni-moda-latin-opsz-italic.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 200 800; font-display: swap; src: url(assets/fonts/manrope-latin-ext-wght-normal.woff2) format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 200 800; font-display: swap; src: url(assets/fonts/manrope-latin-wght-normal.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* ==========================================================================
   Tokens
   ========================================================================== */
:root {
	--kz-black: #000;
	--kz-white: #fff;
	--kz-grey: #555;
	--kz-line: #000;
	--kz-soft: #e8e8e8;
	--kz-red: #e10600;
	--kz-muted: #bdbdbd;
	--kz-serif: 'Bodoni Moda', 'Didot', 'Times New Roman', serif;
	--kz-sans: 'Manrope', 'Helvetica Neue', Helvetica, sans-serif;
	--kz-cta-font: 'Times New Roman', Times, serif;
	--kz-gutter: 72px;
	--kz-gap: 24px;
	--kz-section: 120px;
	--kz-header-h: 104px;
	--kz-ease: cubic-bezier(.77, 0, .175, 1);
	--kz-ease-out: cubic-bezier(.16, 1, .3, 1);
}

@media (max-width: 1100px) {
	:root { --kz-gutter: 40px; --kz-section: 96px; --kz-header-h: 88px; }
}
@media (max-width: 700px) {
	:root { --kz-gutter: 20px; --kz-gap: 16px; --kz-section: 72px; --kz-header-h: 72px; }
}

/* ==========================================================================
   Base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--kz-white);
	color: var(--kz-black);
	font-family: var(--kz-sans);
	font-size: 16px;
	line-height: 1.7;
	font-weight: 300;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; transition: color .3s ease; }
a:hover { color: var(--kz-grey); }
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--kz-black); outline-offset: 4px; }
em { font-style: italic; }

.kz-skip {
	position: absolute; left: 16px; top: -60px; z-index: 1000;
	padding: 12px 20px; background: var(--kz-black); color: var(--kz-white);
}
.kz-skip:focus { top: 16px; color: var(--kz-white); }

.kz-wrap { padding-left: var(--kz-gutter); padding-right: var(--kz-gutter); }
.kz-main { padding-top: var(--kz-header-h); }

.kz-display {
	font-family: var(--kz-serif);
	font-weight: 400;
	letter-spacing: -.02em;
	line-height: .95;
	margin: 0;
}
.kz-idx {
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 3px;
	text-transform: uppercase;
}

/* Bodoni's hairlines vanish at large optical sizes; reading text uses a sturdier cut */
.kz-statement, .kz-prose--lead, .kz-contact__item a, .kz-table dd, .kz-flag__name, .kz-stat__num { font-variation-settings: "opsz" 18; }

/* ==========================================================================
   CTA — transparent, black border, Times New Roman, uppercase, curtain hover
   ========================================================================== */
.kz-cta {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	padding: 0 40px;
	border: 1px solid var(--kz-black);
	background: transparent;
	color: var(--kz-black);
	font-family: var(--kz-cta-font);
	font-size: 14px;
	font-weight: 400;
	letter-spacing: 3px;
	text-transform: uppercase;
	overflow: hidden;
	isolation: isolate;
	cursor: pointer;
	transition: color .5s var(--kz-ease);
}
.kz-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--kz-black);
	transform: scaleY(0);
	transform-origin: top;
	transition: transform .5s var(--kz-ease);
}
.kz-cta:hover, .kz-cta:focus-visible { color: var(--kz-white); }
.kz-cta:hover::before, .kz-cta:focus-visible::before { transform: scaleY(1); }

.kz-arrow {
	display: inline-flex; gap: 12px; align-items: center;
	font-size: 12px; font-weight: 500; letter-spacing: 3px; text-transform: uppercase;
	padding: 12px 0; border-bottom: 1px solid currentColor;
}
.kz-arrow::after { content: "→"; transition: transform .4s var(--kz-ease-out); }
.kz-arrow:hover::after { transform: translateX(6px); }

/* ==========================================================================
   Curtain (intro + page transitions)
   ========================================================================== */
.kz-curtain {
	position: fixed; inset: 0; z-index: 900;
	display: flex; align-items: center; justify-content: center;
	background: var(--kz-black); color: var(--kz-white);
	pointer-events: none;
	transform: translateY(-100%);
}
.kz-curtain__word { display: flex; overflow: hidden; width: min(70vw, 520px); }
.kz-curtain__word img { display: block; width: 100%; height: auto; }
/* first visit: logo starts below its mask and rises */
.kz-intro .kz-curtain__word img, .kz-curtain.is-intro .kz-curtain__word img { transform: translateY(110%); }

/* intro: covers screen, letters rise, then lifts */
.kz-curtain.is-intro { transform: translateY(0); pointer-events: auto; }
.kz-curtain.is-intro.is-play .kz-curtain__word img {
	transform: translateY(0);
	transition: transform .9s var(--kz-ease-out);
}
.kz-curtain.is-lift { transform: translateY(-100%) !important; transition: transform 1s var(--kz-ease); }

/* set in <head> before paint: first visit (intro) or arriving from an internal link */
.kz-intro .kz-curtain, .kz-arriving .kz-curtain { transform: translateY(0); }
/* link click: curtain drops from the top */
.kz-curtain.is-drop.is-play { transform: translateY(0); transition: transform .6s var(--kz-ease); pointer-events: auto; }

/* ==========================================================================
   Header
   ========================================================================== */
.kz-header {
	position: fixed; top: 0; left: 0; right: 0; z-index: 100;
	height: var(--kz-header-h);
	display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
	padding: 0 var(--kz-gutter);
	background: rgba(255, 255, 255, 0);
	transition: transform .6s var(--kz-ease), background-color .4s ease, border-color .4s ease;
	border-bottom: 1px solid transparent;
}
.kz-header.is-solid { background: rgba(255, 255, 255, .96); border-bottom-color: rgba(0, 0, 0, .08); backdrop-filter: blur(8px); }
.kz-header.is-hidden { transform: translateY(-100%); }

.kz-nav__list { display: flex; gap: 36px; list-style: none; margin: 0; padding: 0; }
.kz-nav--right { justify-self: end; }
.kz-nav a {
	position: relative; display: inline-block; padding: 8px 0;
	font-size: 12px; font-weight: 500; letter-spacing: 3px; text-transform: uppercase;
}
.kz-nav a::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 2px; height: 1px;
	background: currentColor; transform: scaleX(0); transform-origin: right;
	transition: transform .5s var(--kz-ease);
}
.kz-nav a:hover { color: var(--kz-black); }
.kz-nav a:hover::after, .kz-nav a[aria-current="page"]::after, .kz-nav .current-menu-item > a::after { transform: scaleX(1); transform-origin: left; }

.kz-logo { justify-self: center; display: block; }
.kz-logo:hover { color: var(--kz-black); }
.kz-logo__word {
	font-family: var(--kz-serif); font-size: 34px; letter-spacing: 10px;
	text-transform: uppercase; line-height: 1; padding-left: 10px;
}
.kz-logo__img { height: 48px; width: auto; }
.kz-logo__img--white, .menu-open .kz-logo__img--black { display: none; }
.menu-open .kz-logo__img--white { display: block; }

.kz-burger {
	display: none; justify-self: end; align-items: center; gap: 12px;
	min-height: 44px; padding: 0; border: 0; background: none; cursor: pointer;
	font-size: 12px; font-weight: 500; letter-spacing: 3px; text-transform: uppercase;
}
.kz-burger__lines { position: relative; width: 28px; height: 10px; }
.kz-burger__lines i {
	position: absolute; left: 0; right: 0; height: 1px; background: currentColor;
	transition: transform .5s var(--kz-ease), top .5s var(--kz-ease);
}
.kz-burger__lines i:first-child { top: 0; }
.kz-burger__lines i:last-child { top: 9px; }
.kz-burger[aria-expanded="true"] .kz-burger__lines i:first-child { top: 5px; transform: rotate(45deg); }
.kz-burger[aria-expanded="true"] .kz-burger__lines i:last-child { top: 5px; transform: rotate(-45deg); }

@media (max-width: 900px) {
	.kz-header { grid-template-columns: 1fr auto; }
	.kz-nav { display: none; }
	.kz-logo { justify-self: start; }
	.kz-logo__word { font-size: 26px; letter-spacing: 7px; padding-left: 0; }
	.kz-logo__img { height: 40px; }
	.kz-burger { display: inline-flex; }
}

/* Mobile menu */
.kz-menu {
	position: fixed; inset: 0; z-index: 90;
	background: var(--kz-black); color: var(--kz-white);
	clip-path: inset(0 0 100% 0);
	transition: clip-path .8s var(--kz-ease);
	display: flex; flex-direction: column; justify-content: flex-end;
	padding: calc(var(--kz-header-h) + 24px) var(--kz-gutter) 40px;
}
.kz-menu[hidden] { display: flex; visibility: hidden; }
.kz-menu.is-open { clip-path: inset(0 0 0 0); visibility: visible; }
.menu-open .kz-header { color: var(--kz-white); background: transparent; border-bottom-color: transparent; }
.menu-open .kz-header a:hover { color: var(--kz-white); }
.kz-menu__list { list-style: none; margin: 0; padding: 0; }
.kz-menu__list li { overflow: hidden; border-bottom: 1px solid rgba(255, 255, 255, .15); }
.kz-menu__list a {
	display: block; padding: 10px 0;
	font-family: var(--kz-serif); font-size: clamp(36px, 9vw, 56px); line-height: 1.15;
	transform: translateY(100%); transition: transform .8s var(--kz-ease-out);
}
.kz-menu.is-open .kz-menu__list a { transform: translateY(0); }
.kz-menu.is-open .kz-menu__list li:nth-child(1) a { transition-delay: .15s; }
.kz-menu.is-open .kz-menu__list li:nth-child(2) a { transition-delay: .2s; }
.kz-menu.is-open .kz-menu__list li:nth-child(3) a { transition-delay: .25s; }
.kz-menu.is-open .kz-menu__list li:nth-child(4) a { transition-delay: .3s; }
.kz-menu.is-open .kz-menu__list li:nth-child(5) a { transition-delay: .35s; }
.kz-menu.is-open .kz-menu__list li:nth-child(6) a { transition-delay: .4s; }
.kz-menu__list a:hover { color: var(--kz-muted); }
.kz-menu__foot { display: flex; flex-direction: column; gap: 4px; margin-top: 32px; font-size: 14px; color: var(--kz-muted); }
.kz-menu__foot a:hover { color: var(--kz-white); }
body.menu-open { overflow: hidden; }

/* ==========================================================================
   Media — curtain image reveal
   ========================================================================== */
.kz-media {
	position: relative; display: block; overflow: hidden;
	background-color: var(--kz-soft);
	background-image: repeating-linear-gradient(135deg, rgba(0, 0, 0, .04) 0 1px, transparent 1px 8px);
}
.kz-media img { width: 100%; height: 100%; object-fit: cover; will-change: transform; }
/* parallax images: taller than the box and centred in it (top % is of the box height) */
.kz-media--hero { min-height: max(420px, min(78vh, 760px)); }
.kz-media--hero img, .kz-media--wide img { position: absolute; left: 0; top: -10%; height: 120%; }
.kz-media--wide { height: min(80vh, 780px); min-height: 360px; }
.kz-media--tall { height: 720px; }
.kz-media--tall img { position: absolute; left: 0; top: -8%; height: 116%; }
.kz-media--mid { height: 440px; }
.kz-media--short { height: 218px; }
.kz-media--card { aspect-ratio: 4 / 5; }
.kz-media--map { background: transparent; }
.kz-media--map img { object-fit: contain; }

.js .kz-media[data-media] { clip-path: inset(0 0 100% 0); transition: clip-path 1.4s var(--kz-ease); }
.js .kz-media[data-media] > img { transform: scale(1.25); transition: transform 1.8s var(--kz-ease-out); }
.js .kz-media[data-media].is-in { clip-path: inset(0 0 0 0); }
.js .kz-media[data-media].is-in > img { transform: scale(1); }
/* after the reveal settles, JS drives parallax — no transition lag */
.js .kz-media[data-media].is-settled > img[data-parallax] { transition: none; }

/* ==========================================================================
   Reveal primitives
   ========================================================================== */
.js [data-reveal] {
	opacity: 0; transform: translateY(40px);
	transition: opacity 1s var(--kz-ease-out) var(--d, 0s), transform 1.2s var(--kz-ease-out) var(--d, 0s);
}
.js [data-reveal].is-in { opacity: 1; transform: none; }

/* split text — words rise from a mask */
.kz-w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.kz-w > span { display: inline-block; }
.js [data-split] .kz-w > span {
	transform: translateY(110%);
	transition: transform 1.1s var(--kz-ease-out) calc(var(--wi, 0) * .045s + var(--sd, 0s));
}
.js [data-split].is-in .kz-w > span { transform: translateY(0); }

/* ==========================================================================
   Layout helpers
   ========================================================================== */
.kz-section { padding-top: var(--kz-section); padding-bottom: 0; }
.kz-section--flush { padding-top: var(--kz-section); }
.kz-cols { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--kz-gap); row-gap: 32px; }
.kz-cols > :first-child { grid-column: span 3; }
.kz-cols > :nth-child(2) { grid-column: 4 / span 9; }
.kz-cols__main { display: flex; flex-direction: column; gap: 56px; align-items: flex-start; }
.kz-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: 40px; }
.kz-band { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 32px; padding-bottom: 0; }
.kz-band.kz-section { border-top: 1px solid var(--kz-line); margin-top: var(--kz-section); padding-top: 56px; }
.kz-section--flush .kz-band { padding-top: 40px; justify-content: flex-start; gap: 16px; }

@media (max-width: 900px) {
	.kz-cols > :first-child, .kz-cols > :nth-child(2) { grid-column: 1 / -1; }
}

.kz-statement {
	margin: 0; font-family: var(--kz-serif); font-weight: 400;
	font-size: clamp(28px, 3.4vw, 48px); line-height: 1.2; letter-spacing: -.01em;
}
.kz-statement--sm { font-size: clamp(26px, 2.8vw, 40px); line-height: 1.3; }

/* ==========================================================================
   Home — hero
   ========================================================================== */
.kz-hero { padding-top: 8px; }
/* image and copy share one grid cell — the stage grows if copy outgrows the image */
.kz-hero__stage { display: grid; grid-template-columns: minmax(0, 1fr); }
.kz-hero__stage > * { grid-area: 1 / 1; }
.kz-media--hero::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	background: linear-gradient(to bottom, rgba(0, 0, 0, .55) 0%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 55%, rgba(0, 0, 0, .7) 100%);
}
/* title pinned top-left, intro + CTA pinned bottom-right */
.kz-hero__row {
	position: relative; z-index: 1;
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: auto 1fr;
	column-gap: var(--kz-gap); row-gap: 48px; padding: clamp(64px, 12vh, 128px) 48px; color: var(--kz-white);
}
.kz-hero__title { grid-column: 1 / span 8; grid-row: 1; font-size: clamp(56px, 7.8vw, 112px); }
.kz-hero__side { grid-column: 9 / span 4; grid-row: 2; align-self: end; display: flex; flex-direction: column; gap: 24px; align-items: flex-start; }
.kz-hero__side p { margin: 0; font-size: clamp(20px, 1.6vw, 24px); line-height: 1.4; }
.kz-cta--light { border-color: var(--kz-white); color: var(--kz-white); }
.kz-cta--light::before { background: var(--kz-white); }
.kz-cta--light:hover, .kz-cta--light:focus-visible { color: var(--kz-black); }
.kz-cta--light:focus-visible { outline: 1px solid var(--kz-white); outline-offset: 4px; }
@media (max-width: 900px) {
	.kz-hero__title, .kz-hero__side { grid-column: 1 / -1; }
	.kz-hero__row { row-gap: 32px; padding: 64px 32px; }
}
@media (max-width: 600px) {
	.kz-hero__title { font-size: clamp(44px, 12vw, 56px); }
	.kz-hero__row { padding: 48px 20px; }
}

/* Stats */
.kz-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--kz-gap); width: 100%; border-top: 1px solid var(--kz-line); padding-top: 32px; }
.kz-stat__num { font-family: var(--kz-serif); font-size: clamp(30px, 3vw, 44px); line-height: 1; white-space: nowrap; }
.kz-stat__label { margin-top: 12px; font-size: 13px; letter-spacing: .5px; color: var(--kz-grey); }
@media (max-width: 700px) { .kz-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 32px; } }

/* ==========================================================================
   Process list
   ========================================================================== */
.kz-plist { list-style: none; margin: 40px 0 0; padding: 0; border-top: 1px solid var(--kz-line); }
.kz-plist__item { border-bottom: 1px solid var(--kz-line); }
.kz-plist__item a {
	position: relative;
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--kz-gap);
	align-items: center; padding: 28px 0; overflow: hidden;
}
.kz-plist__item a::before {
	content: ""; position: absolute; inset: 0; z-index: -1; background: var(--kz-black);
	transform: scaleY(0); transform-origin: top; transition: transform .6s var(--kz-ease);
}
.kz-plist__item a:hover, .kz-plist__item a:focus-visible { color: var(--kz-white); }
.kz-plist__item a:hover::before, .kz-plist__item a:focus-visible::before { transform: scaleY(1); }
.kz-plist__item { position: relative; isolation: isolate; }
.kz-plist__num { grid-column: span 1; font-size: 12px; font-weight: 500; letter-spacing: 3px; padding-left: 4px; }
.kz-plist__title {
	grid-column: span 7; font-family: var(--kz-serif); font-size: clamp(36px, 4vw, 56px); line-height: 1.1;
	transition: transform .6s var(--kz-ease-out), font-style .2s;
}
.kz-plist__item a:hover .kz-plist__title { transform: translateX(24px); font-style: italic; }
.kz-plist__meta { grid-column: span 3; justify-self: end; text-align: right; font-size: 15px; }
.kz-plist__arrow { grid-column: span 1; justify-self: end; padding-right: 4px; font-size: 22px; transition: transform .5s var(--kz-ease-out); }
.kz-plist__item a:hover .kz-plist__arrow { transform: translateX(-6px) rotate(-45deg); }
.kz-plist__item.is-current .kz-plist__title { font-style: italic; }
@media (max-width: 700px) {
	.kz-plist__item a { grid-template-columns: 40px 1fr auto; padding: 22px 0; }
	.kz-plist__num, .kz-plist__title, .kz-plist__arrow { grid-column: auto; }
	.kz-plist__meta { display: none; }
}

/* ==========================================================================
   Home — collection feature
   ========================================================================== */
.kz-feature { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--kz-gap); }
.kz-feature figure { margin: 0; display: flex; flex-direction: column; gap: 14px; }
.kz-feature figcaption { display: flex; justify-content: space-between; gap: 16px; font-size: 14px; }
.kz-feature figcaption span:first-child { font-weight: 500; }
.kz-feature__big { grid-column: span 7; }
.kz-feature__side { grid-column: span 5; display: flex; flex-direction: column; gap: var(--kz-gap); }
@media (max-width: 900px) {
	.kz-feature__big, .kz-feature__side { grid-column: 1 / -1; }
	.kz-media--tall { height: 520px; }
	.kz-media--mid { height: 360px; }
	.kz-media--short { height: 260px; }
}

/* ==========================================================================
   Marquee
   ========================================================================== */
.kz-marquee {
	display: flex; overflow: hidden; margin-top: 64px;
	border-top: 1px solid var(--kz-line); border-bottom: 1px solid var(--kz-line);
}
.kz-marquee__track {
	display: flex; flex-shrink: 0; list-style: none; margin: 0; padding: 28px 0;
	animation: kz-marquee 38s linear infinite;
}
.kz-marquee:hover .kz-marquee__track { animation-play-state: paused; }
.kz-marquee__track li {
	display: flex; align-items: center; white-space: nowrap;
	font-family: var(--kz-serif); font-size: clamp(40px, 6vw, 88px); line-height: 1;
}
.kz-marquee__track li:nth-child(even) { font-style: italic; }
.kz-marquee__dot { font-size: .3em; margin: 0 .9em; transform: translateY(-.2em); }
@keyframes kz-marquee { to { transform: translateX(-100%); } }

/* ==========================================================================
   Inner pages
   ========================================================================== */
.kz-phero { padding-top: 72px; padding-bottom: 72px; display: flex; flex-direction: column; gap: 32px; }
.kz-phero__title { font-size: clamp(56px, 9vw, 144px); max-width: 1200px; }
.kz-phero__intro { margin: 0; max-width: 520px; font-size: 18px; }

.kz-prose { font-size: 17px; max-width: 760px; }
.kz-prose > :first-child { margin-top: 0; }
.kz-prose--lead { font-family: var(--kz-serif); font-size: clamp(24px, 2.4vw, 34px); line-height: 1.4; }
.kz-prose img { margin: 32px 0; }
.kz-prose a { border-bottom: 1px solid currentColor; }

/* Processes grid */
.kz-pgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 56px var(--kz-gap); }
.kz-pcard { display: flex; flex-direction: column; gap: 14px; }
.kz-pcard:hover { color: var(--kz-black); }
.kz-pcard .kz-media img { transition: transform 1.2s var(--kz-ease-out); }
.js .kz-pcard:hover .kz-media.is-in img, .kz-pcard:hover .kz-media img { transform: scale(1.06); }
.kz-pcard__row { display: flex; justify-content: space-between; align-items: baseline; border-bottom: 1px solid var(--kz-line); padding-bottom: 12px; }
.kz-pcard__title { font-family: var(--kz-serif); font-size: 36px; line-height: 1.1; transition: letter-spacing .5s var(--kz-ease-out); }
.kz-pcard:hover .kz-pcard__title { font-style: italic; }
.kz-pcard__meta { font-size: 14px; color: var(--kz-grey); }
@media (max-width: 900px) { .kz-pgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .kz-pgrid { grid-template-columns: 1fr; } }

/* Process single */
.kz-next {
	display: flex; flex-direction: column; gap: 16px;
	margin-top: var(--kz-section); padding-top: 56px; padding-bottom: 56px;
	border-top: 1px solid var(--kz-line); border-bottom: 1px solid var(--kz-line);
	position: relative; overflow: hidden; isolation: isolate;
}
.kz-next::before {
	content: ""; position: absolute; inset: 0; z-index: -1; background: var(--kz-black);
	transform: scaleY(0); transform-origin: top; transition: transform .7s var(--kz-ease);
}
.kz-next:hover { color: var(--kz-white); }
.kz-next:hover::before { transform: scaleY(1); }
.kz-next__title { font-size: clamp(48px, 7vw, 112px); }
.kz-next__title span { display: inline-block; transition: transform .6s var(--kz-ease-out); }
.kz-next:hover .kz-next__title span { transform: translateX(24px); }

/* Collection gallery */
.kz-gallery { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--kz-gap); }
.kz-gallery__item { display: block; padding: 0; margin: 0; border: 0; background: none; cursor: zoom-in; grid-column: span 4; }
.kz-gallery__item .kz-media { aspect-ratio: 4 / 5; }
.kz-gallery__item--0 { grid-column: span 7; } .kz-gallery__item--0 .kz-media { aspect-ratio: 7 / 6; }
.kz-gallery__item--1 { grid-column: span 5; } .kz-gallery__item--1 .kz-media { aspect-ratio: 5 / 6; }
.kz-gallery__item--5 { grid-column: span 12; } .kz-gallery__item--5 .kz-media { aspect-ratio: 21 / 9; }
.kz-gallery__item .kz-media img { transition: transform 1.2s var(--kz-ease-out); }
.kz-gallery__item:hover .kz-media.is-in img, .no-js .kz-gallery__item:hover img { transform: scale(1.05); }
@media (max-width: 700px) {
	.kz-gallery__item, .kz-gallery__item--0, .kz-gallery__item--1 { grid-column: span 6; }
	.kz-gallery__item--0 .kz-media, .kz-gallery__item--1 .kz-media { aspect-ratio: 4 / 5; }
	.kz-gallery__item--5 { grid-column: span 12; }
	.kz-gallery__item--5 .kz-media { aspect-ratio: 4 / 3; }
}

.kz-lightbox {
	position: fixed; inset: 0; z-index: 950; background: rgba(0, 0, 0, .94);
	display: flex; align-items: center; justify-content: center; padding: 64px;
	opacity: 0; transition: opacity .4s ease;
}
.kz-lightbox[hidden] { display: none; }
.kz-lightbox.is-open { opacity: 1; }
.kz-lightbox img { max-width: 100%; max-height: 100%; object-fit: contain; }
.kz-lightbox button {
	position: absolute; min-width: 48px; min-height: 48px; border: 1px solid rgba(255, 255, 255, .5);
	background: transparent; color: var(--kz-white); font-size: 22px; cursor: pointer;
}
.kz-lightbox button:hover { background: var(--kz-white); color: var(--kz-black); }
.kz-lightbox__close { top: 20px; right: 20px; }
.kz-lightbox__nav--prev { left: 20px; top: 50%; transform: translateY(-50%); }
.kz-lightbox__nav--next { right: 20px; top: 50%; transform: translateY(-50%); }
@media (max-width: 700px) { .kz-lightbox { padding: 72px 12px; } .kz-lightbox__nav { top: auto !important; bottom: 16px; transform: none !important; } }

/* Clients */
.kz-flags { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--kz-line); }
.kz-flag { display: flex; align-items: center; gap: 16px; padding: 24px 0; border-bottom: 1px solid var(--kz-line); }
.kz-flag__img { width: 44px; height: 44px; border-radius: 50%; overflow: hidden; flex-shrink: 0; background: var(--kz-soft); filter: grayscale(1); transition: filter .5s ease; }
.kz-flag:hover .kz-flag__img { filter: none; }
.kz-flag__img img { width: 100%; height: 100%; object-fit: cover; }
.kz-flag__name { font-family: var(--kz-serif); font-size: 26px; line-height: 1.1; }
@media (max-width: 900px) { .kz-flags { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--kz-gap); } }
.kz-egypt { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: var(--kz-gap); align-items: center; }
.kz-egypt > p { grid-column: span 4; }
.kz-egypt > .kz-media { grid-column: 6 / span 4; aspect-ratio: 1; }
@media (max-width: 900px) { .kz-egypt > p, .kz-egypt > .kz-media { grid-column: 1 / -1; } }

/* About */
.kz-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--kz-gap); }
.kz-two p { margin: 0; font-size: 17px; }
.kz-two h3 { margin: 0 0 12px; font-family: var(--kz-serif); font-size: clamp(22px, 2vw, 28px); font-weight: 400; line-height: 1.25; }
@media (max-width: 700px) { .kz-two { grid-template-columns: 1fr; } }
.kz-table { margin: 0; border-top: 1px solid var(--kz-line); }
.kz-table__row { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; padding: 20px 0; border-bottom: 1px solid var(--kz-line); }
.kz-table dt { font-size: 15px; }
.kz-table dd { margin: 0; font-family: var(--kz-serif); font-size: clamp(28px, 3vw, 44px); line-height: 1; white-space: nowrap; }

/* Contact */
.kz-contact { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--kz-gap); padding-top: 0; }
.kz-contact__item { display: flex; flex-direction: column; gap: 16px; padding-top: 24px; border-top: 1px solid var(--kz-line); }
.kz-contact__item a { font-family: var(--kz-serif); font-size: clamp(22px, 2vw, 30px); line-height: 1.3; overflow-wrap: anywhere; }
@media (max-width: 900px) { .kz-contact { grid-template-columns: 1fr; } }
.kz-map { position: relative; display: block; aspect-ratio: 21 / 8; min-height: 320px; background: var(--kz-soft); }
.kz-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; filter: grayscale(1) contrast(1.05); pointer-events: none; }
/* Red pin; its tip sits on the map centre (Kozman). */
.kz-map::after { content: ""; position: absolute; left: 50%; top: 50%; width: 28px; height: 28px; margin: -34px 0 0 -14px; border-radius: 50% 50% 50% 0; background: radial-gradient(circle, var(--kz-white) 0 4px, var(--kz-red) 5px); transform: rotate(-45deg); box-shadow: -2px 2px 6px rgba(0, 0, 0, .3); }
/* place label beside the pin, Google Maps style: text with a white halo */
.kz-map__label {
	position: absolute; left: calc(50% + 20px); top: calc(50% - 31px); z-index: 1;
	font-family: var(--kz-sans); font-size: 15px; font-weight: 700; line-height: 1.25; white-space: nowrap;
	color: var(--kz-red); text-shadow: 0 0 2px var(--kz-white), 0 0 2px var(--kz-white), 0 0 3px var(--kz-white);
}
.kz-map__label small { display: block; font-size: 12px; font-weight: 500; color: var(--kz-grey); }

/* Posts */
.kz-posts { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--kz-line); }
.kz-posts a { display: flex; gap: 32px; align-items: baseline; padding: 24px 0; border-bottom: 1px solid var(--kz-line); }
.kz-posts__title { font-family: var(--kz-serif); font-size: 32px; }

/* ==========================================================================
   Footer
   ========================================================================== */
.kz-footer {
	margin-top: var(--kz-section);
	background: var(--kz-black); color: var(--kz-white);
	padding-top: 96px; padding-bottom: 40px; overflow: hidden;
}
.kz-footer a:hover { color: var(--kz-muted); }
.kz-footer__brand { margin-bottom: 72px; }
.kz-footer__logo { height: 80px; width: auto; }
@media (max-width: 700px) { .kz-footer__brand { margin-bottom: 48px; } .kz-footer__logo { height: 64px; } }
.kz-footer__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--kz-gap); font-size: 15px; line-height: 1.8; }
.kz-link { border-bottom: 1px solid rgba(255, 255, 255, .4); }
/* Contact rail: a line from "Contact" with an arrow dropping into each column. */
.kz-footer__label { display: flex; align-items: center; gap: 16px; align-self: start; line-height: 1; margin-top: -.5em; }
.kz-footer__label::after { content: ""; flex: 1; align-self: flex-start; margin-top: .5em; border-top: 1px solid var(--kz-muted); }
.kz-footer__item { position: relative; }
.kz-footer__item::before { content: ""; position: absolute; top: 0; left: calc(-1 * var(--kz-gap)); right: 0; border-top: 1px solid var(--kz-muted); }
.kz-footer__item:last-child::before { right: auto; width: calc(var(--kz-gap) + 5.5px); }
.kz-footer__to { display: flex; align-items: flex-end; gap: 10px; margin-bottom: 14px; font-size: 12px; letter-spacing: 2px; line-height: 1; text-transform: uppercase; color: var(--kz-muted); }
.kz-footer__arrow { flex: none; width: 10px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1; }
.kz-footer__word {
	display: flex; justify-content: center; overflow: hidden;
	font-family: var(--kz-serif); font-size: clamp(56px, 19vw, 320px); line-height: .9;
	letter-spacing: .04em; text-transform: uppercase; margin: 80px 0 48px; padding: 0 var(--kz-gutter);
}
.kz-footer__word span { display: inline-block; }
.js .kz-footer__word span { transform: translateY(100%); transition: transform 1.2s var(--kz-ease-out) calc(var(--i) * .07s); }
.js .kz-footer__word.is-in span { transform: translateY(0); }
.kz-footer__bar { display: flex; justify-content: space-between; gap: 16px; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--kz-muted); }
@media (max-width: 900px) {
	.kz-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 32px; }
	.kz-footer__label { grid-column: 1 / -1; margin-top: 0; }
	.kz-footer__item::before { display: none; }
}
@media (max-width: 560px) { .kz-footer__grid { grid-template-columns: 1fr; } .kz-footer__bar { flex-wrap: wrap; } }

/* WordPress core classes */
.alignleft { float: left; margin: 0 24px 16px 0; }
.alignright { float: right; margin: 0 0 16px 24px; }
.aligncenter { margin-left: auto; margin-right: auto; }
.wp-caption-text, figcaption { font-size: 13px; color: var(--kz-grey); }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

/* ==========================================================================
   Reduced motion — everything visible, nothing moves
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .001s !important; animation-iteration-count: 1 !important; transition-duration: .001s !important; transition-delay: 0s !important; }
	.js [data-reveal], .js [data-split] .kz-w > span, .js .kz-footer__word span { opacity: 1 !important; transform: none !important; }
	.js .kz-media[data-media] { clip-path: none !important; }
	.js .kz-media[data-media] > img { transform: none !important; }
	.kz-curtain { display: none !important; }
	.kz-marquee__track { animation: none; }
}
.kz-contact__item:nth-child(2) a { font-size: clamp(18px, 1.55vw, 24px); }
