/* ai-search - dotazovaci cast. Namespacovane .ai-search*, aby to netlouklo s CSS projektu. */
:root {
	--ai-search-accent: #2f7d5b;
	--ai-search-accent-contrast: #ffffff;
	--ai-search-fg: #1c1c1c;
	--ai-search-muted: #6a6a6a;
	--ai-search-bg: #ffffff;
	--ai-search-surface: #f6f6f4;
	--ai-search-border: #e2e2dd;
	--ai-search-crisis-bg: #fdecea;
	--ai-search-crisis-fg: #a4241a;
	--ai-search-radius: 10px;
	--ai-search-shadow: 0 12px 34px rgba(0, 0, 0, .14);
	--ai-search-maxw: 820px;
}

/* ============ hlavickova listar ============. */

.ai-search { position: relative; display: inline-flex; align-items: center; }

.ai-search__toggle,
.ai-search__submit,
.ai-search__close {
	display: inline-flex; align-items: center; justify-content: center;
	border: 0; background: transparent; color: inherit; cursor: pointer;
	padding: 8px; border-radius: 50%; line-height: 0;
}
.ai-search__toggle:hover { background: rgba(0, 0, 0, .06); }

.ai-search__form {
	position: absolute; top: 50%; right: 0; transform: translateY(-50%);
	display: none; align-items: center; gap: 4px;
	background: var(--ai-search-bg); color: var(--ai-search-fg);
	border: 1px solid var(--ai-search-border); border-radius: 999px;
	padding: 4px 6px 4px 14px; box-shadow: var(--ai-search-shadow);
	min-width: min(360px, 78vw); z-index: 60;
}
.ai-search.is-open .ai-search__toggle { display: none; }
.ai-search.is-open .ai-search__form { display: inline-flex; }

.ai-search__input {
	flex: 1 1 auto; min-width: 0; border: 0; outline: 0; background: transparent;
	font: inherit; font-size: 16px; color: var(--ai-search-fg); padding: 6px 2px;
}
.ai-search__submit { color: var(--ai-search-accent); }
.ai-search__close { color: var(--ai-search-muted); }

.ai-search__suggest {
	position: absolute; top: calc(100% + 8px); right: 0;
	width: min(420px, 92vw); max-height: min(70vh, 520px); overflow-y: auto;
	background: var(--ai-search-bg); color: var(--ai-search-fg);
	border: 1px solid var(--ai-search-border); border-radius: var(--ai-search-radius);
	box-shadow: var(--ai-search-shadow); padding: 6px; z-index: 60;
}
.ai-search__suggest-item {
	display: flex; align-items: center; justify-content: space-between; gap: 10px;
	padding: 9px 10px; border-radius: 8px; text-decoration: none; color: inherit;
}
.ai-search__suggest-item:hover { background: var(--ai-search-surface); }
.ai-search__suggest-title { font-weight: 600; font-size: 14px; }
.ai-search__suggest-type {
	flex: 0 0 auto; font-size: 11px; color: var(--ai-search-muted);
	background: var(--ai-search-surface); padding: 2px 8px; border-radius: 999px;
}
.ai-search__suggest-crisis {
	background: var(--ai-search-crisis-bg); color: var(--ai-search-crisis-fg);
	padding: 10px 12px; border-radius: 8px; font-size: 13px; margin-bottom: 4px;
}
.ai-search__suggest-static {
	background: var(--ai-search-surface); padding: 10px 12px; border-radius: 8px;
	font-size: 13px; margin-bottom: 4px;
}
.ai-search__suggest-empty { padding: 12px; color: var(--ai-search-muted); font-size: 14px; }
.ai-search__suggest-all {
	display: block; text-align: center; padding: 10px; margin-top: 4px;
	border-top: 1px solid var(--ai-search-border); color: var(--ai-search-accent);
	font-weight: 600; font-size: 13px; text-decoration: none;
}

