/* 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 ---- */

/* ---- fix2 pass: located visual review, 2026-08 ---------------------------------------------- */

/* The "website by Verae" credit is a thin third-party commercial link, so policy keeps the <a>
   and drops the href. What was left behind was an underlined blue anchor that goes nowhere. If it
   is not a control it must not be painted as one. */
.cs-credit, .cs-credit:hover, .cs-credit:focus {
  color: inherit; text-decoration: none; cursor: default;
}

/* PARCEIROS: a partner whose logo was never archived is set as type (see .cs-logo-word above).
   Beside a real photographic mark the neutral grey word read as an unfinished slot, so give the
   substitute a deliberate form of its own — brand rule, brand ink, a faint tint — rather than
   letting it pretend to be a picture that failed. */
.f-1by1 > .cs-logo-word {
  color: #00539f; font-weight: 700; letter-spacing: .08em;
  background: #f4f7fb; border: 1px solid #dde5ef; border-top: 3px solid #00539f;
}

/* CORPO CLÍNICO: the portraits were never archived and are deliberately replaced by initial
   discs (cs_40_images.py: "initials, never a generated face"). The substitute was still being
   given the column width of a real portrait, so eight near-identical discs dominated the page.
   Size them as avatars and let the name and the role carry the row, which is the information we
   actually have. */
.cs-team-row .f-1by1 { max-width: 108px; margin-left: auto; margin-right: auto; }
.cs-team-row > .col-md-6:first-child { width: 132px; flex: 0 0 132px; }
.cs-team-row > .col-md-6:last-child  { flex: 1 1 auto; width: auto; padding-left: 15px; }
.cs-team-row h4 { margin-bottom: 4px; }
@media (max-width: 767px) {
  .cs-team-row .f-1by1 { max-width: 84px; }
  .cs-team-row > .col-md-6:first-child { width: 100px; flex: 0 0 100px; }
}

/* BLOG sidebar: the aside held ~300px of content beside a ~2100px article list and then ran as
   bare white column to the footer. Filled below with the site's own material — its service index
   and its own contact block — so the column carries weight instead of reading as unfinished. */
.cs-aside-block { margin-top: 30px; }
.cs-aside-block .widget-title h5 { margin-bottom: 10px; }
.cs-aside-block ul { padding-left: 0; list-style: none; }
.cs-aside-block ul li { padding: 6px 0; border-bottom: 1px solid #e6e6e6; font-size: 13px; }
.cs-aside-cta { margin-top: 30px; padding: 20px 18px; }
.cs-aside-cta h5 { margin-top: 0; }
.cs-aside-cta ul { padding-left: 22px; list-style: none; margin: 0 0 15px; }
.cs-aside-cta ul li { padding: 4px 0; font-size: 13px; }
