/* 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 ---- */


/* al-vita: credit strip under the static map on the contact pages */
#mapa img { width: 100%; height: 100%; object-fit: cover; display: block }
.map-credit { font-size: 11px; line-height: 1.4; color: #999; margin: 6px 0 18px }
.map-credit a { color: #995540 }
/* al-vita: an article body is not inside a Bootstrap column, so at phone width the
   row's -15px margin cancels the container padding and the running text touches both
   screen edges. The full-bleed picture above it is deliberate; the text is not. */
@media (max-width: 767px) {
  #page-content .row.content .new-body,
  #page-content .row.content .news-footer { padding-left: 15px; padding-right: 15px }
}

/* ---------------------------------------------------------------- legibility gate, 2026-08-18
   Finger-sized hit areas. qa_legibility.js blocks on anything a person must tap whose smaller
   dimension is under 24 CSS px (WCAG 2.5.8; 2.5.5 asks 44). Every anchor below rendered at exactly
   its 17-19px line box because it is inline text with no padding, so the fix is vertical padding:
   on an inline box that grows the border box the browser hit-tests without moving the line, so not
   one pixel of layout shifts. Measured with _scripts/_legib_targets.js, not guessed. */
.navbar .navbar-contact .quick-contacts a,
#footer-content li a,
#copyright a,
.map-credit a {
  padding-top: 4px;
  padding-bottom: 4px;
}

/* The sidebar section menu on the inner pages: display:block already, so padding is enough. */
#page-content a.icon { padding-top: 4px; padding-bottom: 4px; }

/* Consent checkbox label on the contact and careers forms. */
.form-group label, form label { padding-top: 2px; padding-bottom: 2px; }

/* PT / EN. Two 14x17 letters inside a 38px bar - the bar was always tall enough, the anchors just
   were not filling it. */
.lang a {
  display: inline-block;
  min-width: 28px;
  height: 38px;
  line-height: 38px;
  text-align: center;
}

/* Slider arrows were 21x37. The artwork keeps its size and stays centred; only the box the finger
   has to find grows to 44x44. */
#premios .prev-arrow, #premios .next-arrow,
#testemunhos .prev-arrow, #testemunhos .next-arrow,
#page-content #slider-news .prev-arrow, #page-content #slider-news .next-arrow,
.prev-arrow, .next-arrow {
  width: 44px;
  height: 44px;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 21px 37px;
}
#page-content #slider-news .prev-arrow,
#page-content #slider-news .next-arrow { margin-top: -22px; }

/* 11px map credit - "hold a magnifying glass to the screen". 12px is the gate's floor. */
.map-credit { font-size: 12px; }

/* Second pass, re-measured. The section menu lives in #fixed-nav, not #page-content, so the first
   rule never reached it; and the consent anchor inside the form label needs its own padding
   because padding on the label does not enlarge the child. */
a.icon { padding-top: 4px; padding-bottom: 4px; }
form label a, .form-group label a { padding-top: 4px; padding-bottom: 4px; }
