/*
 * Kivo — main stylesheet.
 *
 * Design tokens are injected as :root custom properties by inc/design-tokens.php
 * immediately before this file, so everything here reads var(--kivo-*).
 *
 * Layout rules are written mobile-first and use grid/flex only — no framework,
 * no float clearing, and every media-bearing box carries an explicit
 * aspect-ratio so images cannot shift layout while loading (CLS).
 */

/* ---------- reset ---------- */

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	background: var(--kivo-color-white);
	color: var(--kivo-color-ink);
	font-family: var(--kivo-font-body);
	font-size: var(--kivo-text-body-size);
	font-weight: var(--kivo-text-weight-body);
	line-height: var(--kivo-text-body-leading);
	-webkit-font-smoothing: antialiased;
}

img,
picture,
svg,
video {
	display: block;
	max-width: 100%;
	height: auto;
}

a { color: var(--kivo-color-primary); text-decoration: none; }
a:hover { color: var(--kivo-color-primary-dark); }

button,
input,
select,
textarea { font: inherit; color: inherit; }

h1, h2, h3, h4, h5, h6 {
	margin: 0 0 0.5em;
	font-family: var(--kivo-font-heading);
	font-weight: var(--kivo-text-weight-heading);
	color: var(--kivo-color-ink);
}

h1 { font-size: var(--kivo-text-h1-size); line-height: var(--kivo-text-h1-leading); letter-spacing: var(--kivo-text-h1-tracking); }
h2 { font-size: var(--kivo-text-h2-size); line-height: var(--kivo-text-h2-leading); letter-spacing: var(--kivo-text-h2-tracking); }
h3 { font-size: var(--kivo-text-h3-size); line-height: var(--kivo-text-h3-leading); letter-spacing: var(--kivo-text-h3-tracking); }
h4, h5, h6 { font-size: var(--kivo-text-h4-size); line-height: var(--kivo-text-h4-leading); }

/*
 * The kit stores a mobile override only for Heading 1 (68/68 -> 48/48). The
 * others are small enough at their desktop size to hold up on a phone.
 */
@media (max-width: 767px) {
	h1 { font-size: 48px; line-height: 48px; }
}

/* ---------- layout ---------- */

.kivo-container {
	width: 100%;
	max-width: var(--kivo-layout-container);
	margin-inline: auto;
	padding-inline: var(--kivo-layout-gutter);
}

.kivo-section { padding-block: 48px; }

.kivo-skip {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	padding: 12px 20px;
	background: var(--kivo-color-primary);
	color: var(--kivo-color-white);
	border-radius: 0 0 var(--kivo-layout-radius) 0;
}
.kivo-skip:focus { left: 0; }

/* ---------- header ---------- */

.kivo-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: var(--kivo-color-white);
	border-bottom: 1px solid var(--kivo-color-border);
}

.kivo-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	/*
	 * A fixed header height keeps the sticky bar from resizing once the logo
	 * image decodes, which would otherwise push the whole page down (CLS).
	 */
	min-height: 72px;
}

.kivo-logo__img { max-height: 40px; width: auto; }

.kivo-logo--text {
	font-family: var(--kivo-font-heading);
	font-weight: var(--kivo-text-weight-heading);
	font-size: 24px;
	letter-spacing: -1px;
	color: var(--kivo-color-ink);
}

.kivo-nav__list,
.kivo-footer__list {
	display: flex;
	gap: 28px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.kivo-nav__list a {
	color: var(--kivo-color-ink);
	font-weight: var(--kivo-text-weight-label);
	transition: color var(--kivo-layout-transition);
}
.kivo-nav__list a:hover,
.kivo-nav__list .current-menu-item > a { color: var(--kivo-color-primary); }

/* Mobile menu — driven by a checkbox so it works before JS parses. */
.kivo-burger { display: none; cursor: pointer; padding: 8px; }
.kivo-burger span {
	display: block;
	width: 22px;
	height: 2px;
	margin: 4px 0;
	background: var(--kivo-color-ink);
	transition: transform var(--kivo-layout-transition), opacity var(--kivo-layout-transition);
}

@media (max-width: 900px) {
	.kivo-burger { display: block; }

	.kivo-nav {
		position: absolute;
		inset: 72px 0 auto;
		background: var(--kivo-color-white);
		border-bottom: 1px solid var(--kivo-color-border);
		/*
		 * Collapsed with grid-template-rows rather than display:none so the
		 * open/close can animate without scripting.
		 */
		/*
		 * A max-height collapse rather than the grid-rows trick. The panel holds
		 * two children (menu + account cluster) with their own padding, and
		 * `grid-template-rows: 0fr` collapsed only the first row while the
		 * second kept its padding — leaving Log In bleeding through under the
		 * header. Clipping the container itself cannot be defeated that way.
		 */
		display: block;
		max-height: 0;
		overflow: hidden;
		visibility: hidden;
		transition: max-height var(--kivo-layout-transition), visibility var(--kivo-layout-transition);
	}

	.kivo-nav-toggle:checked ~ .kivo-nav {
		max-height: 85vh;
		overflow-y: auto;
		visibility: visible;
	}

	.kivo-nav__list {
		flex-direction: column;
		gap: 0;
		padding: 8px var(--kivo-layout-gutter) 16px;
	}
	.kivo-nav__list li { padding: 10px 0; border-bottom: 1px solid var(--kivo-color-surface); }
}

/* ---------- cards ---------- */

.kivo-posts {
	display: grid;
	gap: 24px;
	grid-template-columns: 1fr;
}

@media (min-width: 640px) { .kivo-posts { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .kivo-posts { grid-template-columns: repeat(3, 1fr); } }

.kivo-post-card {
	background: var(--kivo-color-surface-raised);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius-lg);
	overflow: hidden;
	box-shadow: var(--kivo-shadow-card);
	transition: box-shadow var(--kivo-layout-transition), transform var(--kivo-layout-transition);
}
.kivo-post-card:hover { box-shadow: var(--kivo-shadow-raise); }

/*
 * Reserving the 4:3 box means the card is its final size before the photo
 * arrives, so a grid of loading cards never reflows.
 */
.kivo-post-card__media { display: block; aspect-ratio: 4 / 3; background: var(--kivo-color-surface); }
.kivo-post-card__media img { width: 100%; height: 100%; object-fit: cover; }

.kivo-post-card__body { padding: 16px 20px 20px; }
.kivo-post-card__title { font-size: var(--kivo-text-h3-size); line-height: 1.2; margin-bottom: 8px; }
.kivo-post-card__title a { color: var(--kivo-color-ink); }
.kivo-post-card__title a:hover { color: var(--kivo-color-primary); }
.kivo-post-card__excerpt { margin: 0; color: var(--kivo-color-muted); font-size: var(--kivo-text-small-size); line-height: var(--kivo-text-small-leading); }

.kivo-page-title { margin-bottom: 32px; }

/* ---------- footer ---------- */

.kivo-footer {
	margin-top: 64px;
	background: var(--kivo-color-section);
	border-top: 1px solid var(--kivo-color-border);
	padding-top: 48px;
}

.kivo-footer__inner {
	display: grid;
	gap: 32px;
	grid-template-columns: 1fr;
}

@media (min-width: 768px) {
	.kivo-footer__inner { grid-template-columns: 2fr 1fr 1fr; }
}

.kivo-footer__list { flex-direction: column; gap: 12px; }
.kivo-footer__list a { color: var(--kivo-color-muted); font-size: var(--kivo-text-small-size); }
.kivo-footer__list a:hover { color: var(--kivo-color-primary); }

.kivo-footer__bar {
	margin-top: 40px;
	padding-block: 20px;
	border-top: 1px solid var(--kivo-color-border);
}
.kivo-footer__copy { margin: 0; color: var(--kivo-color-muted); font-size: var(--kivo-text-small-size); }

/* ---------- motion ---------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------- buttons, fields, notices ---------- */

.kivo-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 12px 22px;
	border: 1px solid transparent;
	border-radius: var(--kivo-layout-radius);
	font-family: var(--kivo-font-heading);
	font-weight: var(--kivo-text-weight-bold);
	font-size: var(--kivo-text-small-size);
	line-height: 1.2;
	cursor: pointer;
	text-align: center;
	transition: background var(--kivo-layout-transition), color var(--kivo-layout-transition);
}