@media (max-width: 600px) {
	/* Otevreni se rozvine od lupy na obe strany (doleva i k pravemu kraji).
	   Vychozi pozici lupy dosadi JS do --ai-search-m-*; bez nej se rozvine od stredu. */
	.ai-search .ai-search__form {
		display: inline-flex;
		position: fixed; top: 10px; right: auto; transform: none;
		left: var(--ai-search-m-left, calc(50vw - 24px));
		width: var(--ai-search-m-width, 48px);
		min-width: 0; overflow: hidden;
		opacity: 0; pointer-events: none;
		transition: left .28s cubic-bezier(.4, 0, .2, 1),
			width .28s cubic-bezier(.4, 0, .2, 1), opacity .18s ease;
	}
	.ai-search.is-open .ai-search__form {
		left: 10px; width: calc(100vw - 20px);
		opacity: 1; pointer-events: auto;
	}
	/* Lupa vlevo jako ve vsech ostatnich rezimech; krizek zustava vpravo. */
	.ai-search .ai-search__submit { order: -1; }
	.ai-search__suggest {
		position: fixed; top: 66px; left: 10px; right: 10px; width: auto;
		max-height: calc(100vh - 84px);
	}
}

/* ============ vysledkova stranka ============. */

.ai-search-results {
	max-width: var(--ai-search-maxw); margin: 0 auto;
	/* ai-search-offset-top: nastavi projekt na vysku sve fixni hlavicky (jinak 0). */
	padding: calc(24px + var(--ai-search-offset-top, 0px)) 16px 64px;
	color: var(--ai-search-fg);
}

.ai-search-results__bar {
	display: flex; align-items: center; gap: 8px;
	background: var(--ai-search-bg); border: 1px solid var(--ai-search-border);
	border-radius: 999px; padding: 8px 8px 8px 16px; box-shadow: var(--ai-search-shadow);
}
.ai-search-results__bar-icon { flex: 0 0 auto; color: var(--ai-search-muted); }
.ai-search-results__input {
	flex: 1 1 auto; min-width: 0; border: 0; outline: 0; background: transparent;
	font: inherit; font-size: 17px; padding: 8px 2px; color: var(--ai-search-fg);
}
.ai-search-results__submit {
	flex: 0 0 auto; border: 0; cursor: pointer; font: inherit; font-weight: 600;
	background: var(--ai-search-accent); color: var(--ai-search-accent-contrast);
	padding: 10px 20px; border-radius: 999px;
}

.ai-search-results__status { color: var(--ai-search-muted); margin: 18px 2px 0; min-height: 1em; }

.ai-search-results__crisis {
	background: var(--ai-search-crisis-bg); color: var(--ai-search-crisis-fg);
	border-radius: var(--ai-search-radius); padding: 16px 18px; margin-top: 18px;
	font-size: 15px; line-height: 1.5;
}

/* AI / staticka odpoved - velky blok nahoře. */
.ai-search-results__answer {
	background: var(--ai-search-surface); border: 1px solid var(--ai-search-border);
	border-radius: var(--ai-search-radius); padding: 18px 20px; margin-top: 18px;
}
.ai-search-answer__label {
	font-size: 12px; text-transform: uppercase; letter-spacing: .05em;
	color: var(--ai-search-accent); font-weight: 700; margin-bottom: 8px;
}
.ai-search-answer__text { margin: 0; font-size: 16px; line-height: 1.6; white-space: pre-wrap; }
.ai-search-answer__text::after {
	content: "▍"; margin-left: 1px; color: var(--ai-search-accent);
	animation: ai-search-blink 1s steps(1) infinite;
}
.ai-search-results__answer.is-done .ai-search-answer__text::after { content: none; }
@keyframes ai-search-blink { 50% { opacity: 0; } }

.ai-search-answer__sources {
	margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--ai-search-border);
	display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
}
.ai-search-answer__sources-label { font-size: 12px; color: var(--ai-search-muted); }
.ai-search-answer__source {
	font-size: 13px; color: var(--ai-search-accent); text-decoration: none;
	background: var(--ai-search-bg); border: 1px solid var(--ai-search-border);
	padding: 4px 10px; border-radius: 999px;
}

.ai-search-results__suggest-line { margin-top: 16px; color: var(--ai-search-muted); }
.ai-search-results__dym-link { color: var(--ai-search-accent); font-weight: 600; }

