/* restore extras — generated by restore_04_polish.py */

/* Consent overlays: the restore ships no analytics or third-party tracking at all, so there
   is nothing to consent to. Their scripts are gone too, meaning the banner can never be
   dismissed and would cover the top of every page. Removing the markup is unreliable when a
   JS bundle re-renders it, so it is hidden here as well. */
.cookies-banner, .cookies-banner-content, .cookie-banner, .cookie-consent, .cookie-notice,
.cc-window, .cc-banner, #cookie-law-info-bar, #cookieChoiceInfo, .gdpr-banner,
#tarteaucitronRoot, .consent-overlay, .cookiebar {
  display: none !important;
}
body.cookie-banner-open, body.has-cookie-banner, html.cookies-open {
  overflow: auto !important;
}

/* Dead account/login modals left by the CMS (no backend on a static host) */
.modal-login, #loginModal, .login-modal { display: none !important; }

/* Carousel slots the platform's JS bundles would have filled at runtime: without a working
   bundle they stay as <img> elements with no src and render as broken-image icons. Nothing is
   lost by hiding them — they never had content in the restore. */
img:not([src]), img[src=""], img[src="#"] { display: none !important; }

/* The client's backlink block must read as the page's own copy. Where a theme only colours
   links inside specific containers, the anchor would otherwise look like plain text — inherit
   the surrounding colour but keep an underline so it is still visibly a link. */
.content-wraparea a { color: inherit; text-decoration: underline; }

/* A few px of horizontal overflow on phones (an absolutely-positioned login list, a wide footer
   logo) makes the whole page pannable sideways, which reads as broken.
   NB: use `clip`, never `hidden`, and never on html together with height:100%. `overflow:hidden`
   turns the element into a scroll container: on themes that set html{height:100%} it stops body's
   overflow propagating to the viewport, the window stops scrolling entirely and every
   scroll-driven behaviour (sticky nav, back-to-top, in-page anchors, PageDown/End) dies.
   `clip` suppresses the sideways pan without creating a scroll container. */
body { overflow-x: clip; }
/* ---- end generated block; anything below is preserved across re-runs ---- */

/* =================================================================================================
   firsthealth.pt finishing pass, 2026-09-10. Everything below was written against a measurement,
   named in the comment above it, and re-measured in a browser afterwards.
   ================================================================================================= */

/* [1] THE HERO. LayerSlider was initialised `responsive: false` inside a hard-coded 940px box, so
   at 390 the DOCUMENT was 940px wide: a phone visitor saw the left 390px of a 900px banner and
   550px of nothing beside it (measured: documentElement.scrollWidth 940 in a 390 viewport, on /
   and on the old /homepage/ duplicate, which the 2026-09-11 rework pass deleted). The slider held
   ONE slide and no controls, so o6_fh_repairs.py rebuilt it as
   the picture and the link it always was; this sizes it to the picture. */
.fh-hero { margin: 0 auto; }
.fh-hero a { display: block; }
.fh-hero img { display: block; width: 100%; height: auto; }

/* [2] THE MAP that replaced the google-maps-ready widget on every page and the live
   www.google.com/maps/embed iframe on /contactos/. The credit is real text below the picture, not
   burned into the raster only: burned-in attribution is not selectable and its link does not work,
   and an absolutely-positioned overlay is what covered the street names on an earlier site. */