.kivo-btn--primary { background: var(--kivo-color-primary); color: var(--kivo-color-white); }
.kivo-btn--primary:hover { background: var(--kivo-color-primary-dark); color: var(--kivo-color-white); }
.kivo-btn--accent { background: var(--kivo-color-accent); color: var(--kivo-color-white); }
.kivo-btn--accent:hover { background: var(--kivo-color-accent-dark); color: var(--kivo-color-white); }
.kivo-btn--ghost { background: transparent; border-color: var(--kivo-color-border); color: var(--kivo-color-ink); }
.kivo-btn--ghost:hover { background: var(--kivo-color-surface); }
.kivo-btn--danger { background: transparent; border-color: var(--kivo-color-border); color: var(--kivo-color-danger); }
.kivo-btn--danger:hover { background: var(--kivo-color-danger); color: var(--kivo-color-white); }

.kivo-field { display: flex; flex-direction: column; gap: 6px; margin: 0 0 16px; }
.kivo-field label,
.kivo-fieldset legend {
	font-size: var(--kivo-text-small-size);
	font-weight: var(--kivo-text-weight-label);
	color: var(--kivo-color-ink);
}
.kivo-field__hint { font-size: 13px; color: var(--kivo-color-muted); }

.kivo-field input,
.kivo-field select,
.kivo-field textarea,
.kivo-search select,
.kivo-search input {
	width: 100%;
	padding: 11px 14px;
	background: var(--kivo-color-white);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius);
	font-size: var(--kivo-text-small-size);
}
.kivo-field input:focus-visible,
.kivo-field select:focus-visible,
.kivo-field textarea:focus-visible {
	outline: 2px solid var(--kivo-color-primary);
	outline-offset: 1px;
}

.kivo-fieldset {
	margin: 0 0 20px;
	padding: 16px;
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius);
}

.kivo-check { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: var(--kivo-text-small-size); }
.kivo-check input { width: auto; }

/* The honeypot must be unreachable, not merely invisible. */
.kivo-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.kivo-notice {
	margin: 0 0 24px;
	padding: 12px 16px;
	border-radius: var(--kivo-layout-radius);
	font-size: var(--kivo-text-small-size);
}
.kivo-notice--success { background: rgba(46,158,91,0.10); color: var(--kivo-color-success); }
.kivo-notice--error { background: rgba(207,46,46,0.08); color: var(--kivo-color-danger); }

.kivo-empty { padding: 32px; background: var(--kivo-color-surface); border-radius: var(--kivo-layout-radius); color: var(--kivo-color-muted); }

.kivo-panel {
	margin-bottom: 32px;
	padding: 24px;
	background: var(--kivo-color-surface-raised);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius-lg);
}

.kivo-h2 { font-size: var(--kivo-text-h2-size); line-height: var(--kivo-text-h2-leading); letter-spacing: var(--kivo-text-h2-tracking); }
.kivo-h3 { font-size: var(--kivo-text-h3-size); line-height: var(--kivo-text-h3-leading); letter-spacing: var(--kivo-text-h3-tracking); }
.kivo-h4 { font-size: var(--kivo-text-h4-size); }
.kivo-lede { color: var(--kivo-color-muted); }
.kivo-container--narrow { max-width: 900px; }
.kivo-section--alt { background: var(--kivo-color-section); }

/* ---------- hero + search ---------- */