/* skupiny vysledku. */
.ai-search-results__groups { margin-top: 8px; }
.ai-search-group { margin-top: 26px; }
.ai-search-group__title {
	font-size: 14px; text-transform: uppercase; letter-spacing: .04em;
	color: var(--ai-search-muted); margin: 0 0 10px; font-weight: 700;
}
.ai-search-group__list { display: grid; gap: 10px; }

.ai-search-card {
	display: block; text-decoration: none; color: inherit;
	background: var(--ai-search-bg); border: 1px solid var(--ai-search-border);
	border-radius: var(--ai-search-radius); padding: 14px 16px;
	transition: border-color .12s, box-shadow .12s;
}
.ai-search-card:hover { border-color: var(--ai-search-accent); box-shadow: var(--ai-search-shadow); }
.ai-search-card__title { display: block; font-weight: 600; font-size: 16px; color: var(--ai-search-accent); }
.ai-search-card__snippet {
	margin: 6px 0 0; font-size: 14px; line-height: 1.5; color: var(--ai-search-muted);
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ai-search-card__metas { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-top: 8px; }
.ai-search-card__meta { font-size: 13px; color: var(--ai-search-fg); text-decoration: none; font-weight: 500; }

@media (max-width: 600px) {
	.ai-search-results { padding: calc(16px + var(--ai-search-offset-top, 0px)) 12px 48px; }
	.ai-search-results__submit { padding: 10px 14px; }
	.ai-search-results__input { font-size: 16px; }
}

/* : pocty ve skupinach ("zobrazeno 10 z 28"). */
.ai-search-group__title { display: flex; align-items: baseline; gap: 10px; }
.ai-search-group__count {
	font-size: 12px; text-transform: none; letter-spacing: 0;
	color: var(--ai-search-muted); font-weight: 500;
}

/* ============: zvyrazneni shody ============. */

.ai-search-card mark,
.ai-search__suggest-item mark {
	background: var(--ai-search-mark-bg, rgba(47, 125, 91, .16));
	color: inherit; border-radius: 3px; padding: 0 1px;
}

/* ============: zobrazit vse ve skupine ============. */

.ai-search-group__more {
	border: 0; background: transparent; cursor: pointer;
	color: var(--ai-search-accent); font: inherit; font-size: .85em;
	text-decoration: underline; padding: 0; margin-left: 10px;
}
.ai-search-group__more:disabled { opacity: .5; cursor: default; }

/* ============: hodnoceni AI odpovedi ============. */

.ai-search-answer__feedback {
	display: flex; align-items: center; gap: 8px;
	margin-top: 10px; font-size: .85em; color: var(--ai-search-muted);
}
.ai-search-answer__feedback-btn {
	border: 1px solid var(--ai-search-border); background: var(--ai-search-bg);
	border-radius: 999px; cursor: pointer; padding: 2px 10px; font-size: 1em;
}
.ai-search-answer__feedback-btn:hover { border-color: var(--ai-search-accent); }

/* ============ lista otevrena rovnou v hlavicce ============. */

/* Pod breakpointem se `--inline` chova jako vychozi lista (ikona + overlay) - v uzke
   hlavicce neni misto na pole. */
@media (min-width: 601px) {
	.ai-search--inline { width: var(--ai-search-bar-width, 260px); }
	.ai-search--inline .ai-search__toggle { display: none; }

	.ai-search--inline .ai-search__form {
		display: inline-flex; width: 100%; min-width: 0;
		box-shadow: var(--ai-search-inline-shadow, none);
		transition: width .28s cubic-bezier(.4, 0, .2, 1), box-shadow .28s ease;
	}
	/* Lupa vlevo v pilulce (submit zustava submitem), krizek az kdyz je co zavirat. */
	.ai-search--inline .ai-search__submit { order: -1; }
	.ai-search--inline .ai-search__close { display: none; }

	.ai-search--inline.is-expanded .ai-search__form {
		width: var(--ai-search-expanded-width, min(720px, 60vw));
		box-shadow: var(--ai-search-shadow);
	}
	.ai-search--inline.is-expanded .ai-search__close { display: inline-flex; }
	.ai-search--inline.is-expanded .ai-search__suggest {
		width: var(--ai-search-expanded-width, min(720px, 60vw));
	}
}

/* ============ AI odpoved se pripravuje ============. */

.ai-search-answer__loading {
	display: flex; align-items: center; gap: 10px;
	color: var(--ai-search-muted); font-size: 15px;
}
.ai-search-answer__spinner {
	flex: 0 0 auto; width: 16px; height: 16px; border-radius: 50%;
	border: 2px solid var(--ai-search-border); border-top-color: var(--ai-search-accent);
	animation: ai-search-spin .7s linear infinite;
}
@keyframes ai-search-spin { to { transform: rotate(360deg); } }

.ai-search-answer__skeleton { display: grid; gap: 8px; margin-top: 14px; }
.ai-search-answer__skeleton-line {
	height: 10px; border-radius: 999px;
	background: linear-gradient(90deg,
		var(--ai-search-border) 25%, var(--ai-search-bg) 37%, var(--ai-search-border) 63%);
	background-size: 400% 100%;
	animation: ai-search-shimmer 1.4s ease infinite;
}
.ai-search-answer__skeleton-line:last-child { width: 70%; }
@keyframes ai-search-shimmer {
	from { background-position: 100% 0; }
	to { background-position: 0 0; }
}

@media (prefers-reduced-motion: reduce) {
	.ai-search-answer__spinner,
	.ai-search-answer__skeleton-line { animation: none; }
	.ai-search--inline .ai-search__form,
	.ai-search .ai-search__form { transition: none; }
}

/* Vzhled ai-search v lemimose. Mechanika (stavy, animace) je v balicku - search.css. */

:root {
	--ai-search-accent: #3F7C6A;
	--ai-search-accent-contrast: #FEFDFB;
	--ai-search-fg: #292115;
	--ai-search-muted: #676054;
	--ai-search-bg: #FEFDFB;
	--ai-search-surface: #FBF8F4;
	--ai-search-border: #DDEEE9;
	--ai-search-radius: 16px;
	--ai-search-shadow: 0 14px 34px rgba(41, 33, 21, .16);
	--ai-search-mark-bg: rgba(254, 204, 0, .35);

	/* Lista v hlavicce: barvy tlacitek Rezervace a kosiku (mint-550 / mint-900). */
	--lm-search-fill: oklch(89.86% 0.0825 173.68);
	--lm-search-fill-hover: oklch(from oklch(89.86% 0.0825 173.68) calc(l * 1.06) c h);
	--lm-search-ink: oklch(35.93% 0.0673 167.91);

	/* Lista vyplni misto mezi menu a Rezervaci; roztazenou sirku (ke koncu loga) meri
	   balicek podle `searchBarExpandTo`. Tohle je fallback, kdyz JS nedobehne. */
	--ai-search-bar-width: auto;
	--ai-search-expanded-width: min(720px, 52vw);
	--ai-search-inline-shadow: none;
}

/* ============ lista v hlavicce ============ */

#top-bar .ai-search__toggle {
	width: 48px;
	height: 48px;
	border-radius: 9999px;
	color: var(--lm-search-ink);
	background: var(--lm-search-fill);
}
#top-bar .ai-search__toggle:hover { background: var(--lm-search-fill-hover); }