.fh-map { margin: 0 0 6px; }
.fh-map img { display: block; width: 100%; border: 0; }
.fh-map--footer img { height: 180px; object-fit: cover; object-position: center; }
.fh-map--wide img { height: 260px; object-fit: cover; object-position: center; }
@media (max-width: 767px) { .fh-map--wide img { height: 200px; } }
.fh-map-credit { margin: 6px 0 0; font-size: 12px !important; line-height: 1.5;
                 color: #5a5a5a !important; }
.fh-map-credit a { display: inline-block !important; padding: 6px 2px !important;
                   color: #2f6ea8 !important; text-decoration: underline; }

/* [3] THE MEDIS CELL. Its logo is one of the four images the archive lost and a trademark may not
   be redrawn, so the cell carries the insurer's NAME in the same bordered box the other eight
   logos sit in. The caption that used to repeat the name underneath was removed with it. */
/* display and width carry !important because the theme sets .vc_single_image-wrapper to
   inline-block: without them the plate rendered as a bare 120px-wide word floating at the top of
   a 300px cell, which is measurably worse than the broken image it replaced. Measured after the
   change: 293x300, the same box the eight surviving logos occupy. */
.fh-nameplate { display: flex !important; align-items: center; justify-content: center;
                width: 150px; max-width: 100%; box-sizing: border-box;
                min-height: 150px; padding: 18px; background: #fafafa;
                border: 1px solid #e0e0e0; text-align: center; }
.vc_col-sm-4 .fh-nameplate { width: 293px; min-height: 293px; }
.fh-nameplate span { font-size: 30px; line-height: 1.2; color: #4a4a4a; }

/* [4] /nutricao/ was one broken image and nothing else. */
.fh-nutricao { margin-top: 18px; }
.fh-nutricao h3 { margin: 0 0 10px; }
.fh-nutricao p { margin: 0 0 10px; }

/* [5] CONTRAST. Measured by qa_legibility, white text on the theme's rgb(74,134,191):
   3.85:1 on the "Marcar Consulta" call to action and on the breadcrumb, and 2.21:1 where
   /especialidades/ painted the same button rgb(125,182,211). WCAG asks 4.5:1 for text this size.
   #34719f is the same hue two steps darker and measures 5.2:1 against white - deliberately not on
   the 4.5 boundary, because a rule that lands exactly on the threshold fails intermittently. */
a.mt_donation_button,
a.mt_donation_button:hover,
a.mt_donation_button:focus { background-color: #34719f !important; color: #fff !important; }
#header-title { background-color: #34719f !important; }

/* rgb(128,128,128) on white is 3.95:1. #6b6b6b is 5.3:1 and still reads as the theme's grey.
   !important is not decoration here: the first version of these three rules was written without it
   and LOST to the theme, and the gate re-reported the identical 3.95:1 and 4.05:1 afterwards. A fix
   that satisfies a stylesheet while leaving the rendered colour alone is not a fix, so every colour
   below was re-read out of getComputedStyle in a live browser before this comment was written. */
.sf-menu > li > a, #menu li a, .sf-menu li a { color: #6b6b6b !important; }
/* rgb(120,120,120) on the #f5f5f5 footer is 4.05:1 - and the theme repaints it at PHONE width from
   a media query, which is why the desktop reading looked fixed while the phone one did not. */
#sub-footer, #sub-footer p, #sub-footer a,
footer p, footer .textwidget p { color: #636363 !important; }
#sub-footer a { text-decoration: underline; }

/* [6] TEXT UNDER 12px. The only two on the site were the breadcrumb (11px) and the
   readyshoppingcart.com plugin credit (11px); the credit went with the widget in [2]. */
#breadcrumb-style, #breadcrumb-style a, #breadcrumb-style span,
#breadcrumb-style .liners { font-size: 12px !important; }

/* [7] TAP TARGETS. qa_legibility fails any control whose smaller side reaches under 24px. Measured
   offenders were the header dropdown items (18px), the footer menu (17px), the breadcrumb (15px)
   and the two designer credits (16-17px). Padding, never a fixed height: a fixed height on a
   wrapping label clips it. Inline links inside running prose are exempt by WCAG 2.5.8 and are
   deliberately left alone - giving them a 44px band would have them steal the clicks of the lines
   above and below. */
#breadcrumb-style a { display: inline-block !important; padding: 6px 3px !important; }
#menu-footer a, #menu-footer li a { display: inline-block !important; padding: 6px 0 !important; }
.sf-menu ul li a, .sf-menu li ul li a { padding-top: 7px !important; padding-bottom: 7px !important; }
#sub-footer a, .footer_widget_midle a, #footer-left a, #footer-right a,
.menu_categories a { display: inline-block !important; padding: 6px 2px !important; }

/* [8] /medicina-dentaria/campanhas-dentista/ AT 390. The Visual-Composer image carousel sets a
   1230px slideline and drags its column with it: `.col-md-8.floatright` computed to width 645px
   inside a 350px row and, being floated right, its LEFT edge landed at -275px. Measured result: the
   body copy was cut off mid-sentence at the left screen edge, the form labels were off-screen
   entirely, and the Enviar button's centre sat at x = -234, which is why the form gate reported
   "the submit button cannot be brought on screen". Below the theme's own 768px breakpoint the
   carousel becomes what it can honestly be on a phone: the same pictures, stacked. */
@media (max-width: 767px) {
  #mb-content .col-md-8, #mb-content .col-md-4 { width: 100% !important; float: none !important; }
  #mb-content [id^="post-"] { width: 100% !important; }
  /* the 615px is an INLINE style on .vc_slide in the archived markup, so every override here
     needs !important; without .vc_slide the column snapped back and the page still measured
     650px wide at 390. */
  .wpb_images_carousel .vc_slide,
  .wpb_images_carousel .vc_carousel-inner,
  .wpb_images_carousel .vc_carousel-slideline,
  .wpb_images_carousel .vc_carousel-slideline-inner { width: 100% !important;
                                                      transform: none !important; left: 0 !important; }
  .wpb_images_carousel .vc_item { width: 100% !important; float: none !important;
                                  display: block !important; margin: 0 0 12px !important; }
  .wpb_images_carousel .vc_carousel-inner { height: auto !important; overflow: visible !important; }
  .wpb_images_carousel img { width: 100% !important; max-width: 100% !important; height: auto !important; }
}

/* [10] /acupuntura-electroacupunctura/ measured 425px wide in a 390 viewport: the page title
   "Acupuntura/Electroacupunctura" is one 29-character token with no space, and the theme's h1 does
   not wrap. Nothing else on the site overflowed. Break the word rather than shrink every title. */
#header-title h1 { overflow-wrap: break-word; word-break: break-word; }

/* [9] The weave paragraph is the only running prose on the homepage; 1.75 gives it a readable
   measure without changing the 13px the rest of the site is set in. */
.content-wraparea p { line-height: 1.75; }

/* [11] The four homepage tiles are `<a><img></a>` where the theme makes the IMG a block. An inline
   anchor wrapping a block child reports a line-box rect: getBoundingClientRect gave 213x18 while
   the picture a visitor actually clicks is 215x175, so qa_legibility called four working tiles
   unreachable. Nothing moves on screen; the anchor now reports the box it really occupies. */
.wpb_single_image a, .vc_single_image-wrapper a { display: inline-block; }

/* [12] The phone navigation. The theme's original was a <select> whose every option value was an
   absolute URL on the dead origin and which navigated from an onchange handler, so with JS off it
   could not be operated at all; o6_fh_repairs.py rebuilt it as a <details> disclosure with real
   links. It keeps the theme's own bootstrap-3 visibility (shown below 992px, where the real menu
   is hidden), and every entry clears the 24px tap-target floor by padding, not by a fixed height. */
.fh-mobile-nav { max-width: 320px; margin: 0 auto 10px; text-align: left;
                 border: 1px solid #ddd; background: #fff; }
.fh-mobile-nav > summary { cursor: pointer; padding: 10px 14px; font-size: 14px; color: #34719f;
                           list-style: none; }
.fh-mobile-nav > summary::-webkit-details-marker { display: none; }
.fh-mobile-nav > summary::after { content: " \25BE"; }
.fh-mobile-nav[open] > summary::after { content: " \25B4"; }
.fh-mobile-nav ul { margin: 0; padding: 0 0 6px; list-style: none; max-height: 60vh;
                    overflow-y: auto; border-top: 1px solid #eee; }
.fh-mobile-nav li { padding: 0; }
.fh-mobile-nav a { display: block; padding: 8px 14px; font-size: 13px; color: #4a4a4a;
                   text-decoration: none; border-bottom: 1px solid #f2f2f2; }
.fh-mobile-nav li.fh-mn-child a { padding-left: 30px; color: #6b6b6b; }
@media (min-width: 992px) { .fh-mobile-nav { display: none; } }

/* =================================================================================================
   OWNER-BAR ROUND 1, 2026-09-15. The owner opened the site cold and found anchors that do not
   scroll, portraits that open the bare file, a stretched one-column /medicos/, a shabby /servicos/
   and small grey copy. Rules below are written against those findings; markup changes were made by
   one script over every affected page (recorded in the plan _note).
   ================================================================================================= */

/* [13] HEADINGS. /, /servicos/, /especialidades/ and /exames/ load a combined cache stylesheet
   (dY4x...-530e999a.css) AFTER the theme options, and its `h1..h6 {font-family:Helvetica}` won, so
   those four pages set every heading and the Marcar Consulta button in Helvetica while the other 44
   use Open Sans (measured with getComputedStyle). !important because that file loads last. */
h1, h2, h3, h4, h5, h6, .mt_donation_button h2 { font-family: "Open Sans", sans-serif !important; }

/* [14] BODY COPY. The theme sets 13px rgb(90,90,90) everywhere. The owner bar is 15px on desktop and
   16px on a phone, near #3a3a3a, line-height 1.6. Links keep their own colour. */
#mb-content p, #mb-content li, #mb-content td, #mb-content th, #mb-content dd, #mb-content label,
.menu_categories li a, .menu_categories .textwidget p, #footer li a, #footer p {
  font-size: 15px !important; line-height: 1.6 !important;
}
#mb-content p, #mb-content li, #mb-content td, #mb-content th, #mb-content dd, #mb-content label,
.menu_categories .textwidget p, #footer p, .menu_categories li a, #footer li a { color: #3a3a3a !important; }
#mb-content p a, #mb-content li a:not(.fh-spec-tile) { color: #2f6ea8 !important; }
#breadcrumb-style, #breadcrumb-style a, #breadcrumb-style span { font-size: 14px !important; }
.fh-mobile-nav > summary, .fh-mobile-nav a { font-size: 16px; }
@media (max-width: 767px) {
  #mb-content p, #mb-content li, #mb-content td, #mb-content th, #mb-content dd, #mb-content label,
  .menu_categories li a, .menu_categories .textwidget p, #footer li a, #footer p { font-size: 16px !important; }
}

/* [15] DESKTOP DROPDOWNS. Superfish does open them on a real hover, but only with JS, only for a
   pointer, and not for a keyboard user tabbing into "Especialidades". The same sub-menus are revealed
   by CSS on :hover and :focus-within, so the 20 specialty links are reachable either way. */
@media (min-width: 992px) {
  #header .sf-menu li:hover > ul.sub-menu,
  #header .sf-menu li:focus-within > ul.sub-menu { display: block !important; visibility: visible !important; opacity: 1 !important; z-index: 99; }
}

/* [16] /medicos/. One page, as the site published it, that now works: the jump menu is first in the
   DOM (the top of the content on a phone, a sticky sidebar on desktop), each specialty is one
   delimited block with one heading style, portraits sit 3 across at their natural 200x250. */
.fh-med-nav ul { margin: 0 !important; padding: 0 !important; list-style: none; }
.fh-med-nav li { margin: 0 !important; padding: 0 !important; float: none !important; border: 0 !important; background: none !important; }
.fh-med-nav li a { display: block !important; padding: 6px 12px !important; line-height: 1.4 !important;
                   border-left: 3px solid transparent; text-decoration: none; }
.fh-med-nav li a:hover, .fh-med-nav li a:focus { background: #eef3f8; border-left-color: #34719f; color: #1f4f75 !important; }
.fh-med-nav > summary { list-style: none; font-size: 16px; font-weight: 600; color: #34719f; }
.fh-med-nav > summary::-webkit-details-marker { display: none; }
@media (min-width: 992px) {
  .fh-med-row { display: flex; align-items: flex-start; }
  .fh-med-row::before, .fh-med-row::after { display: none !important; }
  .fh-med-navcol { position: sticky; top: 16px; max-height: calc(100vh - 32px); overflow-y: auto; }
  .fh-med-nav > summary { pointer-events: none; cursor: default; padding: 0 12px 8px; }
  .fh-back { display: none; }
}
/* phone: a real toggle, the same pattern as the site's phone main menu (.fh-mobile-nav) */
@media (max-width: 991px) {
  .fh-med-nav { margin: 0 0 20px; border: 1px solid #c9d6e2; background: #fff; }
  .fh-med-nav > summary { cursor: pointer; padding: 12px 14px; }
  .fh-med-nav > summary::after { content: " \25BE"; }
  .fh-med-nav[open] > summary::after { content: " \25B4"; }
  .fh-med-nav ul { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 10px;
                   padding: 4px 8px 10px !important; border-top: 1px solid #eee; }
  .fh-med-nav li a { padding: 8px 6px !important; border-left: 0; border-bottom: 1px solid #f0f0f0; }
}
.fh-spec { padding: 24px 0 26px; border-top: 1px solid #dfe6ee; scroll-margin-top: 12px; }
.fh-spec:first-child { border-top: 0; padding-top: 4px; }
.fh-spec-head { margin: 0 0 16px; }
h2.fh-spec-title, h3.fh-spec-sub { font-size: 19px !important; font-weight: 600 !important; letter-spacing: .04em;
  color: #34719f !important; margin: 0 0 4px !important; line-height: 1.35 !important; }
h3.fh-spec-sub { font-size: 16px !important; margin: 26px 0 14px !important; scroll-margin-top: 12px; }
#mb-content p.fh-spec-links { margin: 0 !important; font-size: 14px !important; color: #555 !important; }
#fh-especialidades { scroll-margin-top: 12px; }
/* The theme container is 940px, so the content column is 617px at 1440: three 190px portraits
   across (the files are 200x250, so nothing is enlarged). An auto-fill track of 200px gave only two. */
.fh-docs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px 24px; }
.fh-doc { margin: 0; }
.fh-doc img { display: block; width: 100%; max-width: 200px; height: auto; aspect-ratio: 4 / 5; object-fit: cover;
              border: 1px solid #e3e3e3; background: #f4f4f4; }
#mb-content p.fh-spec-links, #mb-content p.fh-spec-links span { font-size: 15px !important; }
#footer .fh-year { font-size: inherit !important; }
@media (max-width: 991px) { .fh-med-nav > summary { background: #fff !important; } }
.fh-doc figcaption { padding-top: 10px; }
.fh-doc-name { display: block; font-size: 16px; font-weight: 600; color: #1f3f5b; line-height: 1.35; }
.fh-doc--bio { grid-column: 1 / -1; display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 24px; align-items: start; }
.fh-doc--bio figcaption { padding-top: 0; }
#mb-content ul.fh-doc-cv { margin: 8px 0 0 !important; padding-left: 18px !important; list-style: disc; }
#mb-content ul.fh-doc-cv li { margin: 0 0 4px !important; }
#mb-content ul.fh-doc-plain { list-style: none; margin: 16px 0 0 !important; padding: 0 !important; display: flex; flex-wrap: wrap; gap: 10px; }
/* child combinator: a name card that carries credentials has its own nested <ul class="fh-doc-cv">,
   and a descendant selector boxed every credential line as a card of its own */
#mb-content ul.fh-doc-plain > li { margin: 0 !important; padding: 10px 16px !important; border: 1px solid #dfe6ee;
                                 border-left: 3px solid #34719f; background: #f7f9fb; }
.fh-docs + .fh-doc-plain { margin-top: 20px !important; }
#mb-content p.fh-back { margin: 18px 0 0 !important; }
@media (max-width: 767px) {
  .fh-docs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 14px; }
  .fh-doc--bio { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .fh-doc--bio img { max-width: calc(50% - 7px); }
}

/* [17] SPECIALTY PAGES. Seventeen were one stock photo and nothing else. Each now carries only what
   /medicos/ prints for that specialty, the anchor into that list and the clinic's booking route.
   Width matches the 600px photo above it so the block does not hang off to one side. */
.fh-specpage { max-width: 600px; margin: 28px auto 10px; }
h2.fh-specpage-title { font-size: 20px !important; font-weight: 600 !important; color: #34719f !important;
                       margin: 0 0 16px !important; line-height: 1.35 !important; }
#mb-content p.fh-specpage-more { margin: 18px 0 0 !important; }
.fh-specpage-cta { margin-top: 22px; padding: 18px 20px; background: #f5f8fb; border: 1px solid #dfe6ee; }
#mb-content .fh-specpage-cta p { margin: 12px 0 0 !important; }
a.fh-cta, #mb-content a.fh-cta { display: inline-block; background: #34719f; color: #fff !important; padding: 10px 22px;
  font-size: 16px; font-weight: 600; line-height: 1.4; text-decoration: none !important; border-radius: 3px; }
a.fh-cta:hover, a.fh-cta:focus { background: #285a80; color: #fff !important; }

/* [18] /especialidades/. The page was a sidebar list beside an empty main column at 1440. The list is
   now the page: one tile per specialty page, naming the doctors /medicos/ lists for it. */
#mb-content ul.fh-spec-grid { list-style: none; margin: 4px 0 34px !important; padding: 0 !important; display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 16px; }
#mb-content ul.fh-spec-grid li { margin: 0 !important; padding: 0 !important; }
a.fh-spec-tile { display: flex; flex-direction: column; height: 100%; box-sizing: border-box; padding: 16px 18px;
  border: 1px solid #dfe6ee; border-top: 3px solid #34719f; background: #fff; text-decoration: none !important; }
a.fh-spec-tile:hover, a.fh-spec-tile:focus { background: #f5f8fb; border-color: #34719f; }
.fh-spec-tile-name { font-size: 17px; font-weight: 600; color: #1f4f75; line-height: 1.3; }
.fh-spec-tile-docs { margin-top: 6px; font-size: 15px; color: #4a4a4a; line-height: 1.5; }
@media (max-width: 767px) { .fh-spec-tile-docs { font-size: 16px; } }

/* [19] /servicos/. A bare 13px list under a heading and an empty paragraph: now two tidy columns of
   service cards. The words and the asterisks are the site's own. */
h3.fh-lead { font-size: 20px !important; color: #34719f !important; margin: 0 0 14px !important; }
h3.fh-lead strong { font-weight: 600; }
#mb-content ul.fh-cardlist { list-style: none; margin: 0 0 24px !important; padding: 0 !important; display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
#mb-content ul.fh-cardlist li { margin: 0 !important; padding: 12px 14px 12px 16px !important; background: #f7f9fb;
  border: 1px solid #e1e8ef; border-left: 3px solid #34719f; }
@media (max-width: 767px) { #mb-content ul.fh-cardlist { grid-template-columns: minmax(0, 1fr); } }

/* [20] /exames/. Two 3-item lists as bare paragraphs with two empty paragraphs between them: now the
   two groups side by side as cards, same words. */
.fh-exams { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; margin: 6px 0 20px; }
.fh-exam-card { padding: 18px 22px; border: 1px solid #dfe6ee; border-top: 3px solid #34719f; background: #fff; }
.fh-exam-card h2 { font-size: 18px !important; font-weight: 600 !important; color: #34719f !important;
                   margin: 0 0 10px !important; letter-spacing: .03em; line-height: 1.35 !important; }
#mb-content .fh-exam-card ul { margin: 0 !important; padding-left: 20px !important; list-style: disc; }
#mb-content .fh-exam-card li::first-letter { text-transform: uppercase; }
#mb-content p.fh-exam-link { margin: 12px 0 0 !important; }
#mb-content p.fh-exams-cta { margin: 0 0 30px !important; }
@media (max-width: 767px) { .fh-exams { grid-template-columns: minmax(0, 1fr); } }

/* [21] THE MEDIS CELL, second pass. The grey #fafafa box with no caption read as an image placeholder
   and broke the row alignment. It is now a white plate the size of the neighbouring logos, and the
   caption the archived page printed under it ("Médis", h2, like ACP and Holmes Place) is back. */
.fh-nameplate { background: #fff !important; border: 1px solid #e3e3e3 !important; }
.fh-nameplate span { font-size: 36px !important; font-weight: 700; letter-spacing: .02em; color: #1f3f5b !important; }

/* [22] HOMEPAGE TILES AT PHONE WIDTH. The four 215x175 tiles stood one per row, 215px wide in a 358px
   column. Two across fills the column without enlarging the bitmaps past their natural size. */
@media (max-width: 767px) {
  #post-8 .wpb_row:has(> .vc_span3) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  #post-8 .wpb_row:has(> .vc_span3)::before, #post-8 .wpb_row:has(> .vc_span3)::after { display: none !important; }
  #post-8 .vc_span3 { width: auto !important; float: none !important; margin: 0 !important; min-height: 0 !important; }
  #post-8 .vc_span3 .wpb_content_element { margin-bottom: 0 !important; }
  #post-8 .vc_span3 a, #post-8 .vc_span3 img { display: block; width: 100%; height: auto; }
}

/* [23] /medicos/ AT DESKTOP, second pass (OWNER-BAR ROUND 1). With one delimited block per specialty
   the page still read like a phone layout at 1440: most specialties have one doctor, so it was one
   200px portrait per row down 9,800px with the right 60% of the column blank. From 768px the blocks
   are now cards in two columns and the jump menu takes 25% instead of 33%, so a desktop visitor sees
   four to six specialties per screen. Order is the site's own menu order and never rearranged: the
   only full-width cards are ACUNPUNTURA (two groups, side by side) and MEDICINA DENTARIA (two doctors
   with credential lists), and each is preceded by an even number of half cards, so no hole opens in
   the grid. Portraits shrink to 140px (the files are 200x250), never enlarged. Phones keep the
   stacked layout of [16]. */
@media (min-width: 992px) {
  .fh-med-row > .fh-med-navcol { width: 25% !important; }
  .fh-med-row > .fh-med-main { width: 75% !important; }
}
@media (min-width: 768px) {
  .fh-med-main > .page { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: stretch; }
  .fh-med-main > .page > .fh-spec,
  .fh-med-main > .page > .fh-spec:first-child { margin: 0; padding: 16px 20px 20px; background: #fff;
    border: 1px solid #dfe6ee; border-top: 3px solid #34719f; }
  .fh-med-main > .page > #acunpuntura, .fh-med-main > .page > #md { grid-column: 1 / -1; }
  .fh-med-main .fh-spec-head { margin: 0 0 14px; }
  .fh-med-main h2.fh-spec-title { font-size: 17px !important; }
  .fh-med-main .fh-docs { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 18px 16px; }
  .fh-med-main .fh-doc img { max-width: 140px; }
  .fh-med-main .fh-doc-name { font-size: 15px; }
  .fh-med-main .fh-doc--bio { grid-column: 1 / -1; grid-template-columns: 110px minmax(0, 1fr); gap: 14px; }
  .fh-med-main #md .fh-docs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 24px; }
  .fh-med-main #md .fh-doc--bio { grid-column: auto; }
  .fh-med-main #mb-content ul.fh-doc-cv li, #mb-content .fh-med-main ul.fh-doc-cv li { line-height: 1.5 !important; }
  /* ACUNPUNTURA: the untitled first group on the left, ELECTROACUPUNCTURA with its own label on the right,
     both doctors on the same line so neither reads as belonging to the other group's label */
  .fh-med-main #acunpuntura { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
  .fh-med-main #acunpuntura > .fh-spec-head, .fh-med-main #acunpuntura > .fh-back { grid-column: 1 / -1; }
  .fh-med-main #acunpuntura > .fh-spec-head + .fh-docs { grid-column: 1; grid-row: 3; }
  .fh-med-main #acunpuntura > h3.fh-spec-sub { grid-column: 2; grid-row: 2; margin: 0 0 12px !important; }
  .fh-med-main #acunpuntura > h3.fh-spec-sub + .fh-docs { grid-column: 2; grid-row: 3; }
  .fh-med-main #acunpuntura > .fh-back { grid-row: 4; }
  .fh-med-main ul.fh-doc-plain { margin-top: 14px !important; }
}

/* [24] /medicina-dentaria/check-up-dentario(-gratuito)/. "Ligue o 96 865 45 43 ou preencha o formulario
   abaixo:" is a sentence the page builder had set as an <h4> after an empty <h2></h2>. It is now a
   paragraph (the words unchanged) and the empty <h2> is gone; this keeps the look of the old h4. */
#mb-content p.fh-callus { font-size: 17px !important; color: #34719f !important; margin: 0 0 18px !important; line-height: 1.5 !important; }

/* [25] FORM BUTTONS. The theme's Contact Form 7 "Enviar" was a 12px Lucida Grande button in white with
   a grey bevel, 50x28px under full-width 15/16px fields: on /contactos/, /marcar-consulta/ and the dental
   booking pages it read as a leftover control. It now uses the site's own action colour and size, the same
   as the Marcar Consulta buttons (a.fh-cta). Label and behaviour unchanged. */
#mb-content .wpcf7-submit, .wpcf7-submit {
  background-color: #34719f !important; color: #fff !important; font: 600 15px/1.2 "Open Sans", Arial, sans-serif !important;
  padding: 11px 26px !important; border: 0 !important; box-shadow: none !important; border-radius: 0; min-height: 44px; }
#mb-content .wpcf7-submit:hover, #mb-content .wpcf7-submit:focus, .wpcf7-submit:hover, .wpcf7-submit:focus {
  background-color: #285a80 !important; color: #fff !important; border: 0 !important; }

/* [23b] A doctor WITH printed credentials inside a card: portrait and name side by side, the credential
   list below at the full card width. Beside a 110px portrait the list had ~170px and ran to 30 lines. */
@media (min-width: 768px) {
  .fh-med-main .fh-doc--bio { display: grid; grid-template-columns: 110px minmax(0, 1fr); column-gap: 14px; align-items: start; }
  .fh-med-main .fh-doc--bio > figcaption { display: contents; }
  .fh-med-main .fh-doc--bio > img { grid-column: 1; grid-row: 1; }
  .fh-med-main .fh-doc--bio .fh-doc-name { grid-column: 2; grid-row: 1; align-self: center; }
  .fh-med-main .fh-doc--bio ul.fh-doc-cv { grid-column: 1 / -1; grid-row: 2; margin-top: 14px !important; }
}