.kivo-hero {
	/*
	 * A gradient rather than a photograph. The LCP element is then the heading
	 * text, which paints on the first frame instead of waiting on a download.
	 */
	background: linear-gradient(160deg, var(--kivo-color-section) 0%, var(--kivo-color-surface) 100%);
	border-bottom: 1px solid var(--kivo-color-border);
	padding-block: 56px 48px;
}
.kivo-hero__title { margin-bottom: 12px; }
.kivo-hero__lead { margin: 0 0 28px; color: var(--kivo-color-muted); font-size: 18px; }

.kivo-search {
	display: grid;
	gap: 12px 16px;
	align-items: end;
}
.kivo-search--hero {
	grid-template-columns: 1fr;
	padding: 20px;
	background: var(--kivo-color-white);
	border-radius: var(--kivo-layout-radius-lg);
	box-shadow: var(--kivo-shadow-card);
}
@media (min-width: 860px) {
	.kivo-search--hero { grid-template-columns: 2fr 1fr 1fr 1fr auto; }
	.kivo-search--hero .kivo-search__range { grid-column: span 4; }
}
.kivo-search__field { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.kivo-search__field label { font-size: 13px; font-weight: var(--kivo-text-weight-label); color: var(--kivo-color-muted); }
.kivo-search__range { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.kivo-search__features { border: 0; padding: 0; margin: 0 0 12px; }

/* ---------- tiles ---------- */

.kivo-tiles { display: grid; gap: 16px; margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.kivo-tile {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 20px;
	background: var(--kivo-color-surface);
	border-radius: var(--kivo-layout-radius);
	transition: background var(--kivo-layout-transition);
}
.kivo-tile:hover { background: var(--kivo-color-border); }
.kivo-tile__name { font-family: var(--kivo-font-heading); font-weight: var(--kivo-text-weight-bold); color: var(--kivo-color-ink); }
.kivo-tile__count { font-size: 13px; color: var(--kivo-color-muted); }

/* ---------- listing grid + card ---------- */

.kivo-grid { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .kivo-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .kivo-grid { grid-template-columns: repeat(3, 1fr); } }

.kivo-card {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--kivo-color-surface-raised);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius-lg);
	overflow: hidden;
	box-shadow: var(--kivo-shadow-card);
	transition: box-shadow var(--kivo-layout-transition);
}
.kivo-card:hover { box-shadow: var(--kivo-shadow-raise); }
.kivo-card--featured { border-color: var(--kivo-color-accent); }

/* The 4:3 box is reserved up front so a loading grid never reflows. */
.kivo-card__media { position: relative; display: block; aspect-ratio: 4 / 3; background: var(--kivo-color-surface); }
.kivo-card__img { width: 100%; height: 100%; object-fit: cover; }
.kivo-card__img--empty { display: block; width: 100%; height: 100%; background: var(--kivo-color-surface); }

.kivo-badge {
	position: absolute;
	top: 12px;
	left: 12px;
	padding: 5px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: var(--kivo-text-weight-bold);
	color: var(--kivo-color-white);
}
.kivo-badge--featured { background: var(--kivo-color-accent); }
.kivo-badge--closed { background: var(--kivo-color-danger); left: auto; right: 12px; }

.kivo-card__body { display: flex; flex-direction: column; gap: 6px; padding: 16px 20px 20px; }
.kivo-card__price { margin: 0; font-family: var(--kivo-font-heading); font-weight: var(--kivo-text-weight-heading); font-size: 20px; color: var(--kivo-color-accent-dark); }
.kivo-card__title { margin: 0; font-size: 18px; line-height: 1.3; letter-spacing: -0.5px; }
.kivo-card__title a { color: var(--kivo-color-ink); }
.kivo-card__title a:hover { color: var(--kivo-color-primary); }
.kivo-card__address { margin: 0; font-size: 13px; color: var(--kivo-color-muted); }
.kivo-card__specs { display: flex; flex-wrap: wrap; gap: 14px; margin: 6px 0 0; padding: 0; list-style: none; font-size: 13px; color: var(--kivo-color-muted); }

/* ---------- archive ---------- */

.kivo-archive__head { padding-block: 32px 8px; }
.kivo-archive__layout { display: grid; gap: 32px; grid-template-columns: 1fr; padding-bottom: 48px; }
@media (min-width: 960px) { .kivo-archive__layout { grid-template-columns: 300px 1fr; } }

.kivo-archive__filters {
	align-self: start;
	padding: 20px;
	background: var(--kivo-color-surface-raised);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius-lg);
}
@media (min-width: 960px) { .kivo-archive__filters { position: sticky; top: 88px; } }

.kivo-results__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 20px; }
.kivo-results__count { margin: 0; color: var(--kivo-color-muted); font-size: var(--kivo-text-small-size); }
.kivo-results__sort { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.kivo-results__sort select { padding: 8px 12px; border: 1px solid var(--kivo-color-border); border-radius: var(--kivo-layout-radius); }

.pagination, .nav-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 32px; }
.page-numbers {
	display: inline-flex;
	min-width: 40px;
	padding: 9px 12px;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius);
	color: var(--kivo-color-ink);
}
.page-numbers.current { background: var(--kivo-color-primary); border-color: var(--kivo-color-primary); color: var(--kivo-color-white); }

/* ---------- single listing ---------- */

.kivo-single__head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 16px; padding-block: 32px 20px; }
.kivo-single__title { margin: 0 0 6px; font-size: var(--kivo-text-h2-size); line-height: var(--kivo-text-h2-leading); }
.kivo-single__address { margin: 0; color: var(--kivo-color-muted); }
.kivo-single__price { margin: 0; font-family: var(--kivo-font-heading); font-weight: var(--kivo-text-weight-heading); font-size: 32px; color: var(--kivo-color-accent-dark); }

