/* =============================================================================
   Kashi Interior — header and footer

   Ported verbatim from SiteNav.dc.html and SiteFooter.dc.html.

   WHY THE DOUBLED SELECTORS (.k-header.k-header): Elementor puts an
   `.elementor-kit-{id}` class on <body> site-wide, and its Theme Style tab
   writes rules at specificity (0,1,0) that would otherwise beat a bare
   `.k-header a`. The client asked for the header and footer to stay out of
   Elementor's hands, so every property the Theme Style tab can set is
   redeclared here at a specificity Elementor cannot reach — even where the
   declaration merely restates an inherited value.
   ========================================================================== */

/* -----------------------------------------------------------------------------
   HEADER
   -------------------------------------------------------------------------- */

.k-header.k-header {
	display: block;
	padding: 0;
	background: var(--kashi-header-bg);
	backdrop-filter: blur(14px) saturate(140%);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	border-bottom: 1px solid var(--kashi-hairline);
	font-family: var(--kashi-font-body);
	color: var(--kashi-navy);
}

/* Sticky is opt-out via the Customizer. It only works because <html>/<body> use
   overflow-x:clip rather than hidden — see kashi-base.css. */
.k-header--sticky.k-header--sticky {
	position: sticky;
	top: 0;
	z-index: 60;
}

.k-header.k-header .k-header__inner {
	max-width: var(--kashi-max);
	margin-inline: auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px 24px;
	padding: 12px var(--kashi-gut);
}

.k-header.k-header .k-header__brand {
	flex: none;
	display: block;
	line-height: 0;
}

/* mix-blend-mode is LOAD-BEARING: the supplied logo is a JPEG on white, and
   without it the header shows a white box behind the mark. */
.k-header.k-header .k-header__logo {
	height: var(--kashi-logo-h);
	width: auto;
	object-fit: contain;
	mix-blend-mode: multiply;
	display: block;
}

.k-header.k-header .k-header__logo--noblend {
	mix-blend-mode: normal;
}

.k-header.k-header .k-nav {
	display: flex;
	min-width: 0;
}

.k-header.k-header .k-nav__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	min-width: 0;
	gap: 10px clamp(12px, 1.7vw, 30px);
	font-size: clamp(12px, 1vw, 13.5px);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	list-style: none;
	margin: 0;
	padding: 0;
}

.k-header.k-header .k-nav__item {
	margin: 0;
	padding: 0;
}

/* The transparent bottom border is deliberate: the active state only swaps its
   colour, so becoming current never shifts the other six links by 1px. */
.k-header.k-header .k-nav__link {
	color: var(--kashi-navy);
	border-bottom: 1px solid transparent;
	padding-bottom: 3px;
	white-space: nowrap;
	text-decoration: none;
	font-family: var(--kashi-font-body);
	font-weight: 400;
	line-height: 1.2;
	display: block;
}

.k-header.k-header .k-nav__link:hover,
.k-header.k-header .k-nav__link:focus-visible {
	color: var(--kashi-gold);
}

.k-header.k-header .k-nav__item.is-current > .k-nav__link {
	color: var(--kashi-gold);
	border-bottom-color: var(--kashi-gold);
}

.k-header.k-header .k-header__cta {
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--kashi-navy-deep);
	color: #fff;
	font-family: var(--kashi-font-body);
	font-size: clamp(11px, 0.9vw, 12.5px);
	font-weight: 400;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 10px clamp(24px, 2.6vw, 34px);
	border-radius: 999px;
	white-space: nowrap;
	line-height: 1.2;
	transition: background .25s ease, color .25s ease;
}

.k-header.k-header .k-header__cta:hover,
.k-header.k-header .k-header__cta:focus-visible {
	background: var(--kashi-gold);
	color: #fff;
}

/* -----------------------------------------------------------------------------
   HEADER — mobile drawer

   NET-NEW. The design has no mobile treatment at all: its nav simply wraps onto
   extra lines, which at 360px puts seven uppercase links under the logo in four
   rows. Desktop rendering is untouched — the toggle is display:none above the
   breakpoint — so this adds a phone header without altering the design.

   Switch `kashi_mobile_mode` to "Wrap (as designed)" in the Customizer to get
   the source's literal behaviour back.
   -------------------------------------------------------------------------- */

.k-header.k-header .k-header__toggle {
	display: none;
	flex: none;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin-left: auto;
	border: 1px solid var(--kashi-border-quiet);
	border-radius: 999px;
	background: transparent;
	color: var(--kashi-navy);
	cursor: pointer;
	padding: 0;
}

.k-header.k-header .k-header__toggle:hover {
	border-color: var(--kashi-gold);
	color: var(--kashi-gold);
}

.k-header.k-header .k-header__toggle-close {
	display: none;
}

.k-header.k-header .k-header__toggle[aria-expanded="true"] .k-header__toggle-open {
	display: none;
}

.k-header.k-header .k-header__toggle[aria-expanded="true"] .k-header__toggle-close {
	display: inline-flex;
}

.k-header.k-header .k-header__scrim {
	position: fixed;
	inset: 0;
	background: rgba(10, 26, 49, 0.4);
	z-index: 69;
	border: 0;
}

.k-header.k-header .k-header__scrim[hidden] {
	display: none;
}

/*
 * The breakpoint is a container query on the header itself, so it responds to
 * the space the header actually has rather than to the viewport, and the
 * Customizer's breakpoint value can drive it through a custom property.
 * Falls back to a plain width comparison where container queries are missing.
 */
.k-header--drawer.k-header--drawer {
	container-type: inline-size;
	container-name: kashi-header;
}