#top-bar .ai-search__form {
	color: var(--lm-search-ink);
	border: 0;
	border-radius: 9999px;
	background: var(--lm-search-fill);
}
#top-bar .ai-search__input {
	color: var(--lm-search-ink);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .01em;
}
#top-bar .ai-search__input::placeholder { color: var(--lm-search-ink); opacity: .72; }
#top-bar .ai-search__submit,
#top-bar .ai-search__close { color: var(--lm-search-ink); }
#top-bar .ai-search__submit:hover,
#top-bar .ai-search__close:hover { opacity: .7; }

@media (min-width: 768px) {
	#top-bar .ai-search--inline .ai-search__form {
		height: 48px;
		padding: 0 4px 0 14px;
	}
}

@media (min-width: 1200px) {
	#top-bar .ai-search--inline {
		flex: 1 1 auto;
		min-width: 240px;
	}
}

/* Pod 992px (hamburger) se lista otvira jako overlay PRES CELOU hlavicku - vsechno
   pod nim (logo i ikony) se prolne pryc, at nikde nic netrci. */
@media (max-width: 991.98px) {
	#top-bar .ai-search .ai-search__form {
		height: 56px;
		padding: 0 8px 0 16px;
	}

	#top-bar:has(.ai-search.is-open) .navbar-brand,
	#top-bar:has(.ai-search.is-open) .nav_actions > :not(.ai-search) {
		opacity: 0;
		pointer-events: none;
	}
}