.kivo-gallery { margin-bottom: 32px; }
.kivo-gallery__strip {
	/*
	 * Scroll-snap instead of a JS carousel: swipeable, keyboard-scrollable,
	 * works with scripting off, and costs nothing on Total Blocking Time.
	 */
	display: flex;
	gap: 8px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	border-radius: var(--kivo-layout-radius-lg);
}
.kivo-gallery__slide { flex: 0 0 100%; margin: 0; scroll-snap-align: center; aspect-ratio: 3 / 2; background: var(--kivo-color-surface); }
.kivo-gallery__img { width: 100%; height: 100%; object-fit: cover; }
.kivo-gallery__thumbs { display: flex; gap: 8px; overflow-x: auto; margin-top: 8px; }
.kivo-gallery__thumb { flex: 0 0 auto; width: 92px; aspect-ratio: 4 / 3; border-radius: var(--kivo-layout-radius); overflow: hidden; }
.kivo-gallery__thumb img { width: 100%; height: 100%; object-fit: cover; }

.kivo-single__layout { display: grid; gap: 32px; grid-template-columns: 1fr; }
@media (min-width: 960px) { .kivo-single__layout { grid-template-columns: 1fr 340px; } }

.kivo-single__aside { align-self: start; }
@media (min-width: 960px) { .kivo-single__aside { position: sticky; top: 88px; } }

.kivo-specs { display: grid; gap: 0; margin: 0; }
.kivo-specs__row { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--kivo-color-border); }
.kivo-specs__row:last-child { border-bottom: 0; }
.kivo-specs dt { color: var(--kivo-color-muted); font-size: var(--kivo-text-small-size); }
.kivo-specs dd { margin: 0; font-weight: var(--kivo-text-weight-bold); }

.kivo-features { display: grid; gap: 8px 20px; margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); font-size: var(--kivo-text-small-size); }
.kivo-features li::before { content: "✓"; margin-right: 8px; color: var(--kivo-color-success); }

/* The facade holds the map's final size, so loading it shifts nothing. */
.kivo-map { display: grid; place-items: center; aspect-ratio: 16 / 9; background: var(--kivo-color-surface); border-radius: var(--kivo-layout-radius); overflow: hidden; }
.kivo-map__frame { width: 100%; height: 100%; border: 0; }

.kivo-contact { padding: 24px; background: var(--kivo-color-surface-raised); border: 1px solid var(--kivo-color-border); border-radius: var(--kivo-layout-radius-lg); }
.kivo-contact__agent { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.kivo-contact__avatar { border-radius: 50%; }
.kivo-contact__name { margin: 0; font-weight: var(--kivo-text-weight-bold); }
.kivo-contact__role { margin: 0; font-size: 13px; color: var(--kivo-color-muted); }
.kivo-contact .kivo-btn,
.kivo-contact .kivo-fav { width: 100%; margin-bottom: 10px; }
.kivo-contact__form { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--kivo-color-border); }

.kivo-fav {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 12px 22px;
	background: transparent;
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius);
	font-weight: var(--kivo-text-weight-bold);
	font-size: var(--kivo-text-small-size);
	cursor: pointer;
}
.kivo-fav .kivo-fav__on { display: none; }
.kivo-fav.is-active { border-color: var(--kivo-color-accent); color: var(--kivo-color-accent-dark); }
.kivo-fav.is-active .kivo-fav__on { display: inline; }
.kivo-fav.is-active .kivo-fav__off { display: none; }

.kivo-related { padding-block: 16px 56px; }

/* ---------- dashboard ---------- */

.kivo-dashboard__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 12px; padding-block: 32px 16px; }
.kivo-dashboard__who { margin: 0; color: var(--kivo-color-muted); font-size: var(--kivo-text-small-size); }
.kivo-dashboard__layout { display: grid; gap: 32px; grid-template-columns: 1fr; padding-bottom: 56px; }
@media (min-width: 900px) { .kivo-dashboard__layout { grid-template-columns: 220px 1fr; } }

.kivo-dashboard__nav ul { margin: 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 4px; }
@media (min-width: 900px) { .kivo-dashboard__nav ul { flex-direction: column; } }
.kivo-dashboard__nav a { display: block; padding: 10px 14px; border-radius: var(--kivo-layout-radius); color: var(--kivo-color-ink); font-size: var(--kivo-text-small-size); font-weight: var(--kivo-text-weight-label); }
.kivo-dashboard__nav a:hover { background: var(--kivo-color-surface); }
.kivo-dashboard__nav a[aria-current="page"] { background: var(--kivo-color-primary); color: var(--kivo-color-white); }

