/* Zap QA standards: measured rules from Zap's site QA checklist. Loaded after every preset and the pool, so
   no preset or variant can undo them. Each block names the checklist item it answers. */

/* Section rhythm: about 80px between sections on desktop, 25-50px on phones (sections carry half each) */
body .e-con.zs-sec:not(.zs-hero) { --sec-y: clamp(36px, 1.5rem + 1.6vw, 44px); }
@media (max-width: 767px) { body .e-con.zs-sec:not(.zs-hero) { --sec-y: 20px; } }

/* Side padding on phones: 20px */
@media (max-width: 767px) { body { --gutter: 20px; } }

/* Text: nothing under 16px, body text never Light (300) */
body { font-weight: 400; }
body :is(p, li, label, .elementor-widget-text-editor, .zs-card__text, .zs-footer, .zs-footer__copy, .zs-footer__legal a,
  .zs-topbar, .zs-topbar a, .zs-form label, .zs-form__consent, .zs-hero__lead, .zs-sec__intro) { font-size: max(1rem, 1em); }
body :is(.zs-footer__copy, .zs-footer__legal, .zs-topbar__list, .zs-form__consent, .zs-form label, .zs-card__text, .zs-footer__about) { font-size: 1rem; }
body .zs-hero__lead, body .zs-hero__lead p { font-size: max(1rem, 1.05em); opacity: 1; font-weight: 400; }
body .zs-hero:is(.zs-v-cover, .zs-v-inset, .zs-v-curve) .zs-hero__lead { color: #fff; text-shadow: 0 1px 12px rgb(0 0 0 / .45); }

/* Forms use the site's fonts, never the browser/plugin default */
body :is(.zs-form, .zs-form input, .zs-form textarea, .zs-form select, .zs-form button, .search-form input, .search-form button) { font-family: var(--f-body); }

/* The lead form's title is a paragraph styled as a heading (it is not a section heading) */
body .zs-leadband__title .elementor-heading-title, body .zs-contact__title .elementor-heading-title { font-family: var(--f-head); font-size: var(--fs-h2); font-weight: var(--w-head, 700); line-height: var(--lh-head, 1.15); color: var(--c-ink); margin: 0; }

/* One H1 scale on every page, always above H2 (home and inner pages alike) */
body .zs-hero .zs-hero__title .elementor-heading-title { font-size: clamp(2.1rem, 1.3rem + 2.6vw, 3.6rem); line-height: 1.15; }
@media (max-width: 767px) {
  body .zs-hero .zs-hero__title .elementor-heading-title, body .zs-hero--home .zs-hero__title .elementor-heading-title { font-size: 2.25rem; }
  body .zs-sec__title .elementor-heading-title { font-size: 1.75rem; }
}

/* Buttons on phones, everywhere: side by side, equal width, one line each (Zap QA round 2) */
@media (max-width: 767px) {
  body .e-con.zs-btns { --flex-direction: row; flex-direction: row; --flex-wrap: nowrap; flex-wrap: nowrap; --gap: 10px; gap: 10px; width: 100%; justify-content: center; }
  body .e-con.zs-btns > .elementor-element { flex: 1 1 0; min-width: 0; width: auto; --container-widget-width: auto; max-width: none; }
  body .e-con.zs-btns .elementor-button { width: 100%; white-space: nowrap; justify-content: center; padding-inline: 10px; font-size: 1rem; }
  body .e-con.zs-btns .elementor-button :is(svg, i) { display: none; }
}

/* Tap targets: 44px minimum for links people tap on phones */
@media (max-width: 767px) {
  body :is(.zs-footer a, .zs-footer__links a, .zs-footer__legal a, .zs-footer__contact a, .zs-form__consent a, .zs-leadband__or a, .zs-nap a) {
    display: inline-flex; align-items: center; min-height: 44px; }
  body :is(.zs-footer__links a, .zs-footer__contact a) { min-height: 34px; }   /* footer lists: compact (Zap QA), still above the 24px target minimum */
  body .zs-faq__list .elementor-toggle .elementor-tab-title { min-height: 56px; display: flex; align-items: center; }
}

/* The sticky call bar is opt-in (header.call_bar); with it on, it never covers the footer's last line */
@media (max-width: 767px) { body:has(.zs-fab) .zs-footer { padding-bottom: 88px; } body:not(:has(.zs-fab)) { padding-bottom: 0 !important; } }

/* FAQ: hover state and a chevron that points down and turns when open */
body .zs-faq__list .elementor-toggle .elementor-tab-title { cursor: pointer; transition: background-color .2s, color .2s; }
body .zs-faq__list .elementor-toggle .elementor-tab-title:hover { background-color: color-mix(in srgb, var(--c-primary) 7%, transparent); color: var(--c-primary); }
body .zs-faq__list .elementor-toggle .elementor-toggle-icon :is(svg, i) { display: none !important; }
body .zs-faq__list .elementor-toggle .elementor-toggle-icon { width: 32px; height: 32px; display: grid; place-items: center; background: none; }
body .zs-faq__list .elementor-toggle .elementor-toggle-icon::before { content: ""; width: 10px; height: 10px; border: solid currentColor; border-width: 0 2.5px 2.5px 0;
  transform: translateY(-3px) rotate(45deg); transition: transform .25s; }
body .zs-faq__list .elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon::before { transform: translateY(3px) rotate(-135deg); }
body .zs-faq__list .elementor-toggle span.elementor-toggle-icon-closed::before, body .zs-faq__list .elementor-toggle span.elementor-toggle-icon-opened::before { content: none; }

/* 404: styled search button and room between the actions and the "main pages" list */
body .zs-404 :is(.search-submit, input[type=submit], button[type=submit]) { min-height: 48px; padding: 0 22px; border: 0; border-radius: var(--r-sm, 6px);
  background: var(--c-primary); color: var(--c-primary-ink); font: 700 1rem var(--f-body); cursor: pointer; -webkit-appearance: none; appearance: none; }
body .zs-404 .search-form label { flex: 1; display: flex; }
body .zs-404 .search-form input[type=search] { width: 100%; }
body .zs-404 :is(.zs-404__links, h2, .zs-404__main) { margin-top: 32px; }

/* Gallery photos open in a lightbox */
body .zs-gallery__img a { display: block; cursor: zoom-in; }

/* Accessibility toolbar button on phones: low on the start edge, above the bottom action bar; never in the header
   (it covered the logo) and never over the hero text. Zap QA, newest round: "התפריט נגישות נמצא בהדר .. לבטל".
   The toolbar box is ~300px tall with its button at the top, so it is placed by its top; open, it moves up so
   its panel fits on the screen. */
@media (max-width: 767px) {
  body #pojo-a11y-toolbar { position: fixed !important; top: calc(100svh - 170px) !important; bottom: auto !important; }
  body #pojo-a11y-toolbar.pojo-a11y-toolbar-open { top: 80px !important; }
  body #pojo-a11y-toolbar .pojo-a11y-toolbar-toggle { top: 0 !important; bottom: auto !important; }
  body #pojo-a11y-toolbar .pojo-a11y-toolbar-toggle a { width: 40px; height: 40px; padding: 8px; font-size: 22px; line-height: 24px; }
}

/* Header logo: big enough to read (square/stacked logos were tiny at 46px); wide logos stay capped by width */
body :is(.zs-tpl, .elementor-location-header) .zs-brand img, body .zs-brand .zs-brand__logo { height: 96px; max-width: 280px; }
@media (min-width: 768px) and (max-width: 1024px) { body :is(.zs-tpl, .elementor-location-header) .zs-brand img, body .zs-brand .zs-brand__logo { height: 72px; max-width: 220px; } }
@media (max-width: 767px) { body :is(.zs-tpl, .elementor-location-header) .zs-brand img, body .zs-brand .zs-brand__logo { height: 60px; max-width: 160px; } }

/* Header call button: the number in dark text on a light button with a brand-colour border (Zap QA) */
body .zs-header__cta .elementor-button, body .zs-nav__cta { background: var(--c-bg, #fff); color: var(--c-ink); border: 2px solid var(--c-primary); box-shadow: none; }
body .zs-header__cta .elementor-button:hover, body .zs-nav__cta:hover { background: var(--c-primary); color: var(--c-primary-ink); }
body .zs-header__cta .elementor-button :is(svg, i) { fill: currentColor; color: currentColor; }
body.zs-h-dark .zs-header__cta .elementor-button { background: transparent; color: var(--c-dark-ink); border-color: var(--c-dark-ink); }

/* Post FAQ (details/summary): the same look and hover as the page FAQ */
.zs-post__faq { margin-top: 40px; }
.zs-post__faq details { border-bottom: 1px solid var(--c-line); }
.zs-post__faq summary { min-height: 56px; display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; font-weight: 700; list-style: none; transition: color .2s, background-color .2s; padding-inline: 8px; }
.zs-post__faq summary::-webkit-details-marker { display: none; }
.zs-post__faq summary:hover { color: var(--c-primary); background-color: color-mix(in srgb, var(--c-primary) 7%, transparent); }
.zs-post__faq summary::after { content: ""; flex: none; width: 10px; height: 10px; border: solid currentColor; border-width: 0 2.5px 2.5px 0; transform: translateY(-3px) rotate(45deg); transition: transform .25s; }
.zs-post__faq details[open] summary::after { transform: translateY(3px) rotate(-135deg); }
.zs-post__faq .zs-faq__a { padding: 0 8px 16px; }

/* Phone numbers never break across lines */
body a[href^="tel:"] { white-space: nowrap; }

/* Photo-behind heroes on phones: content centred, the hero as tall as its content (no empty top, buttons in view) */
@media (max-width: 767px) {
  body .e-con.zs-hero:is(.zs-v-cover, .zs-v-inset, .zs-v-curve) { min-height: 0 !important; --min-height: 0; --padding-top: 0; --padding-bottom: 0; }
  body .e-con.zs-hero:is(.zs-v-cover, .zs-v-inset, .zs-v-curve) > .e-con-inner { min-height: 0 !important; justify-content: center !important; --padding-top: 36px; --padding-bottom: 36px; padding-block: 36px !important; }
}

/* Top bar text at body size */
body .zs-topbar :is(.elementor-heading-title, li, a, span) { font-size: 1rem; }

/* Main menu centred in the header on desktop (Zap QA round 2) */
@media (min-width: 1025px) { body .zs-nav { margin-inline: auto; } body .e-con.zs-header__in > .zs-header__nav { flex: 1 1 auto; } body .zs-header__nav .zs-nav { justify-content: center; } }

/* One H1 size on phones on every template: page heroes, blog, posts, legal pages */
@media (max-width: 767px) {
  body :is(.zs-hero__title .elementor-heading-title, .zs-archive__title, .zs-post__title, .zs-page__title, .zs-404 h1, .zs-search h1) { font-size: 2.1rem !important; line-height: 1.2; }
}

/* Feature boxes: icon and text centred together */
body .zs-features .e-con.zs-feature { text-align: center; --align-items: center; align-items: center; }
body .zs-features .zs-feature__icon .elementor-icon-wrapper { text-align: center; }

/* Phones: content centred (titles, text, buttons, footer); long text, lists, forms and FAQ answers stay start-aligned */
@media (max-width: 767px) {
  body .e-con.zs-sec:not(.zs-faq) :is(.zs-head, .zs-head__main, .zs-split__text, .zs-cta__text, .zs-card__body) { text-align: center; --align-items: center; align-items: center; }
  body .e-con.zs-sec:not(.zs-faq) :is(.zs-sec__title, .zs-sec__intro, .zs-eyebrow, .zs-split__text .elementor-widget-text-editor) { text-align: center; }
  body .zs-checks { display: inline-block; text-align: start; }
  body .zs-footer, body .zs-footer :is(.zs-footer__col, .zs-footer__links, .zs-footer__contact, .zs-footer__legal) { text-align: center; justify-content: center; }
  body .zs-footer :is(.zs-footer__contact li, .zs-footer__legal) { justify-content: center; }
  body .zs-footer .e-con, body .zs-footer :is(.zs-footer__grid, .zs-footer__bottom) { --align-items: center; align-items: center; }
  body .e-con.zs-footer, body .zs-footer { --padding-bottom: 24px; }
}

/* Galleries: 2 per row on phones; big galleries (gallery pages) are a uniform grid, no large first tile, no holes */
@media (max-width: 767px) { body .zs-gallery .zs-grid { --cols: 2; grid-template-columns: repeat(2, minmax(0, 1fr)); } }
body .zs-gallery .zs-grid > .elementor-element:first-child:nth-last-child(n+13) { grid-column: auto; grid-row: auto; }
body .elementor .zs-gallery .zs-grid > .elementor-element:first-child:nth-last-child(n+13) img { aspect-ratio: 4 / 3; height: auto; }

/* Slider pause button: top corner of the hero, never over the hero buttons */
body .zs-hero .zs-hero__media > .zs-pause { inset-block-start: 14px; inset-block-end: auto; }
@media (max-width: 767px) { body .zs-hero .zs-hero__media > .zs-pause { inset-block-start: 10px; } }

/* ---------- Zap QA round 3 (הוילה הלבנה): typography, breadcrumbs, post, consent ---------- */
/* Hebrew headings: no negative tracking (heavy Hebrew letters touch); -0.5px at most */
body :is(h1, h2, h3, h4, h5, h6, .elementor-heading-title, .zs-hero__title .elementor-heading-title) { letter-spacing: 0 !important; }
/* Body text near-black, regular weight, 17px on desktop; only text on light grounds */
body .e-con.zs-sec:not(.zs-bg-dark, .zs-bg-primary, .zs-cta, .zs-hero:is(.zs-v-cover, .zs-v-inset, .zs-v-curve))
  :is(.zs-split__text, .zs-sec__intro, .zs-prose, .zs-faq__list, .zs-feature, .zs-cards--classic .zs-card__body, .zs-contact__info, .zs-hero__lead) :is(p, li) { color: var(--c-ink); font-weight: 400; }
body .zs-post-body .zs-prose :is(p, li) { color: var(--c-ink); font-weight: 400; }
@media (min-width: 768px) { body :is(.zs-sec p, .zs-sec li, .zs-prose p, .zs-prose li) { font-size: 1.0625rem; } }
body .zs-topbar :is(.elementor-heading-title, li, a, span) { font-weight: 400; }
/* Main menu weight 500 */
body .zs-menu > li > a { font-weight: 500; }
/* Breadcrumbs above the H1: small, centred on phones, white on photo heroes */
body .zs-hero__crumbs { font-size: .95rem; margin-bottom: 8px; }
body .zs-hero__crumbs :is(a, span) { color: inherit; }
body .zs-hero__crumbs a { text-decoration: none; }
body .zs-hero__crumbs a:hover { text-decoration: underline; }
@media (max-width: 767px) { body .zs-hero__crumbs, body .zs-hero__crumbs :is(.elementor-widget-container, nav, p) { text-align: center; justify-content: center; } }
body .zs-hero:is(.zs-v-cover, .zs-v-inset, .zs-v-curve) .zs-hero__crumbs, body .zs-hero:is(.zs-v-cover, .zs-v-inset, .zs-v-curve) .zs-hero__crumbs :is(a, span, p, nav) { color: #fff !important; text-shadow: 0 1px 8px rgb(0 0 0 / .45); }
/* Blog post: breadcrumbs, title, byline; centred on phones; air between prose headings and text */
@media (max-width: 767px) { body .zs-post-hero .zs-hero__text, body .zs-post-hero :is(.zs-hero__title, .zs-post__meta) { text-align: center; align-items: center; --align-items: center; } }
body .zs-prose :is(h2, h3) { margin-top: 1.6em; margin-bottom: .5em; line-height: 1.3; }
body .zs-prose :is(p, ul, ol) { margin-bottom: 1em; line-height: 1.75; }
/* Form consent: one sentence, the privacy link underlined */
body .zs-form__consent a { text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
/* Option: header.phone_round: true (a client's reviewer asked for the phone in a circle on phones) */
@media (max-width: 1024px) {
  body.zs-phone-round .zs-header__cta .elementor-button, body.zs-phone-round .zs-header__cta.zs-b .elementor-button { border: 2px solid var(--c-primary) !important; border-radius: 50% !important; }
}

/* ---------- Zap QA round 3 (פטוצ'ינה) ---------- */
/* Phones/tablets: one header row, menu button + logo + a plain phone icon (no big round button) */
@media (max-width: 1024px) {
  body .zs-header__cta .elementor-button, body .zs-header__cta.zs-b .elementor-button { border: 0; background: transparent; color: var(--c-ink); box-shadow: none; width: 44px; min-width: 44px; height: 44px; padding: 0; border-radius: 0; }
  body .zs-header__cta .elementor-button :is(svg, i) { width: 24px; height: 24px; font-size: 24px; }
  body .zs-header__cta .elementor-button-text { display: none; }
  body.zs-h-dark .zs-header__cta .elementor-button { color: var(--c-dark-ink); background: transparent; }
  /* open menu: white, thin dividers, active item marked by colour and a line only, sub-items indented without a ground, hover on every item */
  body .zs-nav { background: #fff; }
  body .zs-menu a, body .zs-menu .current-menu-item > a, body .zs-menu .current-menu-ancestor > a, body .zs-menu .sub-menu a { background: none !important; }
  body .zs-menu .current-menu-item > a, body .zs-menu .current-menu-ancestor > a { color: var(--c-primary); box-shadow: inset -3px 0 0 var(--c-primary); padding-inline-start: 12px; }
  body .zs-menu .sub-menu { padding: 0 20px 8px 0; }
  body .zs-menu .sub-menu li + li { border-top: 1px solid color-mix(in srgb, var(--c-line) 70%, transparent); }
  body .zs-menu a:hover, body .zs-menu a:focus-visible { color: var(--c-primary); text-decoration: underline; text-underline-offset: 6px; }
}
/* Footer: three equal columns; a bigger logo, centred with the about line in its column */
@media (min-width: 901px) { body .zs-footer__grid, body .elementor .e-con.zs-footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
body .zs-footer__logo img { max-height: 96px; height: 96px; width: auto; }
@media (min-width: 768px) { body .zs-footer .e-con.zs-footer__brand, body .zs-footer__brand { --align-items: center; align-items: center; text-align: center; } }
@media (max-width: 767px) {
  body .zs-footer__logo img { max-height: 80px; height: 80px; }
  body .zs-footer__grid, body .elementor .e-con.zs-footer__grid { gap: 20px; padding-block: 32px; }
  body .zs-footer :is(.zs-footer__contact li, .zs-menu li, .zs-footer__links li) { margin-block: 0; }
}
/* Contact page: air between the page head and the contact block */
body .e-con.zs-hero--page + .e-con.zs-contact { --padding-top: calc(var(--sec-y) + 24px); }
/* Linked cards: the whole card is the link; no corner arrow */
body .zs-cards--linked .e-con.zs-card__body::after { content: none; }
body .zs-cards--linked .e-con.zs-card__body { --padding-left: var(--padding-right, 24px); }
/* split · card: the text card and the photo share the same top and bottom */
body .elementor .e-con.zs-split.zs-v-card > .e-con-inner { align-items: center; }
/* design.align: center: section heads (title + intro) stacked and centred, card content and inner-page heads centred */
body.zs-align-center .e-con.zs-head, body.zs-align-center .e-con.zs-head.zs-head--split { display: flex; flex-direction: column; --flex-direction: column; align-items: center; --align-items: center; text-align: center; gap: 14px; }
body.zs-align-center .e-con.zs-head :is(.zs-sec__title, .zs-sec__intro, .zs-eyebrow, .elementor-heading-title) { text-align: center; }
body.zs-align-center .zs-sec__intro { max-width: 720px; margin-inline: auto; }
body.zs-align-center .zs-cards .e-con.zs-card__body { align-items: center; --align-items: center; text-align: center; }
body.zs-align-center .zs-cards .zs-card__icon .elementor-icon-wrapper { text-align: center; }
body.zs-align-center .e-con.zs-hero--page .e-con.zs-hero__text { align-items: center; --align-items: center; text-align: center; }
body.zs-align-center .zs-hero--page :is(.zs-hero__title, .zs-hero__lead) .elementor-heading-title, body.zs-align-center .zs-hero--page .zs-hero__lead { text-align: center; }
body.zs-align-center .zs-gallery .e-con.zs-head, body.zs-align-center .zs-faq .e-con.zs-head { margin-inline: auto; }
/* a title stacked over its intro gets air between them */
body .e-con.zs-head:not(.zs-head--split) { row-gap: 14px; --row-gap: 14px; gap: 14px; }
/* the header row grows with the 96 px logo (it touched the top edge) */
@media (min-width: 1025px) { body .zs-header__in, body .e-con.zs-header__in { min-height: 116px; --min-height: 116px; padding-block: 10px; } }
