/*
 * kayamadent.css — component styles for kayamadent.co.il (loaded by kayamadent-core.php).
 * Design language: navy / cyan, white cards with a cyan top bar, rounded 16px, soft shadows.
 * Dark hero band, pill buttons, "direct answer" block — class prefix rv-.
 *
 * RULES (decisions.md D7): logical properties ONLY (inline-start/end, block-start/end).
 * No left/right/margin-left/padding-right — the same sheet serves Hebrew (RTL) and
 * Russian/English (LTR). 05-local-scripts/css-check.js fails the build otherwise.
 *
 * Classes the admin can give a block from the editor (Advanced → Additional CSS class):
 *   rv-hero        group → dark full-bleed opening band (breadcrumb + H1 + lede inside)
 *   rv-hero-split  group inside rv-hero with 2 columns: text | image
 *   rv-answer      group → tinted "direct answer" block (D3)
 *   rv-card        group → white card with cyan top bar
 *   rv-cards-3     columns → 3 cards that stretch to equal height
 *   rv-steps       list/columns → numbered steps
 *   rv-chips       paragraph with <span> per tag
 *   rv-trust       group → thin trust row under the hero
 *   rv-band        group → dark closing band with CTA
 *   rv-table       table → comparison table ("suits / does not suit")
 *   rv-note        paragraph → small grey medical disclaimer
 */

.rv-blocks{
  overflow-x:clip;
  --rv-navy:#0B183F; --rv-navy-2:#071230;
  --rv-cyan:#25A9E7; --rv-blue:#176CAE;
  --rv-tint:#F2F8FD; --rv-tint-2:#E3EEF9;
  --rv-line:#D5E2F1; --rv-ink:#0B183F; --rv-ink-2:#4A5C7E; --rv-muted:#9FB4D4;
  --rv-wa:#25D366;
  --rv-shadow:0 18px 40px -24px rgba(11,24,63,.45);
  --rv-r:16px;
  --rv-font-h:'Rubik','Open Sans',system-ui,sans-serif;
  --rv-font-b:'Open Sans','Rubik',system-ui,sans-serif;
  color:var(--rv-ink);
  font-family:var(--rv-font-b);
}
.rv-blocks h1,.rv-blocks h2,.rv-blocks h3,.rv-blocks h4,.rv-blocks .wp-block-button__link,.rv-blocks .wp-block-navigation{font-family:var(--rv-font-h)}