.kivo-stats { display: grid; gap: 16px; margin: 0 0 28px; padding: 0; list-style: none; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.kivo-stat a { display: block; padding: 20px; background: var(--kivo-color-surface); border-radius: var(--kivo-layout-radius); color: var(--kivo-color-ink); }
.kivo-stat__value { display: block; font-family: var(--kivo-font-heading); font-weight: var(--kivo-text-weight-heading); font-size: 32px; line-height: 1.1; }
.kivo-stat__label { font-size: 13px; color: var(--kivo-color-muted); }

/* Wide tables must scroll inside their own box, not the page. */
.kivo-table { width: 100%; border-collapse: collapse; display: block; overflow-x: auto; }
.kivo-table th, .kivo-table td { padding: 12px 10px; text-align: left; border-bottom: 1px solid var(--kivo-color-border); font-size: var(--kivo-text-small-size); vertical-align: middle; }
.kivo-table th { color: var(--kivo-color-muted); font-weight: var(--kivo-text-weight-label); }
.kivo-table__meta { display: block; color: var(--kivo-color-muted); font-size: 13px; }
.kivo-table__actions { display: flex; gap: 8px; align-items: center; }
.kivo-table__actions form { margin: 0; }

.kivo-form__grid { display: grid; gap: 0 16px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }

.kivo-plans { display: grid; gap: 20px; margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.kivo-plan { display: flex; flex-direction: column; gap: 10px; padding: 24px; background: var(--kivo-color-surface-raised); border: 1px solid var(--kivo-color-border); border-radius: var(--kivo-layout-radius-lg); }
.kivo-plan__name { margin: 0; font-size: 20px; }
.kivo-plan__price { margin: 0; font-family: var(--kivo-font-heading); font-weight: var(--kivo-text-weight-heading); font-size: 28px; color: var(--kivo-color-accent-dark); }
.kivo-plan__terms { margin: 0; padding: 0 0 8px; list-style: none; font-size: var(--kivo-text-small-size); color: var(--kivo-color-muted); }
.kivo-plan .kivo-btn { margin-top: auto; }

.kivo-auth__panels { display: grid; gap: 24px; padding-block: 32px 56px; grid-template-columns: 1fr; }
@media (min-width: 800px) { .kivo-auth__panels { grid-template-columns: 1fr 1fr; } }
.kivo-reset { margin-top: 12px; font-size: var(--kivo-text-small-size); }
.kivo-reset summary { cursor: pointer; color: var(--kivo-color-primary); }

.kivo-prose img { border-radius: var(--kivo-layout-radius); }
.kivo-postlist__item { padding-block: 20px; border-bottom: 1px solid var(--kivo-color-border); }

.kivo-results__save { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; width: 100%; padding: 12px; margin-bottom: 8px; background: var(--kivo-color-surface); border-radius: var(--kivo-layout-radius); font-size: 13px; }
.kivo-results__save input[type="text"] { flex: 1 1 160px; padding: 8px 12px; border: 1px solid var(--kivo-color-border); border-radius: var(--kivo-layout-radius); }
.kivo-results__save .kivo-check { margin: 0; }

.screen-reader-text {
	position: absolute;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ---------- pages, posts, prose ---------- */

.kivo-page__head { margin-bottom: 24px; }
.kivo-page__media { margin: 0 0 28px; border-radius: var(--kivo-layout-radius-lg); overflow: hidden; aspect-ratio: 16 / 9; background: var(--kivo-color-surface); }
.kivo-page__media img { width: 100%; height: 100%; object-fit: cover; }

/*
 * A readable measure for body copy. Commerce pages opt out via --wide, because
 * Woo renders its own two-column checkout that a prose measure would squash.
 */
.kivo-prose { max-width: 72ch; }
.kivo-prose--wide { max-width: none; }
.kivo-prose > * + * { margin-top: 1.1em; }
.kivo-prose h2 { margin-top: 1.6em; font-size: var(--kivo-text-h3-size); line-height: var(--kivo-text-h3-leading); }
.kivo-prose h3 { margin-top: 1.4em; font-size: 20px; }
.kivo-prose ul, .kivo-prose ol { padding-left: 1.3em; }
.kivo-prose li + li { margin-top: 0.4em; }
.kivo-prose blockquote {
	margin: 1.4em 0;
	padding: 4px 0 4px 20px;
	border-left: 3px solid var(--kivo-color-accent);
	color: var(--kivo-color-muted);
}
.kivo-prose code { padding: 2px 6px; background: var(--kivo-color-surface); border-radius: 4px; font-size: 0.9em; }
.kivo-prose pre { padding: 16px; background: var(--kivo-color-surface); border-radius: var(--kivo-layout-radius); overflow-x: auto; }
.kivo-prose table { width: 100%; border-collapse: collapse; display: block; overflow-x: auto; }
.kivo-prose th, .kivo-prose td { padding: 10px; border-bottom: 1px solid var(--kivo-color-border); text-align: left; }

.kivo-post__meta { margin: 0; color: var(--kivo-color-muted); font-size: var(--kivo-text-small-size); }
.kivo-post__tags { margin-top: 28px; font-size: 13px; }
.kivo-post__tags a { display: inline-block; padding: 4px 10px; margin: 0 6px 6px 0; background: var(--kivo-color-surface); border-radius: 999px; color: var(--kivo-color-muted); }

.kivo-post__nav { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--kivo-color-border); font-size: var(--kivo-text-small-size); }
.kivo-page__links { margin-top: 24px; display: flex; gap: 8px; }

.kivo-404 { text-align: left; }
.kivo-404 .kivo-search { margin-top: 24px; }

/* ---------- comments ---------- */

.kivo-comments { margin-top: 48px; padding-top: 32px; border-top: 1px solid var(--kivo-color-border); }
.kivo-comments__list { margin: 0 0 32px; padding: 0; list-style: none; }
.kivo-comments__list ol { list-style: none; padding-left: 24px; }
.kivo-comments__list .comment-body { padding: 16px 0; border-bottom: 1px solid var(--kivo-color-border); }
.kivo-comments__list .comment-meta { font-size: 13px; color: var(--kivo-color-muted); }
.kivo-comments__list .avatar { border-radius: 50%; margin-right: 8px; vertical-align: middle; }
.comment-form p { display: flex; flex-direction: column; gap: 6px; margin: 0 0 16px; }
.comment-form label { font-size: var(--kivo-text-small-size); font-weight: var(--kivo-text-weight-label); }
.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"],
.comment-form textarea {
	width: 100%;
	padding: 11px 14px;
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius);
}
.comment-form .form-submit { flex-direction: row; }

/* ---------- contact + newsletter ---------- */

.kivo-contact-form { max-width: 640px; }

.kivo-newsletter { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.kivo-newsletter input[type="email"] {
	flex: 1 1 220px;
	padding: 12px 14px;
	background: var(--kivo-color-white);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius);
}
.kivo-newsletter .kivo-notice { flex: 1 0 100%; margin-bottom: 4px; }

/* ---------- header account cluster ---------- */

/*
 * Desktop only. This rule lives after the mobile collapse further up the file,
 * so declaring `display: flex` unscoped overrode the `display: grid` /
 * `grid-template-rows: 0fr` that keeps the panel shut — the menu then sat
 * permanently open on phones, covering the page.
 */
@media (min-width: 901px) {
	.kivo-nav { display: flex; align-items: center; gap: 28px; margin-left: auto; }
}
.kivo-account { display: flex; align-items: center; gap: 18px; }
.kivo-account__link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--kivo-color-ink);
	font-size: var(--kivo-text-small-size);
	font-weight: var(--kivo-text-weight-label);
	white-space: nowrap;
}
.kivo-account__link:hover { color: var(--kivo-color-primary); }
/* The hairline between Log In and Register on the live header. */
.kivo-account__link--divided { padding-left: 18px; border-left: 1px solid var(--kivo-color-border); }
.kivo-account__cta { padding: 11px 20px; border-radius: var(--kivo-layout-radius); }
.kivo-icon { flex: none; }