/* Tablet 601-991: lista je ikona a otevreni je tyz animovany overlay od lupy
   k obema krajum jako v mobilnim rezimu balicku. */
@media (min-width: 601px) and (max-width: 991.98px) {
	#top-bar .ai-search--inline { width: auto; }
	#top-bar .ai-search--inline .ai-search__toggle { display: inline-flex; }

	#top-bar .ai-search--inline .ai-search__form {
		display: inline-flex;
		position: fixed; top: 10px; right: auto; transform: none;
		left: var(--ai-search-m-left, calc(50vw - 24px));
		width: var(--ai-search-m-width, 48px);
		min-width: 0; overflow: hidden;
		opacity: 0; pointer-events: none;
		box-shadow: var(--ai-search-shadow);
		transition: left .28s cubic-bezier(.4, 0, .2, 1),
			width .28s cubic-bezier(.4, 0, .2, 1), opacity .18s ease;
	}
	#top-bar .ai-search--inline.is-open .ai-search__form {
		left: 10px; width: calc(100vw - 20px);
		opacity: 1; pointer-events: auto;
	}
	#top-bar .ai-search--inline.is-open .ai-search__close { display: inline-flex; }
	#top-bar .ai-search--inline.is-open .ai-search__toggle { display: none; }

	#top-bar .ai-search--inline .ai-search__suggest {
		position: fixed; top: 74px; left: 10px; right: 10px; width: auto;
		max-height: calc(100vh - 92px);
	}
}

/* 992-1199: menu uz je v liste, ale na stale pole neni misto - lista je ikona.
   Otevreni roste DOLEVA jen po logo (sirku meri balicek do --ai-search-open-width);
   logo, Rezervace i kosik zustavaji viditelne, prekryje se jen menu. */
@media (min-width: 992px) and (max-width: 1199.98px) {
	#top-bar .ai-search--inline { width: auto; }
	#top-bar .ai-search--inline .ai-search__toggle { display: inline-flex; }

	#top-bar .ai-search--inline .ai-search__form {
		display: inline-flex;
		position: absolute; top: 50%; right: 0; left: auto;
		transform: translateY(-50%);
		width: 48px; min-width: 0; overflow: hidden;
		opacity: 0; pointer-events: none;
		height: 48px; padding: 0 4px 0 14px;
		box-shadow: var(--ai-search-shadow);
		transition: width .28s cubic-bezier(.4, 0, .2, 1), opacity .18s ease;
	}
	#top-bar .ai-search--inline.is-open .ai-search__form {
		width: var(--ai-search-open-width, min(480px, 55vw));
		opacity: 1; pointer-events: auto;
	}
	#top-bar .ai-search--inline.is-open .ai-search__close { display: inline-flex; }
	#top-bar .ai-search--inline.is-open .ai-search__toggle { display: none; }

	/* Otevrene pole prejede pres menu - polozky se prolnou, sirku drzi. */
	#top-bar:has(.ai-search--inline.is-open) .nav_links {
		opacity: 0;
		transition-delay: 0s;
		pointer-events: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	#top-bar .ai-search--inline .ai-search__form { transition: none; }
}

/* ============ vysledkova stranka ============ */

.ai-search-results__submit {
	color: var(--lm-search-ink);
	background: var(--lm-search-fill);
	text-transform: uppercase;
	letter-spacing: .03em;
	font-weight: 600;
}
.ai-search-results__submit:hover { background: var(--lm-search-fill-hover); }

.ai-search-results__bar { border-color: var(--ai-search-border); }

.ai-search-answer__label { color: var(--lm-search-ink); }