/* ---------- focus (WCAG 2.4.7): one visible ring everywhere, keyboard only ---------- */
.rv-header :focus-visible,.rv-blocks :focus-visible,.rv-footer :focus-visible,.rv-wa:focus-visible,.rv-cookie :focus-visible{outline:3px solid var(--rv-blue,#176CAE); outline-offset:3px; border-radius:6px}
.rv-footer :focus-visible{outline-color:#fff}
.rv-blocks .wp-block-button__link:focus-visible{outline-offset:3px}

/* ---------- header ---------- */
/* no backdrop-filter: it makes the sticky header the containing block of the mobile menu overlay (position:fixed), which then clipped to 76 px */
.rv-header{position:sticky; inset-block-start:0; z-index:50; background:rgba(255,255,255,.97); border-block-end:1px solid var(--rv-line)}
.rv-header .rv-brand .wp-block-site-title{line-height:1.05}
.rv-header .rv-brand{flex-direction:column; align-items:flex-start; gap:0} /* the text fallback of kayamadent/logo: title over tagline */
.rv-header .rv-tagline{font-size:12px; color:var(--rv-ink-2); margin:0}
/* 2.1.0: the logo image (kayamadent/logo). Header 44 px, 56 px from 1024; the footer's white wordmark 36 px. */
.rv-logo{display:inline-flex; line-height:0}
.rv-header .rv-logo img{block-size:44px; inline-size:auto; max-inline-size:none}
@media (min-width:1024px){ .rv-header .rv-logo img{block-size:52px} } /* 2.2.2: 56 → 52 (206px wide) — the French row needed the 16px */
.rv-footer .rv-logo img{block-size:36px; inline-size:auto; margin-block-end:10px}
.rv-header .wp-block-navigation a{color:var(--rv-navy); text-decoration:none; padding:6px 2px}
.rv-header .wp-block-navigation a:hover{color:var(--rv-blue)}
.rv-header .wp-block-navigation .current-menu-item > a{color:var(--rv-blue)}
.rv-header .rv-header-cta .wp-block-button__link{background:var(--rv-navy); border-color:var(--rv-navy); white-space:nowrap}
.rv-header .rv-header-cta .wp-block-button__link:hover{background:var(--rv-blue); border-color:var(--rv-blue)}
.rv-header .wp-block-navigation__submenu-container{border:1px solid var(--rv-line); border-radius:12px; box-shadow:var(--rv-shadow); padding:8px}
/* long Russian/English labels: let the menu wrap before it collides with the phone button */
.rv-header .wp-block-navigation__container{flex-wrap:wrap; row-gap:2px; justify-content:flex-end}
.rv-header .wp-block-navigation{font-size:15px}
/* 2.2.2 (qa 2026-09-14 evening #4): Hebrew / Yiddish at 14px with 10px gaps — the Yiddish labels ("דער טיפול-פראצעס", "שאלות און
   תשובות") wrapped the row three deep at 15px. Width math in the language-switcher section below. */
[dir="rtl"] .rv-header .wp-block-navigation{font-size:14px}
[dir="rtl"] .rv-header .wp-block-navigation .wp-block-navigation__container{gap:4px 8px}
.rv-header .rv-header-cta .wp-block-button__link{padding-inline:16px}
/* qa 2026-09-14 #5: the RU/EN/FR/ES labels wrapped the desktop menu into two rows at 1440 (Hebrew is shorter and unchanged).
   LTR pages: 13px type, 8px gaps, 24px submenu toggles (WCAG 2.5.8 minimum), a narrower phone button, the tagline capped so the
   brand block stays ~230px, and the overlay menu up to 1300px (the six items do not fit a 1280px row). Measured live on /en/
   at 1440 with the fr/ru/es labels swapped in: one row in all four (fr with ~35px to spare). Note: <html> has dir="rtl" only
   in Hebrew — LTR pages carry no dir attribute, so the selector is :not([dir="rtl"]), never [dir="ltr"]. When the 5 flags and
   the Results/FAQ items return (16.9) the row is ~250px short again in LTR — then raise the overlay breakpoint or shorten labels. */
html:not([dir="rtl"]) .rv-header .wp-block-navigation{font-size:13px}
html:not([dir="rtl"]) .rv-header .wp-block-navigation .wp-block-navigation__container{gap:4px 6px} /* 2.2.2: 8 → 6 */
html:not([dir="rtl"]) .rv-header .wp-block-navigation .wp-block-navigation-submenu__toggle{min-inline-size:24px; padding-inline:0}
html:not([dir="rtl"]) .rv-header .rv-header-cta .wp-block-button__link{padding-inline:14px}
html:not([dir="rtl"]) .rv-header .rv-tagline{max-inline-size:160px}
html:not([dir="rtl"]) .rv-header .rv-header-row{gap:10px} /* 2.2.2: 14 → 10 */
/* 2.2.2: Yiddish too — its labels are the longest of the RTL pair and still wrap at 1280 (measured: 74px container); Hebrew fits (35px) */
@media (min-width:1024.01px) and (max-width:1300px){
  html:not([dir="rtl"]) .rv-header .wp-block-navigation__responsive-container-open,html[lang^="yi"] .rv-header .wp-block-navigation__responsive-container-open{display:flex !important}
  html:not([dir="rtl"]) .rv-header .wp-block-navigation__responsive-container:not(.is-menu-open),html[lang^="yi"] .rv-header .wp-block-navigation__responsive-container:not(.is-menu-open){display:none !important}
}
/* ---------- language switcher (2.2.2 — qa 2026-09-14 evening #4 + #5, owner: "במובייל התפריט של השפות דגלים נחתך") ----------
   kayamadent-core.php renders ONE compact control at every width: <details.rv-lang-dd> whose <summary> is the current flag +
   code + chevron (≈72px) and whose panel lists the six languages with their native names in 44px rows, absolutely positioned
   under the summary at the inline-end edge (works in RTL and LTR, works without JS). kayamadent.js closes it on Esc / outside
   click and clones the list into the mobile overlay menu as .rv-lang-overlay — a row of six, name under each flag, 44px+
   targets — so every language is reachable on a 360–430px phone (the old row put fr/es/yi off-screen at 390).
   WIDTH MATH at 1440 (header content box 1320px, three 14px gaps = 42):
     fixed: logo 56px tall × 480/121 = 222 · phone button ≈ 130 · language control 72  →  466px
     nav budget = 1320 − 42 − 466 = 812px.
     six flags in a row (before) were 372px → budget 512px → two rows in every language, three in Yiddish;
     28px flags with 4px gaps would still be ≈ 236px → budget 648px, short for fr / ru / yi.
     labels + 4 submenu toggles (24px) + gaps, after "Results" and "FAQ" moved under "More" (nav.js ×6):
     en ≈ 700 · es ≈ 740 · fr ≈ 760 · ru ≈ 780 at 13px Open Sans (LTR, 8px gaps) · he ≈ 600 · yi ≈ 760 at 14px Rubik (10px gaps)
     → one row with ≥ 30px to spare in all six. Re-measure here whenever a menu item, the logo height or the phone label changes. */
.rv-header .rv-lang-dd{position:relative; flex:0 0 auto}
.rv-header .rv-lang-toggle{list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:6px; min-block-size:44px; padding:6px 8px; border-radius:10px; border:1px solid transparent; color:var(--rv-navy); font-family:var(--rv-font-h); font-size:12px; font-weight:700; letter-spacing:.04em; line-height:1; user-select:none}
.rv-header .rv-lang-toggle::-webkit-details-marker{display:none}
.rv-header .rv-lang-toggle::marker{content:""}
.rv-header .rv-lang-toggle > span{display:inline-flex; align-items:center; gap:6px}
.rv-header .rv-lang-toggle .rv-lang-code{display:none} /* flag + chevron only (≈52px); the language name is in the aria-label / title */
.rv-header .rv-lang-toggle svg:not(.rv-lang-chev){inline-size:24px; block-size:18px; border-radius:3px; box-shadow:0 0 0 1px rgba(11,24,63,.15)}
.rv-header .rv-lang-chev{inline-size:12px; block-size:8px; color:var(--rv-ink-2); transition:transform .18s}
.rv-header .rv-lang-dd[open] .rv-lang-chev{transform:rotate(180deg)}
.rv-header .rv-lang-toggle:hover,.rv-header .rv-lang-dd[open] .rv-lang-toggle{border-color:var(--rv-line); background:#fff}
.rv-header .rv-lang{position:absolute; inset-block-start:calc(100% + 6px); inset-inline-end:0; z-index:80; min-inline-size:200px; display:grid; gap:2px; padding:6px; background:#fff; border:1px solid var(--rv-line); border-radius:12px; box-shadow:var(--rv-shadow)}
.rv-header .rv-lang-item{display:flex; align-items:center; gap:10px; min-block-size:44px; padding:6px 10px; border-radius:8px; border:1px solid transparent; color:var(--rv-navy); font-size:15px; font-weight:600; text-decoration:none; line-height:1.2; white-space:nowrap}
.rv-header .rv-lang-item svg{inline-size:24px; block-size:18px; border-radius:3px; box-shadow:0 0 0 1px rgba(11,24,63,.15); flex:0 0 auto}
.rv-header .rv-lang-item .rv-lang-code{display:none}
.rv-header a.rv-lang-item:hover{background:var(--rv-tint); color:var(--rv-blue)}
.rv-header .rv-lang-item.is-current{border-color:var(--rv-blue); background:rgba(37,169,231,.08)}
/* the overlay copy (kayamadent.js, <1024px where the overlay menu is used): six columns, flag over name, current one marked */
.rv-header .rv-lang-overlay,.rv-header .rv-cta-overlay{display:none}
.rv-header .is-menu-open .rv-lang-overlay{display:grid; grid-template-columns:repeat(6,1fr); gap:4px; inline-size:100%; box-sizing:border-box; margin-block-start:20px; padding:16px 8px 0; border-block-start:1px solid rgba(255,255,255,.15)}
.rv-header .is-menu-open .rv-lang-overlay .rv-lang-item{flex-direction:column; justify-content:center; gap:6px; min-block-size:56px; padding:6px 2px; color:#fff; font-size:11px; font-weight:600; white-space:normal; text-align:center; border-radius:10px; border:1px solid transparent; line-height:1.15}
.rv-header .is-menu-open .rv-lang-overlay .rv-lang-item svg{inline-size:28px; block-size:21px}
.rv-header .is-menu-open .rv-lang-overlay .rv-lang-item.is-current{border-color:var(--rv-cyan); background:rgba(37,169,231,.18)}
.rv-header .is-menu-open .rv-lang-overlay a.rv-lang-item:hover{background:rgba(255,255,255,.1); color:#fff}
@media (max-width:360px){ .rv-header .is-menu-open .rv-lang-overlay{grid-template-columns:repeat(3,1fr)} }
/* the phone button, hidden from the bar ≤1100px, comes back inside the overlay (qa #14: no phone / CTA in the menu) */
.rv-header .is-menu-open .rv-header-cta.rv-cta-overlay{display:flex; margin-block-start:16px; padding-inline:8px}
.rv-header .is-menu-open .rv-cta-overlay .wp-block-button__link{background:var(--rv-cyan); border-color:var(--rv-cyan); color:var(--rv-navy-2)}
@media (max-width:1100px){ .rv-header .rv-header-cta{display:none} }
@media (max-width:600px){ .rv-header .rv-lang-toggle{padding:6px} }
@media (max-width:900px){ .rv-header .rv-tagline{display:none} }

/* ---------- main wrapper (mirrors .gs-blocks .site-main) ---------- */
.rv-blocks .rv-main{padding-block-end:88px; font-size:17px; line-height:1.65}
.rv-blocks .rv-main > * + *{margin-block-start:26px}
.rv-blocks .rv-main .entry-content > * + *{margin-block-start:26px}
.rv-blocks .rv-main p{max-width:70ch; margin-inline:0 !important} /* qa 2026-09-14 #6: the constrained layout centres every child (margin-inline:auto !important) — a 70ch paragraph sat 220px off the heading; start-align it. !important because WP's rule is */
.rv-blocks .rv-main a:not(.wp-block-button__button):not(.wp-block-button__link){color:var(--rv-blue)}

/* ---------- hero band ---------- */
.rv-blocks .rv-hero{
  background:var(--rv-navy-2);
  background-image:radial-gradient(900px 400px at 85% -10%, rgba(37,169,231,.28), transparent 60%);
  margin-inline:calc(50% - 50vw) !important;
  padding:46px calc(50vw - 50% + 24px) 64px;
  margin-block:0 !important;
  /* the constrained layout caps children at contentSize (1160px); a full-bleed band must not be */
  max-width:none !important; width:auto;
}
.rv-blocks .rv-hero > *{max-width:1160px; margin-inline:0 !important} /* qa #6: the band's padding already centres the 1160px content box; auto margins centred the 22ch H1, the crumb and the lede each at its own offset */
.rv-blocks .rv-hero h1,.rv-blocks .rv-hero .wp-block-post-title{
  font-size:clamp(34px,4.6vw,54px); font-weight:900; letter-spacing:-.03em; line-height:1.05; color:#fff; margin:0; max-width:22ch;
}
.rv-blocks .rv-hero p.rv-crumb{color:var(--rv-muted); font-size:14px; margin:0 0 16px; max-width:none}
.rv-blocks .rv-hero p.rv-crumb a{color:var(--rv-muted)}
.rv-blocks .rv-hero p.rv-crumb strong{color:#fff; font-weight:600}
.rv-blocks .rv-hero .rv-lede,.rv-blocks .rv-hero p.rv-lede,.rv-blocks .rv-hero .wp-block-post-excerpt__excerpt{color:var(--rv-muted); font-size:18.5px; margin:16px 0 0; max-width:62ch}
.rv-blocks .rv-hero .rv-meta{color:var(--rv-muted); font-size:14px; margin-block-start:10px}
.rv-blocks .rv-hero .wp-block-buttons{margin-block-start:26px}
.rv-blocks .rv-hero .wp-block-button.is-style-outline .wp-block-button__link{border-color:rgba(255,255,255,.35); color:#fff}
.rv-blocks .rv-hero .wp-block-button.is-style-outline .wp-block-button__link:hover{background:var(--rv-cyan); border-color:var(--rv-cyan)}
.rv-blocks .rv-landing .rv-hero{padding-block:70px 90px}
.rv-blocks .rv-hero .rv-hero-split{display:grid; grid-template-columns:1.15fr .85fr; gap:40px; align-items:center}
.rv-blocks .rv-hero .rv-hero-split figure,.rv-blocks .rv-hero .rv-hero-split .wp-block-image{margin:0}
.rv-blocks .rv-hero .rv-hero-split img{width:100%; height:auto; border-radius:22px; box-shadow:0 30px 60px -30px rgba(0,0,0,.6); display:block}
.rv-blocks .rv-hero .rv-hero-split .wp-block-column{display:block}
.rv-blocks .rv-hero p.rv-kicker{color:var(--rv-cyan); font-weight:700; font-size:14px; letter-spacing:.08em; text-transform:uppercase; margin:0 0 14px; font-family:var(--rv-font-h)}
.rv-blocks .rv-hero .wp-block-post-title{margin-block-start:0}
@media (max-width:900px){ .rv-blocks .rv-hero .rv-hero-split{grid-template-columns:1fr} }
/* qa 2026-09-14 evening #8: the hero portrait was 455×255 inside a 500px column while content photos ran 1160px wide — the
   inverse of what a page should do. From 1024px the image column is the larger one (1 : 1.1) and the photo fills it (4:3,
   cover, at least 420px tall); the text column keeps its 22ch H1. */
@media (min-width:1024px){
  .rv-blocks .rv-hero .rv-hero-split{grid-template-columns:1fr 1.1fr; gap:48px}
  .rv-blocks .rv-hero .rv-hero-split img{aspect-ratio:4/3; object-fit:cover; min-block-size:420px}
}

/* ---------- trust row ---------- */
.rv-blocks .rv-trust{
  background:#fff; border:1px solid var(--rv-line); border-radius:var(--rv-r); box-shadow:var(--rv-shadow);
  margin-block-start:-34px !important; position:relative; z-index:5; padding:16px 24px;
  display:grid; grid-template-columns:repeat(4,1fr); gap:12px 24px;
}
.rv-blocks .rv-trust p{margin:0; font-size:15px; color:var(--rv-ink-2); max-width:none; padding-inline-start:26px; position:relative}
.rv-blocks .rv-trust p::before{content:""; position:absolute; inset-inline-start:0; inset-block-start:.5em; width:14px; height:14px; border-radius:50%; background:var(--rv-cyan); box-shadow:0 0 0 4px var(--rv-tint-2)}
.rv-blocks .rv-trust p strong{color:var(--rv-navy); display:block; font-family:var(--rv-font-h)}
@media (max-width:900px){ .rv-blocks .rv-trust{grid-template-columns:1fr 1fr} }
@media (max-width:560px){ .rv-blocks .rv-trust{grid-template-columns:1fr} }

/* ---------- headings ---------- */
.rv-blocks .rv-main h2.wp-block-heading{
  font-size:clamp(25px,2.9vw,36px); font-weight:800; letter-spacing:-.02em; line-height:1.18; color:var(--rv-navy);
  margin-block-start:60px; padding-block-start:22px; position:relative;
}
.rv-blocks .rv-main h2.wp-block-heading::before{
  content:""; position:absolute; inset-block-start:0; inset-inline-start:0; width:44px; height:3px; background:var(--rv-cyan); border-radius:3px;
}
.rv-blocks .rv-main h2.wp-block-heading.has-text-align-center::before{inset-inline-start:calc(50% - 22px)}
.rv-blocks .rv-main h3,.rv-blocks .rv-main h3.wp-block-heading{font-size:21px; font-weight:800; color:var(--rv-navy); margin:0 0 8px}
/* qa 2026-09-14 #12: a top-level h3 (legal pages) sat flush on the paragraph above it — same 26px rhythm as the flow, plus a little air */
.rv-blocks .rv-main .entry-content > h3,.rv-blocks .rv-main > h3{margin-block-start:30px}
.rv-blocks .rv-main h2 + p,.rv-blocks .rv-main h2 + .wp-block-columns{margin-block-start:14px}
.rv-blocks .rv-main p.rv-sub{color:var(--rv-ink-2); font-size:18px; margin-block-start:8px !important}

/* ---------- direct answer ---------- */
.rv-blocks .rv-answer{
  background:var(--rv-tint); border-inline-start:4px solid var(--rv-cyan);
  border-start-end-radius:14px; border-end-end-radius:14px; padding:26px 28px;
}
.rv-blocks .rv-answer p{font-size:18.5px; max-width:none; margin:0}
.rv-blocks .rv-answer p + p{margin-block-start:10px}

/* ---------- our position (D11: an opinion, in the network's voice) ---------- */
.rv-blocks .rv-position{
  border:1px solid var(--rv-line); border-inline-start:4px solid var(--rv-navy); border-radius:0 14px 14px 0;
  padding:22px 26px; background:#fff; position:relative;
}
.rv-blocks .rv-position::before{content:"“" / ""; position:absolute; inset-inline-start:14px; inset-block-start:-8px; font:900 44px/1 var(--rv-font-h); color:var(--rv-cyan); opacity:.5}
.rv-blocks .rv-position p{font-size:17.5px; color:var(--rv-navy); font-weight:600; max-width:none; margin:0}
.rv-blocks .rv-position p + p{margin-block-start:10px; font-weight:400; color:var(--rv-ink-2)}

/* ---------- buttons ---------- */
.rv-blocks .wp-block-buttons{gap:9px}
.rv-blocks .wp-block-button__link{
  font-weight:700; font-size:15.5px; padding:11px 22px; border-radius:100px;
  /* navy, not cyan: white on #25A9E7 is 2.65:1 — fails WCAG 1.4.3 (accessibility review 2026-09-16) */
  background:var(--rv-navy); color:#fff; border:1px solid var(--rv-navy); text-decoration:none;
  transition:background .18s,border-color .18s,color .18s,transform .18s; cursor:pointer;
}
.rv-blocks .wp-block-button__link:hover{background:var(--rv-blue); border-color:var(--rv-blue); color:#fff; transform:translateY(-2px)}
.rv-blocks .wp-block-button.is-style-outline .wp-block-button__link{background:transparent; border-color:var(--rv-line); color:var(--rv-blue)}
.rv-blocks .wp-block-button.is-style-outline .wp-block-button__link:hover{background:var(--rv-blue); border-color:var(--rv-blue); color:#fff}
.rv-blocks .wp-block-button.rv-btn-wa .wp-block-button__link{background:var(--rv-wa); border-color:var(--rv-wa)}
.rv-blocks .wp-block-button.rv-btn-wa .wp-block-button__link:hover{background:#1ebe5a; border-color:#1ebe5a}

/* ---------- cards ---------- */
.rv-blocks .rv-card{
  background:#fff; border:1px solid var(--rv-line); border-radius:var(--rv-r); padding:24px; box-shadow:var(--rv-shadow);
  position:relative; overflow:hidden; height:100%; display:flex; flex-direction:column; width:100%;
  transition:border-color .2s, transform .2s;
}
.rv-blocks .rv-card::before{content:""; position:absolute; inset-block-start:0; inset-inline:0; height:3px; background:var(--rv-cyan)}
.rv-blocks .rv-card:hover{border-color:var(--rv-cyan); transform:translateY(-3px)}
.rv-blocks .rv-card p{color:var(--rv-ink-2); font-size:15.5px; margin:0 0 10px; max-width:none}
.rv-blocks .rv-card p:last-child{margin-block-end:0}
.rv-blocks .rv-card p.rv-go{
  margin-block-start:auto; padding-block-start:14px; border-block-start:1px solid var(--rv-line);
  font-size:15px; display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;
}
.rv-blocks .rv-card p.rv-go a{color:var(--rv-blue); font-weight:700; text-decoration:none; position:relative; z-index:2}
.rv-blocks .rv-card p.rv-go a:hover{text-decoration:underline}
/* qa 2026-09-14 #4: the arrow after a "go" link is drawn here, not typed in the content — → by default, ← under <html dir="rtl">
   (LTR pages have no dir attribute). The PHP blocks and build-blocks.js emit no arrow character any more. */
.rv-blocks p.rv-go a.rv-arrow::after{content:" →" / ""}
[dir="rtl"] .rv-blocks p.rv-go a.rv-arrow::after{content:" ←" / ""}
.rv-blocks .rv-card h3 a.rv-cardlink{color:var(--rv-navy); text-decoration:none}
.rv-blocks .rv-card h3 a.rv-cardlink::after{content:""; position:absolute; inset:0; z-index:1}
/* qa 2026-09-14 #15: .rv-card is a flex column and the constrained layout gives every child margin-inline:auto !important —
   a one-line h3, the icon and the "go" line shrank to content width and centred, a two-line h3 did not. Start-align all of them. */
.rv-blocks .rv-card > *{margin-inline:0 !important; inline-size:100%; box-sizing:border-box}
.rv-blocks .rv-card h3,.rv-blocks .rv-card p{text-align:start}
.rv-blocks .rv-card .rv-ico{width:44px; height:44px; border-radius:12px; background:var(--rv-tint-2); color:var(--rv-blue); display:grid; place-items:center; margin-block-end:14px; font-size:22px}
.rv-blocks .wp-block-columns{gap:18px}
.rv-blocks .wp-block-columns .wp-block-column{display:flex; flex-direction:column}
.rv-blocks .rv-cards-3 .wp-block-column > .rv-card{flex:1}
/* qa 2026-09-14 evening #6: four cards side by side are 180px each at 820 — 2×2 between 641 and 1023px (core stacks columns
   under 782px with !important, hence the !important and the :not() that matches core's own selector) */
@media (min-width:641px) and (max-width:1023px){
  .rv-blocks .wp-block-columns.rv-cards-4{flex-wrap:wrap !important}
  .rv-blocks .wp-block-columns.rv-cards-4:not(.is-not-stacked-on-mobile) > .wp-block-column{flex-basis:calc(50% - 9px) !important; flex-grow:0}
}
.rv-blocks .rv-card.is-dark{background:var(--rv-navy); border-color:var(--rv-navy); color:#fff}
.rv-blocks .rv-card.is-dark h3,.rv-blocks .rv-card.is-dark p{color:#fff}
.rv-blocks .rv-card.is-dark p{color:var(--rv-muted)}
.rv-blocks a.rv-tel{font-weight:700; white-space:nowrap}
.rv-blocks .rv-nowrap,.rv-nowrap{white-space:nowrap} /* qa 2026-09-14 #11: "All-on-4", phone numbers — never broken at the hyphen */

/* ---------- grids from dynamic blocks ---------- */
.rv-blocks .rv-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px}
.rv-blocks .rv-grid.rv-quotes{grid-template-columns:repeat(3,1fr)}
@media (max-width:1024px){ .rv-blocks .rv-grid{grid-template-columns:repeat(2,1fr)} }
@media (max-width:640px){ .rv-blocks .rv-grid{grid-template-columns:1fr} }

/* ---------- steps ---------- */
.rv-blocks .rv-steps{counter-reset:rv; display:grid; grid-template-columns:repeat(5,1fr); gap:14px; list-style:none; padding:0; margin:0}
.rv-blocks .rv-steps > li,.rv-blocks .rv-steps > .wp-block-column{counter-increment:rv; background:#fff; border:1px solid var(--rv-line); border-radius:var(--rv-r); padding:22px 20px 20px; position:relative; display:block}
.rv-blocks .rv-steps > li::before,.rv-blocks .rv-steps > .wp-block-column::before{
  content:counter(rv); display:grid; place-items:center; width:34px; height:34px; border-radius:50%;
  background:var(--rv-navy); color:#fff; font-family:var(--rv-font-h); font-weight:800; font-size:15px; margin-block-end:12px;
}
.rv-blocks .rv-steps h3{font-size:17px; margin:0 0 6px}
.rv-blocks .rv-steps p{font-size:14.5px; color:var(--rv-ink-2); margin:0; max-width:none}
@media (max-width:1024px){ .rv-blocks .rv-steps{grid-template-columns:repeat(3,1fr)} }
@media (max-width:640px){ .rv-blocks .rv-steps{grid-template-columns:1fr} }

/* ---------- chips ---------- */
.rv-blocks p.rv-chips{display:flex; flex-wrap:wrap; gap:6px; margin:2px 0 12px; max-width:none}
.rv-blocks p.rv-chips span{font-size:13px; font-weight:600; background:var(--rv-tint-2); color:var(--rv-blue); border-radius:100px; padding:5px 12px}

/* ---------- comparison table ---------- */
.rv-blocks .rv-table table{border-collapse:separate; border-spacing:0; width:100%; border:1px solid var(--rv-line); border-radius:var(--rv-r); overflow:hidden; font-size:15.5px}
.rv-blocks .rv-table th{background:var(--rv-tint); color:var(--rv-navy); font-family:var(--rv-font-h); font-weight:800; text-align:start; padding:14px 16px; border-block-end:1px solid var(--rv-line)}
.rv-blocks .rv-table td{padding:12px 16px; border-block-end:1px solid var(--rv-line); color:var(--rv-ink-2); vertical-align:top}
.rv-blocks .rv-table tr:last-child td{border-block-end:0}
.rv-blocks .rv-table td:first-child{color:var(--rv-navy); font-weight:600}

/* ---------- FAQ (core/details) ---------- */
.rv-blocks .wp-block-details,.rv-blocks .rv-faq details{background:#fff; border:1px solid var(--rv-line); border-radius:14px; padding:0; margin-block-start:10px !important}
.rv-blocks .rv-faq{margin-block-start:14px}
.rv-blocks .wp-block-details summary{
  list-style:none; cursor:pointer; padding:18px 22px; font-family:var(--rv-font-h); font-weight:700; font-size:17.5px; color:var(--rv-navy);
  display:flex; justify-content:space-between; align-items:center; gap:14px;
}
.rv-blocks .wp-block-details summary::-webkit-details-marker{display:none}
.rv-blocks .wp-block-details summary::after{content:"+" / ""; color:var(--rv-cyan); font-size:24px; font-weight:800; line-height:1; flex-shrink:0}
.rv-blocks .wp-block-details[open] summary::after{content:"–" / ""}
.rv-blocks .wp-block-details > p,.rv-blocks .wp-block-details .rv-faq-a{padding:0 22px 20px; color:var(--rv-ink-2); font-size:16.5px}
.rv-blocks .wp-block-details .rv-faq-a p{max-width:none; margin:0 0 10px}

/* ---------- before / after ---------- */
.rv-blocks .rv-pair{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-block-end:14px}
.rv-blocks .rv-pair figure{margin:0; position:relative; border-radius:12px; overflow:hidden; background:var(--rv-tint-2)}
.rv-blocks .rv-pair img{width:100%; height:100%; object-fit:cover; display:block; aspect-ratio:4/3}
.rv-blocks .rv-pair .rv-tag{position:absolute; inset-block-start:10px; inset-inline-start:10px; background:rgba(11,24,63,.85); color:#fff; font-size:12px; font-weight:700; padding:4px 10px; border-radius:100px; font-family:var(--rv-font-h)}
.rv-blocks .rv-pair .rv-tag-after{background:var(--rv-cyan)}
.rv-blocks .rv-card-case h3{margin-block-start:4px}

/* ---------- clinics ---------- */
.rv-blocks .rv-clinics{grid-template-columns:repeat(5,1fr)} /* qa 2026-09-14 #9 + Haifa 2026-09-14: five clinics on one row (a 3/4-column grid orphaned the last card) */
.rv-blocks .rv-card-clinic p.rv-addr{color:var(--rv-navy); font-weight:600}
@media (max-width:1024px){ .rv-blocks .rv-clinics{grid-template-columns:repeat(3,1fr)} } /* 3 + 2, not 2 + 2 + 1 */
@media (max-width:640px){ .rv-blocks .rv-clinics{grid-template-columns:1fr} }

/* ---------- testimonials ---------- */
.rv-blocks blockquote.rv-quote{margin:0; font-style:normal; border:1px solid var(--rv-line)}
.rv-blocks blockquote.rv-quote::before{background:var(--rv-navy)}
.rv-blocks blockquote.rv-quote p{font-size:16.5px; color:var(--rv-ink); quotes:none}
.rv-blocks blockquote.rv-quote footer{margin-block-start:auto; padding-block-start:12px; color:var(--rv-ink-2); font-size:14px; font-weight:600}

/* ---------- lead form ---------- */
.rv-blocks .rv-lead{background:#fff; border:1px solid var(--rv-line); border-radius:var(--rv-r); padding:28px; box-shadow:var(--rv-shadow); display:grid; gap:14px; max-width:560px}
.rv-blocks .rv-lead h2,.rv-blocks .rv-lead h3{margin:0; font-size:21px}
.rv-blocks .rv-contact-card h2{font-size:21px; margin:0 0 8px}
/* qa 2026-09-14 evening #9: an h2 inside a card inherited the section-heading rule (.rv-main h2.wp-block-heading: 60px top margin,
   22px padding, cyan ::before) — ~90px of air above "יצירת קשר" and the clinic address. The card already has its cyan top bar. */
.rv-blocks .rv-main .rv-card h2.wp-block-heading,.rv-blocks .rv-main .rv-lead h2.wp-block-heading{margin-block-start:0; padding-block-start:0; font-size:21px; line-height:1.25}
.rv-blocks .rv-main .rv-card h2.wp-block-heading::before,.rv-blocks .rv-main .rv-lead h2.wp-block-heading::before{display:none}
.rv-blocks .rv-main .rv-card h2.wp-block-heading + p{margin-block-start:8px}
/* qa 2026-09-14 evening #10: build-blocks wraps the home "results" H2 + case-grid in .rv-results; with no case the grid prints
   nothing (kayamadent-core.php 2.2.2) and the whole section, heading included, disappears instead of an empty dashed frame */
.rv-blocks .rv-results:not(:has(.rv-cases)){display:none}
.rv-blocks .rv-lead label{display:grid; gap:6px; font-size:14px; font-weight:600; color:var(--rv-ink-2)}
.rv-blocks .rv-lead input,.rv-blocks .rv-lead select,.rv-blocks .rv-lead textarea{
  font:inherit; font-size:16px; padding:11px 14px; border:1px solid #7C93B8; border-radius:10px; background:#fff; color:var(--rv-ink); width:100%; box-sizing:border-box; /* qa 2026-09-14 #2: content-box + 14px padding overflowed the card; the select was already border-box */ /* #7C93B8 on #fff = 3.2:1 (WCAG 1.4.11; --rv-line was 1.31:1) — a11y-review 2026-09-14 #4 */
}
.rv-blocks .rv-lead input:focus,.rv-blocks .rv-lead select:focus,.rv-blocks .rv-lead textarea:focus{outline:3px solid var(--rv-blue); outline-offset:1px; border-color:var(--rv-cyan)}
.rv-blocks .rv-lead .rv-hp{position:absolute; inset-inline-start:-9999px; width:1px; height:1px; opacity:0}
.rv-blocks .rv-lead .rv-consent{font-size:12.5px; color:var(--rv-ink-2); margin:0; max-width:none}
.rv-blocks .rv-lead .wp-block-buttons{margin:0}
.rv-blocks .rv-lead .rv-lead-msg{margin:0; font-weight:600; color:var(--rv-blue); min-height:1.2em; max-width:none}
.rv-blocks .rv-lead.is-ok .rv-lead-msg{color:#0F7A45}   /* 5.1:1 on #fff (was #118a4e, 4.40:1) — a11y-review 2026-09-14 #7 */
.rv-blocks .rv-lead.is-err .rv-lead-msg{color:#b3261e}
/* a11y-review 2026-09-14 #3: per-field error text (filled by kayamadent.js), required legend + marker, invalid-field border */
.rv-blocks .rv-lead .rv-field-err{display:block; font-size:13px; font-weight:600; color:#b3261e}
.rv-blocks .rv-lead .rv-field-err[hidden]{display:none}
.rv-blocks .rv-lead .rv-required{font-size:13px; color:var(--rv-ink-2); margin:0; max-width:none}
.rv-blocks .rv-lead .rv-req{color:#b3261e}
.rv-blocks .rv-lead [aria-invalid="true"]{border-color:#b3261e}
/* visually hidden, read by screen readers — "(opens in a new window)" after every target=_blank link (#15) */
.rv-sr{position:absolute; inline-size:1px; block-size:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0}
.rv-blocks .rv-lead.is-busy button{opacity:.6; pointer-events:none}
.rv-blocks .rv-contact-split{display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:start}
.rv-blocks .rv-contact-split .rv-card{height:auto}
@media (max-width:860px){ .rv-blocks .rv-contact-split{grid-template-columns:1fr} }

/* ---------- closing band ---------- */
.rv-blocks .rv-band{
  background:var(--rv-navy); color:#fff; border-radius:20px; padding:34px 36px; margin-block-start:56px !important;
  display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
}
.rv-blocks .rv-band h2.wp-block-heading{color:#fff; margin:0; padding:0; font-size:clamp(22px,2.4vw,30px)}
.rv-blocks .rv-band h2.wp-block-heading::before{display:none}
.rv-blocks .rv-band p{color:var(--rv-muted); margin:6px 0 0; max-width:52ch}
.rv-blocks .rv-band .wp-block-buttons{margin:0}
.rv-blocks .rv-band .wp-block-button.is-style-outline .wp-block-button__link{border-color:rgba(255,255,255,.35); color:#fff}

/* ---------- misc ---------- */
.rv-blocks p.rv-note{font-size:13.5px; color:var(--rv-ink-2); border-block-start:1px dashed var(--rv-line); padding-block-start:12px; max-width:none}
.rv-blocks .wp-block-query-no-results{border:1px dashed var(--rv-line); border-radius:14px; padding:26px; color:var(--rv-ink-2)}
.rv-blocks .wp-block-query-no-results p{margin:0}
.rv-blocks .rv-archive .wp-block-post-template{gap:18px}
.rv-blocks .rv-archive .wp-block-post-featured-image img{border-radius:14px; aspect-ratio:3/2; object-fit:cover; width:100%}
.rv-blocks .rv-archive .wp-block-post-title a{color:var(--rv-navy); text-decoration:none}
.rv-blocks .rv-archive h2.wp-block-post-title{font-size:21px; margin:10px 0 6px}
.rv-blocks .rv-article .rv-article-img img{border-radius:18px; max-height:420px; object-fit:cover; width:100%}
/* qa 2026-09-14 evening #8: content photos are capped at 520px tall (cover-cropped, rounded like the hero) instead of filling the
   1160px column (the about-page portrait was ~1,800px tall). build-blocks.js adds .is-portrait to a figure whose file name says
   "portrait" / "armchair": from 1024px it floats at the inline-start edge, 42% wide, up to 640px tall, and the text runs beside it.
   Siblings after the float get their own block-formatting context so a tinted answer box or an h2 underline sits beside the
   photo, not underneath it; wide constructs (columns, grids, bands, the contact split) clear it. */
.rv-blocks .rv-main .entry-content > figure.wp-block-image{margin-inline:0 !important; inline-size:auto; max-inline-size:100%; box-sizing:border-box} /* auto, not 100%: a block-formatting-context figure beside the floated portrait shrinks to the remaining width instead of dropping below it */
.rv-blocks .rv-main .entry-content > figure.wp-block-image img{inline-size:100%; block-size:auto; max-block-size:520px; object-fit:cover; border-radius:22px; display:block}
@media (min-width:1024px){
  .rv-blocks .rv-main .entry-content > figure.wp-block-image.is-portrait{float:inline-start; inline-size:42%; max-inline-size:460px; margin-inline-end:36px !important; margin-block:0 12px}
  .rv-blocks .rv-main .entry-content > figure.wp-block-image.is-portrait img{max-block-size:640px; block-size:auto}
  .rv-blocks .rv-main .entry-content > figure.is-portrait ~ :where(p,h2,h3,ul,ol,figure,.rv-answer,.rv-position,.wp-block-details){display:flow-root}
  .rv-blocks .rv-main .entry-content > figure.is-portrait ~ :where(.wp-block-columns,.rv-grid,.rv-band,.rv-contact-split,.rv-steps,.wp-block-buttons){clear:both}
}
.rv-blocks [hidden]{display:none !important}
.rv-blocks img{max-width:100%; height:auto}

/* ---------- footer ---------- */
.rv-footer{margin-block-start:0}
.rv-footer a{color:#fff}
.rv-footer .rv-footer-h{color:#fff; font-size:17px; margin:0 0 10px}
.rv-footer .rv-footer-lines,.rv-footer .rv-footer-about{color:var(--rv-muted); font-size:15px; line-height:1.8}
.rv-footer .rv-footer-lines a{color:#fff; text-decoration:none}
.rv-footer .wp-block-navigation a{color:var(--rv-muted); text-decoration:none; font-size:15px}
.rv-footer .wp-block-navigation a:hover{color:#fff}
.rv-footer .rv-footer-sep{opacity:.35; margin-block:30px 16px}
.rv-footer .rv-footer-legal{color:var(--rv-muted); font-size:13px; margin:0; max-width:none}

/* ---------- floating WhatsApp ---------- */
.rv-wa{
  position:fixed; inset-block-end:22px; inset-inline-end:22px; z-index:60;
  display:flex; align-items:center; gap:8px; background:var(--rv-wa); color:var(--rv-navy-2); text-decoration:none; /* navy on green 9:1; white was 1.98:1 */
  padding:12px 16px 12px 14px; border-radius:100px; box-shadow:0 14px 30px -10px rgba(0,0,0,.4); font-family:var(--rv-font-h); font-weight:700; font-size:15px;
  transition:transform .18s;
}
.rv-wa:hover{transform:translateY(-2px); color:var(--rv-navy-2)}
.rv-wa-box{display:contents}
@media (max-width:640px){ .rv-wa span{display:none} .rv-wa{padding:14px} }

/* ---------- language specifics ---------- */
.rv-lang-he .rv-blocks,.rv-blocks.rv-lang-he{font-feature-settings:normal}
/* yi (Yiddish, added 2026-09-14): Hebrew script, RTL. Polylang marks the language RTL, so <html dir="rtl"> and every
   [dir="rtl"] rule above apply exactly as in Hebrew; :lang(yi) mirrors the Hebrew feature settings in case the body class
   is missing (preview, editor). Sixth flag in .rv-lang - re-measure the LTR header row at 1440 (qa #5). */
.rv-lang-yi .rv-blocks,.rv-blocks.rv-lang-yi,:lang(yi) .rv-blocks{font-feature-settings:normal}
:lang(ru) .rv-blocks h1,:lang(ru) .rv-blocks h2{letter-spacing:-.01em}

/* ---------- responsive ---------- */
@media (max-width:1024px){ .rv-blocks .wp-block-button__link{padding:13px 20px} }
@media (max-width:640px){
  .rv-blocks .rv-hero{padding-inline:calc(50vw - 50% + 18px)}
  .rv-blocks .rv-band{padding:26px 22px}
  .rv-blocks .rv-lead{padding:20px}
}
@media (prefers-reduced-motion:reduce){ .rv-blocks *{transition:none !important} }

/* ---------- consent line + privacy notice in the lead form ---------- */
.rv-blocks .rv-lead .rv-notice{font-size:13px; color:var(--rv-ink-2); line-height:1.5; margin:4px 0 0; max-width:none}
.rv-blocks .rv-lead label.rv-consent{display:flex; gap:10px; align-items:flex-start; font-size:14px; color:var(--rv-ink); margin:6px 0 0}
.rv-blocks .rv-lead label.rv-consent input{inline-size:20px; block-size:20px; margin:2px 0 0; flex:0 0 auto; accent-color:var(--rv-navy)}
.rv-blocks .rv-lead label.rv-consent a{color:var(--rv-blue)}
.rv-footer .rv-footer-legal a{color:inherit; text-decoration:underline}

/* ---------- cookie notice ---------- */
.rv-cookie{position:fixed; inset-block-end:16px; inset-inline-start:16px; z-index:70; max-inline-size:min(520px,calc(100vw - 32px));
  background:#fff; color:#0B183F; border:1px solid #D5E2F1; border-radius:16px; box-shadow:0 18px 40px -20px rgba(11,24,63,.5);
  padding:16px 18px; font-family:'Open Sans','Rubik',system-ui,sans-serif; font-size:14px; line-height:1.5}
.rv-cookie p{margin:0 0 12px}
.rv-cookie a{color:#176CAE}
.rv-cookie-btns{display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end}
.rv-cookie-btn{font:inherit; font-weight:700; border-radius:100px; padding:9px 16px; min-block-size:40px; cursor:pointer; border:1px solid #0B183F; background:#fff; color:#0B183F}
.rv-cookie-btn.is-primary{background:#0B183F; color:#fff}
.rv-cookie-btn:hover{background:#176CAE; border-color:#176CAE; color:#fff}
/* design 2026-09-14 evening #9: on desktop the notice was a 500×130px card over the hero's trust row — from 1024px it is one
   64px row across the bottom (text | buttons). [hidden] must still win, the row rule sets display. */
.rv-cookie[hidden]{display:none !important}
@media (min-width:1024px){
  .rv-cookie{inset-inline:16px; inset-block-end:16px; max-inline-size:none; display:flex; align-items:center; gap:20px; padding:12px 20px}
  .rv-cookie p{margin:0; flex:1 1 auto}
  .rv-cookie-btns{flex:0 0 auto; flex-wrap:nowrap}
}

/* ---------- responsive fixes (2026-09-16 review, 375 px: page scrolled sideways by 26 px) ---------- */
.rv-blocks .rv-card,.rv-cookie{box-sizing:border-box}            /* content-box + padding pushed cards past the viewport */
.rv-blocks .rv-grid > *,.rv-blocks .rv-clinics > *{min-inline-size:0}
/* qa 2026-09-14 evening #6: overflow-wrap:anywhere broke "embarrasse|s" mid-word in 180px cards at 820 — break-word only breaks a
   word that cannot fit a line by itself, hyphens:auto lets the Latin languages hyphenate (needs the html lang, which every page has) */
.rv-blocks .rv-card{overflow-wrap:break-word; hyphens:auto}
.rv-header .wp-block-navigation__responsive-container-open{padding:10px; margin:-10px}   /* 24 px icon → 44 px target */
/* qa 2026-09-14 #14: the float used to be hidden while the notice was open (first-page conversions depend on it) — keep it, lifted above the notice; --rv-cookie-h is set by kayamadent.js from the notice's height */
body.rv-cookie-open .rv-wa{inset-block-end:calc(var(--rv-cookie-h,160px) + 30px)}
@media (max-width:600px){ .rv-cookie{inset-inline-start:8px; inset-block-end:8px; max-inline-size:calc(100vw - 16px); padding:14px; font-size:13px; line-height:1.4; max-block-size:38vh; overflow:auto} .rv-cookie p{margin-block-end:8px} .rv-cookie-btn{padding:7px 14px; min-block-size:40px} } /* qa #14: ~150px of a 390px screen was the notice, covering the hero's second CTA */
/* mobile overlay menu: start-aligned (the desktop flex-end rule leaked in), items 44 px tall, no float over it */
.rv-header .is-menu-open .wp-block-navigation__container{justify-content:flex-start; align-items:flex-start; padding-inline:8px}
.rv-header .is-menu-open .wp-block-navigation-item__content{padding:10px 4px; font-size:17px}
.rv-header .is-menu-open .wp-block-navigation__submenu-container{border:0; box-shadow:none; padding:0 16px}
body:has(.is-menu-open) .rv-wa,body:has(.is-menu-open) .rv-cookie{display:none}
/* a11y-review 2026-09-14 #5: the 4 desktop submenu toggles measured 9×9 px (WCAG 2.5.8 needs 24, 44 preferred) — 44×44 target around the 12 px icon.
   #16: the overlay's close button was exactly 24×24 → 44; the first overlay item was 28 px tall → every item ≥44 (target, not spacing) */
/* 2.2.2: 28px wide (WCAG 2.5.8 minimum is 24), still 44px tall — five 44px-wide toggles cost 220px of the Hebrew/Yiddish row and wrapped it; the overlay (<1024px) keeps 44×44 */
.rv-header .wp-block-navigation-submenu__toggle{min-inline-size:28px; min-block-size:44px; display:inline-grid; place-items:center; padding:10px 2px; margin-block:-10px}
.rv-header .is-menu-open .wp-block-navigation-submenu__toggle{min-inline-size:44px; padding:10px}
.rv-header .wp-block-navigation__responsive-container-close{padding:10px; margin:-10px; min-inline-size:44px; min-block-size:44px}
.rv-header .is-menu-open .wp-block-navigation-item__content{min-block-size:44px; display:flex; align-items:center}
/* qa 2026-09-14 evening #14: in the overlay the parent items read smaller than their children. Parents 19px bold, children
   15.5px regular in a tighter 40px rhythm, toggles without a box — the 8 + 20 items fit ~2 screens instead of 3. */
/* selectors carry .wp-block-navigation__responsive-container.is-menu-open: core's overlay rules have the same shape and would tie (and win, loading later) otherwise — measured 2026-09-14 (sub-item 55px tall, 26px submenu padding-top) */
.rv-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{gap:2px}
.rv-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.has-child > .wp-block-navigation-item__content{font-size:19px; font-weight:700}
.rv-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container{padding:2px 12px 8px; gap:0}
.rv-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item{margin:0}
.rv-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content{font-size:15.5px; font-weight:400; min-block-size:40px; padding:4px 6px; opacity:.92}
.rv-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle{border:0; background:transparent; color:inherit}
/* tablet (600–1024 px): WP collapses the menu only under 600 px; a 12-item RU/EN menu wrapped into three rows there, so use the overlay menu up to 1024 px */
@media (min-width:600px) and (max-width:1024px){
  .rv-header .wp-block-navigation__responsive-container-open{display:flex !important}
  .rv-header .wp-block-navigation__responsive-container:not(.is-menu-open){display:none !important}
}
/* 50vw in the full-bleed hero includes the scrollbar, so the band overhangs by the scrollbar width; overflow on <body> propagates
   to the viewport and clips nothing — clip on the page wrapper instead */
.wp-site-blocks{overflow-x:clip}

/* seo-review 2026-09-14 #9: the clinic card prints the address as <address> (browsers italicise it) and embeds a lazy map */
.rv-blocks address.rv-addr{font-style:normal; margin-block:0 8px}
.rv-blocks .rv-map{display:block; inline-size:100%; block-size:320px; border:0; border-radius:12px; margin-block-start:16px}
.rv-blocks .rv-reviewed{color:var(--rv-ink-2); font-size:14px; margin-block:-8px 24px}