@media (max-width: 900px) {
	.kivo-nav { margin-left: 0; }
	.kivo-account {
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
		padding: 0 var(--kivo-layout-gutter) 20px;
	}
	.kivo-account__link--divided { padding-left: 0; border-left: 0; }
}

/* ---------- hero ---------- */

.kivo-hero {
	position: relative;
	overflow: hidden;
	background: linear-gradient(160deg, var(--kivo-color-section) 0%, var(--kivo-color-surface) 100%);
	border-bottom: 1px solid var(--kivo-color-border);
	padding-block: 40px 48px;
}
.kivo-hero__inner { display: grid; gap: 32px; grid-template-columns: 1fr; align-items: center; }
@media (min-width: 1000px) {
	.kivo-hero { padding-block: 24px 56px; }
	.kivo-hero__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 520px); gap: 40px; }
	/* The collage is decorative, so the copy leads on narrow screens. */
	.kivo-hero__copy { order: 1; }
	.kivo-collage { order: 2; }
}

.kivo-hero__title { margin: 0 0 28px; }
@media (min-width: 1000px) { .kivo-hero__title { font-size: 60px; line-height: 1.06; } }

.kivo-hero__popular { margin: 16px 0 0; font-size: 13px; color: var(--kivo-color-muted); }
.kivo-hero__popular span { font-weight: var(--kivo-text-weight-label); }
.kivo-hero__popular a { color: var(--kivo-color-ink); }
.kivo-hero__popular a:hover { color: var(--kivo-color-primary); }

/* Rotated photo collage. Decorative; hidden on small screens where it would
   push the search below the fold. */
.kivo-collage { position: relative; display: none; aspect-ratio: 1 / 1; }
@media (min-width: 1000px) { .kivo-collage { display: block; } }

.kivo-collage__tile {
	position: absolute;
	overflow: hidden;
	/* The rhombus is a 45deg rotation with the image counter-rotated back. */
	transform: rotate(45deg);
	border-radius: 18px;
	box-shadow: var(--kivo-shadow-raise);
}
.kivo-collage__tile img { width: 100%; height: 100%; object-fit: cover; transform: rotate(-45deg) scale(1.42); }

.kivo-collage__tile--main   { width: 46%; height: 46%; top: 12%; right: 8%; }
.kivo-collage__tile--top    { width: 30%; height: 30%; top: 2%;  right: 40%; }
.kivo-collage__tile--bottom { width: 32%; height: 32%; top: 46%; right: 34%; }

/* ---------- hero tabs + pill search ---------- */

.kivo-tabs { display: flex; gap: 6px; }
.kivo-tab { position: relative; }
/* Visually hidden but still focusable, so the tabs work by keyboard. */
.kivo-tab input {
	position: absolute;
	opacity: 0;
	width: 1px; height: 1px;
	margin: 0;
}
.kivo-tab span {
	display: block;
	padding: 12px 22px;
	background: rgba(255,255,255,0.55);
	border-radius: var(--kivo-layout-radius) var(--kivo-layout-radius) 0 0;
	font-size: var(--kivo-text-small-size);
	font-weight: var(--kivo-text-weight-label);
	color: var(--kivo-color-muted);
	cursor: pointer;
}
.kivo-tab input:checked + span { background: var(--kivo-color-white); color: var(--kivo-color-ink); }
.kivo-tab input:focus-visible + span { outline: 2px solid var(--kivo-color-primary); outline-offset: 2px; }

.kivo-search--hero {
	display: grid;
	gap: 8px 12px;
	align-items: center;
	padding: 12px;
	background: var(--kivo-color-white);
	border-radius: var(--kivo-layout-radius-lg);
	box-shadow: var(--kivo-shadow-card);
}
.kivo-search--hero .kivo-tabs { grid-column: 1 / -1; margin: -12px -12px 0; padding: 0 12px; }
@media (min-width: 700px) {
	.kivo-search--hero { grid-template-columns: 1fr 1fr 1fr auto; border-radius: 999px; padding: 10px 10px 10px 20px; }
	.kivo-search--hero .kivo-tabs { margin: 0 0 4px; padding: 0; }
}
.kivo-search--hero .kivo-search__field { gap: 2px; }
.kivo-search--hero .kivo-search__field label { font-size: 12px; }
.kivo-search--hero select {
	border: 0;
	padding: 4px 0;
	background: transparent;
	font-weight: var(--kivo-text-weight-label);
}
@media (min-width: 700px) {
	/* Hairline separators between the pill's fields. */
	.kivo-search--hero .kivo-search__field + .kivo-search__field { padding-left: 20px; border-left: 1px solid var(--kivo-color-border); }
}

.kivo-search__go {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 52px; height: 52px;
	border: 0;
	border-radius: 50%;
	background: var(--kivo-color-primary);
	color: var(--kivo-color-white);
	cursor: pointer;
	justify-self: end;
	transition: background var(--kivo-layout-transition);
}
.kivo-search__go:hover { background: var(--kivo-color-primary-dark); }

