/* clinicafysio.com - restoration stylesheet (o4_fysio_finish.py).
   Everything here replaces a stylesheet the archive did not keep: the 10Web/owl carousel CSS, the
   service-showcase bootstrap grid, wpforms-full.min.css and the Trustindex widget CSS. Colours are
   the ones the site's own surviving colormag_style-inline-css block declares. */
:root{
  --fy-primary:#57cbe5;
  --fy-deep:#289dcc;
  --fy-blue:#479ed3;
  --fy-ink:#1c2b33;
  --fy-muted:#6b7a83;
  --fy-line:#e3e9ec;
  --fy-bg:#f6fafb;
}

/* ---------- header / brand ---------- */
#header-logo-image .custom-logo{width:118px;height:auto;display:block}
#site-title{line-height:1.1}
#site-title a{color:var(--fy-primary)}
@media (max-width:600px){
  #site-title{font-size:28px}
  #header-logo-image .custom-logo{width:88px}
}

/* ---------- the burger, and the panel it opens ---------- */
.menu-toggle{-webkit-user-select:none;user-select:none}
.menu-toggle:focus-visible{outline:3px solid #fff;outline-offset:-3px}
#site-navigation.main-small-navigation .menu-primary-container{
  background:#fff;box-shadow:0 12px 24px rgba(0,0,0,.18);max-height:75vh;overflow:auto}
#site-navigation.main-small-navigation .menu-primary-container ul{display:block}
#site-navigation.main-small-navigation .menu li{border-bottom:1px solid var(--fy-line)}
#site-navigation.main-small-navigation .menu li:last-child{border-bottom:0}
.search-form-top .search-form{margin:0}
.search-form-top{min-width:min(320px,90vw)}
.fa.search-top:focus-visible{outline:3px solid #fff;outline-offset:-3px}

/* ---------- search results ---------- */
.fy-results{position:absolute;right:0;top:100%;z-index:9998;width:min(460px,94vw);
  background:#fff;border:1px solid var(--fy-line);box-shadow:0 14px 30px rgba(0,0,0,.18);
  max-height:70vh;overflow:auto;padding:6px 0;text-align:left}
.fy-results[hidden]{display:none}
.fy-results li{list-style:none;margin:0}
.fy-results a{display:block;padding:10px 16px;color:var(--fy-ink);text-decoration:none}
.fy-results a:hover,.fy-results a:focus{background:var(--fy-bg)}
.fy-results b{display:block;color:var(--fy-deep)}
.fy-results small{color:var(--fy-muted)}
.fy-results .fy-none{padding:14px 16px;color:var(--fy-muted)}

/* ColorMag sets `.entry-content ul{list-style:square;padding-left:30px}` and that selector is more
   specific than a bare class, so every rebuilt list rendered the theme's square marker AND our own
   bullet, indented by 30px it did not want. Match its specificity rather than reach for !important. */
.entry-content ul.fy-services,.entry-content ul.fy-service-list,.entry-content ul.fy-partners,
.entry-content ul.fy-space-grid,.entry-content ul.fy-book-ways,.entry-content ul.fy-404,
.entry-content ul.fy-track,.entry-content ul.fy-results,.entry-content ul.fy-facts,
.entry-content ul.fy-tiles,.entry-content ul.fy-member-cred,.entry-content ul.fy-postgrid,
.entry-content ul.fy-strip,.entry-content ul.fy-news{list-style:none;padding:0;margin-bottom:0}

/* ---------- generic carousel (reviews, team) ---------- */
.fy-carousel{position:relative;margin:0 0 28px}
.fy-track{display:flex;gap:20px;margin:0;padding:2px;list-style:none;
  overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none}
.fy-track::-webkit-scrollbar{display:none}
.fy-slide{flex:0 0 calc((100% - 40px)/3);scroll-snap-align:start;list-style:none;margin:0}
@media (max-width:900px){.fy-slide{flex-basis:calc((100% - 20px)/2)}}
@media (max-width:600px){.fy-slide{flex-basis:100%}}
.fy-ctrl{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px}
.fy-prev,.fy-next{width:38px;height:38px;border-radius:50%;border:1px solid var(--fy-line);
  background:#fff;color:var(--fy-deep);font-size:22px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:.2s}
.fy-prev:hover,.fy-next:hover{background:var(--fy-primary);color:#fff;border-color:var(--fy-primary)}
.fy-prev[disabled],.fy-next[disabled]{opacity:.35;cursor:default}
.fy-dots{display:flex;gap:8px}
.fy-dots button{width:9px;height:9px;padding:0;border:0;border-radius:50%;
  background:var(--fy-line);cursor:pointer}
.fy-dots button[aria-selected="true"]{background:var(--fy-primary);transform:scale(1.35)}
@media (prefers-reduced-motion:reduce){.fy-track{scroll-behavior:auto}}

/* ---------- reviews ---------- */
.fy-review{background:#fff;border:1px solid var(--fy-line);border-radius:12px;padding:18px;
  height:100%;box-shadow:0 2px 8px rgba(28,43,51,.05)}
.fy-review-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.fy-avatar{flex:0 0 44px;width:44px;height:44px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-weight:700;font-size:16px;color:#fff;
  background:hsl(calc(188 + var(--fy-h) * .17),46%,52%)}
.fy-review-who b{display:block;font-size:15px;color:var(--fy-ink)}
.fy-review-who time{font-size:13px;color:var(--fy-muted)}
.fy-stars{margin:0 0 8px;color:#f5a623;letter-spacing:2px;font-size:15px}
.fy-stars-off{color:var(--fy-line)}
.fy-review-text{margin:0;font-size:15px;line-height:1.55;color:var(--fy-ink)}

/* ---------- team ---------- */
.fy-member{background:#fff;border-radius:12px;padding:22px 18px;text-align:center;height:100%;
  box-shadow:0 0 4px rgba(43,42,42,.25)}
.fy-portrait{width:120px;height:120px;margin:0 auto 14px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-size:38px;font-weight:700;color:#fff;
  background:linear-gradient(140deg,hsl(calc(188 + var(--fy-h) * .17),44%,58%),hsl(calc(188 + var(--fy-h) * .17),44%,42%))}
.fy-member-role{margin:0;font-size:14px;color:#989898;line-height:1.4}
.fy-member-name{margin:4px 0 10px;font-size:16px;font-weight:600;text-transform:uppercase;
  color:#272727;letter-spacing:.06em}
.fy-member-bio{margin:0;font-size:14px;line-height:1.5;color:#333;white-space:pre-line}
.fy-team-note{margin:0 0 24px;font-size:14px;color:var(--fy-muted)}

/* ---------- services ---------- */
.fy-services{display:grid;gap:22px;grid-template-columns:repeat(3,1fr);margin:0 0 24px;padding:0}
@media (max-width:900px){.fy-services{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.fy-services{grid-template-columns:1fr}}
.fy-service{list-style:none;background:#fff;border:1px solid var(--fy-line);border-radius:12px;
  padding:26px 20px;text-align:center;transition:.25s}
.fy-service:hover{background:var(--fy-blue);border-color:var(--fy-blue);
  box-shadow:0 10px 22px rgba(71,158,211,.28)}
.fy-service-icon{width:66px;height:66px;margin:0 auto 16px;border:1px solid var(--fy-blue);
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:26px;color:var(--fy-blue);transition:.25s}
.fy-service:hover .fy-service-icon{background:#fff;color:var(--fy-blue)}
.fy-service h3{margin:0;font-size:20px;line-height:1.3;color:var(--fy-ink)}
.fy-service:hover h3,.fy-service:hover .fy-service-list li{color:#fff}
.fy-service-list{margin:14px 0 0;padding:0;list-style:none;text-align:left;display:inline-block}
.fy-service-list li{position:relative;padding-left:16px;font-size:15px;line-height:1.65;
  color:var(--fy-muted)}
.fy-service-list li::before{content:"";position:absolute;left:0;top:.65em;width:6px;height:6px;
  border-radius:50%;background:currentColor;opacity:.6}
.fy-services-note{margin:0 0 8px;font-size:15px;color:var(--fy-muted)}

/* ---------- partners (/protocolos/) ---------- */
.fy-partners{display:grid;gap:20px;grid-template-columns:repeat(2,1fr);margin:0 0 22px;padding:0}
@media (max-width:600px){.fy-partners{grid-template-columns:1fr}}
.fy-partner{list-style:none;display:flex;align-items:center;gap:16px;background:#fff;
  border:1px solid var(--fy-line);border-radius:12px;padding:18px}
.fy-partner-mark{flex:0 0 56px;width:56px;height:56px;border-radius:12px;display:flex;
  align-items:center;justify-content:center;font-weight:700;color:#fff;background:var(--fy-deep)}
.fy-partner h3{margin:0;font-size:17px;line-height:1.35}

/* ---------- espaço / marcações ---------- */
.fy-lede{font-size:18px;line-height:1.6}
.fy-space-grid,.fy-book-ways{display:grid;gap:20px;grid-template-columns:repeat(2,1fr);
  margin:24px 0;padding:0}
.fy-book-ways{grid-template-columns:repeat(3,1fr)}
@media (max-width:700px){.fy-space-grid,.fy-book-ways{grid-template-columns:1fr}}
.fy-space-grid li,.fy-book-ways li{list-style:none;background:#fff;border:1px solid var(--fy-line);
  border-radius:12px;padding:20px}
.fy-space-ico{width:52px;height:52px;border-radius:50%;background:var(--fy-bg);
  display:flex;align-items:center;justify-content:center;color:var(--fy-deep);font-size:21px;
  margin-bottom:12px}
.fy-space-grid h3,.fy-book-ways h3{margin:0 0 6px;font-size:17px}
.fy-space-grid p,.fy-book-ways p{margin:0;font-size:15px;color:var(--fy-muted)}
/* The contact/espaco map. It was an openstreetmap.org iframe until 2026-08-18 and is now a
   picture this site hosts, wrapped in the link a visitor expects when clicking a map. The box
   is unchanged - 380px tall, full column width, 800px at 1440 and 367px at 390 - and
   object-fit:cover crops the same centred image to both, so the clinic stays on the middle
   pixel and the page below the map does not move. */
.fy-map{display:block;width:100%;height:380px;border-radius:10px;border:1px solid var(--fy-line);overflow:hidden}
.fy-map img{display:block;width:100%;max-width:100%;height:100%;object-fit:cover}
.fy-map-link{margin:8px 0 22px;font-size:14px}

/* ---------- forms (wpforms CSS was never archived) ---------- */
.fy-form{max-width:640px}
.fy-form .wpforms-field,.fy-form p{margin:0 0 16px}
.fy-form label,.fy-form .wpforms-field-label{display:block;margin-bottom:6px;font-weight:600;
  font-size:15px;color:var(--fy-ink)}
.fy-form input[type=text],.fy-form input[type=email],.fy-form input[type=tel],
.fy-form input[type=number],.fy-form input[type=date],.fy-form select,.fy-form textarea{
  width:100%;max-width:100%;padding:11px 13px;border:1px solid var(--fy-line);border-radius:8px;
  font:inherit;font-size:15px;background:#fff;color:var(--fy-ink);box-sizing:border-box}
.fy-form input:focus,.fy-form select:focus,.fy-form textarea:focus{outline:0;
  border-color:var(--fy-primary);box-shadow:0 0 0 3px rgba(87,203,229,.25)}
.fy-form .fy-req,.fy-form .wpforms-required-label{color:#c0392b}
.fy-book{display:grid;gap:0 18px;grid-template-columns:1fr 1fr}
@media (max-width:600px){.fy-book{grid-template-columns:1fr}}
.fy-book .fy-form-wide{grid-column:1/-1}
.fy-btn,.fy-form button,.fy-form .wpforms-submit{display:inline-block;padding:12px 26px;border:0;
  border-radius:8px;background:var(--fy-primary);color:#fff;font:inherit;font-weight:600;
  cursor:pointer;text-decoration:none;transition:.2s}
.fy-btn:hover,.fy-form button:hover,.fy-form .wpforms-submit:hover{background:var(--fy-deep);
  color:#fff}
.wpforms-submit-spinner{display:none!important}

/* ---------- sidebar contact card ---------- */
.fy-card{background:#fff;border:1px solid var(--fy-line);border-radius:12px;padding:16px}
.fy-card-row{margin:0 0 12px;font-size:14px;line-height:1.5;display:flex;gap:10px}
.fy-card-row i{color:var(--fy-primary);width:18px;text-align:center;margin-top:3px}
.fy-card-note{display:block;color:var(--fy-muted);font-size:12px}
.fy-card-cta{margin:4px 0 0}
.fy-card-cta .fy-btn{display:block;text-align:center}

/* ---------- livro de reclamações ---------- */
.fy-livro-btn{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--fy-line);
  border-left:5px solid #0b7a3b;border-radius:8px;padding:10px 14px;text-decoration:none;
  color:var(--fy-ink);max-width:230px}
.fy-livro-btn:hover{background:var(--fy-bg)}
.fy-livro-mark{flex:0 0 28px;width:28px;height:28px;border-radius:50%;background:#0b7a3b;color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700}
.fy-livro-txt b{display:block;font-size:14px}
.fy-livro-txt i{font-style:normal;font-size:12px;color:var(--fy-muted)}

/* ---------- homepage "Espaço" card (the photograph was never archived) ---------- */
.fy-espaco-card{display:flex;align-items:center;gap:18px;padding:22px 24px;border-radius:14px;
  text-decoration:none;color:#fff;background:linear-gradient(120deg,var(--fy-primary),var(--fy-blue));
  box-shadow:0 10px 24px rgba(71,158,211,.28);transition:.2s}
.fy-espaco-card:hover{transform:translateY(-2px);color:#fff}
.fy-espaco-ico{flex:0 0 56px;width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;font-size:24px}
.fy-espaco-txt b{display:block;font-size:20px;line-height:1.25}
.fy-espaco-txt i{display:block;font-style:normal;font-size:14px;opacity:.9;margin:2px 0 6px}
.fy-espaco-txt em{font-style:normal;font-size:14px;font-weight:600;text-decoration:underline}

/* ---------- 404 ---------- */
.fy-404{margin:20px 0;padding:0}
.fy-404 li{list-style:none;border-bottom:1px solid var(--fy-line);padding:11px 0}
.fy-404 a{font-weight:600}
.fy-404 span{display:block;font-size:14px;color:var(--fy-muted)}

/* ---------- scroll-up ----------
   ColorMag ships `a#scroll-up{display:none;opacity:.5}` and revealed it from colormag-custom.min.js,
   which is one of the WAF interstitials — so the back-to-top button was not merely faded, it was
   display:none on every page. Match the theme's own selector or the rule loses on specificity. */
a#scroll-up{display:block;opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .25s,visibility 0s linear .25s}
a#scroll-up.fy-on{opacity:.75;visibility:visible;pointer-events:auto;
  transition:opacity .25s,visibility 0s}
a#scroll-up.fy-on:hover{opacity:1}
/* WHY visibility AND NOT JUST opacity. At the top of the page the button is faded to opacity 0 and
   made pointer-events:none, which stops a mouse — and stops nothing else. Measured 2026-08-19:
   tabIndex 0, focus() succeeds, so a keyboard visitor tabs onto an invisible link on all 24 pages
   and cannot see where they are. visibility is discrete and cannot be interpolated, so it is
   switched at the END of the fade out (0s delay .25s) and at the START of the fade in (0s, no
   delay): the button still fades exactly as before, and while it is invisible it is out of the tab
   order and out of the accessibility tree. */

/* ---------- sidebar novidades widget: keep the images sane ---------- */
#secondary .widget_siteorigin-panels-postloop img{max-width:100%;height:auto}
#secondary .so-panel{margin-bottom:16px}


/* ============================================================================
   Components authored during the rebuild that had markup but never got a rule.
   Every selector below exists because the class is emitted by o4_fysio_finish.py
   and, until now, rendered with browser defaults: the sidebar post list ran the
   title into the date, the booking CTA collapsed into one italic run, the date
   badge printed "23Fev 2023", and the footer's two link columns stacked in the
   right-hand half leaving the left half empty.
   ============================================================================ */

/* ---------- sidebar "Do blogue" ---------- */
.fy-news-widget .widget-title{margin-bottom:6px}
.fy-news{margin:0;padding:0;list-style:none}
#secondary .fy-news li,#colophon .fy-news li,#tertiary .fy-news li,.fy-news li{
  padding:0;border-bottom:0;list-style:none;line-height:1.4}
.fy-news a{display:block;padding:9px 0;border-bottom:1px solid var(--fy-line);
  text-decoration:none;color:var(--fy-ink)}
.fy-news li:last-child a{border-bottom:0}
.fy-news b{display:block;font-size:15px;font-weight:600;line-height:1.35}
.fy-news a:hover b{color:var(--fy-deep)}
.fy-news time{display:block;margin-top:3px;font-size:13px;color:var(--fy-muted)}
.fy-news-all{margin:12px 0 0;font-size:14px;font-weight:600}
.fy-news-all a{color:var(--fy-deep);text-decoration:none}
.fy-news-all a:hover{text-decoration:underline}
.fy-livro{margin:0 0 6px}

/* ---------- booking CTA (9 pages) ----------
   The heading <b> and the strapline <i> are siblings, and the icon is also an <i>,
   so the strapline rule is anchored with the sibling combinator or it would
   restyle the glyph itself. */
.fy-cta{display:flex;align-items:center;gap:18px;margin:26px 0 10px;padding:20px 24px;
  border-radius:14px;text-decoration:none;color:#fff;
  background:linear-gradient(120deg,var(--fy-primary),var(--fy-blue));
  box-shadow:0 10px 24px rgba(71,158,211,.28);transition:.2s}
.fy-cta:hover{transform:translateY(-2px);color:#fff}
.fy-cta-ico{flex:0 0 56px;width:56px;height:56px;border-radius:50%;
  background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;
  font-size:24px;font-style:normal}
.fy-cta b{display:block;font-size:20px;line-height:1.25}
.fy-cta b~i{display:block;font-style:normal;font-size:14px;line-height:1.55;opacity:.94;margin-top:4px}
@media (max-width:600px){
  .fy-cta{padding:18px;gap:14px}
  .fy-cta-ico{flex-basis:46px;width:46px;height:46px;font-size:20px}
  .fy-cta b{font-size:18px}
}
.fy-post-cta{margin-top:24px;padding-top:16px;border-top:1px solid var(--fy-line)}

/* ---------- archive notice on the 2023 posts ---------- */
.fy-archive-note{margin:0 0 22px;padding:12px 16px;background:var(--fy-bg);
  border-left:4px solid var(--fy-primary);border-radius:0 8px 8px 0;
  font-size:14px;line-height:1.6;color:var(--fy-muted)}
.fy-archive-note b{color:var(--fy-ink)}

/* ---------- post cards (homepage, /novidades/, related strip) ---------- */
.fy-postgrid{display:grid;gap:22px;grid-template-columns:repeat(2,1fr);
  margin:0 0 26px;padding:0;list-style:none}
.fy-postgrid--3{grid-template-columns:repeat(3,1fr)}
@media (max-width:900px){.fy-postgrid,.fy-postgrid--3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.fy-postgrid,.fy-postgrid--3{grid-template-columns:1fr}}
.fy-postcard{list-style:none;margin:0;background:#fff;border:1px solid var(--fy-line);
  border-radius:12px;padding:20px;box-shadow:0 2px 8px rgba(28,43,51,.05)}
.fy-news-date{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  min-width:56px;padding:7px 10px;margin:0 0 12px;border-radius:10px;
  background:var(--fy-primary);color:#fff;line-height:1.1;text-align:center}
.fy-news-date strong{font-size:20px;font-weight:700;color:#fff}
.fy-news-date span{display:block;margin-top:3px;font-size:11px;font-weight:600;
  text-transform:uppercase;letter-spacing:.08em}
.fy-postcard .entry-title{margin:0 0 8px;font-size:18px;line-height:1.3;text-transform:none}
.fy-postcard .entry-title a{color:var(--fy-ink);text-decoration:none}
.fy-postcard .entry-title a:hover{color:var(--fy-deep)}
.fy-postcard p{margin:0;font-size:15px;line-height:1.6;color:var(--fy-muted)}
.fy-postcard p.fy-more{margin:12px 0 0;font-size:14px;font-weight:600}
.fy-more a{color:var(--fy-deep);text-decoration:none}
.fy-more a:hover{text-decoration:underline}
.fy-more-link{margin:8px 0 0;font-size:14px;font-weight:600}
.fy-more-link a{color:var(--fy-deep);text-decoration:none}
.fy-more-link a:hover{text-decoration:underline}
.fy-related{margin:34px 0 0;padding-top:24px;border-top:1px solid var(--fy-line)}
.fy-related h2{margin:0 0 18px;font-size:20px}
.fy-archive-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;
  margin:26px 0 14px;font-size:17px;font-weight:600;color:var(--fy-ink)}
.fy-archive-head span{font-size:13px;font-weight:400;color:var(--fy-muted)}
.fy-postlist .fy-postgrid{margin-bottom:8px}
.fy-listing-header{margin-bottom:12px}
.fy-source{margin:0 0 22px;font-size:15px;line-height:1.65;color:var(--fy-muted)}

/* ---------- homepage services strip ---------- */
.fy-strip{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 24px;
  margin:0 0 6px;padding:0;list-style:none}
@media (max-width:600px){.fy-strip{grid-template-columns:1fr}}
.fy-strip li{list-style:none;display:flex;align-items:center;gap:12px;
  font-size:15px;line-height:1.4;color:var(--fy-ink)}
.fy-strip-ico{flex:0 0 34px;width:34px;height:34px;border-radius:50%;background:var(--fy-bg);
  color:var(--fy-deep);display:flex;align-items:center;justify-content:center;font-size:15px}

/* ---------- homepage "Novidades" panel lead ---------- */
.fy-now{background:var(--fy-bg);border:1px solid var(--fy-line);border-radius:12px;
  padding:20px 22px;margin:0 0 10px}
.fy-now-lead{margin:0 0 15px;font-size:16px;line-height:1.6;color:var(--fy-ink)}
.fy-now-lead b{color:var(--fy-deep)}
.fy-now-cta{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px}
.fy-now-alt{display:inline-flex;align-items:center;padding:11px 18px;border:1px solid var(--fy-line);
  border-radius:8px;background:#fff;color:var(--fy-deep);font-weight:600;
  text-decoration:none;font-size:15px}
.fy-now-alt:hover{border-color:var(--fy-primary);color:var(--fy-deep)}

/* ---------- reviews wall (/criticas/ and the homepage panel) ---------- */
.fy-review-wall{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));
  margin:0 0 10px}

/* ---------- team grid (/equipa/) ---------- */
.fy-team{margin:0 0 22px}
.fy-tiles{display:grid;gap:22px;grid-template-columns:repeat(3,1fr);margin:0;padding:0;list-style:none}
@media (max-width:900px){.fy-tiles{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.fy-tiles{grid-template-columns:1fr}}
.fy-tile{list-style:none;margin:0}
.fy-member-cred{margin:0;padding:0;list-style:none;text-align:left;display:inline-block}
.fy-member-cred li{position:relative;margin:0 0 5px;padding-left:15px;
  font-size:14px;line-height:1.5;color:#333;list-style:none}
.fy-member-cred li:last-child{margin-bottom:0}
.fy-member-cred li::before{content:"";position:absolute;left:0;top:.6em;width:5px;height:5px;
  border-radius:50%;background:var(--fy-primary)}

/* ---------- services (/servicos/) ----------
   Fisioterapia is the only card carrying a seven-item list; --wide gives that list
   the width it needs instead of letting it set the height of the whole row. */
.fy-service-desc{margin:14px 0 0;font-size:15px;line-height:1.6;color:var(--fy-muted);text-align:left}
.fy-service:hover .fy-service-desc{color:#fff}
.fy-service--wide{grid-column:span 2}
@media (max-width:600px){.fy-service--wide{grid-column:auto}}

/* ---------- /sobre/ summary list ---------- */
.fy-facts{display:grid;gap:10px;margin:0 0 24px;padding:0;list-style:none}
.fy-facts li{list-style:none;background:#fff;border:1px solid var(--fy-line);border-radius:10px;
  padding:12px 16px;font-size:15px;line-height:1.6;color:var(--fy-ink)}
.fy-facts b{color:var(--fy-deep);margin-right:6px}

/* ---------- pages written during the rebuild ----------
   The list classes above zero their bottom margin, so a heading that follows a card
   grid (e.g. "Onde estamos" on /espaco/) sat flush against it until this rule. */
.fy-authored .entry-header{margin-bottom:14px}
.fy-authored .entry-content h2{margin:32px 0 12px;font-size:22px;line-height:1.3}
.fy-authored .entry-content h2:first-child{margin-top:0}

/* ---------- policy pages ---------- */
.fy-legal p,.fy-legal li{line-height:1.7}
.fy-legal-box{background:var(--fy-bg);border:1px solid var(--fy-line);
  border-left:4px solid var(--fy-primary);border-radius:0 10px 10px 0;padding:14px 18px;margin:0 0 20px}
.fy-legal-box p:last-child{margin-bottom:0}
.fy-legal-updated{margin:28px 0 0;padding-top:14px;border-top:1px solid var(--fy-line);
  font-size:13px;line-height:1.65;color:var(--fy-muted)}

/* ---------- contact form intro ---------- */
.fy-form-intro{margin:0 0 16px;font-size:15px;line-height:1.65;color:var(--fy-muted)}

/* ---------- footer ----------
   ColorMag floats .tg-footer-other-widgets right at 57.9% and expects its own
   .tg-second-/.tg-third-footer-widget halves inside it. The rebuild emits
   .fy-footer-col instead, so without this grid both columns stacked in the right
   half and the bottom-left of the footer stayed empty at 1440px. */
.fy-footer .tg-footer-other-widgets{display:grid;grid-template-columns:1fr 1fr;gap:0 30px}
@media (max-width:600px){.fy-footer .tg-footer-other-widgets{grid-template-columns:1fr}}
.fy-footer-col .widget{margin-bottom:30px}
/* the wordmark PNG has no alpha channel, so on the dark footer it would otherwise read as a
   bare white rectangle; the padded plate makes the white deliberate. */
.fy-footer-mark{width:112px;height:auto;display:block;margin:0 0 16px;
  padding:8px 10px;background:#fff;border-radius:10px}
.fy-footer .widget p{line-height:1.65}
.fy-footer .fy-btn{margin-top:4px}

/* ---------- Font Awesome 4 glyphs must keep the Font Awesome 4 family ----------
   /contactos/, /espaco/ and /marcacoes/ load all.min.css (Font Awesome 5) AFTER
   font-awesome.min.css, and FA5's unscoped `.fa{font-family:"Font Awesome 5 Free"}` therefore wins
   on exactly those three pages. \f003 (envelope-o) and \f133 (calendar-o) do not exist in FA5 Free,
   so the sidebar email icon and the CTA calendar icon rendered as blank 18px boxes there and as
   real icons everywhere else. Pinning the family for the two FA4-only glyphs we actually use is
   order-independent, so it cannot regress when a page's link order changes again. */
.fa-envelope-o,.fa-calendar-o{font-family:'FontAwesome' !important}

/* ---------- our own icon wrappers own their icon's colour and size ----------
   ColorMag ships an UNSCOPED `.fa{font-size:22px;color:#cccccc}` for its social row. Any icon we
   place with the FA4 shorthand class therefore turned light grey no matter what the wrapper said,
   because `.fa` matches the <i> directly while the wrapper only offers an inherited value. That is
   invisible on the white tiles and nearly invisible on the blue "Marcar uma consulta" banner - it
   was live on 12 of 17 pages (every fy-cta-ico calendar, the /marcacoes/ phone tile and the
   homepage Espaço marker at 390). fab/fas/far icons never showed it, which is why it survived a
   screenshot pass: the same strip looked right in three tiles and wrong in the fourth. */
.fy-cta-ico .fa,.fy-space-ico .fa,.fy-espaco-ico .fa,.fy-service-icon .fa,
.fy-strip-ico .fa{color:inherit;font-size:inherit;line-height:inherit}

/* ------------------------------------------------------- legibility gate, 2026-08-18

   Finger-sized hit areas (WCAG 2.5.8: 24px in the smaller dimension). All of these are inline text
   links sitting at their 17-21px line box; vertical padding grows the rectangle the browser
   hit-tests and leaves the line box alone, so the layout does not move. Measured with
   _scripts/_legib_targets.js at 1440 and 390, not guessed. */
#secondary a,
.fy-more-link a, .fy-news-all a, .fy-card-row a,
.tg-footer-other-widgets a, .footer-socket-area a, nav.footer-menu li a,
.copyright a, .entry-meta a, .below-entry-meta a, .posted-on a { padding-top: 4px; padding-bottom: 4px; }

/* The "Espaço" card is our own stand-in for a photograph the archive never captured, and we built
   it with white type on the two LIGHTEST blues in the palette: 1.9:1 measured off the painted
   pixels, which is the client's complaint in a nutshell. The card keeps its blue - only the ink
   changes, to the same --fy-ink the body copy already uses, which reads at 7.7:1 on that gradient.
   No new colour enters the site. */
.fy-espaco-card, .fy-espaco-card:hover { color: var(--fy-ink); }
.fy-espaco-ico { background: rgba(255,255,255,.5); color: var(--fy-ink); }
.fy-espaco-txt i { opacity: 1; color: var(--fy-ink); }

/* Second pass: the related-posts "Ler mais" link and the contact block's own phone/e-mail links,
   which the sidebar-scoped rule above does not reach. */
.fy-more a,
.sbs-6310-template-1-description a { padding-top: 4px; padding-bottom: 4px; }
