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

/* tlc_polish additions */
@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/source-sans-pro-400-normal-latin.woff2') format('woff2');}
@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/source-sans-pro-600-normal-latin.woff2') format('woff2');}
@font-face{font-family:'proxima-nova';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/source-sans-pro-400-normal-latin.woff2') format('woff2');}
@font-face{font-family:'proxima-nova';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/source-sans-pro-600-normal-latin.woff2') format('woff2');}
.sqs-gallery-block-slideshow .slide{opacity:1!important;position:static!important;height:auto!important;width:100%!important;cursor:default!important;margin-bottom:20px;overflow:visible!important}
.sqs-gallery-block-slideshow .slide>a{position:static!important;display:block}
.sqs-gallery-block-slideshow .slide img{position:static!important;width:100%!important;height:auto!important}
.sqs-gallery-block-slideshow .sqs-video-wrapper{position:relative!important;padding-bottom:56.25%;height:0!important}
.sqs-gallery-block-slideshow .sqs-video-wrapper iframe{position:absolute!important}
.sqs-gallery-block-slideshow .thumbnails,.sqs-gallery-block-slideshow .sqs-gallery-controls,.sqs-gallery-block-slideshow .sqs-gallery-pagination,.sqs-gallery-thumbnails,.sqs-gallery-nav,.sqs-gallery-design-slideshow-arrows{display:none!important}
.sqs-gallery-block-slideshow .meta{display:block!important;position:static!important;opacity:1!important;background:transparent!important;color:inherit!important}
.sqs-gallery-block-slideshow .meta .meta-title,.sqs-gallery-block-slideshow .meta .meta-title{color:inherit!important}
#graftedAddress{max-width:960px;margin:0 auto;padding:12px 20px}
html,body{height:100%}
.sqs-slide-wrapper[data-slide-type="cover-page"]{position:relative;min-height:100vh;height:auto}
.sqs-slide-wrapper[data-slide-type="cover-page"] .sqs-slide-container{position:relative;min-height:100vh}
.sqs-slide{opacity:1!important}
.sqs-slide-container img[data-use-advanced-positioning]{opacity:1!important}

/* tlc_finish additions */
/* --- dead Typekit faces on the COVER page (plan TRAP 8 covered proxima-nova only). Neither
       futura-pt nor freight-sans-pro has ANY fallback in its stack, so the whole homepage was
       rendering in the browser default serif. Questrial is OFL and geometric, the closest
       licence-clean stand-in for Futura in this project's font pool. -------------------------- */
@font-face{font-family:'Questrial';font-style:normal;font-weight:400;font-display:swap;
  src:url('/fonts/questrial-normal-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD;}
@font-face{font-family:'futura-pt';font-style:normal;font-weight:400;font-display:swap;
  src:url('/fonts/questrial-normal-400-latin.woff2') format('woff2');}
@font-face{font-family:'futura-pt';font-style:normal;font-weight:600;font-display:swap;
  src:url('/fonts/questrial-normal-400-latin.woff2') format('woff2');}
@font-face{font-family:'freight-sans-pro';font-style:normal;font-weight:400;font-display:swap;
  src:url('/fonts/source-sans-pro-400-normal-latin.woff2') format('woff2');}
@font-face{font-family:'freight-sans-pro';font-style:normal;font-weight:600;font-display:swap;
  src:url('/fonts/source-sans-pro-600-normal-latin.woff2') format('woff2');}

/* --- cover photo: Squarespace's loader sized and focal-point-cropped this; statically it showed
       sky and nothing else. 0.5,0.5 is the archived focal point. --------------------------- */
.sqs-slice-gallery-item.content-fill{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}
.sqs-slice-gallery-item.content-fill img{width:100%;height:100%;object-fit:cover;object-position:50% 50%;
  max-width:none;position:static}

/* --- the inner pages' full-bleed background photograph. The theme paints it on #outerWrapper
       with a rgba(54,54,54,.4) scrim (#bgOverlay) over it; restore_04_polish had to neutralise
       the url() because the file lives only inside site.css and was never fetched, which left
       eleven pages flat black instead of photographic. tlc_bg_recover.py puts a real file at
       /img/page-background.jpg — the archived original when the archive answers, the site's own
       cover photo when it does not. Declared here (restore-extras.css is linked last) rather
       than by editing the 580 KB theme sheet, so a rebuild cannot lose it. ------------------ */
/* background-attachment:fixed is ignored by iOS Safari and repaints badly on Android; scroll is
   the honest behaviour on a phone and keeps the photo from jumping under the address bar. */
@media (max-width:800px){#outerWrapper{background-attachment:scroll!important}}
/* The theme's scrim is rgba(54,54,54,.4), tuned for the original background photo, which is hazy
   and low-contrast. The substitute is the cover shot: brighter and more saturated, and white body
   copy on /psiquiatria and /radio-1 landed on turquoise water at roughly 2:1 - unreadable.
   Deepen the scrim so the text keeps an AA margin over the brightest part of the photo. This is
   unconditional on purpose: the archived original is darker, so it only ever helps. */
#bgOverlay{background-color:rgba(24,26,28,.62)!important}

/* --- the cover page's social-icons slice. Squarespace's slide engine positions it at runtime;
       the theme's static rule leaves .responsive-wrapper.social position:absolute, which parks the
       28px YouTube button on top of the CONTACTOS button (its parent .group-social measures 0px
       high because its only child is out of flow). Put it back in flow so it stacks under the
       buttons, where the slice's source order says it belongs. ------------------------------ */
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social{position:static;
  text-align:center;margin-top:26px}
.sqs-slide-wrapper[data-slide-type="cover-page"] .group-social{margin-top:0}
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social .icon-wrapper{
  display:inline-block}


/* --- the grafted footer facts strip (moved out of the top of the cover) ------------------- */
#graftedAddress.tlc-footer-facts{max-width:960px;margin:0 auto;padding:6px 20px 22px;text-align:center}
#graftedAddress.tlc-footer-facts .site-tagline,
#graftedAddress.tlc-footer-facts .site-desc p{margin:.35em 0}
#graftedAddress.tlc-footer-facts .site-location{margin:0}
#graftedAddress.tlc-footer-facts .site-location span{display:inline;white-space:normal}
#graftedAddress.tlc-footer-facts .site-location span+span:before{content:", "}
/* the archived spans carry newlines between them, which rendered as " , " */
#graftedAddress.tlc-footer-facts .site-location{font-size:0}
#graftedAddress.tlc-footer-facts .site-location span{font-size:15px}
#graftedAddress.tlc-footer-facts .contact-info p{margin:.35em 0}

/* The footer has no background of its own, so it sits straight on the fixed beach photo. The
   theme tints the address and company lines to rgba(255,255,255,.7); over the dark half of that
   photo that reads fine, but the short pages (/galeria-fotos, /nutricao, /404 ...) end on the pale
   sand and those two lines drop to grey-on-grey - the weakest text on the site, and weaker than
   the policy links immediately below them, which the same theme already paints solid #fff. Lift
   the two lines to that same #fff so the whole footer block reads at one strength. Colour token
   is the theme's own; nothing else about the footer changes. */
footer .site-location span,
footer .site-desc p,
footer .site-tagline{color:#fff}

/* --- the site-wide announcement bar. Squarespace built this at runtime from
       websiteSettings.announcementBarSettings, so it disappeared with the platform JS and 14
       pages lost a message the clinic had published on all of them. Colours are the ones the
       original computed to: rgb(51,51,51) bar, rgba(0,0,0,.15) close button. ---------------- */
.tlc-announce{position:relative;background:#333;color:#fff;text-align:center;
  padding:13px 52px 13px 20px;font:400 14px/1.35 'proxima-nova','Source Sans Pro',Arial,sans-serif;
  z-index:20}
.tlc-announce a.tlc-announce-link{color:#fff;text-decoration:none;display:block}
.tlc-announce a.tlc-announce-link:hover .tlc-announce-text{text-decoration:underline}
.tlc-announce p{margin:0}
.tlc-announce-close{position:absolute;top:50%;right:10px;transform:translateY(-50%);
  width:30px;height:30px;line-height:1;border:0;border-radius:50%;cursor:pointer;
  background:rgba(0,0,0,.15);color:#fff;font-size:20px;padding:0}
.tlc-announce-close:hover,.tlc-announce-close:focus-visible{background:rgba(0,0,0,.35)}
/* the cover page positions its slide against the viewport, so the bar must not overlap it */
body .tlc-announce+#outerWrapper,body .tlc-announce~.sqs-slide-wrapper{position:relative}

/* --- navigation: the open states are the theme's own; these only make the controls usable --- */
#main-navigation .folder-parent>a,#mobile-navigation .folder-parent>a{cursor:pointer}
#main-navigation .folder-parent>a:focus-visible,#mobile-navigation .folder-parent>a:focus-visible,
#mobile-navigation-label:focus-visible{outline:2px solid #fff;outline-offset:3px}
#mobile-navigation{cursor:default}
#mobile-navigation #mobile-navigation-label{display:inline-block;padding:2px 10px}
/* pt-PT labels: the platform shipped the English 'Menu'/'Close' on a pt-PT site */
#mobile-navigation #mobile-navigation-label:after{content:'MENU'}
#mobile-navigation.sqs-mobile-nav-open #mobile-navigation-label:after{content:'FECHAR'}
#main-navigation .folder.dropdown-open .folder-child{padding-top:6px;padding-bottom:6px}
/* The theme paints the open '+A CLINICA' panel at rgba(51,53,56,.8), which was fine over its own
   photo header but not over ours: the page's own site-title H1 sits directly behind it, so the
   letters 'NARDO C' ghosted across MEDICINA SEXUAL and PSICOLOGIA on every inner page. Use the
   theme's OWN colour - site.css declares '#333538' as the fallback on the very same rule before
   overriding itself with the translucent form - so nothing but the alpha changes. */
#main-navigation .folder.dropdown-open ul.folder-child{background-color:#333538}

/* --- carousels. The stacked layout stays as the no-JS fallback; .tlc-live switches to one
       slide at a time once slideshow.js has attached its controls. ------------------------- */
.sqs-gallery-block-slideshow.tlc-live{position:relative}
.sqs-gallery-block-slideshow.tlc-live .slide{display:none!important}
.sqs-gallery-block-slideshow.tlc-live .slide.tlc-on{display:block!important;margin-bottom:0}
.sqs-gallery-block-slideshow.tlc-live .sqs-gallery{min-height:1px}
.sqs-gallery-block-slideshow.tlc-live img{max-height:70vh;object-fit:contain;background:#000}
.tlc-slide-nav{display:flex;align-items:center;justify-content:center;gap:14px;
  padding:14px 0 4px;flex-wrap:wrap;position:relative;z-index:2}
.tlc-slide-nav button{background:transparent;border:1px solid rgba(255,255,255,.45);color:#fff;
  font:400 18px/1 'proxima-nova','Source Sans Pro',Arial,sans-serif;width:38px;height:38px;
  border-radius:50%;cursor:pointer;padding:0;transition:background .15s,border-color .15s}
.tlc-slide-nav button:hover,.tlc-slide-nav button:focus-visible{background:rgba(255,255,255,.15);
  border-color:#fff}
.tlc-dots{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;max-width:60%}
.tlc-dots .tlc-dot{width:9px;height:9px;border-radius:50%;padding:0;border:1px solid rgba(255,255,255,.5);
  background:transparent}
.tlc-dots .tlc-dot-on{background:#fff;border-color:#fff}
.tlc-count{font:400 13px/1 'proxima-nova','Source Sans Pro',Arial,sans-serif;
  letter-spacing:2px;color:rgba(255,255,255,.65);min-width:60px;text-align:center}
.tlc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* --- video embeds: a real 16:9 box, so a lazy iframe reserves its space instead of jumping --- */
.sqs-video-wrapper{position:relative;width:100%;padding-bottom:56.25%;height:0;overflow:hidden}
.sqs-video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}

/* --- click-to-play poster (js/yt-facade.js). Sixty-six iframes loading together made YouTube
       refuse fifty-seven of them with its grey "video unavailable" panel, so the pages now paint a
       poster the site hosts itself and fetch the player only when a visitor asks for it. The button
       fills the 16:9 wrapper above, so nothing about the page's geometry changes. -------------- */
.tlc-yt{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;margin:0;border:0;
  background:#0d1a24;cursor:pointer;display:block;overflow:hidden}
.tlc-yt-poster{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block;
  transition:opacity .2s ease,transform .35s ease}
.tlc-yt-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:68px;height:48px;border-radius:12px;background:rgba(0,0,0,.62);
  transition:background .2s ease}
.tlc-yt-play:after{content:"";position:absolute;top:50%;left:52%;transform:translate(-50%,-50%);
  width:0;height:0;border-style:solid;border-width:10px 0 10px 17px;
  border-color:transparent transparent transparent #fff}
.tlc-yt:hover .tlc-yt-poster,.tlc-yt:focus-visible .tlc-yt-poster{opacity:.85}
.tlc-yt:hover .tlc-yt-play{background:#c4302b}
.tlc-yt:focus-visible{outline:2px solid #fff;outline-offset:-2px}
@media (max-width:640px){.tlc-yt-play{width:56px;height:40px}}

/* /imprensa no longer has a row with its media column removed: the one entry that was missing its
   thumbnail (A FALTA DE SONO..., SapoLifestyle) had it recovered from the live Squarespace CDN in
   round 4, so the row is an ordinary 6+6 again and .tlc-widened has no users left. */

/* --- /video1: the six clips that sit two-to-a-row carried no visible label, so two thirds of the
       page's videos were unnamed while every single-column row showed its text. The label is the
       clip's own YouTube title, which this page already carries in the poster's alt= and the
       link's aria-label= - it is now shown as well as announced. Same measure and colour as the
       description paragraphs in the single-column rows. --------------------------------------- */
.tlc-video-caption{margin:.7em 0 0;font-size:15px;line-height:1.45;color:#fff}

/* --- /maisvideos/: the same treatment, applied to all 66 clips (_scripts/tlc_content_pass.py).
       The titles are lifted from each link's own aria-label, so the page now names every video
       exactly as /video1/ does and the two siblings stop disagreeing.

       The grid replaces the archive's three floated columns of 22 blocks (_scripts/tlc_video_grid.py).
       With uniform poster tiles those columns stayed in step by accident; the moment a caption can
       be one line or four they drift - measured at 5631 / 5254 / 5073 px, 558px apart by the foot
       of the page - and no min-height can fix it, because how many lines a title wraps to depends
       on the column width (65px at 1280+, 87px at 1024, 152px at 801). A grid row is as tall as
       its tallest item at every width, with no measurement and no breakpoints. ---------------- */
.tlc-video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
  gap:30px 26px;align-items:start}
/* the theme floats .sqs-block; a floated grid item is still a grid item, but the float and the
   inherited width would fight the track sizing */
.tlc-video-grid>.sqs-block{float:none;width:auto;margin:0}

/* --- /radio-1: the four Rádio Sim programmes, now with real audio (tlc_cdn_recover) ------
       The four <audio> elements carry preload="none". They used to ask for preload="metadata",
       which on these files pulls most of the body down: /radio-1 fetched 24 MB — 70% of the whole
       site — before the visitor had touched anything, took 16.1 s to reach network-idle against
       1.0 s for every other page, and cost the invariance gate 84 s of its runtime on that one URL.
       preload="none" makes it 1.0 s and 8.4 s. The trade is that the control bar reads 0:00 / 0:00
       until play, so the playing time is printed in .tlc-audio-meta instead, measured off the mp3
       frame headers by _scripts/tlc_mp3_duration.py — the visitor now sees the length WITHOUT
       downloading the programme, which is strictly better than what the preload bought. -------- */
.tlc-audio{padding:16px 0 18px;border-bottom:1px solid rgba(255,255,255,.16)}
.tlc-audio-title{display:block;font-size:16px;line-height:1.35}
.tlc-audio-meta{display:block;opacity:.65;font-size:13px;margin:2px 0 10px}
.tlc-audio-player{width:100%;max-width:520px;height:38px;display:block}
/* the native player paints itself light; on a dark page it needs toning down to sit in the design */
.tlc-audio-player::-webkit-media-controls-panel{background:rgba(255,255,255,.9)}

/* --- /contact map --------------------------------------------------------------------------
       A <figure> holding a picture we render at build time, not an openstreetmap.org iframe: that
       embed paints its credit line INSIDE the map pane (Leaflet attribution control) and picks its
       language from navigator.languages, so it covered the streets it sat on and rendered in
       whatever locale the visitor happened to have. The credit now lives in the figcaption, which
       has its own height and its own Portuguese wording. See _scripts/o4_static_osm_map.py. ---- */
.tlc-map{margin:10px 0 0;padding:0}
.tlc-map-frame{display:block;line-height:0;border:1px solid rgba(255,255,255,.18)}
.tlc-map-frame img{display:block;width:100%;height:auto}
.tlc-map-credit{font-size:12px;line-height:1.45;margin:7px 0 0;opacity:.8}
/* the credit is a licence obligation, so its link may not read fainter than the sentence around
   it - the theme's default anchor colour is a mid grey that all but vanished at this size */
.tlc-map-credit a{color:inherit;text-decoration:underline}
.tlc-map-note{font-size:13px;margin:4px 0 0}
.tlc-map-title{margin-top:34px}

/* --- 404 ------------------------------------------------------------------------------------ */
.tlc-404-code{font-family:'proxima-nova','Source Sans Pro',Arial,sans-serif;font-size:76px;
  line-height:1;letter-spacing:6px;margin:0 0 6px;opacity:.35}
.tlc-404-links{list-style:none;padding:0;margin:14px 0 26px;display:flex;flex-wrap:wrap;gap:10px 22px}
.tlc-404-links a{text-decoration:none;border-bottom:1px solid rgba(255,255,255,.35);
  padding-bottom:2px;letter-spacing:1px}
.tlc-404-links a:hover{border-bottom-color:#fff}
.tlc-404-contact{opacity:.75}

/* --- legal pages (/politica-de-privacidade/, /politica-de-cookies/) --------------------------
       These are the only long-prose pages on the site: every other page is a short block of
       copy beside a photo, so the theme never had to make a 700-word column readable. The
       theme's own type, colour and container are untouched; this only sets a comfortable
       measure and puts air around the h3 section headings and the lists. ------------------- */
.tlc-legal{max-width:46em}
.tlc-legal h2{margin-bottom:.45em}
.tlc-legal h3{margin:1.9em 0 .5em;letter-spacing:1px}
.tlc-legal p{margin:0 0 1em}
.tlc-legal ul{margin:0 0 1.2em;padding-left:1.15em}
.tlc-legal li{margin-bottom:.55em}
.tlc-legal a{text-decoration:underline}
.tlc-legal-updated{opacity:.65;font-size:14px;margin-top:2em}

/* --- the legal links added to the footer block ---------------------------------------------- */
#footerBlocks .tlc-footer-legal{margin-top:.35em}

/* --- (retired in the content pass) the homepage information note that carried the backlink.
       Rounds 2 and 3 argued about where a hundred words about medicines could sit on a homepage
       whose own copy was a quotation and two buttons; round 3 settled on 13px fine print under the
       policy links, because anything larger was the biggest block of text on the page. That whole
       problem was a symptom: the homepage had 293 characters of body text. The content pass gave
       it a real section (.tlc-home-intro below), so the paragraph is now body copy inside it and
       .tlc-footer-note has no users left. Kept as a note so nobody re-adds the fine-print rule
       and wonders why it does nothing. ------------------------------------------------------- */
/* The theme pins the social-icon strip to the bottom of #outerWrapper (position:absolute;
   bottom:0, 48px tall) and never reserved room for it: it simply floated over the empty space
   below the footer. A second footer line is enough to reach it - the YouTube icon landed on top
   of the legal links on /contact/ and on both policy pages - so the footer now keeps the theme's
   30px padding plus that 48px strip. */
#footer{padding-bottom:78px}

/* ============================================================================================
   the content pass — the body copy the restore never had.
   Six pages were under the client bar's 900-character floor and the homepage carried 293. The
   copy is authored HTML in the theme's own block markup; these rules only make a long text column
   readable on a theme that never had to render one outside the two legal pages.
   ============================================================================================ */

/* --- .tlc-more: the block appended to /nutricao/, /bemestar/, /contact/ and /radio-1/.
       clear:both is the load-bearing declaration. Four of those pages end with an image floated
       right at sqs-col-5, and text that wraps a float and then snaps back to full width is exactly
       the ragged step the reviewer flagged on /psiquiatria/ - at 900+ characters it would have
       happened on every one of them. Measure, spacing and list treatment mirror .tlc-legal, which
       was calibrated on this same theme for the two policy pages. ---------------------------- */
.tlc-more{clear:both;max-width:46em}
.tlc-more h3{margin:1.9em 0 .5em;letter-spacing:1px}
.tlc-more h3:first-child{margin-top:.6em}
.tlc-more p{margin:0 0 1em}
.tlc-more ul{margin:0 0 1.2em;padding-left:1.15em}
.tlc-more li{margin-bottom:.55em}
.tlc-more a{text-decoration:underline}
.tlc-more strong{font-weight:600}

/* --- .tlc-home-intro: the homepage's second screen, below the untouched cover slide.
       It needs a ground of its own: the cover is a full-bleed photograph and the homepage, unlike
       every inner page, has no #outerWrapper and therefore no background image and no #bgOverlay
       scrim to read white type against. #1b2027 is the scrim's own colour (rgba(24,26,28,.62) over
       the dark half of the beach photo resolves to about this), so the section reads as the same
       surface the rest of the site uses rather than as a bolted-on panel.
       Every property is declared rather than inherited: <style id="slide-styles"> sits INSIDE the
       body, later in document order than this file's <link>, so anything left to the cascade here
       is a coin toss. ------------------------------------------------------------------------ */
.tlc-home-intro{background:#1b2027;color:#fff;padding:64px 24px 72px;
  font:400 16px/1.65 'proxima-nova','Source Sans Pro',Arial,sans-serif;text-align:left}
.tlc-home-inner{max-width:960px;margin:0 auto}
.tlc-home-intro h2{font-family:'futura-pt','Questrial','proxima-nova',Arial,sans-serif;
  font-size:30px;line-height:1.25;letter-spacing:4px;text-transform:uppercase;font-weight:400;
  margin:0 0 .8em;color:#fff}
.tlc-home-intro h3{font-family:'futura-pt','Questrial','proxima-nova',Arial,sans-serif;
  font-size:19px;line-height:1.3;letter-spacing:2px;text-transform:uppercase;font-weight:400;
  margin:2.2em 0 .6em;color:#fff}
/* 44em holds the running paragraphs to roughly 80 characters. The container is 960px because the
   six-area grid wants that width; letting the prose fill it too gives 110-character lines, which
   is where the eye starts losing the return sweep. The grid is deliberately NOT constrained. */
.tlc-home-intro p{margin:0 0 1.1em;color:rgba(255,255,255,.88);max-width:44em}
.tlc-home-intro a{color:#fff;text-decoration:underline}
.tlc-home-intro a:hover{color:#e5007e}
/* the six areas: auto-fit keeps them three-up at 1440, two-up on a tablet and one-up on a phone
   without a single media query, and minmax's floor is what stops a long service name from
   forcing a sideways scroll at 390 */
.tlc-home-areas{list-style:none;margin:1.4em 0 .6em;padding:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:26px 34px}
.tlc-home-areas li{margin:0;border-top:1px solid rgba(255,255,255,.22);padding-top:14px}
.tlc-home-areas li a{display:block;font-family:'futura-pt','Questrial',Arial,sans-serif;
  font-size:16px;letter-spacing:2px;text-transform:uppercase;text-decoration:none;
  border-bottom:1px solid rgba(255,255,255,.35);padding-bottom:3px;margin-bottom:9px}
.tlc-home-areas li a:hover{border-bottom-color:#e5007e}
.tlc-home-areas li span{display:block;font-size:15px;line-height:1.55;color:rgba(255,255,255,.8)}
/* the backlink paragraph is body copy here, not an inset: no background, no border, no box */
.tlc-home-intro .content-wraparea,
.tlc-home-intro .content-wraparea p{margin:0 0 1.1em}

/* --- phone: nothing on this site may scroll sideways ---------------------------------------- */
@media (max-width:800px){
  .tlc-404-code{font-size:56px}
  .tlc-legal h3{margin-top:1.5em}
  img,iframe,table{max-width:100%}
  .tlc-home-intro{padding:44px 20px 52px}
  .tlc-home-intro h2{font-size:23px;letter-spacing:2px}
  .tlc-home-intro h3{font-size:17px;letter-spacing:1px}
  .tlc-home-areas{gap:20px}
}

/* ============================================================================================
   tlc_look round 1 — defects found by looking at the rendered pages, not by any gate.
   Every rule below repairs something a visitor can see; the cause is recorded with each one.
   ============================================================================================ */

/* --- 1. /video1/ and /maisvideos/: every embed was ~2x too tall and overlapped its neighbours,
       the row rules, the "VER TODOS OS VÍDEOS" button and the footer.

       Squarespace ships the ratio on `.embed-block-wrapper` as an inline padding-bottom (the real
       per-video aspect, e.g. 56.20609%) and then has its JS make that element the positioned
       container. The theme sheet meanwhile pins the inner `.sqs-video-wrapper` with
       `.video-block .intrinsic .embed-block-wrapper:not(.embed-block-provider-SoundCloud)
        .sqs-video-wrapper{position:absolute;height:100%}` — four classes deep, so it outranked the
       single-class `.sqs-video-wrapper` rule further up this file. The wrapper therefore kept that
       rule's `padding-bottom:56.25%` but took `position:absolute` from the theme: it resolved its
       height against a distant ancestor, measured 493px instead of 246px, and left the flow so
       `.embed-block-wrapper` never contained it. Nine embeds then stacked on top of each other.

       The fix restores Squarespace's own arrangement: the inline-ratio element becomes the
       positioned, zero-height ratio box and the absolute wrapper fills it exactly. Matching the
       theme's specificity is what makes it stick. --------------------------------------------- */
.video-block .intrinsic,
.embed-block .intrinsic{position:relative;width:100%}
.video-block .intrinsic .embed-block-wrapper,
.embed-block .intrinsic .embed-block-wrapper{position:relative;width:100%;height:0}
.video-block .intrinsic .embed-block-wrapper .sqs-video-wrapper,
.embed-block .intrinsic .embed-block-wrapper .sqs-video-wrapper{
  position:absolute;top:0;left:0;width:100%;height:100%;padding-bottom:0}
/* the row's two columns are floats: without this the taller column drags the rule up under it */
.sqs-block-video .sqs-block-content{position:relative}

/* --- 2. the clinic logo was sliced through the wordmark on /psiquiatria/ (worst — "TERESA
       LEONARDO" cut in half), /psicologa/, /acupuntura-mdica/, /nutricao/ and /bemestar/.

       `.image-block-wrapper.has-aspect-ratio` carries the ratio Squarespace's LOADER used as a
       placeholder (68.01%, 76.77%, 70.59%, 92.28%, 91.25%) and clips to it with overflow:hidden,
       while the archived files are all square — `data-image-dimensions="960x960"`. Its JS would
       have replaced the placeholder ratio with the real one on load; statically the placeholder
       stayed and ate the bottom third of the picture.

       The repair is NOT done here. Deleting the ratio box collapses it to height 0 and the theme's
       absolutely-positioned .thumb-image (a four-class rule this file cannot outrank without
       !important warfare) then paints nowhere — the first attempt removed the picture from five
       pages instead of uncropping it. The mechanism is correct; only the number was wrong, so
       tlc_image_ratio.py rewrites each block's inline padding-bottom from the image's own
       data-image-dimensions, which is exactly the value Squarespace's loader would have written.
       Left as a note so a future rebuild does not re-add the rule that broke it. -------------- */

/* --- 3. two /imprensa/ entries were visibly washed out next to their five neighbours.
       The outbound-links policy drops the href and keeps the <a>; the theme paints every anchor in
       the content area at rgba(255,255,255,.6), so those descriptions rendered at 60% strength and
       read as faded, unfinished text. An <a> with no href is not a link — give it the surrounding
       copy's colour back.

       Scoped to .sqs-block-content, NOT to the whole page: the header's four folder toggles
       ("+ A CLÍNICA", "+ MEDIA") are also anchors without an href — those ARE widget toggles and
       the nav's dimmed treatment of them is deliberate. -------------------------------------- */
.sqs-block-content a:not([href]),
.sqs-block-content a:not([href]):hover{color:inherit;opacity:1;text-decoration:none;cursor:default}

/* --- 4. (retired in round 4) /imprensa/'s odd entry was held to a 29em measure inside a full-width
       column because its cover image was missing. Holding the text narrow still left the right half
       of the row empty with only the credit line in it. The image itself was recovered instead, so
       the row is a normal 6+6 and needs no special rule at all. ------------------------------- */

/* --- 5. the cover page's YouTube button rendered as a small white square with a rectangular hole
       — indistinguishable from a broken-image placeholder sitting under the two cover buttons.
       The theme's knockout is drawn by filling `.use-mask` (a 64-unit square with the glyph cut
       out) white and letting the wrapper's border-radius clip it to a circle; the referenced
       <symbol> comes out at ~18px inside the 28px wrapper, so the clip never reaches it and the
       square shows. #footer's identical button is unaffected because it uses the theme's other
       markup path, and it is the look this one should have: a white disc with the glyph knocked
       out. Paint the disc on the wrapper, where its size is certain, and put the glyph on top.

       Every declaration here needs !important. The rules they fight live in <style
       id="slide-styles">, which sits INSIDE the slide markup in the body — later in document order
       than this file's <link> in the head — so at equal specificity the slide styles win. -----  */
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social .icon-wrapper{
  background:#fff!important;border-radius:50%!important;overflow:hidden}
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social .icon-wrapper>div{
  width:100%;height:100%;display:flex;align-items:center;justify-content:center}
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social svg.social{
  width:100%;height:100%;display:block}
/* The <use>/<symbol> pair cannot be made to fill this button: with no width/height on the <use>,
   the referenced symbol establishes a viewport of its own, lands 18px wide glued to the top-left
   of the 28px disc, and neither the SVG2 geometry properties nor the wrapper's flex centring move
   it. So the glyph is painted as a background instead, from the VERY SAME path this page already
   carries in <symbol id="youtube-icon"> — no new artwork, just a placement that is certain. The
   inner <svg> is hidden so it cannot show through. */
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social .icon-wrapper{
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2064%2064%22%3E%3Cpath%20fill=%22%231e2226%22%20d=%22M46.7%2C26c0%2C0-0.3-2.1-1.2-3c-1.1-1.2-2.4-1.2-3-1.3C38.3%2C21.4%2C32%2C21.4%2C32%2C21.4h0%20c0%2C0-6.3%2C0-10.5%2C0.3c-0.6%2C0.1-1.9%2C0.1-3%2C1.3c-0.9%2C0.9-1.2%2C3-1.2%2C3S17%2C28.4%2C17%2C30.9v2.3c0%2C2.4%2C0.3%2C4.9%2C0.3%2C4.9s0.3%2C2.1%2C1.2%2C3%20c1.1%2C1.2%2C2.6%2C1.2%2C3.3%2C1.3c2.4%2C0.2%2C10.2%2C0.3%2C10.2%2C0.3s6.3%2C0%2C10.5-0.3c0.6-0.1%2C1.9-0.1%2C3-1.3c0.9-0.9%2C1.2-3%2C1.2-3s0.3-2.4%2C0.3-4.9%20v-2.3C47%2C28.4%2C46.7%2C26%2C46.7%2C26z%20M28.9%2C35.9l0-8.4l8.1%2C4.2L28.9%2C35.9z%22/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;background-position:50% 50%!important;
  background-size:76% 76%!important}
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social svg.social{
  visibility:hidden}
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social .use-mask{
  fill:transparent!important}
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social .use-icon{
  fill:#1e2226!important}
.sqs-slide-wrapper[data-slide-type="cover-page"] .responsive-wrapper.social .icon-wrapper:hover{
  background:rgba(255,255,255,.82)}

/* --- 6. the homepage sets its title, the Woody Allen quote and the attribution in white directly
       on the palest part of the sky. Measured off the render, that is 1.9:1 — below even the 3:1
       floor for large text, and the quote is body size. The inner pages have had a scrim since
       #bgOverlay was deepened to rgba(24,26,28,.62); the cover slide was simply never given one.

       A flat overlay would kill the photograph, which is the whole homepage. This is weighted to
       the top, where every piece of copy sits, and is fully clear by 82% — the swimmer, the horizon
       and the turquoise water keep their full colour. Painted on the photo's own container so it
       cannot come between the slide and its buttons. --------------------------------------- */
.sqs-slide-wrapper[data-slide-type="cover-page"] .sqs-slice-gallery-item.content-fill:after{
  content:"";position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(16,22,34,.66) 0%,
    rgba(16,22,34,.60) 26%,
    rgba(16,22,34,.34) 52%,
    rgba(16,22,34,.08) 72%,
    rgba(16,22,34,0)   86%)}

/* --- 7. /contact/: the map box. Round 2 tried to solve the attribution overlap by making the
       iframe taller; round 3 established that the overlap cannot be solved from outside a
       cross-origin embed and replaced the iframe altogether. The sizing rules that lived here are
       now in the "/contact map" block above. ------------------------------------------------- */

@media (max-width:800px){
  /* --- 8. /psiquiatria/ overflowed the phone by 27px: its intro h1 is set at 30px with 5px of
         tracking and the line "A palavra Psiquiatria" is held together by a <br>, so it could not
         wrap and the last letter was clipped at the screen edge (body{overflow-x:clip} hid the
         sideways pan but not the loss). Tighten the display setting at phone widths — the same
         heading on every other page simply reads a little smaller.
         Scoped to .sqs-block-content so the header's h1.site-title keeps its own scale. ------- */
  .sqs-block-content h1{font-size:24px;letter-spacing:2px;line-height:1.3}

  /* --- 9. justified body copy in a 340px column opened rivers three words wide on /psiquiatria/
         and /psicologa/. Justification only works with a long measure. ------------------------ */
  .sqs-block-content p{text-align:left!important}
}

/* --- the authored service-page photographs (/psiquiatria, /psicologa, /acupuntura-mdica,
       /nutricao). The theme lays .thumb-image out as position:absolute; width:100% inside an
       overflow:hidden wrapper whose height is padding-bottom:50%, and never says height:auto -
       Squarespace's own responsive loader used to set the geometry inline at runtime and that
       script is gone. Any image whose natural aspect is not exactly 2:1, or that carries an HTML
       height attribute, therefore renders taller than its box and loses its bottom edge; the first
       wiring of these four shipped exactly that and every picture was cut in half. One rule fixes
       it for any source size, so a future regeneration at different dimensions cannot re-break it.
       Measured with _scripts/_tlc_img_geom.js: rendered box must equal the wrapper box. --------- */
.tlc-gen-image .thumb-image{height:auto!important;top:0;left:0}

/* --- HIT AREA ----------------------------------------------------------------------------------
   WCAG 2.5.8 puts the floor for anything a finger must hit at 24x24 CSS px, 2.5.5 the standard at
   44. Every failure here is the same shape: a standalone link set `display:inline`, so its border
   box is the height of its glyphs - the main nav is 53x17 - even though the line box around it is
   19.5px. Vertical padding on an INLINE box grows the border box, and with it the hit target,
   without changing the line box height, so the nav keeps its exact spacing and only becomes
   hittable. The announcement strip and the phone menu label are block and inline-block, and take
   the same 24px floor directly. */
nav#main-navigation ul.cf li a,
ul.cf li.folder > .folder-parent > a { padding-block: 5px; }
.tlc-announce .tlc-announce-link { padding-block: 4px; }
nav#mobile-navigation span#mobile-navigation-label { padding: 6px 10px; }

/* The gallery slideshow shipped 9x9 dots - 46 of them on /galeria-fotos/ - which is the "controls
   too small for a finger" defect the client named, at its worst. The dot has to stay 9px or the
   strip stops reading as a row of dots, so the BUTTON becomes 24px square and the dot is drawn by
   a pseudo-element inside it. The flex gap drops to 0 because the box now carries the spacing. */
.tlc-dots { gap: 0; max-width: 74%; }
.tlc-dots .tlc-dot {
  width: 24px; height: 24px; padding: 0; border: 0; border-radius: 0;
  background: transparent; position: relative;
}
.tlc-dots .tlc-dot::before {
  content: ""; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 9px; height: 9px; border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .5); background: transparent;
}
.tlc-dots .tlc-dot-on { background: transparent; }
.tlc-dots .tlc-dot-on::before { background: #fff; border-color: #fff; }
.tlc-slide-nav .tlc-dots .tlc-dot:hover, .tlc-slide-nav .tlc-dots .tlc-dot:focus-visible {
  background: transparent;
}
.tlc-dots .tlc-dot:hover::before, .tlc-dots .tlc-dot:focus-visible::before {
  background: rgba(255, 255, 255, .35); border-color: #fff;
}
/* The contact page: the map credit and "ver mapa maior" are inline links whose border box is the
   glyph box, and the form's field labels are 19px tall. A <label> is a control - tapping it focuses
   its field - so it takes the same 24px floor as everything else. */
.tlc-map-credit a, .tlc-map-note a { padding-block: 5px; }
.form-item.field > label.title { padding-block: 3px; }

/* --- THE HOMEPAGE CARRIED THE SAME YOUTUBE LINK TWICE, AND THE SECOND ONE COULD NOT BE PRESSED --
   The header's social nav is position:absolute and lands at y=953 on a 1440x1000 screen, i.e. down
   inside the cover slide. `.sqs-slide-wrapper` comes AFTER the header in the document and is
   position:relative, so it painted over that nav and took every pointer event:
   document.elementFromPoint answered `div.sqs-slide-layer-content` on 24 of the icon's 25 rows,
   which is what the repaired legibility gate measured.

   Raising it with z-index was the wrong cure and was reverted after looking at the screenshot: the
   cover slide has its OWN social row (a.icon-wrapper.youtube, the white circle under ENTRAR /
   CONTACTOS, which is on top and works), so lifting the header nav simply put a SECOND copy of the
   same YouTube link over the model's head. The homepage is the only page with a cover slide and
   the only page with that slide-level social row - checked across all 17 pages that carry the
   header nav - so on this one page the header copy is redundant furniture that no visitor can
   reach. It is not painted here. Every other page keeps it, where it is reachable and is the only
   copy. */
body#collection-551c21b0e4b0f5016a1d36e3 header nav.social.social-links { display: none; }

/* --- THE CONTACT FORM'S OWN ANSWER ------------------------------------------------------------
   js/forms.js writes one line under the button saying what the press did. Squarespace's own
   `.form-submission-text` ("Obrigado!") was deleted with it: a thank-you that no longer means a
   message was sent is worse than no answer at all. */
.tlc-form-status {
  margin: 12px 0 0; padding: 10px 12px; font-size: 15px; line-height: 1.5;
  border-left: 3px solid currentColor;
}
.tlc-form-status--sent { color: #1d5e2f; background: #eef6f0; }
.tlc-form-status--bad  { color: #8a1f1f; background: #fbeeee; }
.tlc-field-bad.field-element { border-color: #8a1f1f; box-shadow: 0 0 0 1px #8a1f1f; }