/* ---------- section eyebrow ---------- */

.kivo-eyebrow {
	margin: 0 0 6px;
	color: var(--kivo-color-accent);
	font-family: var(--kivo-font-heading);
	font-weight: var(--kivo-text-weight-bold);
	font-size: var(--kivo-text-small-size);
	letter-spacing: 0.02em;
}

/* ---------- popular places ---------- */

.kivo-places {
	display: grid;
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.kivo-place {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 24px 16px;
	background: var(--kivo-color-white);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius-lg);
	text-align: center;
	transition: box-shadow var(--kivo-layout-transition), transform var(--kivo-layout-transition);
}
.kivo-place:hover { box-shadow: var(--kivo-shadow-raise); transform: translateY(-2px); }
/* Fixed box so an SVG emblem of any intrinsic size cannot shift the grid. */
.kivo-place__emblem { display: grid; place-items: center; width: 64px; height: 64px; }
.kivo-place__emblem img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }
.kivo-place__name { font-family: var(--kivo-font-heading); font-weight: var(--kivo-text-weight-bold); color: var(--kivo-color-ink); }
.kivo-place__count { font-size: 12px; color: var(--kivo-color-muted); }

/* ---------- dropdown submenus ---------- */

/*
 * Without this the "Pages" children render as a permanently open list and push
 * the header apart. Collapsed by default, opened on hover and — importantly —
 * on keyboard focus anywhere inside, so the menu is not mouse-only.
 */
.kivo-nav__list { position: relative; }
.kivo-nav__list li { position: relative; }

.kivo-nav__list .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 60;
	min-width: 200px;
	margin: 0;
	padding: 8px 0;
	list-style: none;
	background: var(--kivo-color-white);
	border: 1px solid var(--kivo-color-border);
	border-radius: var(--kivo-layout-radius);
	box-shadow: var(--kivo-shadow-raise);
	opacity: 0;
	visibility: hidden;
	transform: translateY(4px);
	transition: opacity var(--kivo-layout-transition), transform var(--kivo-layout-transition), visibility var(--kivo-layout-transition);
}
.kivo-nav__list li:hover > .sub-menu,
.kivo-nav__list li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.kivo-nav__list .sub-menu a { display: block; padding: 8px 16px; white-space: nowrap; }
.kivo-nav__list .sub-menu a:hover { background: var(--kivo-color-surface); }

/* A caret on anything with children. */
.kivo-nav__list .menu-item-has-children > a::after {
	content: "";
	display: inline-block;
	width: 6px; height: 6px;
	margin-left: 7px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
}

@media (max-width: 900px) {
	/* No hover on touch: the panel is already vertical, so just inline them. */
	.kivo-nav__list .sub-menu {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		border: 0;
		box-shadow: none;
		padding: 0 0 0 14px;
		min-width: 0;
	}
	.kivo-nav__list .menu-item-has-children > a::after { display: none; }
}

/* ---------- compare ---------- */

.kivo-compare-btn.is-full { border-color: var(--kivo-color-danger); color: var(--kivo-color-danger); }
.kivo-compare-btn.is-full .kivo-fav__off::after { content: " — list full"; }

/* The table scrolls inside its own box; the page never scrolls sideways. */
.kivo-compare { overflow-x: auto; }
.kivo-compare__table { width: 100%; border-collapse: collapse; min-width: 640px; }
.kivo-compare__table th,
.kivo-compare__table td {
	padding: 14px 12px;
	border-bottom: 1px solid var(--kivo-color-border);
	text-align: left;
	vertical-align: top;
	font-size: var(--kivo-text-small-size);
}
.kivo-compare__table thead td { vertical-align: bottom; }
.kivo-compare__table th[scope="row"] { width: 180px; color: var(--kivo-color-muted); font-weight: var(--kivo-text-weight-label); }
.kivo-compare__head { display: block; margin-bottom: 8px; color: var(--kivo-color-ink); }
.kivo-compare__img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--kivo-layout-radius); margin-bottom: 8px; }
.kivo-compare__title { font-family: var(--kivo-font-heading); font-weight: var(--kivo-text-weight-bold); }
.kivo-compare__remove { padding: 7px 14px; font-size: 12px; }

/* ---------- map search ---------- */

.kivo-map-layout { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 960px) { .kivo-map-layout { grid-template-columns: 360px 1fr; align-items: start; } }

/* Fixed height so Leaflet initialising cannot shift the page. */
.kivo-map-canvas { height: 420px; border-radius: var(--kivo-layout-radius-lg); overflow: hidden; background: var(--kivo-color-surface); }
@media (min-width: 960px) { .kivo-map-canvas { height: 640px; position: sticky; top: 88px; } }

.kivo-map-results { max-height: 380px; overflow-y: auto; margin: 16px 0 0; padding: 0; list-style: none; }
.kivo-map-result { display: flex; gap: 12px; align-items: center; padding: 10px; border-radius: var(--kivo-layout-radius); color: var(--kivo-color-ink); }
.kivo-map-result:hover { background: var(--kivo-color-surface); }
.kivo-map-result img { width: 80px; height: 60px; object-fit: cover; border-radius: 6px; flex: none; }
.kivo-map-result__price { display: block; color: var(--kivo-color-accent-dark); font-weight: var(--kivo-text-weight-bold); }
.kivo-map-result__title { display: block; font-size: 13px; }

.kivo-pin { display: block; color: var(--kivo-color-ink); }
.kivo-pin img { width: 80px; height: 60px; object-fit: cover; border-radius: 6px; margin-bottom: 6px; }
.kivo-pin__price { display: block; color: var(--kivo-color-accent-dark); font-weight: var(--kivo-text-weight-bold); }
.kivo-pin__title { display: block; font-size: 12px; }

.kivo-results__views { display: flex; flex-wrap: wrap; gap: 8px; }
.kivo-results__views .kivo-btn { padding: 9px 16px; font-size: 13px; }