@container kashi-header (max-width: 991px) {

	.k-header.k-header .k-header__toggle {
		display: inline-flex;
		order: 2;
	}

	.k-header.k-header .k-header__cta {
		order: 3;
	}

	.k-header.k-header .k-nav {
		order: 4;
		flex-basis: 100%;
		display: none;
	}

	.k-header.k-header .k-nav.is-open {
		display: block;
	}

	.k-header.k-header .k-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: 6px 0 14px;
	}

	.k-header.k-header .k-nav__link {
		padding: 13px 2px;
		border-bottom: 1px solid var(--kashi-hairline);
	}

	.k-header.k-header .k-nav__item:last-child .k-nav__link {
		border-bottom-color: transparent;
	}

	.k-header.k-header .k-nav__item.is-current > .k-nav__link {
		border-bottom-color: var(--kashi-gold);
	}
}

/* -----------------------------------------------------------------------------
   FOOTER
   -------------------------------------------------------------------------- */

body[class] .k-footer.k-footer {
	background: var(--kashi-navy-deep);
	color: var(--kashi-on-dark);
	font-family: var(--kashi-font-body);
	font-size: 13px;
	line-height: 1.75;
	letter-spacing: normal;
	text-transform: none;
}

body[class] .k-footer.k-footer .k-footer__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: 38px clamp(20px, 3vw, 44px);
	padding: clamp(40px, 5vw, 58px) var(--kashi-gut) 40px;
	max-width: var(--kashi-max);
	margin: 0 auto;
}

body[class] .k-footer.k-footer .k-footer__col {
	min-width: 0;
}

body[class] .k-footer.k-footer .k-footer__wordmark {
	font-family: var(--kashi-font-h1);
	font-size: 25px;
	font-weight: 400;
	letter-spacing: 0.22em;
	color: #fff;
	line-height: 1.2;
}

body[class] .k-footer.k-footer .k-footer__wordmark-sub {
	font-size: 9.5px;
	letter-spacing: 0.34em;
	color: var(--kashi-gold);
	margin-top: 6px;
}

body[class] .k-footer.k-footer .k-footer__blurb {
	font-size: 13px;
	line-height: 1.75;
	font-weight: 300;
	margin: 20px 0;
	max-width: 240px;
	color: var(--kashi-on-dark);
}

body[class] .k-footer.k-footer .k-footer__socials {
	display: flex;
	gap: 9px;
	flex-wrap: wrap;
}

body[class] .k-footer.k-footer .k-footer__social {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 999px;
	background: var(--kashi-gold);
	color: var(--kashi-navy-deep);
	transition: background .25s ease, color .25s ease;
}

body[class] .k-footer.k-footer .k-footer__social:hover,
body[class] .k-footer.k-footer .k-footer__social:focus-visible {
	background: #fff;
	color: var(--kashi-navy-deep);
}

body[class] .k-footer.k-footer .k-footer__title {
	font-family: var(--kashi-font-body);
	font-size: 12px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	font-weight: 500;
	margin: 0 0 18px;
	line-height: 1.4;
}

body[class] .k-footer.k-footer .k-footer__links {
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 13px;
	font-weight: 300;
}

/*
 * The design's footer links carry an inline colour and NO style-hover, so they
 * genuinely do not change on hover. Reproduced rather than "improved" — the
 * Customizer exposes a hover colour for anyone who wants one.
 */
body[class] .k-footer.k-footer .k-footer__link {
	color: var(--kashi-on-dark);
	text-decoration: none;
	font-size: 13px;
	font-weight: 300;
	line-height: 1.75;
}

body[class] .k-footer.k-footer .k-footer__link:hover {
	color: var(--kashi-on-dark);
}

body[class] .k-footer.k-footer .k-footer__link:focus-visible {
	color: #fff;
}

body[class] .k-footer.k-footer .k-footer__contact {
	display: flex;
	flex-direction: column;
	gap: 14px;
	font-size: 13px;
	font-weight: 300;
}

body[class] .k-footer.k-footer .k-footer__contact-row {
	display: flex;
	align-items: center;
	gap: 10px;
}

body[class] .k-footer.k-footer .k-footer__contact-row .kashi-icon {
	color: var(--kashi-gold);
	flex: none;
}

/* The address is the one row that top-aligns, because it wraps to two lines. */
body[class] .k-footer.k-footer .k-footer__contact-row--address {
	align-items: flex-start;
}

body[class] .k-footer.k-footer .k-footer__contact-row--address .kashi-icon {
	margin-top: 2px;
}

body[class] .k-footer.k-footer .k-footer__contact a {
	color: var(--kashi-on-dark);
	text-decoration: none;
}

body[class] .k-footer.k-footer .k-footer__contact a:hover {
	color: #fff;
}

body[class] .k-footer.k-footer .k-footer__newsletter-copy {
	font-size: 13px;
	line-height: 1.7;
	font-weight: 300;
	margin: 0 0 16px;
	color: var(--kashi-on-dark);
}

body[class] .k-footer.k-footer .k-footer__bar {
	border-top: 1px solid var(--kashi-on-dark-rule);
}

body[class] .k-footer.k-footer .k-footer__bar-inner {
	max-width: var(--kashi-max);
	margin: 0 auto;
	padding: 16px var(--kashi-gut);
	display: flex;
	flex-wrap: wrap;
	gap: 10px 26px;
	align-items: center;
	justify-content: space-between;
	font-size: 12px;
	font-weight: 300;
	color: var(--kashi-on-dark-faint);
}

body[class] .k-footer.k-footer .k-footer__legal {
	display: flex;
	gap: 26px;
	flex-wrap: wrap;
}

body[class] .k-footer.k-footer .k-footer__legal .k-footer__link {
	color: var(--kashi-on-dark-faint);
	font-size: 12px;
}

body[class] .k-footer.k-footer .k-footer__legal .k-footer__link:hover {
	color: var(--kashi-on-dark-faint);
}
