/* ELEMENTARNO front: базові стилі меню і форми (використовуються шорткодами плагіна) */

/* Меню [elm_menu].
   Типографіка — з глобального шрифту Elementor «Header / Menu» (elmhdr),
   який синхронізується з панелі ELEMENTARNO. Elementor друкує глобальні
   шрифти як CSS-змінні --e-global-typography-elmhdr-* (розмір — адаптивний,
   через медіазапити Kit). Фолбеки — наші токени, якщо Kit ще не згенеровано. */
.elm-menu__list {
	display: flex;
	gap: 28px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.elm-menu__list a {
	font-family: var(--e-global-typography-elmhdr-font-family, var(--elm-font-header)), sans-serif;
	font-size: var(--e-global-typography-elmhdr-font-size, 15px);
	font-weight: var(--e-global-typography-elmhdr-font-weight, 500);
	line-height: var(--e-global-typography-elmhdr-line-height, 1.2);
	color: var(--e-global-color-text, var(--elm-text));
	text-decoration: none;
}
.elm-menu__list a:hover {
	color: var(--e-global-color-accent, var(--elm-accent));
}

/* Вертикальний варіант — для мобільного меню в попапі Elementor:
   [elm_menu direction="vertical"]. Типографіка та сама (elmhdr);
   вирівнювання/відступи донастроюються в попапі або власними класами. */
.elm-menu--vertical .elm-menu__list {
	flex-direction: column;
	align-items: flex-start;
	gap: 18px;
}
.elm-menu--vertical .elm-menu__list a {
	display: block;
}

/* ---------------------------------------------------------------------
 * Форма заявки [elm_form] — стилі з токенів панелі (кольори, радіус, шрифт).
 * Кнопка малює плашку з іконкою так само, як elm-btn-icon / CF7.
 * Стани: .is-invalid на полі, .is-sending на формі, .is-done — блок «Дякуємо».
 * ------------------------------------------------------------------- */
.elm-form { display: grid; gap: 14px; }
.elm-form__field { position: relative; }
.elm-form input[type="text"],
.elm-form input[type="tel"],
.elm-form input[type="email"],
.elm-form select,
.elm-form textarea {
	width: 100%;
	padding: 14px 16px;
	border: 1px solid var(--elm-border, #D5D9E0);
	border-radius: var(--elm-radius-btn, 8px);
	font: inherit;
	font-size: 15px;
	line-height: 1.4;
	color: var(--elm-text);
	background: var(--elm-light, #fff);
	box-sizing: border-box;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.elm-form select { appearance: none; -webkit-appearance: none; padding-right: 40px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23666' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 16px center; }
.elm-form textarea { min-height: 96px; max-height: 160px; resize: vertical; }
.elm-form ::placeholder { color: var(--elm-muted); opacity: 1; }
.elm-form input:focus,
.elm-form select:focus,
.elm-form textarea:focus {
	outline: none;
	border-color: var(--elm-accent);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--elm-accent) 22%, transparent);
}
.elm-form .is-invalid input,
.elm-form .is-invalid select,
.elm-form .is-invalid textarea,
.elm-form input.is-invalid { border-color: #d63638; }
.elm-form__hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.elm-form__consent {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	font-size: 13px;
	line-height: 1.45;
	color: var(--elm-muted);
	cursor: pointer;
}
.elm-form__consent input { margin: 3px 0 0; flex: 0 0 auto; accent-color: var(--elm-accent); }
.elm-form__consent.is-invalid span { color: #d63638; }
.elm-form__consent a { color: inherit; text-decoration: underline; }
.elm-form__submit {
	position: relative;
	width: 100%;
	padding: 16px var(--elm-btn-icon-pad, 60px) 16px 20px;
	border: 0;
	border-radius: var(--elm-radius-btn, 8px);
	background: var(--elm-primary);
	color: var(--elm-light, #fff);
	font: inherit;
	font-weight: 600;
	font-size: 15px;
	text-align: left;
	cursor: pointer;
	transition: filter .15s ease, opacity .15s ease;
}
.elm-form__submit:hover { filter: brightness(1.15); }
.elm-form__submit:disabled { opacity: .6; cursor: wait; }
.elm-form__submit::after {
	content: "";
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);
	width: 32px;
	height: 32px;
	border-radius: 4px;
	background-color: rgba(255, 255, 255, .14);
	display: var(--elm-btn-icon-display, block);
	pointer-events: none;
}
.elm-form__submit::before {
	content: "";
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);
	width: 32px;
	height: 32px;
	background-color: var(--elm-light, #fff);
	-webkit-mask: var(--elm-btn-icon) center / 14px 14px no-repeat;
	mask: var(--elm-btn-icon) center / 14px 14px no-repeat;
	display: var(--elm-btn-icon-display, block);
	z-index: 1;
	pointer-events: none;
}
.elm-form.is-sending .elm-form__submit::before { animation: elm-form-pulse .9s ease-in-out infinite; }
@keyframes elm-form-pulse { 50% { opacity: .35; } }
.elm-form__status { min-height: 0; font-size: 14px; line-height: 1.4; }
.elm-form__status:empty { display: none; }
.elm-form__status.is-error { color: #d63638; }
.elm-form .cf-turnstile:empty { display: none; }
/* Блок після успішної відправки */
.elm-form__done {
	display: grid;
	gap: 8px;
	justify-items: start;
	padding: 24px;
	border: 1px solid var(--elm-border, #D5D9E0);
	border-radius: var(--elm-radius, 12px);
	background: var(--elm-light, #fff);
	color: var(--elm-text);
}
.elm-form__done-icon {
	position: relative;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--elm-accent);
}
.elm-form__done-icon::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--elm-light, #fff);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 12.5l3.2 3.2L17 9' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 24px 24px no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 12.5l3.2 3.2L17 9' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 24px 24px no-repeat;
}
.elm-form__done-title { font-weight: 600; font-size: 20px; }
.elm-form__done-text { color: var(--elm-muted); font-size: 15px; line-height: 1.5; }

/* Кнопки з іконкою-плашкою.
   ЯК КОРИСТУВАТИСЬ: на Elementor-кнопку вішаєш клас elm-btn-icon (+ варіант
   --light / --primary / --accent). Іконку у самому віджеті ставити НЕ треба —
   плашка й іконка домальовуються CSS-ом праворуч від тексту. Сама іконка —
   одна на весь сайт, з панелі (Дизайн → Іконка кнопок): плагін друкує її
   токеном --elm-btn-icon, а тут вона малюється через CSS mask, тож фарбується
   в колір варіанта. «Без іконки» в панелі ховає плашку на всіх кнопках.
   Якщо у віджеті ВСЕ Ж обрано іконку — плашкою стає вона (старі кнопки
   працюють як раніше); своя іконка саме на цій кнопці — модифікатор
   elm-btn-icon--own. */

/* Кольори варіантів — як змінні на самій кнопці, їх читають обидва способи малювання */
.elm-btn-icon           { --elm-btn-icon-plate: var(--elm-light, #fff);   --elm-btn-icon-color: var(--elm-primary); }
.elm-btn-icon--light    { --elm-btn-icon-plate: var(--elm-accent);        --elm-btn-icon-color: var(--elm-light, #fff); }
.elm-btn-icon--primary  { --elm-btn-icon-plate: var(--elm-primary);       --elm-btn-icon-color: var(--elm-light, #fff); }
.elm-btn-icon--accent   { --elm-btn-icon-plate: var(--elm-accent);        --elm-btn-icon-color: var(--elm-primary); }

.elm-btn-icon .elementor-button-content-wrapper {
	position: relative;
	align-items: center;
	gap: 10px;
}

/* --- Спосіб 1: у віджеті іконки НЕМА → плашка (::after) + іконка (::before) псевдоелементами --- */
.elm-btn-icon .elementor-button-content-wrapper:not(:has(.elementor-button-icon))::after {
	content: "";
	order: 2;
	flex: none;
	width: 30px;
	height: 30px;
	border-radius: 4px;
	background-color: var(--elm-btn-icon-plate);
	display: var(--elm-btn-icon-display, block);
}
.elm-btn-icon .elementor-button-content-wrapper:not(:has(.elementor-button-icon))::before {
	content: "";
	position: absolute;
	right: 0;
	top: 50%;
	width: 30px;
	height: 30px;
	transform: translateY(-50%);
	background-color: var(--elm-btn-icon-color);
	-webkit-mask: var(--elm-btn-icon) center / 12px 12px no-repeat;
	mask: var(--elm-btn-icon) center / 12px 12px no-repeat;
	display: var(--elm-btn-icon-display, block);
	z-index: 1;
	pointer-events: none;
}

/* --- Спосіб 2: у віджеті іконка Є → вона стає плашкою, її власна графіка ховається --- */
.elm-btn-icon .elementor-button-icon {
	position: relative;
	width: 30px;
	height: 30px;
	border-radius: 4px;
	background-color: var(--elm-btn-icon-plate);
	display: var(--elm-btn-icon-display, flex);
	justify-content: center;
	align-items: center;
	flex: none;
}
.elm-btn-icon:not(.elm-btn-icon--own) .elementor-button-icon::before {
	content: "";
	width: 12px;
	height: 12px;
	background-color: var(--elm-btn-icon-color);
	-webkit-mask: var(--elm-btn-icon) center / contain no-repeat;
	mask: var(--elm-btn-icon) center / contain no-repeat;
}
.elm-btn-icon:not(.elm-btn-icon--own) .elementor-button-icon svg,
.elm-btn-icon:not(.elm-btn-icon--own) .elementor-button-icon i {
	display: none;
}
/* Власна іконка віджета (модифікатор --own) */
.elm-btn-icon--own .elementor-button-icon svg {
	width: 11px;
	height: 10px;
	fill: var(--elm-btn-icon-color);
	color: var(--elm-btn-icon-color);
}

/* Інлайн-іконки [elm render="svg"] — колір через currentColor */
.elm-icon {
	display: inline-flex;
	line-height: 0;
	color: inherit;
}

/* Соцмережі [elm_socials] */
.elm-socials {
	display: flex;
	gap: 12px;
	align-items: center;
}
/* Готові кольорові варіанти (селектор на лінку, щоб перебивати правило Kit для <a>).
   Простіше: [elm_socials color="accent"] — inline-стиль, працює завжди. */
.elm-socials--accent .elm-socials__link { color: var(--elm-accent); }
.elm-socials--light .elm-socials__link { color: var(--elm-light, #fff); }
.elm-socials--white .elm-socials__link { color: #fff; } /* аліас; те саме, що color="white" у шорткоді */
.elm-socials--primary .elm-socials__link { color: var(--elm-primary); }
.elm-socials--gray .elm-socials__link { color: var(--elm-gray, #646464); }
.elm-socials__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: inherit;
	line-height: 0;
	transition: color .15s ease, background .15s ease, transform .15s ease;
}
.elm-socials__link:hover {
	color: var(--elm-accent);
	transform: translateY(-1px);
}
.elm-socials--circle .elm-socials__link {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: color-mix(in srgb, currentColor 12%, transparent);
}
.elm-socials--circle .elm-socials__link:hover {
	background: var(--elm-accent);
	color: var(--elm-light, #fff);
	transform: none;
}

/* Contact Form 7 у стилі DOBA. Обгортка з класом elm-cf7 — всередині коду
   форми CF7 (див. шаблон форми в документації). */
.elm-cf7 label {
	display: block;
	margin: 0 0 18px;
	font-size: 15px;
	font-weight: 500;
	color: var(--elm-text);
}

/* CF7 вставляє <br> між текстом лейбла і полем — вони розтягують форму
 * (поле і так блочне через .wpcf7-form-control-wrap). */
.elm-cf7 label br {
	display: none;
}
.elm-cf7 .wpcf7-form-control-wrap {
	display: block;
	margin-top: 8px;
	font-weight: 400;
}
.elm-cf7 input[type="text"],
.elm-cf7 input[type="tel"],
.elm-cf7 input[type="email"],
.elm-cf7 textarea {
	width: 100%;
	padding: 14px 16px;
	border: 1px solid #D5D9E0;
	border-radius: var(--elm-radius-btn, 8px);
	font: inherit;
	font-size: 15px;
	color: var(--elm-text);
	background: var(--elm-light, #fff);
	box-sizing: border-box;
}
.elm-cf7 ::placeholder { color: var(--elm-muted); opacity: 1; }
.elm-cf7 input:focus,
.elm-cf7 textarea:focus {
	outline: 2px solid var(--elm-accent);
	outline-offset: 1px;
	border-color: transparent;
}
.elm-cf7 textarea { max-height: 120px; resize: vertical; }
.elm-cf7 .wpcf7-not-valid { border-color: #d63638; }
.elm-cf7 .wpcf7-not-valid-tip { font-size: 13px; color: #d63638; margin-top: 4px; }

/* Кнопка: текст зліва, стрілка у плашці справа */
.elm-cf7__submit { position: relative; margin-top: 4px; }
.elm-cf7__submit .wpcf7-submit {
	width: 100%;
	padding: 16px var(--elm-btn-icon-pad, 60px) 16px 20px; /* без іконки → 20px */
	border: 0;
	border-radius: var(--elm-radius-btn, 8px);
	background: var(--elm-primary);
	color: var(--elm-light, #fff);
	font-weight: 600;
	font-size: 15px;
	text-align: left;
	cursor: pointer;
	transition: filter .15s ease;
}
.elm-cf7__submit .wpcf7-submit:hover { filter: brightness(1.15); }
.elm-cf7__submit::after {
	content: "";
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);
	width: 32px;
	height: 32px;
	border-radius: 4px;
	background-color: rgba(255, 255, 255, .14);
	display: var(--elm-btn-icon-display, block);
	pointer-events: none;
}
/* сама іконка — з токена панелі, білим (кнопка primary) */
.elm-cf7__submit::before {
	content: "";
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);
	width: 32px;
	height: 32px;
	background-color: var(--elm-light, #fff);
	-webkit-mask: var(--elm-btn-icon) center / 14px 14px no-repeat;
	mask: var(--elm-btn-icon) center / 14px 14px no-repeat;
	display: var(--elm-btn-icon-display, block);
	z-index: 1;
	pointer-events: none;
}
.elm-cf7 .wpcf7-spinner { position: absolute; margin: 0; right: -34px; top: 14px; }
.elm-cf7 .wpcf7-response-output {
	margin: 14px 0 0;
	padding: 10px 14px;
	border-radius: var(--elm-radius-btn, 8px);
	font-size: 14px;
}

/* Плавний скрол до якорів лендінгу */
html { scroll-behavior: smooth; }
[id] { scroll-margin-top: 90px; }

/* Лого: ширина з панелі (Дизайн → Ширина лого), окремо для компа і мобілки.
   Вішаєш клас elm-logo на віджет зображення в шапці/футері — і розмір лого
   керується з панелі, а не правиться в кожному Elementor-віджеті окремо.
   Клас продубльовано (.elm-logo.elm-logo) навмисно: Elementor має власне
   правило .elementor-widget-image a img[src$=".svg"]{width:48px} — воно
   специфічніше за одинарний клас і різало SVG-лого до 48px. Подвоєння дає
   вищу вагу без !important.
   ВАЖЛИВО: у самому віджеті поле Width треба лишити порожнім, інакше
   згенероване Elementor правило переб'є токен. */
.elementor-element.elm-logo.elm-logo img,
.elementor-element.elm-logo.elm-logo svg {
	width: var(--elm-logo-w, 180px);
	height: auto;
	max-width: 100%;
}
@media (max-width: 767px) {
	.elementor-element.elm-logo.elm-logo img,
	.elementor-element.elm-logo.elm-logo svg {
		width: var(--elm-logo-w-mobile, 120px);
	}
}

/* Утиліти радіусів — щоб не задавати кути руками в кожному блоці Elementor.
   Вішаєш клас на контейнер/віджет, і радіус береться з панелі (Дизайн).
   Селектор із .elementor-element навмисно: у Elementor власне правило
   теж одноклассове, тож нам потрібна вища специфічність, без !important. */
.elementor-element.elm-radius { border-radius: var(--elm-radius, 12px); }
.elementor-element.elm-radius-btn { border-radius: var(--elm-radius-btn, 8px); }
.elementor-element.elm-radius-0 { border-radius: 0; }
/* Подвійний радіус — для великих блоків (герой, картка-обгортка) */
.elementor-element.elm-radius-lg { border-radius: calc(var(--elm-radius, 12px) * 2); }
/* Якщо всередині є фото/фон, які мають обрізатись по куту */
.elementor-element.elm-radius-clip { overflow: hidden; }

/* ---------------------------------------------------------------------
 * Модалка з прокруткою лише тексту (Off Canvas «Політика» тощо).
 * Клас elm-modal — на КОНТЕЙНЕР усередині Off Canvas. Заголовок і хрестик
 * стоять, гортається текстовий віджет (перший Text Editor у контейнері або
 * будь-який елемент з класом elm-modal__body). Custom CSS не потрібен.
 * ------------------------------------------------------------------- */
.e-off-canvas__content:has(> .elm-modal) {
	overflow: hidden; /* висоту задає сам Off Canvas у налаштуваннях — тут не чіпаємо */
}
.e-off-canvas__content:has(> .elm-modal)::-webkit-scrollbar { display: none; }
.e-con.elm-modal {
	height: 100%;
	min-height: 0;
	flex-wrap: nowrap;
}
.elm-modal > .elementor-widget-text-editor,
.elm-modal .elm-modal__body {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding-right: 12px;
	scrollbar-width: thin;
	scrollbar-color: var(--elm-modal-scrollbar, rgba(127, 127, 127, .4)) transparent;
}
.elm-modal > .elementor-widget-text-editor::-webkit-scrollbar,
.elm-modal .elm-modal__body::-webkit-scrollbar { width: 4px; }
.elm-modal > .elementor-widget-text-editor::-webkit-scrollbar-thumb,
.elm-modal .elm-modal__body::-webkit-scrollbar-thumb {
	background: var(--elm-modal-scrollbar, rgba(127, 127, 127, .4));
	border-radius: 4px;
}
/* Без скролбара взагалі: додатковий клас elm-modal--noscrollbar на той самий контейнер. */
.elm-modal--noscrollbar > .elementor-widget-text-editor,
.elm-modal--noscrollbar .elm-modal__body { scrollbar-width: none; }
.elm-modal--noscrollbar > .elementor-widget-text-editor::-webkit-scrollbar,
.elm-modal--noscrollbar .elm-modal__body::-webkit-scrollbar { display: none; }

/* ---------------------------------------------------------------------
 * Посилання з шорткода [elm … link="tel|mailto|url"] і link-полів:
 * базовий колір — інлайном (перебиває Kit), ховер — змінною --elm-link-hover
 * (атрибут hover="primary|accent|…|none"; типово primary, для light — accent).
 * ------------------------------------------------------------------- */
a.elm-link { transition: color .2s ease; }
a.elm-link:hover,
a.elm-link:focus-visible { color: var(--elm-link-hover, var(--elm-primary)) !important; }