/* ---------- gallery layouts ---------- */

/* Mosaic — one lead photo with a four-up block beside it. */
.kivo-mosaic { display: grid; gap: 8px; grid-template-columns: 1fr; }
@media (min-width: 760px) { .kivo-mosaic { grid-template-columns: 1.6fr 1fr; } }
.kivo-mosaic__lead { aspect-ratio: 3 / 2; border-radius: var(--kivo-layout-radius-lg); overflow: hidden; background: var(--kivo-color-surface); }
.kivo-mosaic__rest { display: grid; gap: 8px; grid-template-columns: 1fr 1fr; }
.kivo-mosaic__cell { aspect-ratio: 3 / 2; border-radius: var(--kivo-layout-radius); overflow: hidden; background: var(--kivo-color-surface); }
.kivo-mosaic__lead img,
.kivo-mosaic__cell img { width: 100%; height: 100%; object-fit: cover; }

/* Grid — every photo, evenly. */
.kivo-gallery__grid { display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.kivo-gallery__cell { aspect-ratio: 3 / 2; border-radius: var(--kivo-layout-radius); overflow: hidden; background: var(--kivo-color-surface); }
.kivo-gallery__cell img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- notifications ---------- */

.kivo-notify { margin: 0; padding: 0; list-style: none; }
.kivo-notify__item { display: flex; align-items: flex-start; gap: 12px; padding: 14px 12px; border-bottom: 1px solid var(--kivo-color-border); border-radius: var(--kivo-layout-radius); }
.kivo-notify__item.is-unread { background: rgba(83,124,217,0.06); }
.kivo-notify__dot { flex: none; width: 10px; height: 10px; margin-top: 7px; border-radius: 50%; background: var(--kivo-color-muted); }
.kivo-notify__dot--enquiry { background: var(--kivo-color-primary); }
.kivo-notify__dot--approved { background: var(--kivo-color-success); }
.kivo-notify__dot--removed { background: var(--kivo-color-danger); }
.kivo-notify__dot--package { background: var(--kivo-color-accent); }
.kivo-notify__dot--search { background: var(--kivo-color-primary-dark); }
.kivo-notify__body { display: block; font-size: var(--kivo-text-small-size); }
.kivo-notify__time { display: block; margin-top: 2px; font-size: 12px; color: var(--kivo-color-muted); }
.kivo-notify__actions { margin: 0 0 16px; }

.kivo-badge-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 20px;
	margin-left: 6px;
	padding: 0 6px;
	border-radius: 999px;
	background: var(--kivo-color-accent);
	color: var(--kivo-color-white);
	font-size: 11px;
	font-weight: var(--kivo-text-weight-bold);
}
/* The active nav item is already accent-on-primary; keep the badge readable. */
.kivo-dashboard__nav a[aria-current="page"] .kivo-badge-count { background: var(--kivo-color-white); color: var(--kivo-color-primary); }

/* ---------- breadcrumbs ---------- */

.kivo-crumbs { padding-block: 18px 6px; font-size: 13px; }
.kivo-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0; padding: 0; list-style: none; }
.kivo-crumbs li + li::before { content: "›"; margin-right: 6px; color: var(--kivo-color-border); }
.kivo-crumbs a { color: var(--kivo-color-primary); }
.kivo-crumbs [aria-current] { color: var(--kivo-color-muted); }

/* ---------- chips ---------- */

.kivo-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.kivo-chip {
	display: inline-block;
	padding: 6px 12px;
	border: 1px solid var(--kivo-color-primary);
	border-radius: var(--kivo-layout-radius);
	color: var(--kivo-color-primary);
	font-size: 13px;
	font-weight: var(--kivo-text-weight-label);
}
.kivo-chip:hover { background: var(--kivo-color-primary); color: var(--kivo-color-white); }
/* Spec chips are read-only, so they lose the interactive blue. */
.kivo-chip--plain { border-color: var(--kivo-color-border); background: var(--kivo-color-surface); color: var(--kivo-color-ink); }
.kivo-chip--plain:hover { background: var(--kivo-color-surface); color: var(--kivo-color-ink); }

/* ---------- address pin ---------- */

.kivo-pin-icon { display: inline-block; vertical-align: -2px; margin-right: 4px; color: var(--kivo-color-accent); }
/*
 * The card address stays a normal inline flow so the pin sits on the same line
 * as the first word and the text wraps under it — flex here put the icon on a
 * line of its own.
 */
.kivo-card__address { display: block; }
.kivo-single__address { display: flex; align-items: center; flex-wrap: wrap; gap: 2px 6px; }
.kivo-single__seemap { font-size: 13px; }

/* ---------- single listing meta ---------- */

.kivo-single__meta { display: flex; flex-wrap: wrap; gap: 16px; margin: 0; padding-top: 8px; color: var(--kivo-color-muted); font-size: 13px; }

/* ---------- card footer ---------- */

.kivo-card__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin-top: auto;
	padding: 10px 20px 14px;
	border-top: 1px solid var(--kivo-color-border);
}
.kivo-card__tools { display: flex; gap: 6px; }
/* Compact the toggles down to icon-sized buttons inside a card. */
.kivo-card__foot .kivo-fav { padding: 6px 12px; font-size: 12px; }
.kivo-card__views { color: var(--kivo-color-muted); font-size: 12px; white-space: nowrap; }

.kivo-results__showing { margin: 24px 0 0; color: var(--kivo-color-muted); font-size: 13px; }

/* Live keeps the archive title at heading scale, not hero scale. */
.kivo-archive__head h1 { font-size: var(--kivo-text-h2-size); line-height: var(--kivo-text-h2-leading); letter-spacing: var(--kivo-text-h2-tracking); }
@media (max-width: 767px) { .kivo-archive__head h1 { font-size: 30px; line-height: 34px; } }
